25.12.2014 Views

CEDEC 2006 - NVIDIA Developer Zone

CEDEC 2006 - NVIDIA Developer Zone

CEDEC 2006 - NVIDIA Developer Zone

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

DX10の 紹 介<br />

ブライアン・デゥダーシュ(Bryan Dudash)<br />

<strong>NVIDIA</strong> <strong>Developer</strong> Technology<br />

<strong>CEDEC</strong> <strong>2006</strong>


今 日 のセッション<br />

本 セッション DX10の 紹 介<br />

ブライアン・デゥダーシュ(Bryan Dudash)<strong>NVIDIA</strong><br />

14:50 – 15:00 休 憩<br />

15:00 – 16:50 DX10のエフェクトとパフォーマンスならび 使 用 法<br />

ブライアン・デゥダーシュ(Bryan Dudash)<strong>NVIDIA</strong><br />

16:50 – 17:00 休 憩<br />

17:00 – 18:30 <strong>NVIDIA</strong> GPUでの 物 理 演 算<br />

サイモン・グリーン(Simon Green)<strong>NVIDIA</strong><br />

Copyright © <strong>NVIDIA</strong> Corporation 2004<br />

<strong>CEDEC</strong> <strong>2006</strong>


D3D10アジェンダ<br />

D3D9レビュー<br />

D3D10パイプラインおよびコンセプト<br />

D3D10への 移 行<br />

新 しいD3D10アイデアの 用 途<br />

状 態 オブジェクト<br />

リソースタイプおよびアレイ<br />

リソースの 表 示<br />

プレディケートレンダリング<br />

Copyright © <strong>NVIDIA</strong> Corporation 2004<br />

<strong>CEDEC</strong> <strong>2006</strong>


ここで 話 題 にしない 内 容<br />

エンジンをかっこよくしてくれ ( 凸 凹 をピカピカに)<br />

まずは 基 礎 から。エフェクトは 後 で<br />

バッチ、バッチ、バッチ (パフォーマンス)<br />

パフォーマンスの 話 も 後 ほど !<br />

Copyright © <strong>NVIDIA</strong> Corporation 2004<br />

<strong>CEDEC</strong> <strong>2006</strong>


D3D10のこれから<br />

D3D10はMicrosoftの 次 の API<br />

新 しいドライバモデル<br />

IHVが 管 理 するカーネルおよびユーザモードドライバ<br />

Vistaが 必 要<br />

リソースの 仮 想 化 をOSが 処 理<br />

D3D10<br />

新 しいプログラマビリティを 導 入<br />

プログラムで 利 用 できるデータが 大 幅 に 増 加<br />

HLSL 専 用<br />

もちろん、プリコンパイル 可 能<br />

Copyright © <strong>NVIDIA</strong> Corporation 2004<br />

<strong>CEDEC</strong> <strong>2006</strong>


D3D9パイプライン<br />

バーテックスシェーダ<br />

VB/IBメモリ<br />

ラスタライザ<br />

ビデオメモリ<br />

ピクセルシェーダ<br />

テクスチャ<br />

ROP<br />

Copyright © <strong>NVIDIA</strong> Corporation 2004<br />

<strong>CEDEC</strong> <strong>2006</strong>


D3D10パイプライン<br />

入 力 アセンブラ<br />

バーテックスシェーダ<br />

ジオメトリシェーダ<br />

ラスタライザ<br />

ストリーム 出 力<br />

ビデオメモリ<br />

(バッファ<br />

テクスチャ、<br />

固 定 バッファ)<br />

ピクセルシェーダ<br />

出 力 マージャ<br />

Copyright © <strong>NVIDIA</strong> Corporation 2004<br />

<strong>CEDEC</strong> <strong>2006</strong>


D3D10 命 名 規 則<br />

ID3D10(IDirect3D10ではない)<br />

ID3D10Device::IA*___( 入 力 アセンブラ)<br />

ID3D10Device::VS*___(バーテックスシェーダ)<br />

ID3D10Device::GS*___(ジオメトリシェーダ)<br />

ID3D10Device::SO*___(ストリームアウト)<br />

ID3D10Device::RS*___(ラスタライザステージ)<br />

ID3D10Device::PS*___(ピクセルシェーダ)<br />

ID3D10Device::OM*___( 出 力 マージャ)<br />

Copyright © <strong>NVIDIA</strong> Corporation 2004<br />

