次の方法で共有


Direct3D 10.1 の機能

Direct3D 10.1 は、Direct3D 10.0 の機能セットを次の新機能で拡張します。

  • ブレンド モード - 新しいブレンドステート インターフェイスを使用したレンダー ターゲットごとの独立したブレンド モードです (ID3D10BlendState1 インターフェイスを参照)。 デュアル ソース ブレンド操作は、ターゲット スロット 0 のレンダリングに制限されます。他の出力に書き込んだり、スロット 0 以外のスロットにレンダー ターゲットをバインドしたりすることはできません。

  • カリング動作 - ゼロ領域の面が自動的にカリングされます。これはワイヤフレーム レンダリングにのみ影響します。

  • 浮動小数点ルール - 32 ビット浮動小数点演算を除く浮動小数点演算に同じ IEEE-754 規則を使用して、無限に正確な結果の 0.5 単位の最終位置 (0.5 ULP) 内に結果を生成します。 これは加算、減算、乗算に適用されます。 (乗算の精度は 0.5 ULP、逆数の場合は 1.0 ULP)。

  • 形式 - float16 ブレンドの精度が 0.5 ULP に向上しました。 ブレンドは、UNORM16/SNORM16/SNORM8 形式にも必要です。

  • マルチサンプル アンチエイリアシング - マルチサンプリングが強化され、カバレッジ ベースの透明度が一般化され、マルチサンプリングがマルチパス レンダリングとより効果的に動作するようになりました。 これを実現するために、すべてのマルチサンプル セマンティクスは、ピクセル シェーダーが常にサンプルごとに 1 回実行される (サンプル頻度) かのように定義され、サンプルごとに個別の色が計算されます。 ピクセル シェーダーがサンプルごとの属性を使用しない場合、ピクセル内のカバーされる各サンプルに対して同じ値が計算されます。 その場合、シェーダーをピクセルごとに 1 回実行するハードウェア (ピクセル周波数) に相当し、対象となるすべてのサンプルに結果をレプリケートします。 当然ながら、ピクセル周波数で実行すると、属性がピクセル周波数でサンプリングされる場合、常にサンプル周波数で同じシェーダーを実行する場合と同じ結果が生成されます。 PSInvocations パイプラインの統計情報は、シェーダーがピクセル周波数で実行されていない限り、サンプル周波数でインクリメントされます。

  • パイプライン ステージ帯域幅 - シェーダー ステージ間で渡すことができるデータの量を増やしました:

    リソース 制限
    シェーダー ステージ間のレジスタ 32 (32 ビット x 4 コンポーネント)
    頂点シェーダー入力レジスタ 32
    入力アセンブラー入力スロット 32

     

  • ラスター化ルール - ラスター化のルールがラインに対して変更されました。さらに、新しい機能が追加されました。

    • MultisampleEnable は、線のラスター化にのみ影響し (ポイントと三角形は影響を受けません)、線描画アルゴリズムの選択に使用されます。 つまり、Direct3D 10 からの一部のマルチサンプル ラスター化はサポートされなくなりました。
    • プリミティブ ラスタライズを使用した新しいサンプル周波数ピクセル シェーダーの実行。
  • リソース - CopyResource は、次の 2 つの新しいシナリオで有効になりました:

    • 色と深度/ステンシルの両方の MSAA サーフェスをコピー元またはコピー先として CopyResource と共に使用できるようになりました
    • 特定の 32/64/128 ビットの事前構造化リソース、型指定されたリソース、および同じビット幅の圧縮表現の間でコピーする際のフォーマット変換。
  • テクスチャ サンプリング - sample_c 命令とsample_c_lz 命令は、Texture2DArrays と TextureCubeArrays の両方で動作するように定義されています。Location メンバー (アルファ コンポーネント) を使用して配列インデックスを指定します。

  • Views - TextureCube と新しい TextureCubeArray (D3D10_TEXCUBE_ARRAY_SRV1 を参照) は実際のリソースではなく、Texture2DArray リソースの新しいビューです。 新しい使用フラグ (D3D10_RESOURCE_MISC_TEXTURECUBE) を使用して Texture2DArray リソースからリソース ビューを作成し、新しい ID3D10ShaderResourceView1 インターフェイス インターフェイスを使用してキューブ テクスチャ ビューをパイプラインにバインドします。

