ミップマップ (Mipmap) の使用¶
大きなテクスチャからダウンスケールされたサブレベルのセットを作成するためにミップマップを使用します。ミップマップはGPUメモリの使用量を3分の1増加させますが、テクスチャ全体をサンプリングする必要がない場合にパフォーマンスを向上させます。テクスチャ付きノードをスケーリングする際には、パフォーマンスを向上させるためにミップマップを使用してください。
たとえば、256 x 256 ピクセルのテクスチャには、128 x 128、64 x 64 ... 1 x 1 ピクセルまでテクスチャを削減するミップマップレベルがあります。パフォーマンスが向上するのは、小さいミップマップレベルがGPUの固定サイズのテクスチャキャッシュにより適合するためです。
サードパーティツールで作成したミップマップを .dds ファイルに組み込むと、Kanzi Studio がミップマップレベルの画像を抽出して使用します。
.jpeg テクスチャからはミップマップを作成しないでください。.jpeg 画像形式ではミップマップの品質が低下します。
テクスチャのミップマップの生成¶
ミップマップを含まない画像をインポートするとき、Kanzi Studio ではその画像からテクスチャのミップマップを生成できます。
テクスチャのミップマップを生成するには:
Library > Resource Files > Images で、ミップマップを作成したい画像を選択します。
.jpeg テクスチャからはミップマップを作成しないでください。.jpeg 画像形式ではミップマップの品質が低下します。
Properties で Generate Mipmaps プロパティを有効にします。
Library > Materials and Textures > Textures で、ミップマップを生成したい画像を使用するテクスチャを選択します。Properties で、Mipmap Mode プロパティを Linear または Nearest に設定して、ミップマップを使用できるようにします。テクスチャ (Texture) のフィルタリング を参照してください。
プロジェクトのkzbファイルをエクスポートする際に、Kanzi Studio が画像をプリプロセスするかどうかを尋ねたら、Yes をクリックします。Kanzi Studio で画像をプリプロセスしない場合、Kanzi Engine はターゲットデバイスでアプリケーションをロードする際にミップマップを生成します。これにより、アプリケーションのロード時間が増加します。
注釈
Kanzi では、圧縮方式として ASTC または ETC を使用する画像のミップマップを生成できません。
ヒント
画像のミップマップを手動で生成するには、Library でミップマップを生成したい画像を右クリックし、Preprocess images を選択します。
コンポジションターゲットのミップマップの作成¶
Composition Target レンダーパスまたは Cubemap レンダーパスで 3D コンテンツをレンダリングする場合、コンポジションターゲットのミップマップを作成できます。例えば、これを使用して、高速にレンダリングできる低品質のブラー効果を作成できます。
この手順では、Kanzi が自動的に作成するコンポジションターゲットのミップマップを作成する方法を説明します。Render Target Texture のミップマップを作成するには、Render Target Texture のミップマップの作成 を参照してください。
コンポジションターゲットのミップマップを作成するには:
コンテンツを1つ以上のコンポジションターゲットにレンダリングするのに必要なレンダーパスを作成します。
例えば、Library > Rendering > Render Pass Prefabs で、Compose and Blit Pass を作成します。コンポジションターゲットへのコンテンツのレンダリング を参照してください。
Library > Rendering > Render Pass Prefabs で、コンポジションターゲットのミップマップを作成したい Composition Target レンダーパスまたは Cubemap レンダーパスを選択します。Properties で、Mipmap Mode プロパティを追加し、Linear または Nearest に設定します。テクスチャ (Texture) のフィルタリング を参照してください。
(オプション) Kanzi がミップマップを作成する方法をカスタマイズするには、コンポジションターゲットごとにミップマップフィルタリングマテリアルを設定できます。
Kanzi Studio には、使用できるミップマップフィルタリングマテリアルのセットが付属しています。
ミップマップフィルタリングマテリアルを設定するには:
ミップマップフィルタリングマテリアルを使用するようにレンダーパスを設定します。
Cubemap レンダーパスの場合は、Mipmap Generation > Cubemap Mipmap Material プロパティを追加し、使用したいマテリアルに設定します。
例えば、DefaultCubemapMipmapFilterMaterial に設定します。プロジェクトにこのマテリアルが含まれていない場合は、Library > Materials and Textures で、Alt を押しながら右クリック Material Types を行い、DefaultCubemapMipmapFilter を選択します。
Composition Target レンダーパスの場合は、以下の 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 を選択します。
デフォルトのミップマップフィルタリングマテリアルは、以下のプロパティをシェーダーへの入力として使用できます。
Current Mipmap Level は、レンダリング中のミップマップレベルを示します。
Mipmap Source Texture は、ミップマップの作成対象となるレンダーターゲットテクスチャを含むテクスチャを示します。シェーダーは、Current Mipmap Level より小さいミップマップレベルからのみサンプリングする必要があります。
(オプション) デフォルトでは、Kanzi は Composition Target レンダーパスまたは Cubemap レンダーパスがコンポジションターゲットを作成した時点でミップマップを生成します。別のレンダーパスで同じコンポジションターゲットへのレンダリングを続ける場合、ミップマップをすぐに作成すると GPU 時間を無駄にする可能性があります。これを避けるには、コンポジションターゲットを作成するレンダーパスで、Composition Target レンダーパス > Resolve Immediately プロパティまたは Cubemap レンダーパス > Resolve Immediately プロパティを追加して無効にします。
Render Target Texture のミップマップの作成¶
Composition Target レンダーパスで 3D コンテンツをレンダリングする先の Render Target Texture のミップマップを作成できます。例えば、これを使用して、高速にレンダリングできる低品質のブラー効果を作成できます。
Render Target Texture のミップマップを作成するには:
Library > Rendering > Render Pass Prefabs で Render to Texture Pass を作成します。
Render to Texture Pass は、テクスチャにレンダリングするために必要なレンダーパスとテクスチャを作成します。
テクスチャへのレンダリング (Rendering to texture) を参照してください。
Node Tree で、テクスチャにレンダリングしたいコンテンツを持つ Viewport 2D ノードを選択し、Properties で Render Pass Prefab プロパティを前のステップで作成した Render to Texture Pass に設定します。
Kanzi は、作成したレンダーパスを使用して Viewport 2D をレンダリングします。
Library で作成した Render to Texture Pass を選択し、Properties で Composition Target 0 プロパティの横にある
をクリックして Render Target Texture リソースに移動し、Mipmap Mode プロパティを Linear または Nearest に設定します。テクスチャ (Texture) のフィルタリング を参照してください。
Render Target Texture を3Dコンテンツを表示したいノードで使用します。レンダーターゲットテクスチャ (Render Target Texture) を使用する を参照してください。