2012-11-14 34 views
7

Glsl'de kırılma işlemi yapıyorum. İstenen etkiyi elde etmek için parça gölgelendiricisinde sağlanan kırma fonksiyonunu kullanıyorum. Ama aldığım kırılma, baş aşağı. Bence bu yanlış .. herhangi bir fikri neden böyle? glsl refraksiyon yukarı doğru eşleştiriliyor

Bu

ben köşe gölgelendiricisi ne olduğunu:

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

ve sonra yapmam frag shader:

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

Ekran yardımcı olacaktır. Ya da görüntüleri eklemek için yeterli temsilciniz yoksa ekran görüntülerine bağlantılar. Sayfanın son görüntüsü – Thomas

+0

http://www.cse.ohio-state.edu/~duttas/Images_5542/RT_rendering.html . Teşekkürler – mindbender

cevap

25

o küre üzerinde kırılma bahsediyorsan Eminim, sahip olduğun doğru sonuç, baş aşağı olması gerekiyordu. Bu arada ışık küresel yüzeyi kapalı kırar nedeniyle Eğer küre gördüğünüz görüntü tersine çevrilir:

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

Gerçek dünya örneği:

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

+2

BÜYÜK İŞ. Bu sorunun sahibi, muhtemelen (arkada olan bir şeyin) YANSIMASININ (ama arkasında olan bir şeyin) kırıldığını unutmuştur. Ve güzel seçim: P +1 –

+0

Evet, bu doğru görünüyor. İstediğiniz buysa, daha az çaresizlik elde etmek için kırılma indeksini (eta) 1'e yaklaştırın. – Thomas

+0

harika! Cevabınız için çok teşekkür ederim ve girdileriniz için başkalarına teşekkürler ... – mindbender