我的Ogre GLSL材质照明有问题。我根据在线教程做了一切,但我似乎无法使我的灯光代码正常工作。
似乎纠正光照的唯一方法是反转我的light_direction.y
,但我不相信这是正确的方法。我试图将light_direction
乘以world_matrix
和inverse_world_matrix
以及两者的换位版本,但都没有帮助。
唯一有帮助的是反转light_direction.y
。
我已将代码附加到以下文件中,以及我的应用程序的屏幕截图,其中包含倒置和非倒置y。
我的代码: Google Docs Link | Dropbox link
我的食人魔材料: Google Docs Link | Dropbox link
我的顶点着色器: Google Docs Link | Dropbox link
我的片段着色器: Google Docs Link | Dropbox link
非反转y的屏幕截图: Google Docs Link | Dropbox link
y倒置的屏幕截图: Google Docs Link | Dropbox link
答案 0 :(得分:1)
光矢量从被点亮的物体指向光,因此与光流的方向相反。
float _NdotL = max(dot(_normal, -_light_direction), 0.0);