Chris Lux
2004-03-17, 19:40:28
Hi,
ich versuch gerade eine statische cubemap für Reflexionen zu nutzen, nur irgendwie bin ich gerade sehr durcheinander.
1. die faces sind nach dem linke hand system benannt, dh das face auf das die camera schaut (in ogl neg z-achse) ist das positive z face -> also das FRONT face -> negatives z face = BACK
-----
| |
| top |
| |
----- ----- ----- -----
| | | | |
|left |front|right|back |
| | | | |
----- ----- ----- -----
| |
|bottm|
| |
-----
-----
| |
| py |
| |
----- ----- ----- -----
| | | | |
| nx | pz | px | nz |
| | | | |
----- ----- ----- -----
| |
| ny |
| |
-----
(left handed system -> auf pz front und auf nz back laden)
2. wenn ich die texturen lade und ein einfachen reflexionsshader bastle erscheinen (auf einer testkugel) die texturen alle verdreht:
vertex program:
normal_out = normalize(mul(glstate.matrix.invtrans.modelview[0], float4(normal_in,1)).xyz);
worldpos_out = mul(glstate.matrix.modelview[0], position_in).xyz;
fragment program:
float4 reflective = texCUBE(cubetex_in, reflect(worldpos_in, normal_in));
setzte ich den image origin von LOWER_LEFT auf UPPER_LEFT (ich verwende devil) ist die reflexion an sich in ordnung, NUR erscheint aber auf der kugel direkt sichtbar das FRONT face, was ja nicht sein kann. genauso wenn man die reflexion genauer betrachtet sind die seiten des weltcubes nicht gespiegelt. auch ohne den shader mit den normalen texgen sachen für reflectionmapping sieht es genauso aus.
habe ich da was in der spec überlesen oder habe ich an irgend einer stelle einen denkfehler drin? wenn ich eine normalisations-cubemap nutzen würde wären solche verdrehnungen sehr fatal, warum müsste ich für korrekte reflextionen alle fläschen um 180° drehen (bis auf die TOP und BOTTOM fläche)? (dieses vorgehen habe ich aus der bubble-nvidia demo)
wenn jemand ähnliche erfahrungen machen musste, bitte teilt euch mit ;)
ich versuch gerade eine statische cubemap für Reflexionen zu nutzen, nur irgendwie bin ich gerade sehr durcheinander.
1. die faces sind nach dem linke hand system benannt, dh das face auf das die camera schaut (in ogl neg z-achse) ist das positive z face -> also das FRONT face -> negatives z face = BACK
-----
| |
| top |
| |
----- ----- ----- -----
| | | | |
|left |front|right|back |
| | | | |
----- ----- ----- -----
| |
|bottm|
| |
-----
-----
| |
| py |
| |
----- ----- ----- -----
| | | | |
| nx | pz | px | nz |
| | | | |
----- ----- ----- -----
| |
| ny |
| |
-----
(left handed system -> auf pz front und auf nz back laden)
2. wenn ich die texturen lade und ein einfachen reflexionsshader bastle erscheinen (auf einer testkugel) die texturen alle verdreht:
vertex program:
normal_out = normalize(mul(glstate.matrix.invtrans.modelview[0], float4(normal_in,1)).xyz);
worldpos_out = mul(glstate.matrix.modelview[0], position_in).xyz;
fragment program:
float4 reflective = texCUBE(cubetex_in, reflect(worldpos_in, normal_in));
setzte ich den image origin von LOWER_LEFT auf UPPER_LEFT (ich verwende devil) ist die reflexion an sich in ordnung, NUR erscheint aber auf der kugel direkt sichtbar das FRONT face, was ja nicht sein kann. genauso wenn man die reflexion genauer betrachtet sind die seiten des weltcubes nicht gespiegelt. auch ohne den shader mit den normalen texgen sachen für reflectionmapping sieht es genauso aus.
habe ich da was in der spec überlesen oder habe ich an irgend einer stelle einen denkfehler drin? wenn ich eine normalisations-cubemap nutzen würde wären solche verdrehnungen sehr fatal, warum müsste ich für korrekte reflextionen alle fläschen um 180° drehen (bis auf die TOP und BOTTOM fläche)? (dieses vorgehen habe ich aus der bubble-nvidia demo)
wenn jemand ähnliche erfahrungen machen musste, bitte teilt euch mit ;)