2012-11-14 12 views
7

Realizuję załamanie w glsl. Używam funkcji refract dostarczonej w shaderze frag, aby uzyskać pożądany efekt. Ale refrakcja, którą otrzymuję, jest do góry nogami. Myślę, że to jest złe .. Jakiś pomysł, dlaczego tak jest?refrakcja glsl jest odwzorowywana do góry nogami

To jest to, co robię w vertex shader:

vec3 worldView = normalize(vec3(WorldCameraPosition-worldPos)); 
refractor = refract(-worldView, worldNorm, Eta); // eta = 0.66; 

a następnie frag shader zrobić:

vec4 refractColor = textureCube(cubeMap, refractor); 

http://www.cse.ohio-state.edu/~duttas/Images_5542/Capture.PNG http://www.cse.ohio-state.edu/~duttas/Images_5542/Capture.PNG

+0

ekranu pomoże. Lub linki do zrzutów ekranu, jeśli nie masz wystarczającej liczby przedstawicieli, aby dołączyć obrazy. – Thomas

+0

http://www.cse.ohio-state.edu/~duttas/Images_5542/RT_rendering.html Ostatni obraz strony. Dzięki – mindbender

Odpowiedz

25

Jeśli mówisz o załamania na tych sfer , Jestem pewien, że to, co masz, to poprawny wynik, to ma być odwrócone. Ze względu na sposób załamuje światło od powierzchni sferycznej obraz widać w sferze jest odwrotna:

https://summerexplorations.files.wordpress.com/2011/07/marbles2.jpg?w=584

prawdziwym przykładem Świat:

http://www.physicscentral.com/explore/pictures/images/crystal-ball_2.jpg http://www.physicscentral.com/explore/pictures/images/crystal-ball_2.jpg

+2

WIELKA PRACA. Właściciel tego pytania pewnie zapomniał, że to nie jest REFLECTION (czegoś, co jest z tyłu), ale refrakcja (czegoś, co jest z tyłu). I miła okazja: P +1 –

+0

Tak, to wydaje się właściwe. Przybliż swój wskaźnik załamania (eta) do 1, aby uzyskać mniej optymistyczne podejście, jeśli tego chcesz. – Thomas

+0

świetnie! Wielkie dzięki za odpowiedź i dziękuję innym za twoje dane wejściowe ... – mindbender

Powiązane problemy