如何在Shader中获得Light的范围值?

时间:2016-09-12 15:22:12

标签: unity3d shader cg shaderlab

我试图编写一个简单的frag / vert着色器,根据它是否在光线的范围内,将从“光线”和“光线”中绘制出适当的颜色。纹理或来自“熄灭”的纹理质地。

因此,我需要比较光线与光线范围之间的距离。 我一直在谷歌搜索各种各样的东西,但我似乎无法找到一种方法来获取光的范围值。有办法吗?如果没有,是否可以使用某种衍生数据作为替代方案?

更新

我能够找到这种方法here,这似乎是迄今为止最有希望的方法,但是在玩了一下之后,我仍然无法得到我需要的东西。有人谈到_LightMatrix0没有被填充。任何人都可以确认吗?

更新2

我在Unity Shader Variables文档中找到了变量unity_LightAtten。但是,这仅用于Vertex Lit着色,这并非完全理想,特别是考虑到缺少控制台支持。 有没有办法将此变量传递给正向渲染?

1 个答案:

答案 0 :(得分:1)

您可以使用Light.rangeMaterial.SetFloat传递到着色器。你需要附上一个脚本才能做到这一点。