本日はShader学習枠です。
ShaderGraphでクリッピング表現を行います。
〇クリッピング表現を行う
クリッピングとはClip(くりぬき)の名の通り、描画のうちの任意の一部分を別の色もしくは透明にする表現を指します。
今回はShaderGraphでクリッピング表現を実装します。
①新規のShaderGraphを作成します。
②GraphInspectorのMaterialからShaderの設定をUnlitに設定します。
③Alpha Clipを有効化します。これによってα値に関する出力が追加されます。
④球の方程式をノードで再現します。
球の方程式は次のようになります。
ここではPositionノードでUnityでの座標系(数式のx,y,z)をSplitノードで成分分解し、それぞれの成分を二乗し、足し合わせて半径の二乗から引き算しています。
半径はRadiusとしてBlackboardにFloat型として定義しています。これによって球の半径をマテリアル側から調整できるようにしています。
この状態でBaseColorに接続してみます。Shaderではデバッグがしずらい面があるためメインカラーに接続して動作を見ることはよくあります。
球面に色が出力されていることが確認できました。
④Alphaへ接続します。
これによって原点付近のみが球状に描画されるようになりました。
⑤Alphaへの出力の前にInvert Colorを接続します。
Invert Colorは入力値を反転させる(×-1)ノードになります。
この状態でシーンを見ると画像のようにリング状にクリッピングが行われます。
⑥AlphaClipの値に0.99を入力します。
これによってリングの幅が大きくなり、球状にクリッピングされるようになります。
AlphaClipと球の方程式を使用することで球状のクリッピングが完成しまた。