Lingheng Tony Tao

Unity Shader · 第 4 回 / 全 13 回 · 2021年11月7日

Unity Shader #4 UV 上での図形描画

Unity Shader #4 UV 上での図形描画

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を使って円内かどうかを判定し、円内なら円の色、そうでなければ黒で着色します。