Unityの Materials および Shaders には密接な関係があります。シェーダは使用できるプロパティやアセットを定義するコードを含みます。マテリアルによりプロパティを調整し,アセットを割り当てできます。
新規のマテリアルを作成するにはメインメニューまたは Project View から を使用します。マテリアルを作成した後はオブジェクトに適用して Inspector でプロパティを微調整できます。オブジェクトに適用するには Project View から Scene または Hierarchy のいずれかのオブジェクトにドラッグ&ドロップします。
特定のマテリアルに使用させたいシェーダを選択できます。インスペクタの Scene 上のアクティブなオブジェクトにマテリアルを適用した場合,オブジェクトに対するプロパティ変更がリアルタイムで行われることが画面で確認できます。
ドロップダウンを拡張して新しいシェーダを選択します。選択するシェーダによって,変更することが出来るプロパティが示されます。プロパティには,カラー,スライドバー,テクスチャ,数字,またはベクトルがあります。もしTexture をプロパティに適用する方法が二つあります。
各々の Texture には配置オプションが二つ利用可能です:
プロパティ: | 特徴: |
---|---|
Tiling | 異なるテクスチャ上でスケールします。 |
Offset | テクスチャをスライドします。 |
ビルトイン シェーダ のセットがUnityエディターとともにインストールされています。80以上のシェーダが利用可能です - ゲームオブジェクトのテクスチャに使用される主要なものは次の分類に当てはまります:-
各々のグループで,ビルトイン シェーダは,シンプルな VertexLit (頂点ライティング) から複雑な Parallax Bumped with Specular (視差バンプ鏡面)まで複雑さに幅があります。シェーダのパフォーマンスについてはビルトイン シェーダの パフォーマンスのページ を参照下さい。
主要なゲームオブジェクトのシェーダに加えて,特殊な目的のための分類がいくつかあります:-
さらに,これらのシェーダのいくつかはモバイルデバイスで使用できる特殊バージョンをもっています。 Also, some of these shaders have special versions for use with mobile devices.
Unityには大規模なシェーダシステムがあり,ゲーム内のグラフィックの見栄えを微調整できます。次のように動作します
シェーダはゲーム内のシェーディングの見栄えを判断する計算式を定義します。任意のシェーダについて,複数のプロパティがあります(典型的にはテクスチャ)。シェーダは Material を通じて実装されていて,個別の GameObject に直接アタッチされています。マテリアルの中で,シェーダを選択して,それからシェーダにより使用されるプロパティ(通常はテクスチャおよびカラー,しかしプロパティは異なることがあります)を定義します。
これはやや複雑であるため,ワークフロー図を見てみます:
このグラフの左側は Carbody Shader があります。2つの異なるシェーダがここから作成されます: Blue car Material および Red car Material です。各々のマテリアルは2つのテクスチャが割り当てされています。Car Texture は車のメイン テクスチャおよび Color FX texture を定義します。シェーダによって,最終的に2つのトーンでペイントされた車の見栄えとなるよう,これらのプロパティが使われます。これは赤い車のフロントで見られます: カメラを向いた側は黄色で角度が広がるほっど紫にフェードします。車のマテリアルは2つの車にアタッチされます。車のホイール,ライト,およびウィンドウはこのカラー変化のエフェクトがなく,したがって異なるマテリアルを使用する必要があります。グラフの最下部には Simple Metal Shader があります。Wheel Material はこのシェーダを使用しています。同じCar Texture が使用されているにも関わらず,最終結果は,マテリアルで使用されるシェーダが異なるために,車のボディーとは大きく異なることに留意して下さい。
より具体的には,シェーダが定義するのは:
マテリアルが定義するのは:
シェーダはグラフィックス プログラマにより記述されることを意図しています。ShaderLab 言語を用いて作成されていて,かなりシンプルです。しかし,シェーダを幅広い グラフィックス カード で動作するようにすることはややこしい作業でありグラフィックスについて相当に網羅的な知識が必要です。
いくつかのシェーダはUnityに内蔵されていて,いくつかは Standard Assets ライブラリに含まれます。シェーダの詳細については Built-in Shader Guide を参照下さい。