マテリアルタイプの使用

マテリアルタイプは、マテリアルのプロパティタイプを定義します。マテリアルタイプによって定義されたマテリアルプロパティ値を調整することで、マテリアルの外観を設定します。各マテリアルタイプには、頂点シェーダーとフラグメントシェーダーがあり、マテリアルで使用できるプロパティのタイプを設定します。

Kanzi Studio は、<KanziInstallation>/Studio/Asset Library ディレクトリにある Kanzi Studio アセットライブラリからのデフォルトのマテリアルタイプとシェーダーのセットを含むテンプレートプロジェクトを提供します。新しい Kanzi Studio プロジェクトを作成する際に、提供されるマテリアルタイプに基づいて異なるプロジェクトテンプレートを選択できます。

  • 事前定義されたマテリアルタイプを含まないテンプレートを開始するには、Import material types manually を選択します。必要に応じて、Kanzi Studio マテリアルライブラリからプロジェクトにマテリアルタイプを追加するか、自分自身でマテリアルタイプを作成することができます。プロジェクトへのマテリアルタイプの追加 を参照してください。

  • High performance vertex shaders テンプレートは、低精度で高パフォーマンスの OpenGL ES2 アプリケーション向けに設計されています。これは、OpenGL ES2 での使用に最適化された頂点ベースのシェーダーを含んでいます。Phong 反射モデルを使用したライティングの適用を含む、GPU 固有の計算のほとんどは頂点シェーダーで行われます。これは、ほとんどのデバイスにとって良い出発点です。

  • High quality fragment shaders テンプレートは、高精度の OpenGL ES2 アプリケーション向けに設計されています。これは、OpenGL ES2 で使用するためのピクセルシェーダーベースのマテリアルを含んでいます。Phong 反射モデルを使用したライティングの適用を含む、GPU 固有の計算のほとんどはフラグメントシェーダーで行われます。これにより、しばしばパフォーマンスを犠牲にして、より良い画像品質が提供されます。

  • Physically based rendering テンプレートは、OpenGL ES3 アプリケーション向けに設計されています。これは、物理ベースレンダリング (PBR) の原則を実装したシェーダーに基づくマテリアルを含んでいます。これらのマテリアルのプロパティは、メタルネスのような物理的特性を表しており、直感的に制御できます。物理ベースのライティングモデルを使用したライトの適用を含む、GPU 固有の計算のほとんどはフラグメントシェーダーで行われます。これにより、多くのライティング条件でより現実的なレンダリング結果が得られます。

マテリアルタイプでは、頂点シェーダーとフラグメントシェーダーが、そのマテリアルで使用できるユニフォームとプロパティタイプを定義します。特定のマテリアルタイプで3Dノードをレンダリングする際、ユニフォームバインディングにより、Kanzi がレンダーステートに値を書き込み、それらの値をユニフォームとプロパティタイプに使用することができます。

ユニフォームバインディングを使用すると、シェーダーコードを変更せずに、マテリアルタイプで使用されるシェーダーユニフォームの値を変更できます。

ユニフォームバインディング を参照してください。

以下の操作を行うことができます。

プロジェクトへのマテリアルタイプの追加

