皆さんはUnityとは何か、どのようなことができるのかご存知でしょうか。

ゲーム開発ができることは知っているけど、詳しいことはわからない…という方もいらっしゃるのではないでしょうか。

今回はそんなUnityの機能のひとつ「シェーダー」についてご紹介していきたいと思います。

なお、Unityについてもっと詳しく知りたい、という方は以下の弊社記事をご覧ください。

Unityとは?特徴や作品事例、価格など徹底解説!
Unityとは?特徴や作品事例、価格など徹底解説!

|シェーダーとは

出典:https://docs.unity3d.com/ja/2021.3/Manual/SL-VertexFragmentShaderExamples.html

まず、「シェーダー」とは簡単に言うとオブジェクトの見た目を決めるプログラムです。

プログラムというと難しく聞こえてしまいそうですが、安心して下さい。

プログラミングなしでも様々な表現が可能です。

その中の例では

・ライトで光を当てた場合の陰影

・鏡面反射

・透明性の変更

・発光表現

・隆起表現

・アニメ調の表現

などがあります。

他にもUVスクロールというアニメーションやノイズ表現などの表現ができます。

このような表現をプログラミングなしで表現するために、シェーダーはマテリアルに基づいて設定されています。

では次にそのマテリアルとは何か、そしてテクスチャについてもご説明していきます。

|マテリアル、テクスチャとの違い

マテリアルとテクスチャはよく似ているので、同じものでは?と思ってしまう方もいるのではないでしょうか。

しかし、これらは似ているようで全く役割が異なります。

それでは解説していきましょう。

マテリアルとは

マテリアルとは、最終的にオブジェクトの質感を決めるものです。

シェーダーとの違いは、シェーダーは小さなスクリプト、マテリアルはそのスクリプトにパラメータを渡すものと考えた方がいいでしょう。

基本的にシェーダー単体でオブジェクトの質感が決まることはありません。

「シェーダー」+「テクスチャ」=「マテリアル」

と考えると覚えやすいです。

では次にテクスチャについて解説していきます。

テクスチャとは

テクスチャとはビットマップイメージ、いわゆるピクセル(画素)を用いた画像のことです。

通常、オブジェクトはメッシュでできているため細かい表現はできません。

なので、テクスチャを用いて細かい描写をしたり、細部の凹凸の表現をしたりします。

サイズは2の累乗で決定され、よく使われるサイズが「512px×512px」「1024px×1024px」

「2048px×2048px」です。

|シェーダーの設定方法

では、シェーダー、マテリアル、テクスチャの違いが理解できたところで実際に設定していきましょう。

まずはマテリアルを作成し、その後にシェーダーを割り当てていきます。

1.マテリアルを作成

ではまず画面下の”project”ビューで”Aseet”フォルダ内で右クリックをし、「Create」から「Material」を選択してマテリアルを作成しましょう。

次に質感や色などを設定します。

作成したマテリアルを選択すると、画面右側の”Inspecter”ウィンドウにマテリアルのパラメータが表示されます。

色を設定する場合は「Albedo」という項目の右側の白い四角を選択すると色が設定できます。

質感を反射するようにする場合は「Metallic」「Smoothness」のパラメータを変更しましょう。

「Metallic」はオブジェクトの表面がどれくらい金属か非金属か制御するパラメータで、「Smoothness」はオブジェクトがどれくらい凹凸があるか制御でき、パラメータがあがるほど表面が滑らかになり、より反射しやすくなります。

2.好きなシェーダーを用意

先程作ったマテリアルの「Albedo」の項目にテクスチャを貼り付けると、オブジェクトはほぼ完成に近いですが、もっと細かい設定をする場合はシェーダーを変更してみましょう。

シェーダーの種類は様々で、よく使われるシェーダーは「Standerd」と「Unlit」です。

「Standerd」シェーダーはライトの陰影を自動で処理し、石やガラスなどの現実世界にあるたいていのマテリアルを表現することができます。

皮膚や髪、布など非硬質なマテリアルにも対応可能です。

一方「Unlit」はライトの影響を受けないマテリアルです。

ゲームではライトの影響を受ける必要性のないUIや、フラットな絵づくりをしたい時に使われます。

今回はその「Unlit」を設定していきます。

3.マテリアルに適用

まず、作成したマテリアルを選択し、”Inspecter”の「Shader」の横を見ると、すでに「Standerd」が設定されていますが、今回は「Unlit」にしたいので、「Standerd」を選択します。

そうすると、沢山のシェーダーの選択肢が出てきます。

その中の「Unlit」を選択し、次に「Texture」を選びます。

これでライトの影響を受けない「Unlit」シェーダーが設定されました。

|シェーダーのおすすめアセット

さて、本記事ではUnity内のシェーダーを使いましたが、シェーダーは様々な場所で配布されています。

無料で扱えて、レベルの高いシェーダーもあるので、今回はその中の4つをご紹介したいと思います。

Flat Kit: Toon Shading and Water

こちらのシェーダーはカートゥーン調のグラフィックを作成したい時に便利で、アニメっぽい陰影や、アウトラインをつけることが可能です。

さらに、水の表現も可能で、水面の波紋や反射、透過などができます。

価格は現在 50%OFFセールで、$ 21.95で売られており、日本円にして3000円ほどで購入可能です。

少しお高めですが、汎用性の高いシェーダーなので、気になる方はぜひ使ってみてください。

こちらが商品へのリンクになります。

https://assetstore.unity.com/packages/vfx/shaders/flat-kit-toon-shading-and-water-143368

Amplify Shader Editor

このシェーダーはサンプルがかなり充実しており、多彩な表現が可能です。

例えば、炎の表現が可能なシェーダーや、オブジェクトのアウトラインが描けるシェーダー、水深を調節できるシェーダーなどがあります。

ただし、URPやHDRPでは対応しているサンプルが少ないため注意が必要です。

価格は現在 50%OFFセールで $44となっており、日本円で6000円ほどします。

元々の価格が$88と高価なので、購入するなら今のうちかもしれません。

下記が商品のリンクになります。気になる方はぜひ覗いてみてください。

https://assetstore.unity.com/packages/tools/visual-scripting/amplify-shader-editor-68570?locale=ja-JP

NOVA Shader

こちらはエフェクト用のシェーダーになります。

氷のエフェクトや炎のエフェクト、さらに爆発表現や、ディゾルブ表現、UVスクロールの表現が可能です。

こちらのシェーダーは無料で使えます。

インストールの手順は、

1. Window > Package Manager 

2. 「+」 > Add package from git URL… 

3. 以下を入力してインストールします

https://github.com/Cyber​​AgentGameEntertainment/NovaShader.git?path=/Assets/Nova 

lilToon

このシェーダーはトゥーンシェーダーで無料で扱える有名なシェーダーになります。

アニメ風の表現はもちろん、リアル寄りの表現も可能です。

汎用性が高く、使いやすいシェーダーなので、使っている方も多いのではないでしょうか。

無料で使えるにはかなりレベルの高いシェーダーなので、まだ知らないという方はぜひ使ってほしいシェーダーです。

下記が商品の公式ページになります。

https://booth.pm/ja/items/3087170

|まとめ

いかがでしたでしょうか?

シェーダーについて知らなかった方も少しシェーダーについて理解できたのではないでしょうか。

今回ご紹介したシェーダー以外にもシェーダーは沢山あります。

「シェーダーグラフ」という少し難しい種類のシェーダーもあるので、気になる方は使ってみて欲しいです。

シェーダーの知識を極めて、よりクオリティの高いゲームを作ってみて下さい!