Im heutigen Tutorial befassen wir uns mit den Grundlagen der
prozeduralen Erzeugung und Darstellung von Gasriesen.
Im Vergleich zu den
Gesteinsplaneten lassen sich diese Giganten des Sonnensystems deutlich leichter
generieren, da sie vereinfacht gesagt lediglich aus farbigen Wolkenbändern
bestehen, die parallel zum Äquator (Breitengrad 0) den Planeten umspannen.
// Breitengrad ermitteln:
float angle = asin(gs_TexCoord[5].y);
// Verdrillung der Wolkenbänder festlegen:
float frequency = 20.0*(1.0-abs(gs_TexCoord[5].x));
float torsionValue1 = 0.02*sin(frequency*angle);
float torsionValue2 = 0.02*sin(frequency*(angle+0.785));
// Anzahl, Breite und Helligkeit der Wolkenbänder festlegen:
// Hinweis: Die NoiseValue-Werte sorgen für Unregelmäßigkeiten
// in den einzelnen Gasringen.
float value1 = abs(SurfaceGeometryParameter.x*
sin(SurfaceGeometryParameter.y*(gs_TexCoord[5].x+torsionValue1)+
0.92*NoiseValue.x));
float value2 = abs(SurfaceGeometryParameter.z*
cos(SurfaceGeometryParameter.w*(gs_TexCoord[5].x+torsionValue2)+
0.92*NoiseValue.y));
gs_FragColor[0] = SurfaceBrightnessFactor*
vec4(ColorParameter1.x*value1+ColorParameter1.y*value2,
ColorParameter1.z*value1+ColorParameter1.w*value2,
ColorParameter2.x*value1+ColorParameter2.y*value2, 1.0);
float angle = asin(gs_TexCoord[5].y);
// Verdrillung der Wolkenbänder festlegen:
float frequency = 20.0*(1.0-abs(gs_TexCoord[5].x));
float torsionValue1 = 0.02*sin(frequency*angle);
float torsionValue2 = 0.02*sin(frequency*(angle+0.785));
// Anzahl, Breite und Helligkeit der Wolkenbänder festlegen:
// Hinweis: Die NoiseValue-Werte sorgen für Unregelmäßigkeiten
// in den einzelnen Gasringen.
float value1 = abs(SurfaceGeometryParameter.x*
sin(SurfaceGeometryParameter.y*(gs_TexCoord[5].x+torsionValue1)+
0.92*NoiseValue.x));
float value2 = abs(SurfaceGeometryParameter.z*
cos(SurfaceGeometryParameter.w*(gs_TexCoord[5].x+torsionValue2)+
0.92*NoiseValue.y));
gs_FragColor[0] = SurfaceBrightnessFactor*
vec4(ColorParameter1.x*value1+ColorParameter1.y*value2,
ColorParameter1.z*value1+ColorParameter1.w*value2,
ColorParameter2.x*value1+ColorParameter2.y*value2, 1.0);
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.
GraphicsAndPhysicsFrameworkDemo31.zip