次の方法でプロジェクトにマテリアルタイプを追加できます。

  • スマート Material Type を作成します。

    Kanzi Studio には、次のスマートマテリアルタイプがあります。

    • SmartPhysicallyBased は、物理ベースレンダリング (PBR) の原則を実装しています。

    • SmartVertexPhong は、頂点ベースの Phong シェーダーを使用する高パフォーマンスのマテリアルタイプです。

    • SmartFragmentPhong は、ピクセルベースの Phong シェーダーを使用する、高品質ですがパフォーマンスが低めのマテリアルタイプです。

    スマートマテリアルタイプを作成するには、Library > Materials and Textures で Alt を押しながら右クリック Material Types を選択し、作成したいスマートマテリアルタイプを選択します。

    Kanzi Studio は、作成したマテリアルタイプのスマートマテリアルをプロジェクトに追加します。スマートマテリアルを使用する を参照してください。

  • Kanzi のデフォルトの Material Type を作成します。

    Kanzi は、さまざまな目的のためのデフォルトのマテリアルタイプのセットを備えています。プロジェクトにまだ存在しない Kanzi デフォルトのマテリアルタイプを作成するには、Library > Materials and Textures Alt を押しながら右クリック Material Types で、追加したいマテリアルタイプを選択します。

    テンプレートに事前定義されたマテリアルタイプが含まれていないプロジェクトを作成した場合、すべての Kanzi デフォルトのマテリアルタイプを追加することができます。

    • ColorTexture、DefaultBlit、FontDefault、MaskTexture、SweepTextures、および Textured は、汎用シェーダーを持つマテリアルタイプです。これらのシェーダーはパフォーマンスよりも機能性と品質を重視しているため、これらのマテリアルタイプは開発目的に適しています。汎用シェーダー を参照してください。

    • VertexPhong マテリアルタイプは、頂点ベースのフォンシェーダーを使用した高パフォーマンスのマテリアルタイプです。頂点ベースのPhongシェーダー を参照してください。

    • FragmentPhong マテリアルタイプは、ピクセルベースのフォンシェーダーを使用したパフォーマンスが低いマテリアルタイプです。ピクセルベースのPhongシェーダー を参照してください。

    • PhysicallyBased マテリアルタイプは、物理ベースレンダリング (PBR) の原則を実装するシェーダーを使用します。物理ベースシェーダー を参照してください。

    • Unlit マテリアルタイプは、ライトを使用しないシェーダーを使用します。Unlit シェーダー を参照してください。

    Kanzi Studio はマテリアルタイプを追加し、そのマテリアルタイプを使用してマテリアルを作成します。同じマテリアルタイプから追加のマテリアルを作成することができます。マテリアルを使用する (Using materials) を参照してください。

    ../../_images/material-types-alt-context-menu.png
  • 新しい Material Type を作成します。

    マテリアルタイプを作成するには、Library で Alt を押しながら右クリック Materials and Textures を選択し、Material Type を選択します。

    Kanzi Studio は、マテリアルタイプとそのマテリアルタイプを使用するマテリアルを作成します。

    Material Type で作成した Vertex Shader と Fragment Shader を編集するには、それらをダブルクリックしてください。シェーダーを編集する を参照してください。

    ../../_images/create-material-type.png ../../_images/material-type-and-its-material-in-library.png
  • Linked Material Type を作成します。

    Linked Material Type は、参照先プロジェクト内のマテリアルタイプと Kanzi Studio が自動的に同期するマテリアルタイプです。リンクされたマテリアルタイプを作成するには、Kanzi Studio プロジェクトに、少なくとも 1 つのマテリアルタイプを含む別の Kanzi Studio プロジェクトへの参照が含まれている必要があります。

    Linked Material Type を作成するには、Library で Alt を押しながら右クリック Materials and Textures を選択し、Linked Material Type を選択して、参照先プロジェクトのマテリアルタイプを選択します。

    ../../_images/create-linked-material-type.png ../../_images/create-linked-material-type-select-material.png

    リンクされたマテリアルタイプを参照先プロジェクトから手動で更新するには、リンクされたマテリアルタイプを右クリックし、Synchronize Linked Material Type を選択します。

    Linked Material Type の同期が不要になった場合は、通常のマテリアルタイプに変換できます。

    Linked Material Type を変換するには、リンクされたマテリアルタイプを右クリックし、Break Link to Material Type を選択します。これにより、参照先プロジェクト内のマテリアルタイプへのリンクが削除され、Kanzi Studio は参照先プロジェクト内のマテリアルタイプへの変更を同期しなくなります。

    ../../_images/break-link-to-material-type.png
  • お使いのコンピュータから任意のマテリアルタイプを追加します。

    プロジェクトにコンピュータから任意のマテリアルタイプを追加するには、Library で Materials and Textures を右クリックし、Load Material Type From Disk を選択して、追加したいマテリアルタイプを含むディレクトリに移動し、マテリアルタイプを選択して Open をクリックします。

    Kanzi Studio はマテリアルタイプを追加し、そのマテリアルタイプを使用してマテリアルを作成します。同じマテリアルタイプから追加のマテリアルを作成することができます。マテリアルを使用する (Using materials) を参照してください。

    ../../_images/load-material-type-from-disk.png