<strong>CEDEC</strong> <strong>2006</strong>


命 名 規 則 ( 追 加 )<br />

D3D<br />

Direct3D API<br />

DXGI<br />

DirectXグラフィックスインフラストラクチャ<br />

D3DX<br />

D3D 拡 張 ユーティリティ 機 能<br />

HLSL<br />

高 レベルシェーディング 言 語<br />

Copyright © <strong>NVIDIA</strong> Corporation 2004<br />

<strong>CEDEC</strong> <strong>2006</strong>


D3D9のイニシャライズ<br />

IDirect3D9の 取 得<br />

互 換 デバイスの 確 認<br />

IDirect3DDevice9の 作 成<br />

デバイスキャップのクエリ<br />

DEFAULT_POOLリソースの 作 成<br />

MANAGED_POOLリソースの 作 成<br />

Copyright © <strong>NVIDIA</strong> Corporation 2004<br />

<strong>CEDEC</strong> <strong>2006</strong>


D3D10のイニシャライズ<br />

IDXGIFactoryの 作 成<br />

IDXDGIOutputの 確 認<br />

IDXGIOutput::FindClosestMatchingMode<br />

ID3D10Deviceの 作 成<br />

SwapChain 使 用<br />

リソースの 作 成<br />

Copyright © <strong>NVIDIA</strong> Corporation 2004<br />

<strong>CEDEC</strong> <strong>2006</strong>


D3D10 – キャップなし<br />

機 能 セットを 保 証<br />

だいたい。<br />

すべてのフォーマットがファーストクラス<br />

いたるところどこでも 使 用 可<br />

例 外 はほとんどない<br />

RGB32Fブレンディングは 任 意 (RGBA32Fは 必 須 )<br />

フォーマットサポートのチェック<br />

ID3D10Device::CheckFormatSupport<br />

D3D10_FORMAT_SUPPORTが 返 される<br />

Copyright © <strong>NVIDIA</strong> Corporation 2004<br />

ほとんどのフォーマットと 用 途 が 必 須 。<br />

<strong>CEDEC</strong> <strong>2006</strong>


ID3D10Deviceの 作 成<br />

HRESULT D3D10CreateDeviceAndSwapChain(<br />

IDXGIAdapter * pAdapter,<br />

D3D10_DRIVER_TYPE DriverType,<br />

HMODULE Software,<br />

UINT Flags, Flags |= D3D10_CREATE_DEVICE_DEBUG<br />

UINT SDKVersion,<br />

DXGI_SWAP_CHAIN_DESC * pSwapChainDesc,<br />

IDXGISwapChain ** ppSwapChain,<br />

ID3D10Device ** ppDevice );<br />

Copyright © <strong>NVIDIA</strong> Corporation 2004<br />

<strong>CEDEC</strong> <strong>2006</strong>


DXGI_SWAP_CHAIN_DESC<br />

typedef struct DXGI_SWAP_CHAIN_DESC {<br />

DXGI_MODE_DESC BackBufferDesc;<br />

DXGI_SAMPLE_DESC SampleDesc;<br />

DXGI_SHARED_RESOURCE Sharing;<br />

DXGI_USAGE BackBufferUsage;<br />

UINT BackBufferCount;<br />

UINT MaxFrameLatency;<br />

HWND OutputWindow;<br />

BOOL Windowed;<br />

DXGI_SWAP_EFFECT SwapEffect;<br />

DXGI_MODE_ROTATION BackBufferRotation;<br />

} DXGI_SWAP_CHAIN_DESC, *LPDXGI_SWAP_CHAIN_DESC;<br />

新 しい 内 容 あり<br />

用 途<br />

シェーダ 入 力 またはRT<br />

レイテンシ<br />

Backbufferローテーション<br />

AutoDepthStencilなし<br />

レイテンシが 可 能<br />

– Multi GPU を 考 慮<br />

Copyright © <strong>NVIDIA</strong> Corporation 2004<br />

<strong>CEDEC</strong> <strong>2006</strong>


D3D9プログラムフロー<br />

IDirect3DDevice9::BeginSceneeを 呼 び 出 し<br />

VBのアップデートと 設 定<br />

IBの 設 定<br />

バーテックス 宣 言 の 設 定<br />

バーテックスおよびピクセルシェーダの 設 定<br />

VSおよびPS 定 数 のアップデート<br />

