MRが楽しい

MRやVRについて学習したことを書き残す

半透明かつ両面描写が可能なStandardShaderを作成する

本日は Unity の小ネタ枠です。
半透明かつ両面描写が可能なStandardShaderを作成する手順を記事にします。

通常のStandardShaderを半透明にした場合

通常の StandardShader の[RenderType]を[Transparent]に変更して透過した場合、以下のように背面の面は描画されない透過になります。
f:id:bluebirdofoz:20220207230146j:plain

本記事では StandardShader を両面描画を有効化して背面の面も描写されるようにしてみます。

StandardShaderのカスタマイズ

Unity のビルドインシェーダをカスタマイズするため、以下のページからシェーダのソースコードを取得します。
unity3d.com

利用したい Unity バージョンのプルダウンを開き、[ビルトインシェーダー]をクリックします。
f:id:bluebirdofoz:20220207230210j:plain

builtin_shaders-XXXX.X.XXX.zip がダウンロードされるので、これを展開します。
f:id:bluebirdofoz:20220207230219j:plain

例えば Standard シェーダは Standard.shader という名前で builtin_shaders-XXXX.X.XXX/DefaultResourcesExtra 配下にあります。
f:id:bluebirdofoz:20220207230229j:plain

Standard.shader を Unity プロジェクトに取り込んでカスタムシェーダを作成します。
今回はシェーダ名を Custom/CulloffStandard にしました。
f:id:bluebirdofoz:20220207230238j:plain

次にシェーダを編集します。
SubSheder の項に[Cull off]の設定を追加すれば両面描画が行われるようになります。
f:id:bluebirdofoz:20220207230249j:plain

これで StandardShader のカスタマイズは完了です。

動作確認

新規マテリアルを作成し、[Custom/CulloffStandard]を設定します。
f:id:bluebirdofoz:20220207230302j:plain

透過を行うので合わせて[RenderType]を[Transparent]に変更します。
f:id:bluebirdofoz:20220207230313j:plain

作成したマテリアルを反映すると背面の面も描画されるようになりました。
f:id:bluebirdofoz:20220207230323j:plain