フォト

Google AdSense

  • AdSense
無料ブログはココログ

2012.05.24

書籍:Introduction to 3D Game Programming with DirectX 11

ちょいとアメリカのAmazonでKindle版の目次を見ていたら良さそうだったので"Introduction to 3D Game Programming with DirectX 11"を購入。

アメリカのAmazonのKindle Store版
http://www.amazon.com/Introduction-Game-Programming-DirectX-ebook/dp/B0085CDJY4/ref=sr_1_1?s=digital-text&ie=UTF8&qid=1337791868&sr=1-1

出版社の紹介ページ
http://www.merclearning.com/titles/3d_game_programming_directx11.html

わりと基本的な機能が網羅的に紹介されてる感じなのですが、

・Compute Shaderの基礎的な解説の章がある
・テセレーションアルゴリズムの解説が数式とコードの例で解説されてる
手法はベジェ系の話題が多い
・数学はXNAMath
・ジオメトリシェーダネタはストリームアウトとGPUパーティクルシステムの実装の解説がある
・シャドウマップはPCFまで
・テセレーション付きのTerrain
・インスタンシング
・法線、ディスプレースメントマッピング
・Ambient Occlusion
・Quarternionの解説の章
・キャラクターアニメーションの解説

とかはあります。全体的に書き方としては数学的なアプローチからの解説が多いです。

レンダリング、ライティング関連は基礎的なものはありますがあまり充実してない感じです。

Introduction to 3D Game Programming With Directx 11
Introduction to 3D Game Programming With Directx 11Frank D. Luna

Mercury Learning & Information 2012-03-31
売り上げランキング : 15731


Amazonで詳しく見る
by G-Tools

2012.05.21

C++ AMP向けライブラリ

MSDN blogの"Libraries for C++ AMP"というエントリでC++ AMP向けの各種ライブラリが紹介されています。

Libraries for C++ AMP
http://blogs.msdn.com/b/nativeconcurrency/archive/2012/05/19/libraries-for-c-amp.aspx

とりあえず、紹介されているのは、

・C++ AMP Algorithms Library (STL-style Algorithms)
・C++ AMP RNG Library (Random Number Generator)
・C++ AMP FFT Library (Fast Fourier Transform)
・C++ AMP BLAS Library (Basic Linear Algebra Subroutines)
・C++ AMP LAPACK Library (Linear Algebra Package)
your suggestion here

・・・ということだそうです。

そんなわけで、メモ。

2012.05.18

”Octree-Based Sparse Voxelization for Real-Time Global Illumination"の実装で気になるところメモ

”Octree-Based Sparse Voxelization for Real-Time Global Illumination”のスライドを見ていたらOpenGLでの実装について色々と気になるところがあってメモ。

”Octree-Based Sparse Voxelization for Real-Time Global Illumination”
http://blog.icare3d.org/2012/05/gtc-2012-talk-octree-based-sparse.html

まず24枚目。OpenGL 4.2のImage_load_Storeの話とNVIDIAのBindless Graphicsの話。

Ss001

それから30ページ目。OpenGLにはDirect3D11のようにCompute Shaderが無いので頂点シェーダでComputeをエミュレートしてみた話。input attributeを使用しない頂点シェーダをCompute Shaderの代わりをさせています。gl_VertexIDで処理してる頂点の番号を取得することでスレッドIDとしているみたいですね。

つまり、1000頂点のDrawをしたVertex Shaderを、1000スレッドのCompute Shaderと見るわけか。OpenGL 4.2ならload_image_Storeでバッファへの読み書きは出来ちゃうから同期とかスレッドグループ共有メモリみたいなものを必要としなければこれでいいわけか。

Ss004

結構無理矢理感が無いわけでは無いけど面白いGPUの使い方してるなぁ。

2012.05.16

Forward+のスライド

Shader.jpの方に書いたけどスライド来てたので読まねば。

http://www.shader.jp/?p=678

2012.05.13

Real-Time Rendering, Third EditionのKindle版

お、Real-Time RenderingのKindle版出たんですね。デカイ本なのでちょっとスペース削減にいいかも。

http://www.amazon.com/Real-Time-Rendering-Third-Edition-ebook/dp/B007COYODQ/ref=pd_ys_ir_kstore_1

2012.05.11

GeForce GTX 680のBindless Textureの話題

Geeks3DにGeForce GTX 680のBindless Textureを使ったサンプルがありました。

http://www.geeks3d.com/20120511/nvidia-gtx-680-opengl-bindless-textures-demo/

従来、OpenGLやDirect3DのテクスチャというのはAPI側でテクスチャとして生成したあとは、Draw時にバインドされたテクスチャ使われるわけ(たとえば、Direct3Dなら使用するテクスチャSetTextureされたりSetShaderResourceViewされる)ですが、Bindless Textureではそうしたバインド処理が不要でシェーダ側が生成されたテクスチャをいきなり使用したりできちゃったりします。

