2016-09-12 12 views
0

私は、光の範囲にあるかどうかに応じて、 'lit'テクスチャか 'unlit'テクスチャのいずれかから適切な色を塗りつぶす単純なfrag/vertシェーダを作成しようとしています。ShaderでLightの範囲値を取得するにはどうすればよいですか?

したがって、光の距離と光の範囲を比較する必要があります。 私はあらゆる種類のものをグーグルで探そうとしていましたが、光の範囲値にアクセスする方法を見つけることができないようです。そうする方法はありますか?そうでない場合は、代わりに使用できる派生データがありますか?

更新

私が最も有望なこれまでのところ、しかし、ビットのために遊んでみた後、私はまだ私が必要なものを得るように見えることができないように思わこの方法hereを、見つけることができました。 _LightMatrix0が入力されていないという話があります。誰でも確認できますか?

アップデート2

私はUnity Shader Variablesドキュメントで変数unity_LightAttenを発見しました。しかし、これはVertex Litシェーディングにのみ使用されます。これは、特にコンソールのサポートの欠如を考慮すると、理想的ではありません。 この変数を前方描画にパイプする方法がありますか?

答えて

1

を使用してLight.rangeをシェーダに渡すことができます。これを行うにはスクリプトを添付する必要があります。

+0

ohh、約束しています...私は刺すようにして、ここに戻ってきてくれてありがとう!しかし、私はどのように違うライトを区別するのですか? – LeftRight92

+0

ライトには異なる名前を使用してください。その後、スクリプト内の名前でゲームオブジェクトを見つけます。 [GameObject.Find](https://docs.unity3d.com/ScriptReference/GameObject.Find.html) – zwcloud

+0

これは私が到達した最初の解決策ですが、Shaderの現在のパスでどのライトが使用されているか? – LeftRight92

関連する問題