2012-11-14 39 views
7

我在glsl中實施折射。我正在使用frag着色器中提供的折射功能來獲得所需的效果。但是我得到的折射,它的倒置。我認爲這是錯誤的。任何想法爲什麼這樣?glsl折射得到映射顛倒

這是我在頂點着色器做:

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

,然後斷枝着色我做的:

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

截圖會有所幫助。或者鏈接到截圖,如果你沒有足夠的代表來包含圖片。 – Thomas

+0

http://www.cse.ohio-state.edu/~duttas/Images_5542/RT_rendering.html 該頁面的最後一張圖片。謝謝 – mindbender

回答

25

如果你在談論這些領域的折射,我很確定你得到的是正確的結果,它應該是倒過來的。由於這樣的光折射離開球面,你在球體看到圖像翻轉:

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

現實世界的例子:

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

+2

偉大的工作。那個問題的主人可能忘記了它不是反射(背後的東西),而是折射(背後的東西)。和不錯的選擇:P +1 –

+0

是的,這似乎是正確的。如果這就是你想要的,讓你的折射指數(eta)接近1以減少顛倒。 – Thomas

+0

太棒了!非常感謝蒂姆的回覆,並感謝其他人的投入...... – mindbender