シェーダー¶
Shaders を使用して、画像内の適切なレベルの光と色を生成したり、特殊効果を生成したり、ポストプロセッシングを行ったりします。
Kanzi のシェーダーは、OpenGL ESシェーディング言語に基づいています。
Kanzi の各マテリアルタイプには、シェーディングアルゴリズムを定義するシェーダーが付属しています。
Vertex Shader は個々の頂点を処理します。 Vertex Shader のソースファイルの拡張子は |
|
Fragment Shader は各フラグメントを処理します。 Fragment Shader のソースファイルは拡張子 |
Kanzi Studio プロジェクトが OpenGL ES 3.2 をターゲットにしている場合、次のシェーダーも作成できます。
Geometry Shader はプリミティブを処理します。 Geometry Shader のソースファイルは拡張子 |
|
Tessellation Control Shader はプリミティブのテッセレーション量を決定し、入力パッチデータに変換を行います。 Tessellation Control Shader のソースファイルの拡張子は |
|
Tessellation Evaluation Shader は、プリミティブジェネレーターによって生成された抽象座標を使用して、頂点の値を計算します。 Tessellation Evaluation Shader のソースファイルは、拡張子 |
ジオメトリシェーダーを使用する と テッセレーションシェーダーの使用 を参照してください。
Kanzi Studio プロジェクトでは、シェーダープログラムはコンピュータのハードドライブにファイルとして保存されます。シェーダーを Kanzi Studio プロジェクトの <KanziWorkspace>/Projects/<ProjectName>/Shaders ディレクトリに追加すると、Kanzi Studio は自動的にそれらを Library > Resource Files > Shaders に表示します。
Kanzi に付属するシェーダーは、<KanziInstallation>/Studio/Asset Library/MaterialTypes で見つけることができます。
Commonディレクトリには、汎用シェーダーを持つマテリアルタイプが含まれています。汎用シェーダー を参照してください。FragmentPhongディレクトリには、ピクセルベースのフォンシェーダーを持つマテリアルタイプが含まれています。ピクセルベースのPhongシェーダー を参照してください。PhysicallyBasedRenderingディレクトリには、物理ベースのシェーダーを持つマテリアルタイプが含まれています。物理ベースシェーダー を参照してください。Unlitディレクトリには、ライトを使用しないシェーダーを持つマテリアルタイプが含まれています。Unlit シェーダー を参照してください。VertexPhongディレクトリには、頂点ベースのフォンシェーダーを持つマテリアルタイプが含まれています。頂点ベースのPhongシェーダー を参照してください。
独自のシェーダーを書くこともできます。シェーダーを編集する を参照してください。
Kanzi では、バイナリシェーダーも使用できます。バイナリシェーダーは、アプリケーションがデバイスのGPUに渡す前に、ハードウェアメーカーが提供するコンパイラで事前にコンパイルするシェーダープログラムです。これにより、ターゲットデバイスがアプリケーションをより速くロードできるようになります。バイナリシェーダーを使用すること を参照してください。
汎用シェーダー¶
<KanziInstallation>/Studio/Asset Library/MaterialTypes/Common ディレクトリには、汎用シェーダーを持つマテリアルタイプが含まれています。
ColorTexture 色付きテクスチャデータを表示します。 |
|
CubemapSkybox キューブマップテクスチャをスカイボックスとして表示します。キューブマップテクスチャをスカイボックスとして使用する を参照してください。 |
|
DefaultBlit Blit Render Pass で使用されるデフォルトシェーダー。レンダリング を参照してください。 |
|
DefaultCubemapBlit Cubemap Render Pass の下で Blit Render Pass を使用するときに、そのレンダーパスで使用されるデフォルトシェーダー。レンダリング を参照してください。 |
|
DefaultCubemapMipmapFilter、DefaultDepthMipmapFilter、DefaultMipmapFilter コンポジションターゲットのミップマップ生成をカスタマイズするためのデフォルトシェーダー。コンポジションターゲットのミップマップの作成 を参照してください。 |
|
FontDefault テキストフォントをレンダリングします。このシェーダーはグリフテクスチャとフォントカラーを組み合わせて出力を表示します。Text Block ノードおよび Text Box ノードと一緒に使用できます。Text Block ノードを使用する および Text Box ノードを使用する を参照してください。 |
|
LatLongCubemapBlit 緯度経度 (正距円筒図法) テクスチャをキューブマップにブリットします。このシェーダーは、Blit Render Pass で DefaultCubemapBlit シェーダーの代わりに使用できます。レンダリング を参照してください。 |
|
LatLongSkybox 緯度経度 (正距円筒図法) テクスチャをスカイボックスとして表示します。緯度経度環境テクスチャを使用する を参照してください。 |
|
MaskTexture 1つのテクスチャが別のテクスチャをマスクするテクスチャデータを表示します。 |
|
SweepTextures テクスチャデータを一つのテクスチャから別のテクスチャへと遷移させて表示します。 |
|
Textured テクスチャデータを表示します。テクスチャ (Textures) と テクスチャ付きマテリアルの作成 を参照してください。 |
|
ピクセルベースのPhongシェーダー¶
<KanziInstallation>/Studio/Asset Library/MaterialTypes/FragmentPhong ディレクトリには、OpenGL ES2で使用するピクセルベースのフォンシェーダーを持つマテリアルタイプが含まれています。フォン反射モデルを使用したライティングの適用を含む、GPU特有の計算のほとんどはフラグメントシェーダーで行われます。これにより、しばしばパフォーマンスを犠牲にしても、より良い画質が得られます。
FragmentPhong Blinn-Phong シェーディングモデル を実装します。デフォルトで、このシェーダーは1つのディレクショナルライト、1つのスポットライト、および2つのポイントライトをサポートします。シェーダーは各フラグメントのライティングを計算します。 |
|
FragmentPhongCube ビュー ベクトルと表面法線の反射から計算されたキューブマップ反射を表示し、その結果をフォン シェーディングと組み合わせます。 |
|
FragmentPhongMorph モーフィングを有効にします。Morph リソースの使用 を参照してください。 |
|
FragmentPhongSkinned スキンメッシュデータを表示します。スキンメッシュの使用 を参照してください。 |
|
FragmentPhongSkinnedMorph FragmentPhongMorph シェーダーと FragmentPhongSkinned シェーダーを組み合わせます。 |
|
FragmentPhongTextured 3Dノードで使用できるテクスチャデータを表示します。テクスチャ (Textures) および テクスチャ付きマテリアルの作成 を参照してください。 |
|
FragmentPhongTexturedCube FragmentPhongCube シェーダーと FragmentPhongTextured シェーダーを組み合わせます。 |
|
FragmentPhongTexturedNormalMap スキンメッシュデータを表示します。スキンメッシュの使用 を参照してください。 |
|
FragmentPhongTexturedCubeNormalMap FragmentPhongTexturedNormalMap シェーダーをビュー ベクトルと表面法線の反射から計算されたキューブマップ反射と組み合わせます。 |
|
FragmentPhongTexturedSkinned FragmentPhongSkinned シェーダーと FragmentPhongTextured シェーダーを組み合わせます。 |
|
FragmentPhongTexturedSkinnedMorph FragmentPhongMorph、FragmentPhongSkinned、および FragmentPhongTextured シェーダーを結合します。 |
|
頂点ベースのPhongシェーダー¶
<KanziInstallation>/Studio/Asset Library/MaterialTypes/VertexPhong ディレクトリには、OpenGL ES2 での使用に最適化された頂点ベースのフォンシェーダーを持つマテリアルタイプが含まれています。フォン反射モデルを使用したライトの適用を含む、GPU 固有の計算のほとんどは頂点シェーダーで行われます。これは、ほとんどのデバイスにとって良い出発点です。
VertexPhong Blinn-Phongシェーディングモデル を実装します。デフォルトで、このシェーダーは1つのディレクショナルライト、1つのスポットライト、および2つのポイントライトをサポートします。シェーダーは各頂点のライティングを計算します。 |
|
VertexPhongCube ビュー ベクトルと表面法線の反射から計算されたキューブマップ反射を表示し、その結果をフォン シェーディングと組み合わせます。 |
|
VertexPhongMorph モーフィングを有効にします。Morph リソースの使用 を参照してください。 |
|
VertexPhongSkinned
スキンメッシュの使用 を参照してください。 |
|
VertexPhongSkinnedMorph VertexPhongMorph シェーダーと VertexPhongSkinned シェーダーを組み合わせます。 |
|
VertexPhongTextured 3Dノードで使用できるテクスチャデータを表示します。テクスチャ (Textures) および テクスチャ付きマテリアルの作成 を参照してください。 |
|
VertexPhongTexturedCube VertexPhongCube シェーダーと VertexPhongTextured シェーダーを組み合わせます。 |
|
VertexPhongTexturedMorph VertexPhongMorph シェーダーと VertexPhongTextured シェーダーを組み合わせます。 |
|
VertexPhongTexturedSkinned VertexPhongSkinned シェーダーと VertexPhongTextured シェーダーを組み合わせます。 |
|
VertexPhongTexturedSkinnedMorph VertexPhongMorph、VertexPhongSkinned、および VertexPhongTextured シェーダーを結合します。 |
|
物理ベースシェーダー¶
<KanziInstallation>/Studio/Asset Library/MaterialTypes/PhysicallyBasedRendering ディレクトリには、OpenGL ES3 アプリケーション向けの物理ベースシェーダーを使用したマテリアルタイプが含まれています。これらのシェーダーは、物理ベースレンダリング (PBR) の原則を実装しています。物理ベースのマテリアルのプロパティは、メタルネスなどの物理的特性を表しているため、直感的に制御できます。物理ベースのライティングモデルを使用したライトの適用を含む、GPU 固有の計算のほとんどはフラグメントシェーダーで行われます。これにより、多くの照明条件でより現実的なレンダリング結果が得られます。
PhysicallyBased 物理ベースのシェーディングモデルを実装し、デフォルトで有効にします:
|
|
PhysicallyBasedClearCoat 物理ベースレンダリングを使用して、クリアコートで覆われたマテリアルをレンダリングします。これは一般的に車両の塗装に使用されます。 |
|
PhysicallyBasedMorph デフォルトで、3つのターゲットによるモーフィングを有効にします。Morph リソースの使用 を参照してください。 |
|
PhysicallyBasedSkinned デフォルトで、最大64個のボーンを持つメッシュのスキニングを有効にします。スキンメッシュの使用 を参照してください。 |
|
PhysicallyBasedTextured ベースカラー、法線、粗さ、金属、オクルージョンマップ、および素材から放出される光を含むテクスチャの使用を可能にします。物理ベースのテクスチャードマテリアルを作成する を参照してください。 |
|
PostProcessTonemap デフォルトでReinhardトーンマッピングを適用するフルスクリーンポストプロセッシングマテリアル。 |
|
Unlit シェーダー¶
<KanziInstallation>/Studio/Asset Library/MaterialTypes/Unlit ディレクトリには、KHR_materials_unlit glTF 拡張機能で定義されたアンリットシェーディングモデルを使用するシェーダーを持つマテリアルタイプが含まれています。アンリットシェーダーは、物理ベースのシェーダーの代替として提供されており、パフォーマンスや美的理由で使用することができます。例えば、ライティングを必要としない「手描き」風の外観を実現するためにアンリットマテリアルを使用することができます。
Unlit ライティング計算、トーンマッピング、および余分なテクスチャマップやファクターを使用せずに、物理ベースのシェーディングモデルの代替を実装します。 |
|
UnlitMorph デフォルトで、3つのターゲットによるモーフィングを有効にします。Morph リソースの使用 を参照してください。 |
|
UnlitSkinned デフォルトで、最大64個のボーンを持つメッシュのスキニングを有効にします。スキンメッシュの使用 を参照してください。 |
|
UnlitTextured アンリットマテリアルにテクスチャを使用できるようにします。 |
|