Unity Editor上では問題なく動作しているのに、ビルドしたゲームのShader.Find
でエラーとなる場合はAlways Included Shaders
を設定するとうまくいく場合があるそうです。
var s = Shader.Find("Custom/Example"); Assert.IsNotNull(s); //error
Always Included Shadersの設定
[Edit] » [Project Settings..]
を実行して、Graphics
タブのBuilt-in shader settings
のAlways Included Shaders
の項目に使いたいShaderを登録すると良いそうです。
リンク
Unity – Scripting API: Shader.Find
https://docs.unity3d.com/ScriptReference/Shader.Find.html
関連記事
UnityでFake Rim Lighting
UnityでFake Rim Lightingを実装したShaderです。
CG Shaders - Fake Rim Lighting - Artistic Experimentshttp://www.artisticexperiments.com/cg-shaders/cg-shaders-fake-3-point-lighting
Sphereに適用してみたサンプル
...
Unityでshaderを書くときに参考になる公式リンク
Surface Shaderのサンプル集
Unity - Manual: Surface Shader exampleshttps://docs.unity3d.com/Manual/SL-SurfaceShaderExamples.html
SurfaceOutput、SurfaceOutputStandardの定義と#pragma surfaceディレクティブに書けるキーワード
...
Too many texture interpolators would be used for ForwardBase pass
Unityのシェーダーで
Shader error in '':
Too many texture interpolators would be used for ForwardBase pass (11 out of max 10) at line xx
のようなエラーが出る場合は
#pragma target 4.0
を追加すると動くようになることがあるみたいです。
...
KvantGrass
アニメーション付きのGrass Shader「KvantGrass」を試してみました。
使い方に戸惑ってしまいましたが、空のオブジェクトにGrass/GrassScrollerのコンポーネントを追加してみたらGrassが表示されました。
リンク
GitHub - keijiro/KvantGrass: Animating grass shader for Unityht...