フォト

Google AdSense


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

« 海外のゲームやグラフィックスのエンジニアでWebサイトとかblog持ってる人をメモっていく ver 0.1ぐらい | トップページ | Constant Buffer用のC++コードを... »

2013.01.26

Shader Reflectionを使ってみる

ちょっと自分のシェーダ開発効率向上のために、色々とツールを作ろうと思ってるんですが、今まであんまり使ってこなかったDirect3D11のShader Reflectionを使ってみることにしました。

http://msdn.microsoft.com/ja-jp/library/ee419872(v=vs.85).aspx

練習として、下記のようなCompute Shaderのコードを用意してConstant Buffer内のパラメータを取得してみる。Constant Bufferの中の変数は全然使ってないけど、とりあえずいろんな型を混ぜてみての実験ですね。

cbuffer cb0 : register(b0)
{
 float4x4 mat;
 float4 param1;
 float test;
 float3 aaa;
 float3 array[3];
 bool b;
 uint size;
}
RWTexture2D oTexture;

[numthreads(1, 1, 1)]
void main( uint3 DTid : SV_DispatchThreadID )
{
 oTexture[DTid.xy] = param1;
}

とりあえず、適当に書いたコードで変数名とかオフセット、サイズ、タイプなど色々ととれました(構造体は対応してないけど)。

Shaderreflection

ちょっと書いたコード(Visual Studio 2012)
「D3D11ShaderReflection.zip」をダウンロード

とりあえShader Reflectionを使用する練習にはなったのでここから色々とツールを作っていこう。

« 海外のゲームやグラフィックスのエンジニアでWebサイトとかblog持ってる人をメモっていく ver 0.1ぐらい | トップページ | Constant Buffer用のC++コードを... »

Programming」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

« 海外のゲームやグラフィックスのエンジニアでWebサイトとかblog持ってる人をメモっていく ver 0.1ぐらい | トップページ | Constant Buffer用のC++コードを... »