新機能には、D3D10CreateDevice1 を呼び出 して作成できる 10.1 デバイスの種類 (ID3D10Device1 インターフェイスを参照) が必要です。または、D3D10CreateDeviceAndSwapChain1 を呼び出してデバイスとスワップ チェーンを同時に作成することもできます。

Windows Vista Service Pack 1 では、Direct3D 10.0 および Direct3D 10.1 DLL がシステム上に並列して存在します。 10.1 機能にアクセスするには、次のいずれかの操作を行います:

Vista Gold および Vista Service Pack 1 の 10.1 機能へアクセス

Vista Gold と SP1 をサポートしたいと考えている開発者は、Vista Gold で新しい 10.1 API 拡張機能が不足していることを考慮する必要があります。 DXUT と D3DX10 はどちらも、システムで使用可能な DLL と使用可能なハードウェア (10.0 または 10.1) に基づいて、適切なデバイスを作成するための便利な機能を提供します。 10.1 デバイスは 10.0 デバイスから継承され、QueryInterface() を使用して取得できます。 各アプリケーションはデバイスの種類を追跡し、10.1 機能が必要な場合に QueryInterface 呼び出しが頻繁に発生しないように、10.1 デバイスへのポインター (使用可能な場合) を維持することをお勧めします。 同様に、アプリケーションのカスタム クラスによって 10.1 のリソース ビューと状態オブジェクトが関連付けられている場合は、冗長な QueryInterface() 呼び出しを回避するために、オブジェクトが 10.0 型か 10.1 型かをアプリケーションで追跡することをお勧めします。 D3DX10 には、このプロセスを簡略化するためのユーティリティ関数のセットが含まれています (D3DX10CreateDevice D3DX10CreateDeviceAndSwapChain を参照)。

Vista Service Pack 1 の 10.1 機能に排他的にアクセスする

一部の開発者は、Vista Service Pack 1 を必要とすることを選択できます。これは、エンドユーザーに広く配布され、Direct3D 10.1 以外の一連の機能強化が含まれます。 これらの開発者は、Direct3D 10.1 ヘッダーとライブラリを排他的に使用して、10.0 と 10.1 の両方のハードウェアをサポートする Direct3D 10.1 DLL に依存できます (ただし、新しい機能がサポートされていない 10.0 デバイスでは、一部の呼び出しが失敗することがあります)。

その他の注意事項:

  • D3DX10.dll で公開されている API は、10.0 デバイスと 10.1 デバイスの両方を受け入れ、使用可能な場合は 10.1 の機能を利用します。
  • D3D10SDKLayers.dll は 10.1 デバイスをサポートし、10.1 の機能に適したデバッグ出力を行うことができます。
  • D3D10Ref.dll は、10.0 および 10.1 ソフトウェア デバイスを実装します。
  • D3DX10 および FXC は、更新された 10.1 シェーダー モデルをサポートし、ターゲットは次のとおりです。vs_4_1、gs_4_1、ps_4_1、および 10.1 デバイスにバインドできるfx_4_1。 10.1 デバイスでは、シェーダー モデル 4.0 および 4.1 シェーダーがサポートされています。
  • Direct3D 10.0 エフェクト フレームワークは 10.0 および 10.1 デバイスをサポートしますが、シェーダー モデル 4.1 シェーダーまたは新しい 10.1 機能を含む手法では、10.1 デバイスを使用する必要があります。

Direct3D 10 のプログラミング ガイド