デフォルトのマテリアルタイプを修正する

VertexPhong、FragmentPhong、PhysicallyBased、または Unlit のマテリアルタイプを変更するには:

  1. デフォルトの VertexPhong、FragmentPhong、PhysicallyBased、または Unlit のマテリアルタイプのいずれかをプロジェクトに選択または追加します。プロジェクトへのマテリアルタイプの追加 を参照してください。

    例えば、Library > Materials and Textures > Material Types で VertexPhong マテリアルタイプを選択します。

    ../../_images/vertexphong-in-library.png
  2. Properties の Preprocessor Definitions で、マテリアルタイプのプロパティを設定します。

    この方法は、Kanzi に付属する FragmentPhong、VertexPhong、PhysicallyBased、および Unlit マテリアルタイプに使用できます。その他のマテリアルタイプのプロパティを変更するには、シェーダーを手動で編集する必要があります。シェーダーを編集する を参照してください。

    例えば、マテリアルのベースカラーを含むテクスチャの使用を有効にするには、KANZI_SHADER_USE_BASECOLOR_TEXTURE の値を1に設定し、Enter キーを押します。

    ../../_images/phong-preprocessor-defines-basecolor-texture.png

    VertexPhong および FragmentPhong マテリアルタイプでは、次の Preprocessor Definitions を設定できます。

    • KANZI_SHADER_MORPH_TARGET_COUNT は、Kanzi がモーフで一度にアクティブにできるモーフターゲットの数を設定します。Morph リソースの使用 を参照してください。

    • KANZI_SHADER_NUM_DIRECTIONAL_LIGHTS は、マテリアルに使用する Directional Light ノードの数を設定します。マテリアルタイプのライト数の設定 を参照してください。

    • KANZI_SHADER_NUM_POINT_LIGHTS は、マテリアルに使用する Point Light ノードの数を設定します。マテリアルタイプのライト数の設定 を参照してください。

    • KANZI_SHADER_NUM_SPOT_LIGHTS は、マテリアルに使用する Spot Light ノードの数を設定します。マテリアルタイプのライト数の設定 を参照してください。

    • KANZI_SHADER_SKINNING_BONE_COUNT はスキニングのためにメッシュ内のボーンの数を設定します。スキンメッシュの使用 を参照してください。

    • KANZI_SHADER_USE_BASECOLOR_TEXTURE は、マテリアルのベースカラーを含むテクスチャの使用を可能にします。

    • KANZI_SHADER_USE_MORPH_DATA_TEXTURE はモーフデータテクスチャの使用を可能にします。Morph リソースの使用 を参照してください。

    • KANZI_SHADER_USE_MORPH_NORMAL_LIMIT は、生成されたモーフ法線とモーフベースメッシュの差を制限することを可能にします。モーフを追加する を参照してください。

    • KANZI_SHADER_USE_MORPH_TARGET_NORMALS は、モーフベースシェイプの法線を使用する代わりに、各モーフターゲットシェイプが独自の法線を使用できるようにします。モーフターゲット法線の使用 を参照してください。

    • KANZI_SHADER_USE_MORPH_TARGET_TANGENTS は、モーフベースシェイプの接線を使用する代わりに、各モーフターゲットシェイプが独自の接線を使用できるようにします。

    • KANZI_SHADER_USE_NORMALMAP_TEXTURE は、マテリアルのための法線マップを含むテクスチャの使用を可能にします。

    • KANZI_SHADER_USE_REFLECTION_CUBE はキューブマップ反射の使用を可能にします。キューブマップ反射の作成 を参照してください。

    PhysicallyBased マテリアルタイプで設定できる Preprocessor Definitions については、物理ベースのマテリアルプロパティ を参照してください。

  3. Properties > Shader で、Kanzi Studio はユニフォーム配列を自動的に更新します。不足しているユニフォームソースタイプがある場合、Kanzi Studio はそれらを赤字で示します。

    Properties > Input の Property Types で Sync with Uniforms をクリックし、このマテリアルタイプを使用するマテリアルに不足しているプロパティを追加します。

    ../../_images/phong-shader-uniforms-missing-texture-properties.png ../../_images/sync-with-uniforms.png

