マテリアルとシェーダ
マニュアル     リファレンス     スクリプト   
Unityマニュアル > ユーザガイド > アセットの使用 > マテリアルとシェーダ

このドキュメントは有志により翻訳されたもので、オフィシャルではありません。オリジナルのページはこちら
This document is unofficially translated by users.Please see the original document here.

翻訳に関する修正など、ご連絡はこちらまで。
Please send e-mail to here, when you have any question about the translation.

マテリアルとシェーダ(Materials and Shaders)

Unityにおいて、マテリアル(Materials)シェーダ(Shaders)には、密接な関係があります。シェーダは、どの属性とアセットを使うかの、コードを含んでいます。マテリアルは属性の変更と、アセットの適用を提供します。


シェーダはマテリアルを通して実装されています。

新しいマテリアルを作るには、メインメニューからAssets->Create->Materialを選択するか、プロジェクトビューのコンテクストメニューから行います。一度マテリアルが作成されると、オブジェクトに適用し、属性をインスペクタで変更できます。オブジェクトに適用するには、プロジェクトビューから、 シーン階層中のオブジェクトにドラッグします。

マテリアル属性の設定(Setting Material Properties)

あるマテリアルにどのシェーダを使いたいかを選ぶことができます。 インスペクタにおいて、Shaderドロップダウンを開き、新しいシェーダを選択します。選択したシェーダは、変更可能な属性を認識します。 属性は、色、スライダ、テクスチャ、数値、ベクタ等があります。マテリアルをシーン中でアクティブなオブジェクトに適用すると、リアルタイムに属性が変わるのを確認できます。

テクスチャを、属性に適用するには、2つの方法があります。

  1. プロジェクトビューからテクスチャの矩形にドラッグ
  2. Selectボタンをクリック時、ドロップダウンリストからテクスチャを選択

それぞれのテクスチャには、配置オプションが2つあります:



Tiling テクスチャを差分に応じて拡縮します。
Offset テクスチャをスライドします。

ビルトインシェーダ(Built-in Shaders)

Unityをインストールとすると、標準的に含まれる、ビルトインシェーダのライブラリがあります。 6つの種類に大別される、30以上のビルトインシェーダです。

それぞれのグループで、ビルトインシェーダは複雑さに応じて、シンプルなVertexLitから、複雑なParallax Bumped with Specularまで範囲があります。 シェーダのパフォーマンスに関する詳細は、ビルトインシェーダのパフォーマンスのページを参照してください。

次の表は、ビルトインシェーダ全てのサムネイルです:


Unityのビルトインシェーダ表

シェーダの技術詳細(Shader technical details)

Unityは大きなシェーダシステムを持っています。ゲーム中のグラフィックの見た目を、変更できます。次のように動作します:

シェーダは基本的に、ゲーム中のシェーディングの見え方を式で定義します。与えられたシェーダは、主にテクスチャの多くの属性を含みます。シェーダは、直接個々のゲームオブジェクトに付加されたマテリアルを通して実装されます。マテリアルの中で、シェーダを選び、シェーダが用いる属性を設定します。(通常テクスチャと色ですが、異なる属性もあります)

これは複雑ですので、作業フローを図で見てみましょう:

グラフの左側は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ライブラリに含まれています。さらに詳しいシェーダに関する情報は、ビルトインシェーダガイドを参照してください。