ミップマップ (Mipmap) の使用

大きなテクスチャからダウンスケールされたサブレベルのセットを作成するためにミップマップを使用します。ミップマップはGPUメモリの使用量を3分の1増加させますが、テクスチャ全体をサンプリングする必要がない場合にパフォーマンスを向上させます。テクスチャ付きノードをスケーリングする際には、パフォーマンスを向上させるためにミップマップを使用してください。

たとえば、256 x 256 ピクセルのテクスチャには、128 x 128、64 x 64 ... 1 x 1 ピクセルまでテクスチャを削減するミップマップレベルがあります。パフォーマンスが向上するのは、小さいミップマップレベルがGPUの固定サイズのテクスチャキャッシュにより適合するためです。

サードパーティツールで作成したミップマップを .dds ファイルに組み込むと、Kanzi Studio がミップマップレベルの画像を抽出して使用します。

.jpeg テクスチャからはミップマップを作成しないでください。.jpeg 画像形式ではミップマップの品質が低下します。

テクスチャのミップマップの生成

ミップマップを含まない画像をインポートするとき、Kanzi Studio ではその画像からテクスチャのミップマップを生成できます。

テクスチャのミップマップを生成するには:

  1. Library > Resource Files > Images で、ミップマップを作成したい画像を選択します。

    .jpeg テクスチャからはミップマップを作成しないでください。.jpeg 画像形式ではミップマップの品質が低下します。

  2. Properties で、Generate Mipmaps プロパティを有効にします。

    ../../_images/generate-mipmaps.png
  3. Library > Materials and Textures > Textures で、ミップマップを生成したい画像を使用するテクスチャを選択します。Properties で、Mipmap Mode プロパティを Linear または Nearest に設定して、ミップマップを使用できるようにします。テクスチャ (Texture) のフィルタリング を参照してください。

    ../../_images/mipmap-mode-property.png
  4. プロジェクトのkzbファイルをエクスポートする際に、Kanzi Studio が画像をプリプロセスするかどうかを尋ねたら、Yes をクリックします。Kanzi Studio で画像をプリプロセスしない場合、Kanzi Engine はターゲットデバイスでアプリケーションをロードする際にミップマップを生成します。これにより、アプリケーションのロード時間が増加します。

    注釈

    Kanzi は、ASTC、ATC、ETC、または PVRTC 圧縮を使用する画像のミップマップを生成できません。

    ヒント

    画像のミップマップを手動で生成するには、Library でミップマップを生成したい画像を右クリックし、Preprocess images を選択します。

    ../../_images/preprocess-images.png

コンポジションターゲットのミップマップの作成

Composition Target Render Pass または Cubemap Render Pass を使用して3Dコンテンツをレンダリングするとき、コンポジションターゲットのミップマップを作成できます。例えば、これを使用して、レンダリングが迅速な低品質のぼかし効果を作成します。

この手順では、Kanzi が自動的に作成するコンポジションターゲットのミップマップを作成する方法を説明します。Render Target Texture のミップマップを作成するには、Render Target Texture のミップマップの作成 を参照してください。

