2013年7月5日金曜日

DirectX 11でVoxel Cone Tracing

Sparse Voxel OctreeによるCone Tracing。
Ambient Occulusionのみ。
ボクセル分割の解像度は64x64x64で、ワールド上での体積はモデルの8倍程度。
アトミックなテクスチャ書き込むがめんどうだったため、
遮蔽度の計算は空間のボクセル密度から計算。
Octreeの最下層の空間が密度1、一階層上がるごとに8分の1。
ポリポリしているのはそのためだと信じたい。

Radeon HD 5770だと、速度的にもメモリ的にもきつい。

2012年5月19日土曜日

movapsが混ざる

https://connect.microsoft.com/VisualStudio/feedback/details/482164/mm-loadu-ps-optimized-away-in-x64

これかなあと思うのですが、_mm_min_psと_mm_max_psを使用しないようにしたら動作しました。
vs2010に移行すべきなのかもしれません。

2012年3月24日土曜日

LightWaveのコマンドライン

lightwav.exeでレイアウトが起動できるが、
オプションにどんなものがあるのかわからない。
リファレンスに書いてあるの?

lightwav.exe [options] [filepath]
options:
 -0: Hub起動しない

2011年10月27日木曜日

PowerVR Insider SDK 2.9

Windows 7 64bit, Radeon HD5770
の環境で動作した。
Adreno SDK 2.2はまだ動作しない。
WindowsXPを捨てる時がきたか。

2011年7月28日木曜日

OpenGL ES2.0 シェーダの行列計算

Adreno 200・Tegra 250と、PowerVR SGX540で
行列計算の結果が異なる。
確認したのは4次元の場合。
mat4 m;
vec4 p;
p = p*m;

詳しく調査していないけれど、PowerVRで表示の奥行きが崩れているので、
列か行どちらか4番目の扱い方が違うっぽい。

列ベクトルで、変換は左から行列を掛けるように行列を作っていると、
mat4 m;
vec4 p;
p = p*m;
でよいはず。実際、Adreno 200・Tegra 250では問題ない。
(column majorだから逆から掛けている)
これだとPowerVRで崩れるので、シェーダに渡す前に行列を転置、
p = m*p;
とすると3つのGPUで上手くいく。なんだこれは。

ES2.0で、glUniformMatrix のtranspose引数はG_FALSEじゃないといけないの、
すぐに忘れるな。

2011年7月27日水曜日

PerfHUD ES

NVidia社のPerfHUD ESは、
Tegra2ベースの”開発機”で動作する。
私も最初わからなかったが、ドキュメントや各種プレゼンテーションでも、
profiling and debugging tool for Tegra-based development kits
とある。

フォーラム
http://developer.nvidia.com/tegra/forum/connecting-perfhud-es-motorola-xoom

そして、こんなものが
http://www.enovapp.com/tips/how-to-enable-perfhud-es-on-all-android-tegra-devices/

rootとる必要があるのか、嫌だな。

2011年6月20日月曜日

DoxyComment

DoxyCommentで訪れる方が多いため、
ごめんなさいしないといけません。
大した情報がないです。
さらに、VisualStudio2008に移行した時に動作しなくなり、
それ以来使っていないです。
今は、下のような粗雑なマクロしか使っていなかったりします。

Dim author = "hoge"

Sub PutFileHeader()
 Dim str As String
 Dim today As Date = Date.Now.Date()

 str = DTE.ActiveDocument.Name().ToUpper()
 str = str.Replace(".", "_")
 str = "INC_" + str + "__"

 DTE.ActiveDocument.Selection.Text = "#ifndef " + str
 DTE.ActiveDocument.Selection.NewLine()
 DTE.ActiveDocument.Selection.Text = "#define " + str
 DTE.ActiveDocument.Selection.NewLine()

 Dim name As String
 name = DTE.ActiveDocument.Name()
 DTE.ActiveDocument.Selection.Text = "/**"
 DTE.ActiveDocument.Selection.NewLine()
 DTE.ActiveDocument.Selection.Text = "@file " + name
 DTE.ActiveDocument.Selection.NewLine()
 DTE.ActiveDocument.Selection.Text = "@author " + author

 DTE.ActiveDocument.Selection.NewLine()
 DTE.ActiveDocument.Selection.Text = "@date " + today + " create"
 DTE.ActiveDocument.Selection.NewLine()
 DTE.ActiveDocument.Selection.Text = "*/"

 DTE.ActiveDocument.Selection.NewLine()
 DTE.ActiveDocument.Selection.Text = "#endif //" + str
 DTE.ActiveDocument.Selection.NewLine()
End Sub


ここから、DoxyCommentとは関係なし。
自戒をこめて。
ドキュメントやサンプルを読まない人がいる。
誰も触れたことのない新技術のライブラリなら、
しっかりと読むべきだろうと。
趣味ならいくらでも自分で悩めばいいが。