2016-02-12 79 views
-1

嗨即时尝试为我的3D模型材质和雾创建着色器。一切正常,但光的方向。我不知道该如何设置它,所以我使用了固定值,但是当旋转我的3D模型(这是一个简单的纹理球体)时,光线会随之旋转。我想改变我的代码,以便根据相机而不是对象本身将光线留在一个位置。我试图用输入法线乘以视图矩阵,但是会出现相同的结果。HLSL固定照明位置

另外,我应该根据相机设置光线方向吗?

编辑:删除引擎收录链接,因为这是违反规定的...

+0

请不要张贴链接到代码。 – JJF

+0

我应该如何显示代码?张贴在这里不是太大吗? – user5901143

+0

请参见[如何创建最小,完整和可验证示例](http://stackoverflow.com/help/mcve)。如果你不能这样做,那么这可能不是你问题的最佳论坛。 – JJF

回答

0

使用相机依靠值只用于转换顶点POS查看和突出位置(着色器需要裁剪和光栅化阶段)。视频卡需要知道,在哪里绘制像素。

对于照明,您通常会将相机变形值附加到顶点的世界位置以及世界位置的法线到所需着色器阶段(即phong照明的像素着色器阶段)。

因此,您可以在世界空间坐标系中将您的光照位置或更好的光照方向设置为着色器的全局变量。由此,照明与摄像机视角位置无关。

如果你想有一个像使用手电筒的效果。您可以将照明位置设置为照相机位置,并将照明方向设置为您的观看方向。所以明亮的部分总是在您的观看视锥体的中心。

祝你好运