Tutorial 15 – Texture Array Particle Rendering

Programmbeispiel 15 führt am Beispiel des Partikel-Renderings in die Verwendung sogenannter Textur-Arrays ein. Textur-Arrays spielen unter anderem im Rahmen des Geometry-Instancings immer dann eine wichtige Rolle, wenn die einzelnen Instanzen (z. B. Partikel) unterschiedlich texturiert werden müssen:







Zugriff auf ein Texture Array im Fragment Shader:

uniform sampler2DArray ParticleTextureArray;

[...]

// Hinweise:
// gs_TexCoord[0].z:  Index der zu verwendenden Textur
// gs_TexCoord[0].xy: die normalen Texturkoordinaten
vec4 ParticleColor = texture(ParticleTextureArray, gs_TexCoord[0].xyz);


Beim Erzeugen eines Textur-Arrays ist darauf zu achten, dass die verwendeten Bilddateien (Texturdaten) die gleiche Größe besitzen.


Einzelne Partikeltexturdaten laden und zu einem Texture Array zusammenfassen:

// Verhindern, dass einzelne Texturen erzeugt und in den
// Grafikspeicher geladen werden:
Enable_TextureArrayGeneration();

// Partikel-Grafikmanager initialisieren:
ParticleGraphicsManager = new CParticleGraphicsManager;
ParticleGraphicsManager->Init_ParticleGraphicsManager(
                         "../Particles/Particles.txt",
                         "../Particles/Textures/",
                         "../Particles/Meshes/", 2000);

ParticleGraphicsManager->Build_ParticleTextureArray();

Disable_TextureArrayGeneration();




Hinweise zum Erstellen eines neuen Projekts:

  • Kopieren Sie den Ordner GraphicsAndPhysicsFrameworkImports ins Projektverzeichnis
  • Kopieren sie alle dll-Dateien sowie die Konfigurationsdatei ResolutionAndRendering.txt aus besagtem Ordner ins gleiche Verzeichnis, in dem sich auch die exe-Datei befindet (in unseren Programmbeispielen ist dies das Bin-Verzeichnis)
  • Binden Sie die folgenden Dateien in Ihr Projekt ein: GraphicsAndPhysics_Framework_Imports.h, GraphicsAndPhysics_Framework_Imports.lib, glew32.lib, glew32s.lib, glut32.lib. Die Glew- und Glut-Bibliotheken ermöglichen die Nutzung der aktuellen OpenGL-Spezifikationen unabhängig vom Framework.

GraphicsAndPhysicsFrameworkDemo15.zip