これから説明するのはプログラミング初心者向けの記事です。
「シェーダーって聞いたことあるけどどういうのか分からない」「使ってみたいけどどう使うのか分からない」という人向けの最低限の説明になります。ネットで調べると意外と初歩的なことが省かれていることが多くてつまずくことがありますよね。では早速いきましょう!
#そもそもシェーダーって?
シェーダーとは簡単に言うと「描画方法を記述したプログラム」です。
普通ゲームなどのオブジェクトはテクスチャなどで描画されますが、シェーダーを使うことで動的な描画などが可能になります!SFっぽい感じの光のラインが走るとかがイメージしやすいですかね。
またトゥーンシェーダー(セルシェーダー)という言葉も耳にするかと思います。これらもプログラミングで描画されます。
ようはゲームをリッチにすることができる代物です!
#アセットを使って試してみよう!
まずはシーンを作り、3Dオブジェクトからcubeを出しましょう。
今回はアセットストアにあるこちらのシェーダー
[https://assetstore.unity.com/packages/vfx/shaders/semi-transparent-outline-86481]
を使ってみたいと思います。こちらはアウトラインシェーダーですね。名前の通りアウトラインを描画するものです。
このファイルがインポートされました!
シェーダーのスクリプトを開くとこんな感じになってます。
書いてある内容は大体こんな感じです。
プロパティ情報 ・・・ Unityから情報を取得するために定義
関数宣言 ・・・ シェーダー処理で、呼ぶ関数を指定
変数宣言 ・・・ 「Unityからデータをうけとる」などの目的のため、変数を定義
頂点シェーダー ・・・ 頂点シェーダーの処理
フラグメントシェーダー・・・ フラグメントシェーダーの処理
初心者向けの内容なので詳しくは書きませんが[こちら]https://www.sejuku.net/blog/65234
の記事などが参考なるかと思います。
###割り当ててみます!
このアセットはマテリアルも作ってくれているのでただオブジェクトに投げるだけです!何も難しいことはありません!
こうなりました!あとは自分の好みに合わせてパラメータを調整するだけです!
個人的に中の白線がいらないので消して、アルファをいじって半透明にしてみました。
こういった描画をテクスチャで描くとなるとかなり手間が掛かったり、できないこともあるのでプログラムで書いてパラメータで調整できるのはとても便利ですね。
本来であれば、書いたシェーダースクリプトをマテリアルに当てる必要があるのでお忘れなく。
#まとめ
・シェーダーはプログラムで描くテクスチャ!
・シェーダーで表現の幅が広くなる!ゲームがリッチに!
・使うときはマテリアルにシェーダースクリプトを当ててからオブジェクトに割り当てる!
以上、超初心者向けの導入でした!