まとめ/Tips
Unity Shader 入門した頃の自分に教えたい事 – Qiita
Unity の UI/Default シェーダーを見てみる | heppoko
Unity でのシェーダー開発に関するメモ – lilxyzw/Shader-MEMO – GitHub
Unity Shaders and Effects Cookbook – mebusy/notes – GitHub
Shader Code | Unify Community Wiki
ソースコード
ビルトインシェーダー/Standard Shader のソースコードを取得するには、「アーカイブ 」にアクセスして、該当するバージョンの「ダウンロード」ボタンをクリックして「ビルトインシェーダー」を選択する。
参考:
Unity の Standard シェーダーのソースコードを取得する | MR が楽しい
ビルトインのシェーダー include ファイル | Unity マニュアル [公式]
資料
Unity でシェーダを学ぶ時に参考した本とか – Qiita
カスタムシェーダーでモバイルでも最先端グラフィックスな格闘ゲームを! (Unite Tokyo 2018) – SlideShare
リンク
シェーダに関するオススメ記事まとめ 120個 | コガネブログ
テキスト/解説
入手:
Unity シェーダープログラミングの教科書 ShaderLab 言語解説編 | 染井吉野ゲームズ
ライティング
参考:
デフォルトの Diffuse ライティングをカスタムシェーダで実装する – Qiita
Forward Rendering についてまとめてみた | しゅみぷろ
Forward Rendering で複数のライトを取り扱う | LIGHT11
Unity で Forward のライトに対応した Lambert 反射モデルのシェーダを作成する | 測度ゼロの抹茶チョコ
Directional Light、環境光を反映する | KENTO
頂点シェーダー内でライト方向を取得する方法 | 渋谷ほととぎす通信
ディレクショナルライトの回転値 xyz をそれぞれ取得したい – teratail
Writing Multi-Light Pixel Shaders in Unity | Kyle Halladay
CGIncludes/Lighting.cginc – TwoTailsGames/Unity-Built-in-Shaders – GitHub
仕組み
参考:
Forward – Unity で Standard Surface Shader の変換後のコードを追ってみた | 凹みTips
Deferred – Unity で Standard Surface Shader の変換後のコードを追ってみた | 凹みTips
フレネル反射
参考:
アンビエントオクルージョン (Ambient Occlusion)
参考:
ライトマップを再利用して遮蔽箇所の反射を抑える | Tsumiki Tech Times
ベベルシェーダー
参考:
Mobile-Friendly Bevel Shader | Iurii Selinnyi
雪シェーダー
参考:
禍つヴァールハイトで実装された雪シェーダーを紹介します – Qiita
CGIncludes
リポジトリ:
CGIncludes – TwoTailsGames/Unity-Built-in-Shaders – GitHub
DXC
ShaderGraphってdxc.exe対応しているのかしら
よく読んだら出来ないとありましたわね—— @pCYSl5EDgo
なんか見つけた
UnityのComputeShaderは何もおまじないを書かない状態だとShaderModel 5.0(DX11)でFXCシェーダーコンパイラーを使っている。でもFP16計算やレイトレ計算ができないという問題がありDXCコンパイラーを使えるオプションを用意した、とかいてある。この感じだとUnityをdx12で起動してCompute Shaderに
#pragma use_dxc
#pragma require Native16Bit
のおまじないをすれば半精度浮動小数点数型(float16_t型)が使えそうなもんだけど、今やったらできないな~
リポジトリ:
ドキュメント:
microsoft/DirectXShaderCompiler Wiki – GitHub
リンク:
DXC Shader Compiler Integration (Lukas Taparauskas) | Google ドキュメント
参考:
ShaderGraphってdxc.exe対応しているのかしら (@pCYSl5EDgo) – Twitter
FP16計算やレイトレ計算ができないという問題がありDXCコンパイラーを使えるオプションを用意した、とかいてある (@Red_Black_GPGPU) – Twitter
Shader Model 6.0 or Vendor Intrinsics – Unity Forum
undeclared identifier sampler_CameraDepthTexture エラー
対処法:
_CameraDepthTexture
のサンプラーをマクロを使って定義する。
sampler2D _CameraDepthTexture;
と書かれた行を次のように修正する。
UNITY_DECLARE_DEPTH_TEXTURE(_CameraDepthTexture);
参考:
[XR][Android] Image effects are not rendering properly with single-pass – Unity Issue Tracker
OpenGLES3 fails to compile shaders Hidden Post FX for Android in Unity 2018.2 – Unity Answers
vertex and fragment programs must be present エラー
現象:
頂点シェーダー及びフラグメントシェーダーが含まれていない旨のエラーが発生する。
Both vertex and fragment programs must be present in a shader snippet.
対処法:
頂点シェーダー及びフラグメントシェーダーの宣言を追加する。
#pragma vertex vert
#pragma fragment frag
Code language: Arduino (arduino)
参考:
unexpected TOK_GPUPROGRAMID エラー
現象:
構文エラーが発生して正常にコンパイルできない。
Parse error: syntax error, unexpected TOK_GPUPROGRAMID, expecting TOK_SETTEXTURE or '}
原因:
CGPROGRAM
あるいは HLSLPROGRAM
を挿入する位置が間違っている。
対処法:
CGPROGRAM
あるいは HLSLPROGRAM
で記述するコードを正しい位置に移動させる。
参考:
シェーダーエラー Parse error: syntax error, unexpected TOK_PASS, expecting TOK_SETTEXTURE or ‘}’ – Qiita
What does this mean ? Unexpected TOK_PASS, expecting TOK_SETTEXTURE – Unity Forum