Unity Shader #4 図形描画
この記事では、UVを使って簡単な図形を描画する基本的なシェーダー演習を行います。主に擬似コードを使用するため、通常のShaderLabファイルではコンパイルできない場合があります。具体的な関数はUnityのドキュメントを参照してください。
基本関数
よく使う3つの基本関数、step(edge, n)、smoothstep(min, max, n)、lerp(a, b, delta)を理解します。これらはシェーダーで大量に使うため、習得が重要です。
Step
step(edge, n)は、edge <= nのとき1、edge > nのとき0を返します。鋭いエッジが得られます。
Smoothstep
smoothstep(min, max, n)は、n ∈ [min, max]を[0,1]にリマップし、それ以外のnは0と1にクランプします。シェーダーで滑らかなエッジが欲しいときによく使います。
Lerp
lerp(A, B, delta)は線形補間(Linear Interpolation)を行います。deltaは計算におけるBの重みと考えることができます。
円を描く
UV上で円を考えると、原点(0,0)からの距離が半径より小さい点は円内、大きい点は円外です。length(x,y)とstepを使って円内かどうかを判定し、円内なら円の色、そうでなければ黒で着色します。
