Unity ではカスタムシェーダーを作成し、描画される色を変更することができます。
今回は、以前に作成した影用タイルマップ作成関数で用いる、灰色のマテリアルの作り方とそれを適用した結果について述べ、Unity のシェーダーの分類についても紹介します。
以前の記事:Unity Tilemap の壁に影をつける自作関数の処理手順の紹介 | Compota-Soft-Press

※ Unity は 2021.3.14f1、Test Framework パッケージは Version 1.1.33、Visual Studio は Community 版 Version 17.2.5、 OS は Windows 10 です。
マテリアルでは灰色の影が作れなかった
Tilemap コンポーネントに設定するマテリアルで Albedo を完全な黒にすると、タイルの Sprite 画像が黒くなりました。
しかし、少し薄い影を作ろうとして、 Albedo を灰色に変えると、Sprite 画像のもとの色味が出てしまいました。
灰色マテリアルの作成
マテリアルは Project ウィンドウの配置したいフォルダの余白で右クリックして表示されたポップアップメニュー [Create] → [Material] を選択して新規作成します。

適当にリネームし、選択したあと、 Inspector ウィンドウで設定します。
Shader が初期値の Standard の状態で、 Albedo の色を灰色(R64, G64, B64, A255)に設定しました。

その後、 Shader を Sprites/Default に変更します。
Sprites/Default はスプライトの標準のマテリアルです。光の影響を出したい場合は Sprites/Diffuse を選びます。
参照:Sprite Renderer – Unity マニュアル
※ Sprites/Diffuse だと黒になりましたが、Albedo をさらに白っぽくすると色味がでてしまいました。

灰色マテリアルの適用結果
作成した灰色のマテリアルを Tilemap コンポーネントを持つゲームオブジェクトに設定します。

そうすると、上図の左上の Scene ウィンドウに表示されているように、影に若干の色味が出てしまいました。
マテリアルの設定次第では灰色の影を作ることができるかもしれません。
しかし、
- アルファ値で影の濃さを変えたい
- 黒色(モノクロ)の度合も調整したい
を実現したいためと、シェーダーに興味があるため、影用のカスタムシェーダーを作ってみます。
Unity の シェーダーとは
公式サイトの説明を引用します。
シェーダーの基礎
一般的にシェーダーと呼ばれるシェーダープログラムは、GPU 上で実行されるプログラムのことです。
https://docs.unity3d.com/ja/2021.3/Manual/shader-introduction.html
シェーダーは使用方法・目的に応じて 3 つのカテゴリに分かれています。
- グラフィックスパイプライン
画面上のピクセルの色を決定する計算を行います。 - コンピュートシェーダー
GPU を用いた計算を行います。 - レイトレーシングシェーダー
レイトレーシング(光の反射や屈折を計算しリアルな描画を行う手法)で用います。
色を不透明度つきのモノクロに変えたいので、ピクセルの色を決定するグラフィックスパイプラインのシェーダーについて学びます。
今回はここまで
今回は Unity で以前に自作した影用タイルマップ作成関数で作った Tilemap のタイルたちの影の色を完全な黒以外にも設定するために、灰色のスプライト用のマテリアルを作成して検証を行いました。
シェーダーについて調べると、グラフィックスパイプラインのシェーダーによってピクセルの色を変更することが出来ることがわかりました。
参照サイト Thank You!
- Unity のリアルタイム開発プラットフォーム | 3D/2D、VR/AR のエンジン
- Sprite Renderer – Unity マニュアル
- シェーダーの基礎 – Unity マニュアル
- カスタムシェーダーの基礎 – Unity マニュアル
記事一覧 → Compota-Soft-Press
コメント