テクスチャの 設 定<br />

レンダリング 状 態 の 設 定<br />

アルファテスト/アルファブレンド<br />

深 度 テスト/ 書 き 込 み<br />

適 応 的 テセレーションはいかが<br />

…<br />

Copyright © <strong>NVIDIA</strong> Corporation 2004<br />

<strong>CEDEC</strong> <strong>2006</strong>


D3D10プログラムフロー<br />

VBをIASetVertexBuffers()でアップデート<br />

IBをIASetIndexBuffer()で 設 定<br />

バーテックス、ジオメトリおよびピクセルシェーダの 設 定<br />

ID3D10::(VS/GS/PS)SetShader()<br />

(VS/GS/PS)SetConstantBuffers<br />

SetShaderResources()<br />

状 態 オブジェクトの 設 定<br />

IDXGISwapChain::Present()の 呼 び 出 し<br />

Copyright © <strong>NVIDIA</strong> Corporation 2004<br />

<strong>CEDEC</strong> <strong>2006</strong>


シェーダへのデータ 入 力<br />

入 力 アセンブラ<br />

バーテックスシェーダ<br />

ジオメトリシェーダ<br />

ラスタライザ<br />

ピクセルシェーダ<br />

出 力 マージャ<br />

ストリーム 出 力<br />

ビデオメモリ<br />

(バッファ<br />

テクスチャ、<br />

固 定 バッファ)<br />

SetShaderResources()<br />

テクスチャバッファ<br />

(VS/GS/PS)SetConstantBuffers()<br />

定 数 バッファ<br />

Copyright © <strong>NVIDIA</strong> Corporation 2004<br />

<strong>CEDEC</strong> <strong>2006</strong>


IASetVertexBuffers()<br />

IASetIndexBuffers()<br />

ID3D10Bufferオブジェクトをバーテックスバッファ<br />

としてバインド<br />

ID3D10Texture*オブジェクトのバインドは 不 可<br />

現 在 バッファは 出 力 としてバインドできない<br />

循 環 バインドなし<br />

バッファはResourceViewと 関 連 付 け 可 能<br />

リソース 表 示 ではリソースのバインドが 可 能<br />

ただし、 表 示 が 別 ステージへの 入 力 の 場 合<br />

出 力 表 示 は 存 在 するが、バインドは 不 可<br />

Copyright © <strong>NVIDIA</strong> Corporation 2004<br />

<strong>CEDEC</strong> <strong>2006</strong>


バーテックスレイアウト/InputLayout<br />

typedef struct D3D10_INPUT_ELEMENT_DESC {<br />

LPCWSTR SemanticName;<br />

UINT SemanticIndex;<br />

DXGI_FORMAT Format;<br />

UINT InputSlot;<br />

UINT AlignedByteOffset;<br />

D3D10_INPUT_CLASSIFICATION InputSlotClass;<br />

UINT InstanceDataStepRate;<br />

} D3D10_INPUT_ELEMENT_DESC, *LPD3D10_INPUT_ELEMENT_DESC;<br />

const D3D10_INPUT_ELEMENT_DESC groundLayout[] =<br />

