Der Shader funktioniert nun
Aber eine Frage bleibt noch offen:
Momentan setze ich die Kamera in der ModelviewMatrix, möchte sie aber gern in
die ProjektionsMatrix packen.
Jedoch wenn ich das tue funktioniert das Spheremapping nur,
wenn ich die Kamera auf <0, 0, z> stehen lasse (ViewVector: <0, 0, -1>).
Sobald ich die kamera bewege, stimmen offensichtlich die Berechnungen nicht mehr
Was müsste ich im Shader ändern, damit die Camera auch in der ProjektionsMatrix
stehen kann?
Hier der aktuelle VertexShader (funzt mit Kamera in der ModelviewMatrix):
Code: uniform vec3 uEyePos; void main(void) { gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; // Position des Vertex' vec3 v = normalize(vec3(gl_ModelViewMatrix * gl_Vertex)); // Normale des Vertex' vec3 n = normalize(gl_NormalMatrix * gl_Normal); // Vector von der Camera zum Vertex vec3 view = normalize(v - uEyePos); vec3 r = reflect(v, n); float m = 2.0 * sqrt( r.x*r.x + r.y*r.y + (r.z+1.0)*(r.z+1.0) ); gl_TexCoord[0].s = r.x/m + 0.5; gl_TexCoord[0].t = r.y/m + 0.5; }
Im Fragment Shader wird nur gl_FragColor mit Hilfe der berechneten TexturKoordinaten gesetzt.
Bitte um Hilfe
PS: Der oben angegebene Link funktioniert nicht mehr.
|