Yakiimo3D

Mostly DirectX 11 Programming

Archive for the ‘DirectX11’ Category

DirectX11 Interop CUDA Mandelbrot Fractal

はじめに 以前作ったDirectCompute Mandelbrot fractal demoをCUDAを使用して描画できるように拡張しました。簡単なMandelbrot fractal rendererですが、CUDAとDirectComputeの使用を動的に切り替えることが可能です。 関連リンク集 http://developer.download.nvidia.com/compute/cuda/sdk/website/Graphics_Interop.html#simpleD3D11Texture NVIDIA CUDA 3.2 SDKのDirectX11 interopサンプルの「Simple D3D11 Texture」を参考に実装しました。3.2 SDKだとD3D11を使用しているサンプルはこの「Simple D3D11 Texture」だけみたいです。「Simple D3D11 Texture」サンプルはID3D11Texture3DをCUDA resourceとして使用していますが、今回のMandelbrot fractalプログラムはID3D11BufferをCUDA resourceとして使用しています。 http://developer.nvidia.com/object/cuda-by-example.html 主にCUDA 3.2 SDKのprogramming manualを参考にCUDAを勉強しましたが、NVIDIAの「Cuda by Example」本もSafari Informitでオンラインで読みました。本自体がとても読みやすくて、数時間で読めました。CUDAを分かりやすく噛み砕いて説明してくれる良書で、入門書としてはいいかなと思いました。 http://www.yakiimo3d.com/ja/2010/02/02/directcompute-mandelbrot-fractal-viewer-2/ 元のDirectCompute Mandelbrot fractal viewerのYakiimo3D記事です。なんとプログラムに、画面サイズがthread group sizeで割り切れない場合、表示が少しおかしくなる恥ずかしいバグが見つかりました(oh no!)。今回のCUDA interopデモではバグを修正しておきました。 実装の詳細 CUDA DirectX11 interopとDirectComputeのパフォーマンスを計測してみました。環境はGeforce GTX 460, Driver 266.58, Vista 64-bit SP2、CUDA SDK 3.2です。CUDA、DirectCompute共に最適化は行っていません。CUDAの方がドキュメント、ツールが充実しており、プログラムをより細かく調整できそうなので、最適化はやりやすい気がします。 Num [...]

[Continuar Lendo →]

CEDEC Digital Library

http://cedil.cesa.or.jp/ CEDEC Digital Libraryのサイトが公開されたみたいです。早速会員登録してみましたが、CEDEC2006から去年のCEDEC2010までのスライドが沢山DL可能で、中々凄いリソースだと思いました。 https://members.cesa.or.jp/cedil/session/detail/316 The CEDEC Digital Library 「CEDEC 2010: LostPlanet2 DirectX11 Features」のページ。以前Yakiimo3Dでも聴きに行けたらいいなーと書きましたが(http://www.yakiimo3d.com/ja/2010/07/11/cedec-2010-lostplanet2-directx11-features-2/) 、去年のCEDECで聴講できました!ゲームで実際に利用されたtessellationやcompute shaderのDX11技術の話が聞けてとても面白かったです。CEDEC Digital Libraryが公開された事ですし、早速資料をDLして、自宅で読み直しました。

[Continuar Lendo →]

3DMark 11

http://www.3dmark.com/ 3DMarkの公式サイト。 http://www.3dmark.com/wp-content/uploads/2010/12/3DMark11_Whitepaper.pdf 3DMark 11のwhitepaperです。http://twitter.com/#!/repi/status/12653354148700161を読んで知りました。whitepaperでは3DMark 11でのmultithreading、 tessellation (phong tessellationが使用されているそうです)、lighting、posteffectの詳細が少し説明されています。Computer shaderでFFT、iFFTを計算し、posteffectのbloomやlens reflectionの計算は周波領域で行っているらしいです。white paperのpdfは3DMark 11のサポートページからリンクされているようです。http://www.3dmark.com/3dmark11/support/ http://www.geeks3d.com/20101207/review-3dmark11-gaming-benchmark-directx11-d3d11-dx11-tessellation/ http://www.geeks3d.com/20101207/tested-3dmark11-dx11-battle-gtx-580-vs-gtx-480-vs-hd-6870-vs-hd-5870-vs-gtx-460-vs-hd-5770/ Geeks3Dの3DMark 11記事とベンチマーク記事です。 http://www.4gamer.net/games/110/G011050/20101207055/ 日本の公式ミラーサイトの4gamerの3DMark 11記事です。 公開から少し遅れて、無料Basic版の3DMark 11を自分のHD5750 w/ Core 2 Quad Q6600マシンで週末中に実行してみました。最先端を行くスペックのマシンではないので、結構処理落ちしてましたが、色んな技術が詰め込まれた綺麗なgraphicsでした。自分の3DMark 11スコアを共有できるようなので、リンクを貼っておきます。http://3dmark.com/3dm11/130419

