Hallo,
Ich habe ein Problem mit einer 1D Lookup Table innerhalb meines Fragmentshaders. Der Shader sieht so aus:
Code: uniform sampler3D Tex1; uniform sampler1D ctable; varying vec3 TexCoord; void main() { vec4 value = texture3D(volume,TexCoord); vec4 color; color.r = texture1D(ctable,value.r).r; color.g = texture1D(ctable,value.g).g; color.b = texture1D(ctable,value.b).b; color.a = texture1D(ctable,value.a).a; gl_FragColor = color; }
Lasse ich die 3D Textur wie folgt ausgeben zeigt er mir die VolumenTextur:
Code: void main() { vec4 value = texture3D(volume,TexCoord); vec4 color; color.r = value.r; color.g = value.g; color.b = value.b; color.a = value.a; gl_FragColor = color; }
Nehme ich einen bestimmten Wert aus der Lookuptable gibt er mir diesen in meinem 3d Cube aus
Code: void main() { vec4 value = texture3D(volume,TexCoord); vec4 color; color.r = texture1D(ctable,250).r; color.g = texture1D(ctable,250).g; color.b = texture1D(ctable,250).b; color.a = texture1D(ctable,250).a; gl_FragColor = color; }
Nur zusammen bekomme ich immer einen leeren Cube, obwohl ich per glgetUniformLocation bei der Übergabe der Texturen an den Shader zwei Werte, 0 (3dTexture) und 1 (ColorTable) zurückbekomme. Ich habe die Texturen so gebunden:
Code: glGenTextures(3,@FTextureIds); glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_3D,FTextureIds[0]); //set the texture parameters glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_S, GL_CLAMP); glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_T, GL_CLAMP); glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_R, GL_CLAMP); glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexImage3D(GL_TEXTURE_3D,0,GL_RGBA,cXMAX,cYMAX,cZMAX,0,GL_RGBA,GL_UNSIGNED_BYTE,@FBuf[0]);
Das gleiche habe ich für die 1D Color Table gemacht, nur eben in 1D.
Weiß jemand einen guten Rat? Mir kommt es sehr komisch vor, dass es seperat funktioniert aber in Verbindung nicht. Ich benutze eine QuadroFX570 und habe mir mal sicherheitshalber ein Update von NVIDIA gezogen. Somit bin ich nun bei GLSL 3.3
Vielen Dank,
Heavenssake007
|