マテリアルタイプにプロパティを追加する

マテリアルタイプにプロパティを追加して、ニーズに合ったものにします。カスタマイズまたは作成したマテリアルタイプを使用することで、プロジェクト内のマテリアルの外観をより迅速かつ簡単に設定できます。マテリアルタイプにプロパティを追加すると、Kanzi Studio はそのマテリアルタイプを使用しているすべてのマテリアルにプロパティを追加します。

マテリアルタイプにプロパティを追加するには:

  1. Library > Materials and Textures > Material Types で、プロパティを追加したいマテリアルタイプ内の、プロパティを使用したいシェーダーをダブルクリックします。

    ../../_images/mymaterialtype-fragment-shader.png
  2. Shader Source Editor で、シェーダーコードにプロパティを追加し、シェーダーを保存します。

    Kanzi のデフォルトのユニフォームは、Uniforms メニューから選択することで宣言できます。シェーダーを編集する を参照してください。

    ../../_images/use-uniforms-in-shader-source-editor.png
  3. Library で、シェーダーにプロパティを追加したマテリアルタイプを選択します。Properties で、Sync with Uniforms をクリックします。

    Kanzi Studio は、シェーダーで定義したプロパティをマテリアルタイプとそのマテリアルタイプを使用するマテリアルに追加します。Kanzi Studio は、マテリアルタイプに対して、Kanzi がレンダーステートに書き込み、このマテリアルタイプを使用する3Dノードをレンダリングする際にプロパティの値として使用するユニフォームバインディングも追加します。ユニフォームバインディング を参照してください。

    ../../_images/mymaterialtype-red-in-library.png ../../_images/mymaterialtype-sync-with-uniforms.png

マテリアルタイプの再利用

Kanzi Studio プロジェクトでマテリアルタイプを作成すると、そのマテリアルタイプを別の Kanzi Studio プロジェクトで再利用できます。

注釈

他のシェーダーからコードを再利用するシェーダーを持つマテリアルタイプを再利用したい場合は、アセットパッケージを作成してください。シェーダーコードの再利用 と アセットパッケージの作成 を参照してください。

マテリアルタイプを再利用するには:

  1. マテリアルタイプを保存:

    1. Library > Materials and Textures > Material Types で、別のプロジェクトで使用したいマテリアルタイプを右クリックし、Save Material Type to Disk を選択します。

      他のシェーダーからコードを再利用するシェーダーを持つマテリアルタイプを再利用したい場合は、再利用したいマテリアルタイプを使用するマテリアルを含むアセットパッケージを作成してください。

      ../../_images/save-material-type-to-disk.png
    2. マテリアルタイプを保存したい名前と場所を選択し、Save をクリックします。

  2. マテリアルタイプを再利用する:

    1. Kanzi Studio で、保存したマテリアルタイプの読み込み先となるプロジェクトを開きます。

    2. Library で、Materials and Textures を右クリックし、Load Material Type From Disk を選択します。保存したマテリアルタイプを含むディレクトリに移動し、そのマテリアルタイプを選択して、Open をクリックします。

      Kanzi Studio はマテリアルタイプを追加し、そのマテリアルタイプを使用してマテリアルを作成します。同じマテリアルタイプから追加のマテリアルを作成することができます。マテリアルを使用する (Using materials) を参照してください。

      ../../_images/load-material-type-from-disk.png

Material Type プロパティタイプ

マテリアルタイプの利用可能なプロパティタイプのリストについては、マテリアルタイプ (Material type) を参照してください。

関連項目

マテリアルを使用する (Using materials)

スマートマテリアルを使用する

マテリアルタイプとマテリアル

物理ベースのマテリアルプロパティ

シェーダーを編集する

Morph リソースの使用

スキンメッシュの使用

マテリアルタイプのライト数の設定