コンポジションターゲットのミップマップを作成するには:

  1. コンテンツを1つ以上のコンポジションターゲットにレンダリングするのに必要なレンダーパスを作成します。

    例えば、Library > Rendering > Render Pass Prefabs で、Compose and Blit Pass を作成します。コンポジションターゲットへのコンテンツのレンダリング を参照してください。

    ../../_images/compose-and-blit-pass-library1.png
  2. Library > Rendering > Render Pass Prefabs で、ミップマップを作成したいコンポジションターゲットを持つ Composition Target Render Pass または Cubemap Render Pass を選択します。Properties で、Mipmap Mode プロパティを追加し、Linear または Nearest に設定します。テクスチャ (Texture) のフィルタリング を参照してください。

    ../../_images/composition-target-mipmap-mode.png
  3. (オプション) Kanzi がミップマップを作成する方法をカスタマイズするには、コンポジションターゲットごとにミップマップフィルタリングマテリアルを設定できます。

    Kanzi Studio には、使用できるミップマップフィルタリングマテリアルのセットが付属しています。

    ミップマップフィルタリングマテリアルを設定するには:

    1. Kanzi Studio メインメニューで、Project > Properties を選択し、Target Graphics API を OpenGL ES 3.0、OpenGL ES 3.1、または OpenGL ES 3.2 に設定します。

      カスタムミップマップフィルタリングには OpenGL ES 3.0 以降が必要です。Kanzi でOpenGL ES 3.0+を使用する を参照してください。

      ../../_images/project-properties.png ../../_images/target-graphics-api-opengl-es-30.png
    2. ミップマップフィルタリングマテリアルを使用するようにレンダーパスを設定します。

      • Cubemap Render Pass の場合は、Mipmap Generation > Cubemap Mipmap Material プロパティを追加し、使用したいマテリアルに設定します。

        例えば、DefaultCubemapMipmapFilterMaterial に設定します。プロジェクトにこのマテリアルが含まれていない場合は、Library > Materials and Textures で、Alt を押しながら右クリック Material Types を行い、DefaultCubemapMipmapFilter を選択します。

        ../../_images/cubemap-mipmap-material.png
      • Composition Target Render Pass の場合は、以下の Mipmap Generation プロパティのうち1つ以上を追加して設定します。

        • カラーコンポジションターゲットのミップマップフィルタマテリアルを設定するには、Color Mipmap Material 0、Color Mipmap Material 1、Color Mipmap Material 2、Color Mipmap Material 3 を使用します。

          例えば、Composition Target 0 のマテリアルを設定するには、Color Mipmap Material 0 プロパティを追加して DefaultMipmapFilterMaterial に設定します。プロジェクトにこのマテリアルが含まれていない場合は、Library > Materials and Textures で、Alt を押しながら右クリック Material Types を行い、DefaultMipmapFilter を選択します。

        • Depth Mipmap Material は、最初のコンポジションターゲットのデプスアタッチメントに使用したいマテリアルに設定します。

          例えば、DefaultDepthMipmapFilterMaterial に設定します。プロジェクトにこのマテリアルが含まれていない場合は、Library > Materials and Textures で、Alt を押しながら右クリック Material Types を行い、DefaultDepthMipmapFilter を選択します。

        ../../_images/composition-target-mipmap-materials.png

    デフォルトのミップマップフィルタリングマテリアルは、以下のプロパティをシェーダーへの入力として使用できます。

    • Current Mipmap Level は、レンダリング中のミップマップレベルを示します。

    • Mipmap Source Texture は、ミップマップの作成対象となるレンダーターゲットテクスチャを含むテクスチャを示します。シェーダーは、Current Mipmap Level より小さいミップマップレベルからのみサンプリングする必要があります。

  4. (オプション) デフォルトでは、Kanzi は Composition Target Render Pass または Cubemap Render Pass がコンポジションターゲットを作成した時点でミップマップを生成します。別のレンダーパスで同じコンポジションターゲットへのレンダリングを続ける場合、ミップマップをすぐに作成すると GPU 時間を無駄にする可能性があります。これを避けるには、コンポジションターゲットを作成するレンダーパスで、Composition Target Render Pass > Resolve Immediately または Cubemap Render Pass > Resolve Immediately プロパティを追加して無効にします。

    ../../_images/resolve-immediately-disabled.png

Render Target Texture のミップマップの作成

Composition Target Render Pass を使用して3Dコンテンツをレンダリングする Render Target Texture のためにミップマップを作成できます。例えば、これを使用して、レンダリングが迅速な低品質のぼかし効果を作成します。

Render Target Texture のミップマップを作成するには:

  1. Library > Rendering > Render Pass Prefabs で Render to Texture Pass を作成します。

    Render to Texture Pass は、テクスチャにレンダリングするために必要なレンダーパスとテクスチャを作成します。

    テクスチャへのレンダリング (Rendering to texture) を参照してください。

    ../../_images/render-to-texture-pass.png
  2. Node Tree で、テクスチャにレンダリングしたいコンテンツを持つ Viewport 2D ノードを選択し、Properties で Render Pass Prefab プロパティを前のステップで作成した Render to Texture Pass に設定します。

    Kanzi は、作成したレンダーパスを使用して Viewport 2D をレンダリングします。

    ../../_images/scene-render-pass-set-to-render-to-texture-pass.png
  3. Library で作成した Render to Texture Pass を選択し、Properties で Composition Target 0 プロパティの横にある image0 をクリックして Render Target Texture リソースに移動し、Mipmap Mode プロパティを Linear または Nearest に設定します。テクスチャ (Texture) のフィルタリング を参照してください。

    ../../_images/render-to-texture-pass-go-to-render-target-texture.png ../../_images/render-target-texture-mipmap-mode.png
  4. Render Target Texture を3Dコンテンツを表示したいノードで使用します。レンダーターゲットテクスチャ (Render Target Texture) を使用する を参照してください。

関連項目

データサイズの調整

リソースを並列でロードする

テクスチャを圧縮する (Compressing textures)

テクスチャ (Texture) のフィルタリング

タイルアトラスを使用する

アプリケーションのパフォーマンスのトラブルシューティング

コンポジションターゲットへのコンテンツのレンダリング

Kanzi でOpenGL ES 3.0+を使用する