{<br />

{ "POSITION",0, DXGI_FORMAT_R32G32B32_FLOAT,0, 0, D3D10_INPUT_PER_VERTEX_DATA, 0 },<br />

{ "NORMAL“ ,0, DXGI_FORMAT_R32G32B32_FLOAT,0, 12, D3D10_INPUT_PER_VERTEX_DATA, 0 },<br />

{ "TEXCOORD",0, DXGI_FORMAT_R32G32_FLOAT ,0, 24, D3D10_INPUT_PER_VERTEX_DATA, 0 },<br />

{ "TEXCOORD",1, DXGI_FORMAT_R32G32_FLOAT ,0, 36, D3D10_INPUT_PER_VERTEX_DATA, 0 },<br />

};<br />

ID3D10Device::IASetInputLayout を 呼 び 出 して 設 定<br />

Copyright © <strong>NVIDIA</strong> Corporation 2004<br />

<strong>CEDEC</strong> <strong>2006</strong>


状 態 オブジェクトの 設 定<br />

バーテックス 入 力 レイアウト - ID3D10InputLayout<br />

D3D10_INPUT_LAYOUT_DESC<br />

ラスタライザオブジェクト - ID3D10RasterizerState<br />

D3D10_RASTERIZER_DESC<br />

DepthStencilオブジェクト - ID3D10DepthStencilState<br />

D3D10_DEPTH_STENCIL_DESC<br />

ブレンドオブジェクト - ID3D10BlendState<br />

D3D10_BLEND_DESC<br />

サンプラオブジェクト - ID3D10SamplerState<br />

D3D10_SAMPLER_DESC<br />

Copyright © <strong>NVIDIA</strong> Corporation 2004<br />

<strong>CEDEC</strong> <strong>2006</strong>


状 態 オブジェクトの 作 成<br />

pD3D10Device->CreateSamplerState( &SamplerDesc, &pSamplerState);<br />

不 変 オブジェクト<br />

リソースの 制 限<br />

入 力 アセンブラを 除 く<br />

D3D10_REQ_type_OBJECT_COUNT_PER_CONTEXT<br />

– すべて4096に 定 義<br />

重 複 状 態 オブジェクトは 古 いオブジェクトに 新 しいインタフェースを 取 得<br />

Copyright © <strong>NVIDIA</strong> Corporation 2004<br />

<strong>CEDEC</strong> <strong>2006</strong>


typedef struct D3D10_RASTERIZER_DESC {<br />

D3D10_FILL_MODE FillMode;<br />

D3D10_CULL_MODE CullMode;<br />

BOOL FrontCounterClockwise;<br />

INT DepthBias;<br />

FLOAT DepthBiasClamp;<br />

FLOAT SlopeScaledDepthBias;<br />

BOOL DepthClipEnable;<br />

BOOL ScissorEnable;<br />

BOOL MultisampleEnable;<br />

BOOL AntialiasedLineEnable;<br />

} D3D10_RASTERIZER_DESC,*LPD3D10_RASTERIZER_DESC;<br />

Copyright © <strong>NVIDIA</strong> Corporation 2004<br />

<strong>CEDEC</strong> <strong>2006</strong>


typedef struct D3D10_RASTERIZER_DESC {<br />

D3D10_FILL_MODE FillMode;<br />

D3D10_CULL_MODE CullMode;<br />

BOOL FrontCounterClockwise;<br />

INT DepthBias;<br />

FLOAT DepthBiasClamp;<br />

FLOAT SlopeScaledDepthBias;<br />

BOOL DepthClipEnable;<br />

BOOL ScissorEnable;<br />

BOOL MultisampleEnable;<br />

BOOL AntialiasedLineEnable;<br />

ID3D10Device::RSSetState<br />

を 呼 び 出 して 設 定<br />

} D3D10_RASTERIZER_DESC,*LPD3D10_RASTERIZER_DESC;<br />

Copyright © <strong>NVIDIA</strong> Corporation 2004<br />

<strong>CEDEC</strong> <strong>2006</strong>


typedef struct D3D10_DEPTH_STENCIL_DESC {<br />

BOOL DepthEnable;<br />

D3D10_DEPTH_WRITE_MASK DepthWriteMask;<br />

D3D10_COMPARISON_FUNC DepthFunc;<br />

BOOL StencilEnable;<br />

UINT8 StencilReadMask;<br />

UINT8 StencilWriteMask;<br />

D3D10_DEPTH_STENCILOP_DESC FrontFace;<br />

D3D10_DEPTH_STENCILOP_DESC BackFace;<br />

} D3D10_DEPTH_STENCIL_DESC, *LPD3D10_DEPTH_STENCIL_DESC;<br />

ID3D10Device::OMSetDepthStencilState<br />

を 呼 び 出 して 設 定<br />

Copyright © <strong>NVIDIA</strong> Corporation 2004<br />

<strong>CEDEC</strong> <strong>2006</strong>


typedef struct D3D10_BLEND_DESC {<br />

BOOL AlphaToCoverageEnable;<br />

BOOL BlendEnable[8];<br />

D3D10_BLEND SrcBlend;<br />

D3D10_BLEND DestBlend;<br />

D3D10_BLEND_OP BlendOp;<br />

D3D10_BLEND SrcBlendAlpha;<br />

D3D10_BLEND DestBlendAlpha;<br />

D3D10_BLEND_OP BlendOpAlpha;<br />

UINT8 RenderTargetWriteMask[8];<br />

} D3D10_BLEND_DESC, *LPD3D10_BLEND_DESC;<br />

ID3D10Device::SetBlendState<br />

を 呼 び 出 して 設 定<br />

トランスペアレンシにより<br />

アンチエイリアス 処 理 !<br />

Copyright © <strong>NVIDIA</strong> Corporation 2004<br />

<strong>CEDEC</strong> <strong>2006</strong>


typedef struct D3D10_SAMPLER_DESC {<br />

D3D10_FILTER Filter;<br />

D3D10_TEXTURE_ADDRESS_MODE AddressU;<br />

D3D10_TEXTURE_ADDRESS_MODE AddressV;<br />

D3D10_TEXTURE_ADDRESS_MODE AddressW;<br />

FLOAT MipLODBias;<br />

UINT MaxAnisotropy;<br />

D3D10_COMPARISON_FUNC ComparisonFunc;<br />

FLOAT BorderColor[4];<br />

FLOAT MinLOD; FLOAT MaxLOD;<br />

} D3D10_SAMPLER_DESC, *LPD3D10_SAMPLER_DESC;<br />

Copyright © <strong>NVIDIA</strong> Corporation 2004<br />

ID3D10Device::VSSetSamplers<br />

::GSSetSamplers<br />

::PSSetSamplers<br />

を 呼 び 出 して 設 定<br />

<strong>CEDEC</strong> <strong>2006</strong>


D3D10のドローコール<br />

Draw<br />

DrawInstanced<br />

0<br />

1<br />

バーテックスデータバッファ<br />

(x 0 y 0 z 0 ) (n x0 n y0 n z0 )<br />

(x 1 y 1 z 1 ) (n x1 n y1 n z1 )<br />

…<br />

…<br />

DrawIndexed<br />

DrawIndexedInstanced<br />

(x 99 y 99 z 99) (n x99 n y99 n z99 )<br />

インスタンスデータバッファ<br />

DrawAuto<br />

ストリームアウト<br />

0<br />

1<br />

…<br />

worldMatrix 0<br />

worldMatrix 1<br />

…<br />

worldMatrix 49<br />

Copyright © <strong>NVIDIA</strong> Corporation 2004<br />

<strong>CEDEC</strong> <strong>2006</strong>


描 画 してみましょう!<br />

待 って、アートはどうする!<br />

固 定 機 能 なし<br />

「 管 理 リソース」なし<br />

リソース 表 示 とは<br />

D3DXは<br />

Copyright © <strong>NVIDIA</strong> Corporation 2004<br />

<strong>CEDEC</strong> <strong>2006</strong>


DX10 – 固 定 機 能 なし<br />

すべてユーザが 決 定<br />

つまり<br />

フォグなし<br />

ポイントスプライトなし<br />

クリッププレーンなし<br />

アルファテストなし<br />

アルファテストはPSクリップの 指 示 により 処 理<br />

Copyright © <strong>NVIDIA</strong> Corporation 2004<br />

<strong>CEDEC</strong> <strong>2006</strong>


GSポイントスプライト<br />

DX10にはポイントサイズなし<br />

ポイントは1ピクセル<br />

スプライトの 生 成<br />

1ポイントを2つの 三 角 に 拡 張<br />

Tri ポイント<br />

スプライト Tri<br />

Copyright © <strong>NVIDIA</strong> Corporation 2004<br />

<strong>CEDEC</strong> <strong>2006</strong>


クリッププレーン<br />

クリッププレーンはクリップ 距 離 で 処 理<br />

VSおよびGSが 逆 クリップ 距 離 を 定 義<br />

MS FixedFuncEMUサンプルをチェック<br />

Copyright © <strong>NVIDIA</strong> Corporation 2004<br />

<strong>CEDEC</strong> <strong>2006</strong>


リソース<br />

ID3D10Resource<br />

すべてのリソースに 対 する 親 インタフェース<br />

ID3D10Buffer<br />

ID3D10Texture1D<br />

ID3D10Texture2D<br />

ID3D10Texture3D<br />

ID3D10TextureCube<br />

Copyright © <strong>NVIDIA</strong> Corporation 2004<br />

<strong>CEDEC</strong> <strong>2006</strong>


リソース<br />

リソースを 作 成 する 方 法<br />

ID3D10Device::CreateBuffer<br />

ID3D10Device::CreateTexture1D<br />

…<br />

リソースの 保 存 場 所<br />

Vidmem<br />

リソースの 管 理 方 法<br />

リソースはOSにより 仮 想 化<br />

失 われたデバイスの 心 配 は 不 要<br />

弱 い 参 照 の 保 持 を 強 制<br />

Copyright © <strong>NVIDIA</strong> Corporation 2004<br />

<strong>CEDEC</strong> <strong>2006</strong>


リソース 管 理<br />

ユーザが 決 定 !<br />

用 途 をドライバに 通 知<br />

D3D10_USAGE<br />

D3D10_USAGE_IMMUTABLE<br />

D3D10_USAGE_DEFAULT<br />

D3D10_USAGE_DYNAMIC<br />

D3D10_USAGE_STAGING<br />

D3D10_CPU_ACCESS_FLAG<br />

D3D10_CPU_ACCESS_WRITE<br />

D3D10_CPU_ACCESS_READ<br />

Copyright © <strong>NVIDIA</strong> Corporation 2004<br />

<strong>CEDEC</strong> <strong>2006</strong>


リソース 管 理<br />

ユーザが 決 定 !<br />

用 途 をドライバに 通 知<br />

D3D10_USAGE<br />

D3D10_USAGE_IMMUTABLE<br />

D3D10_USAGE_DEFAULT<br />

D3D10_USAGE_DYNAMIC<br />

D3D10_USAGE_STAGING<br />

DX9と 相 互 に 関 連<br />

D3D10_CPU_ACCESS_FLAG<br />

D3D10_CPU_ACCESS_WRITE<br />

D3D10_CPU_ACCESS_READ<br />

Copyright © <strong>NVIDIA</strong> Corporation 2004<br />

<strong>CEDEC</strong> <strong>2006</strong>


リソースの 適 切 な 定 義<br />

変 化 しないリソース<br />

D3D9<br />

D3DPOOL_DEFAULT<br />

D3D10<br />

用 途 フラグなし<br />

D3D10_USAGE_IMMUTABLE<br />

– アップデートなし<br />

– 作 成 時 のみ 定 義<br />

Copyright © <strong>NVIDIA</strong> Corporation 2004<br />

<strong>CEDEC</strong> <strong>2006</strong>


リソースの 適 切 な 定 義<br />

まれに 変 化 するリソース<br />

D3D9<br />

D3DPOOL_DEFAULT<br />

D3DUSAGE_DYNAMIC<br />

– NO_OVERWRITEおよびDISCARDを 使 用 して<br />

ロック<br />

D3D10<br />

D3D10_USAGE_DEFAULT<br />

CPUアクセスなし<br />

– 間 接 的 アップデートのみ 可 能<br />

Copyright © <strong>NVIDIA</strong> Corporation 2004<br />

<strong>CEDEC</strong> <strong>2006</strong>


リソースの 適 切 な 定 義<br />

常 に 変 化 するリソース<br />

D3D9<br />

D3D10<br />

D3DPOOL_MANAGED<br />

D3D10_USAGE_DYNAMIC<br />

D3D10_CPU_ACCESS_WRITE<br />

D3D10_CPU_ACCESS_READ( 使 用 しないこと)<br />

– NO_OVERWRITEおよびDISCARDを 使 用 してマップ<br />

Copyright © <strong>NVIDIA</strong> Corporation 2004<br />

<strong>CEDEC</strong> <strong>2006</strong>


D3D10ステージバッファ<br />

D3D10_USAGE_STAGING<br />

D3D10_CPU_ACCESS_READのみ<br />

CPUにデータをリードバックする 最 善 の 方 法<br />

Copyright © <strong>NVIDIA</strong> Corporation 2004<br />

<strong>CEDEC</strong> <strong>2006</strong>


表 示 バインド<br />

データの 再 解 釈 が 可 能<br />

ID3D10ShaderResourceView<br />

ID3D10RenderTargetView<br />

ID3D10DepthStencilView<br />

すべてがID3D10Resourceを 使 用 –<br />

ID3D10Buffer<br />

ID3D10Texture1D<br />

ID3D10Texture2D<br />

ID3D10Texture3D<br />

ID3D10TextureCube<br />

Copyright © <strong>NVIDIA</strong> Corporation 2004<br />

<strong>CEDEC</strong> <strong>2006</strong>


表 示 バインド<br />

データの 再 解 釈 が 可 能<br />

ID3D10ShaderResourceView<br />

ID3D10RenderTargetView<br />

ID3D10DepthStencilView<br />

すべてがID3D10Resourceを 使 用 –<br />

ID3D10Buffer<br />

ID3D10Texture1D<br />

ID3D10Texture2D<br />

ID3D10Texture3D<br />

ID3D10TextureCube<br />

バーテックスシェーダステージ<br />

ジオメトリシェーダステージ<br />

ピクセルシェーダステージ<br />

にバインド 可 能<br />

出 力 マージャステージに<br />

バインド 可 能<br />

DepthStencilView<br />

は、1D、2Dおよびキューブ<br />

テクスチャをバインド 可 能<br />

Copyright © <strong>NVIDIA</strong> Corporation 2004<br />

<strong>CEDEC</strong> <strong>2006</strong>


DX10についての 質 問<br />

同 じものはどれ<br />

D3D10_QUERY_OCCLUSION<br />

D3D10_QUERY_EVENT<br />

D3D10_QUERY_TIMESTAMP<br />

D3D10_QUERY_TIMESTAMP_DISJOINT<br />

Copyright © <strong>NVIDIA</strong> Corporation 2004<br />

<strong>CEDEC</strong> <strong>2006</strong>


DX10についての 質 問<br />

変 化 したものはどれ<br />

D3DQUERYTYPE_VCACHE<br />

現 在 は ID3D10Device::CheckVertexCache<br />

D3DQUERYTYPE_TIMESTAMPFREQ<br />

D3D10_QUERY_TIMESTAMP で 返 された<br />

Copyright © <strong>NVIDIA</strong> Corporation 2004<br />

<strong>CEDEC</strong> <strong>2006</strong>


DX10についての 質 問<br />

新 しいものはどれ<br />

D3D10_QUERY_SO_STATISTICS<br />

書 き 込 まれたプリミティブ、および 書 き 込 まれた 可 能 性 がある<br />

プリミティブ<br />

D3D10_QUERY_SO_OVERFLOW_PREDICATE<br />

D3D10_QUERY_OCCLUSION_PREDICATE<br />

Copyright © <strong>NVIDIA</strong> Corporation 2004<br />

<strong>CEDEC</strong> <strong>2006</strong>


プレディケートレンダリング<br />

非 常 に 興 味 深 いので 別 のスライドで 詳 しく 説 明 !<br />

ドローコールのプレディケート 可 能<br />

オクルージョンで<br />

LOD<br />

ストリームアウトオーバーフローで<br />

データの 依 存 性<br />

Copyright © <strong>NVIDIA</strong> Corporation 2004<br />

<strong>CEDEC</strong> <strong>2006</strong>


プレディケートレンダリング<br />

m_pPredicateQuery->Begin();<br />

//Render simple geometry<br />

…<br />

m_pPredicateQuery->End(NULL);<br />

//Now render complex geometry<br />

pD3D10Device->SetPredication( m_pPredicateQuery, FALSE);<br />

…<br />

pD3D10Device->SetPredication( NULL, FALSE);<br />

Copyright © <strong>NVIDIA</strong> Corporation 2004<br />

<strong>CEDEC</strong> <strong>2006</strong>


D3DX<br />

数 学 ユーティリティ 機 能<br />

構 文 的 にはD3D9と 同 じ<br />

複 数 のインタフェースはそのまま<br />

ID3DX10Font<br />

ID3DX10Mesh<br />

ID3DX10Sprite<br />

…<br />

大 幅 に 縮 小<br />

新 しく 興 味 深 い ID3DX10ThreadPump<br />

Copyright © <strong>NVIDIA</strong> Corporation 2004<br />

<strong>CEDEC</strong> <strong>2006</strong>


ID3DX10ThreadPump<br />

リソースの 非 同 期 読 み 込 みが 可 能<br />

D3DX10CreateTextureFromFile<br />

D3DX10CompileShaderFromFile<br />

…<br />

機 能 はポンプオブジェクトを 使 用<br />

ID3DX10ThreadPump::WaitForAllItems<br />

を 呼 び 出 し<br />

Copyright © <strong>NVIDIA</strong> Corporation 2004<br />

<strong>CEDEC</strong> <strong>2006</strong>


ブライアン・デゥダーシュ(Bryan Dudash)<br />

bdudash@nvidia.com<br />

<strong>CEDEC</strong> <strong>2006</strong>


Copyright © <strong>NVIDIA</strong> Corporation 2004<br />

<strong>CEDEC</strong> <strong>2006</strong>

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!