8

glslで屈折を実装しています。目的の効果を得るために、frag シェーダーで提供される屈折関数を使用しています。しかし、私が得ている屈折は、逆さまです。私はこれが間違っていると思います..なぜそうなのか考えていますか?

これは私が頂点シェーダーで行うことです:

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

4

1 に答える 1

27

これらの球の屈折について話しているのであれば、あなたが得たものが正しい結果であると確信しています。逆さまになっているはずです。光が球面から屈折する方法により、球に表示されるイメージは反転します。

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

実際の例:

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

于 2012-11-14T20:02:10.607 に答える