次の方法で共有


ポイント、バイリニア、トリリニア、およびアニソトロピック テクスチャ フィルタリング バリアント

適切なテクスチャのサンプラーでフィルタリング モードをオーバーライドします。

解釈

テクスチャ サンプリングにはさまざまなメソッドがありますが、それぞれパフォーマンス コストとイメージ品質が異なります。 次に、コストと表示品質の低い順からフィルター モードを示します。

  1. Point フィルタリング (最も安価、表示品質は一番低い)

  2. Bilinear フィルタリング

  3. Trilinear フィルタリング

  4. Anisotropic フィルタリング (最も高価、表示品質は一番高い)

各バリアントのパフォーマンス コストが重要である、またはより強力なフィルタリング モードを使用してパフォーマンス コストを強化する場合は、表示品質に対してコストに重点をおくことができます。 自身の評価に基づいて、パフォーマンス コストを追加して表示品質を向上させる、表示品質を落としてフレームレートの数を多くする、他の方法で使用できるようにパフォーマンスを改善する、といったことが可能です。

パフォーマンス コストがごくわずかであるか、またはフィルタリング モードに関係なく一定である (たとえば、ターゲットの GPU に大量のシェーダー スループットおよびメモリ帯域幅がある) 場合には、異方性フィルタリングを使用してアプリケーションで最高のイメージ品質を実現することを検討してください。

解説

これらのバリアントは、アプリケーションが提供したサンプラーのフィルター モードが以下のいずれかの場合に、ID3D11DeviceContext::PSSetSamplers への呼び出しが行われたときにサンプラーの状態をオーバーライドします。

  • D3D11_FILTER_MIN_MAG_MIP_POINT

  • D3D11_FILTER_MIN_MAG_POINT_MIP_LINEAR

  • D3D11_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT

  • D3D11_FILTER_MIN_POINT_MAG_MIP_LINEAR

  • D3D11_FILTER_MIN_LINEAR_MAG_MIP_POINT

  • D3D11_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR

  • D3D11_FILTER_MIN_MAG_LINEAR_MIP_POINT

  • D3D11_FILTER_MIN_MAG_MIP_LINEAR

  • D3D11_FILTER_ANISOTROPIC

Point Texture Filtering バリアントでは、アプリケーションが提供したフィルター モードがD3D11_FILTER_MIN_MAG_MIP_POINT に置き換えられます。Bilinear Texture Filtering バリアントでは、D3D11_FILTER_MIN_MAG_LINEAR_MIP_POINT に置き換えられ、Trilinear Texture Filtering バリアントではD3D11_FILTER_MIN_MAG_MIP_LINEAR に置き換えられます。

Anisotropic Texture Filtering バリアントでは、アプリケーションが提供したフィルター モードは D3D11_FILTER_ANISOTROPIC に置き換えられ、Max Anisotropy は 16 に設定されます。

制約と制限

Direct3D では機能レベル 9.1 は、最大異方性が 2x であることを表します。 Anisotropic Texture Filtering バリアントは 16x の異方性のみを使おうとするため、機能レベル 9.1 のデバイス上でフレーム分析を実行すると再生は失敗します。 この制約の影響を受ける現在のデバイスには、ARM ベースの Surface RT、および Surface 2 Windows タブレットが含まれています。 コンピューターの中には古い GPU が存在している可能性があり、これらの GPU も影響を受けます。ただし、これらは一般的には使われておらず、問題にならなくなっています。

使用例

Point Texture Filtering バリアントは、次のようなコードを使用して再現することができます。

D3D11_SAMPLER_DESC sampler_description;

// ... other sampler description setup ...

sampler_description.Filter = D3D11_FILTER_MIN_MAG_MIP_POINT;

d3d_device->CreateSamplerState(&sampler_desc, &sampler);
d3d_context->PSSetSamplers(0, 1, &sampler

Bilinear Texture Filtering バリアントは、次のようなコードを使用して再現することができます。

D3D11_SAMPLER_DESC sampler_description; 

// ... other sampler description setup ...

sampler_description.Filter = D3D11_FILTER_MIN_MAG_LINEAR_MIP_POINT;

d3d_device->CreateSamplerState(&sampler_desc, &sampler);
d3d_context->PSSetSamplers(0, 1, &sampler

Trilinear Texture Filtering バリアントは次のようなコードを使用して再現することができます。

D3D11_SAMPLER_DESC sampler_description; 

// ... other sampler description setup ...

sampler_description.Filter = D3D11_FILTER_MIN_MAG_MIP_LINEAR;

d3d_device->CreateSamplerState(&sampler_desc, &sampler);
d3d_context->PSSetSamplers(0, 1, &sampler

Anisotropic Texture Filtering バリアントは、次のようなコードを使用して再現することができます。

D3D11_SAMPLER_DESC sampler_description; 

// ... other sampler description setup ...

sampler_description.Filter = D3D11_FILTER_ANISOTROPIC;
sampler_description.MaxAnisotropy = 16;

d3d_device->CreateSamplerState(&sampler_desc, &sampler);
d3d_context->PSSetSamplers(0, 1, &sampler