[Continuar Lendo →]

DX11 Temporal AA Without Manual Blending

はじめに 前回リリースしたTemporal AAデモに手動ブレンドを行わないTemporal AAの実装を追加しました。海外の技術系3Dフォーラムを読んでいるとTemporal AAだからスクリーンショットだとアンチの効果が見えないよというコメントを見かけますが、前回の自分のリリースしたjitterしたフレームを自分でブレンドする実装だとTemporal AAの効果はscreenshotに普通にでます。ただし、自分でAA用のblendingを行わない実装も可能ですし、その場合はTemporal AAの効果がスクリーンショットでは確認できないです。今回は自分でAA用blendを行わないタイプのTemporal AAを実装してみました。 プログラムのソースとバイナリがDLできるCodePlexリンクは記事の最後の方に貼っています。 関連リンク集 1) http://en.wikipedia.org/wiki/Radeon_R420 Radeon X700-X850 シリーズでは今回の手動blendを行わないTemporal AAが実装されていたみたいです。自分のHD5750とCatalyst 10.10ではオプションが表示されないので、最近は機能として用意されていないみたいです。 2) http://techreport.com/articles.x/6672/22 Tech Reportの記事にRadeonでのTemporal AA実装に関する情報がのっています。違うマルチサンプル・パターンを交互に利用する実装のようですが、vsyncが有効で60fpsでアプリが動作する場合は、手動でblendingを行わなくても、脳が自動的にフレーム間の補間を行ってくれ、実際のサンプル数より高品質なAAに見えるらしい。Temporal AAを使用した2x MSAAは4x AAと同等な品質に見えるらしいです。 3) http://forum.beyond3d.com/showthread.php?t=46241 Beyond3Dの”List of Rendering Resolutions + basics on hardware scaling, MSAA, framebuffers”スレでは手動blendingを行う実装と、行わない実装の両方が話題として取り上げられています。 4) http://www.yakiimo3d.com/ja/2010/09/29/dx11-perspective-matrix-jittering-temporal-aa-2/ 前回の手動でBlendingを行う自分のTemporal AA実装です。Reprojectionは行わない簡単な実装なので、ghosting/blurringが出ちゃいます。 実装の詳細 jitteringに関してなど実装の詳細は前回のTemporal AA実装から基本的に変わってないです。前回と違う点は、AA用の前フレームとのblendingを自分では行わずに、ユーザーの目、脳による自動的な補間に任せている所です。今回の実装からvsyncの設定を変更できるcomboboxを追加しましたが、vsync-onの60fps以外の、vsync-offの60+fps、vsync-onの30fps、vsync-onの20fpsは全部、シーンのチラツキがひどいので、vsync-onで安定した60fpsが今回の手法にとっては必須みたいです。前回の手動でblendingを行う場合はblurring/ghostingが問題となり、今回の手動で行わない場合は画面のチラツキが問題となるみたいです。 Radeonでの実装とは違い、MSAAパターンではなく、jitterされたシーンを交互に描画しているので、品質的には前回のTemporal AAと同じく、2x SSAAと同等なはずです。実際リリースしたデモでは今回のTemporal AAはsub-pixel offsetを0.25から0.15に弱めたので、前回のTemporal AAと比較して、若干AAのきき具合が弱くなっています。自分の単純な実装だとvsync-onの60fpsでも時々画面のチラツキが気になるので、offsetを小さくしました。 デモ Source Code & [...]

[Continuar Lendo →]

DirectX11 Tessellation Tutorial Presentation

http://xtunt.com/?p=11 IX Brazilian Symposium on Computer Games and Digital Entertainmentで発表された、DirectX11 Tessellationに関するTutorial Presentationのようです。 http://www.xtunt.com/samples Presentationのpdfでは上記URLでソースコードが公開されると書かれていました。(2010/11/21時点ではまだ未公開のようです。) http://xtunt.com/?p=29 ソースコードが別URLでリリースされたみたいです。(2010/11/27追記) http://www.youtube.com/user/xxnunes 作者のGustavoさんのyoutubeページに自作のDX11 Tessellation実装の動画がアップされています。 作者の人のTwitterでのつぶやきから上記プレゼンテーションの事を知りました。 プレゼンテーションでは簡単なQuad Tessellation、簡単なTriangle Tessellation、最後にTessellatorを利用したパラメトリック曲面の生成が説明されています。ざっと目を通した感じだと、丁寧で分かりやすい内容ですし、DirectX11 Tessellationを勉強するにあたって、良いtutorialだと思います。

[Continuar Lendo →]