25.12.2014 Views

CEDEC 2006 - NVIDIA Developer Zone

CEDEC 2006 - NVIDIA Developer Zone

CEDEC 2006 - NVIDIA Developer Zone

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

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!