Unity マテリアルでスプライトの色を変える&シェーダーの種類

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] を選択して新規作成します。

Unity Project ウィンドウフォルダ余白で右クリックしてポップアップメニュー Create → Material を選択します

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

Unity 新規作成したマテリアルの色(Albedo)を灰色に設定します.

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

Unity Albedo で灰色を設定したマテリアルのシェーダーを Sprites Default に変更します.

灰色マテリアルの適用結果

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

Unity 影用タイルマップに灰色のマテリアルを設定すると、Scene ウィンドウに表示されている影に色味が出てきました.

そうすると、上図の左上の Scene ウィンドウに表示されているように、影に若干の色味が出てしまいました。

マテリアルの設定次第では灰色の影を作ることができるかもしれません。
しかし、

  • アルファ値で影の濃さを変えたい
  • 黒色(モノクロ)の度合も調整したい

を実現したいためと、シェーダーに興味があるため、影用のカスタムシェーダーを作ってみます。

Unity の シェーダーとは

公式サイトの説明を引用します。

シェーダーの基礎

一般的にシェーダーと呼ばれるシェーダープログラムは、GPU 上で実行されるプログラムのことです。

https://docs.unity3d.com/ja/2021.3/Manual/shader-introduction.html

シェーダーは使用方法・目的に応じて 3 つのカテゴリに分かれています。

  • グラフィックスパイプライン
    画面上のピクセルの色を決定する計算を行います。
  • コンピュートシェーダー
    GPU を用いた計算を行います。
  • レイトレーシングシェーダー
    レイトレーシング(光の反射や屈折を計算しリアルな描画を行う手法)で用います。

色を不透明度つきのモノクロに変えたいので、ピクセルの色を決定するグラフィックスパイプラインのシェーダーについて学びます。

今回はここまで

今回は Unity で以前に自作した影用タイルマップ作成関数で作った Tilemap のタイルたちの影の色を完全な黒以外にも設定するために、灰色のスプライト用のマテリアルを作成して検証を行いました。
シェーダーについて調べると、グラフィックスパイプラインのシェーダーによってピクセルの色を変更することが出来ることがわかりました。

参照サイト Thank You!

記事一覧 → Compota-Soft-Press

コメント

Ads Blocker Image Powered by Code Help Pro

お願い - Ads Blocker Detected

このサイトは広告を掲載して運営しています。

ポップアップを閉じて閲覧できますが、よろしければ

このサイト内の広告を非表示にする拡張機能をオフにしていただけませんか?

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.

タイトルとURLをコピーしました