您好我正在尝试使用材质和雾为我的3D模型创建着色器。一切都很好,但光线方向。我不确定要将它设置为什么所以我使用了固定值,但是当我旋转3D模型(这是一个简单的纹理球体)时,光线随之旋转。我想改变我的代码,以便我的灯光根据相机而不是物体本身停留在一个地方。我已经尝试将视图矩阵乘以输入法线但是会出现相同的结果。
另外,我应该根据相机设置光线方向吗?
编辑:删除了pastebin链接,因为这违反了规则......
答案 0 :(得分:0)
使用相机依赖值仅用于将顶点位置转换为视图和投影位置(用于剪切和光栅化器阶段的着色器中需要)。视频卡需要知道在哪里绘制像素。
对于照明,您通常会将相机转换后的值与顶点的世界位置和世界位置中的法线传递到所需的着色器阶段(即用于phong照明的像素着色器阶段)。
因此,您可以将世界空间坐标系中的灯光位置或更好的光线方向设置为着色器的全局变量。因此,照明与摄像机视图位置无关。
如果你想拥有像使用手电筒一样的效果。您可以将灯光设置为摄像机位置,将光线方向设置为您的查看方向。因此,明亮的部分始终位于您的视锥体的中心。
祝你好运