2016-09-12 62 views
0

我想寫一個簡單的frag/vert着色器,根據它是否在光照範圍內,將從'點亮'紋理或'未點亮'紋理繪製合適的顏色。如何在Shader中獲取Light的Range值?

因此,我需要比較光線到光線範圍的距離。 我一直在Google上搜索各種東西,但我似乎無法找到訪問光源範圍值的方法。有沒有辦法做到這一點?如果沒有,是否有某種衍生數據可以用作替代方案?

更新

我能找到這個方法here,這似乎是最有前途的,到目前爲止,打不過繞了一點後,我似乎仍不能得到我所需要的。有一些關於_LightMatrix0未被填充的討論。有人可以確認嗎?

更新2

我的Unity Shader Variables文檔中找到的變量unity_LightAtten。但是,這僅用於Vertex Lit着色,這並不完全理想,特別是考慮到缺少控制檯支持。 難道有一種方法可以將這個變量傳遞給轉發渲染嗎?

回答

1

您可以使用Material.SetFloatLight.range傳遞給着色器。你需要附上一個腳本來做到這一點。

+0

哦,很有希望...我會刺傷並回到這裏,謝謝!但我怎麼區分不同的燈光? – LeftRight92

+0

爲你的燈使用不同的名稱。然後在腳本中按名稱查找這些gameObjects。 [GameObject.Find](https://docs.unity3d.com/ScriptReference/GameObject.Find.html) – zwcloud

+0

這是我達成的第一個解決方案,但是如何知道當前在着色器中使用哪盞燈? ? – LeftRight92

相關問題