OpenGLでは、GL_NV_bindless_texture拡張でこの機能を使うことが出来ます。

この拡張を使うとGLSL内で、生成されたすべてのテクスチャをいきなり利用できちゃうようですね。

Geeks3Dのサンプルでは、1024のテクスチャをシェーダで利用しています。

#version 420 compatibility
#extension GL_NV_bindless_texture : require
#extension GL_NV_gpu_shader5 : require // for uint64_t
#define TEX_X 32
#define TEX_Y 32
#define NUM_TEXTURES TEX_X*TEX_Y
uniform SamplersNV
{ uint64_t allTheSamplers[NUM_TEXTURES]; };

このコードを見るとallTheSamplersというのがテクスチャですね。NUM_TEXTURESは1024なので、1024のテクスチャの配列になってるわけですね。これで、あとは必要なテクスチャをひっぱってくるだけですね。

AMDのRadeon HD 7970では巨大なテクスチャを利用するために、Partially Resident Texture (PRT)のための機能を用意していますが、NVIDIAの場合はBindless Textureってことなんでしょうね。これで、メガテクスチャしたりPTexしたりということなんでしょうね。

Direct3Dで対応して欲しいなぁ。

2012.05.10

マネキンにプロジェクションマッピング

白井さんのアップしてたLaval Virtual動画。

おお、マネキンにプロジェクションマッピングするのか~。これは面白いかも。

マネキン買ってくればすぐ出来そう。測定はKinectなんかでやるといいかも。

http://www.realyz.com/

2012.05.09

D3DX廃止が明確に書いてあるもの

前のエントリの続き、D3DX廃止の話の正式な文章に関してはちょっと失念しましたが、最近だと先週の記事の中にそれらしい記述はあります。

Direct3D 11 Textures and Block Compression
http://blogs.msdn.com/b/chuckw/archive/2012/05/04/direct3d-11-textures-and-block-compression.aspx

With the retirement of the D3DX library, the recommended solutions for working with Direct3D 11 textures and .DDS files are now DirectXTex and DirectXTK.

・・・というわけでD3DXライブラリの無くなることが記載されています。

D3DX廃止メモ

MSDNのblogなどを読んでるとDirect3D11.1からD3DXが廃止(あと、DXUTも。これはWinRT時代には使えませんから)になるのですが、D3DXの中のテクスチャ関連関数、算術関数、その他に関しては代替のライブラリが登場します。

廃止には色々と理由があると思うのですが、算術関数に関してはWindows 8からはARM版とかが来るのでその辺に最適化された新しいものが来るって感じですね(実際にはXNAMathの発展系DirectXMathですが)。

DirectXTex
http://blogs.msdn.com/b/chuckw/archive/2011/10/28/directxtex.aspx

テクスチャ関連は、DirectXTexですね。上記の記事の最後にZIPがあります。Visual Studio 11では付属してますが、Visual Studio 2010で使う場合にはコレ。

XNAMath
http://blogs.msdn.com/b/chuckw/archive/2011/02/23/xna-math-version-2-04.aspx

DirectXMath自体は、Visual Studio 11には付属してるんですがひとまずVisual Studio 2010で使える最新のXNAMath。ARMのバイナリはまだビルドする必要が無いので最適化版(NEON)はまだ無くて大丈夫ですね。AVXはまだ未対応ですが。

DirectXTK
http://blogs.msdn.com/b/chuckw/archive/2012/03/02/directxtk.aspx

TKはToolkitですね。これはその他の便利ライブラリですね。内容は、

・SpriteBatch
・SpriteFont
・Effects
・GeometricPrimitives
・CommonStates
・VertexTypes
・MakeSpriteFont

ですね。XNA時代にあったようなものも来てます。

それからシェーダコンパイル関係は、これはD3DXからD3DCompileの方を使っていけばOKですね。DirectX SDKのサンプルはD3DXのを使ってますのでやめてかないといけませんね。

このあたりはちょうどShader.jpで書いた記事のやつですね。

HLSL, FXC, and D3DCompile
http://blogs.msdn.com/b/chuckw/archive/2012/05/07/hlsl-fxc-and-d3dcompile.aspx

ひとまず、今年はこのあたりの新しいライブラリを使って行きつつ徐々に自分のコードからD3DXを使わないつくりにしていかないと行けませんね。

2012.05.08

AR砂場

海外のEngadgetの記事ですが、このAR sandboxいいですね。

Augmented reality sandbox lets you change the course of rivers, won't get you wet
http://www.engadget.com/2012/05/07/augmented-reality-sandbox-lets-you-change-the-course-of-rivers/

砂を掘ると川になったり(水は流体シミュレーションし輝っぽい)、標高に合わせて地面色変えたりと砂場にプロジェクション & Kinect入力で面白くなってますね。これは砂場遊びだけですが、ポピュラス的なのとか、巨人のドシン的なのとかRTSとかこの上で遊べるゲームがあるとさらに面白そうだなぁ。

より以前の記事一覧