HSPSHADを今年に入って作り続けてもうver1.5になった。
このプラグインは命令数こそ少ないが(現在16種類)できること、機能はとても多く、その根源は全てエフェクトファイル=HLSLの力を借りていることによる。逆にHLSLがよく分からずエフェクトファイルが上手く書けなければ、このプラグインを使っている意味はほとんど無いのだ。

残念ながらHLSLのサンプルはなんだか多いような少ないようなよくわからない感じだし、仮にネット上に落ちているとしても大半は3Dゲームのソースとして公開されている。

なのでこのブログではこれから、数値計算用途の視点からHLSLのソースを解説していければいいかなと思っている。



さて話は本題にいくが
HSPSHADで、今まで、一つのシェーダで一つのレンダリングターゲットにしかレンダリングできなかったのが、4つまでレンダリングターゲットを指定できるようになった。

例えば、Aというテクスチャが32bit 浮動小数点の数値を格納しているテクスチャだとする。
これの仮数分と指数部を分けてBとCのテクスチャで取得したい場合、今まででは仮数分だけを取得するシェーダと、指数部だけを取得するシェーダの両方を作成し、別々にシェーダ実行しないといけなかったのが、これにより一つのシェーダーに統合できるというわけだ。

しかし、グラフィックボードが古いものだと物によってはできないこともあるらしい。
私の環境Geforce GTX550tiで、マルチレンダリングターゲット最大数は4であった。
HSPSHADにはこの最大数を取得する命令も追加し、さらに使いやすくなった(と思う)。


ということでHSPSHAD ver 1.5とマルチレンダリングターゲットのサンプルを公開
DOWNLOAD
無題

画面に出しているのはマルチレンダリングターゲットとはあまり関係なく、HLSL内でテクスチャ座標がどのように指定できるかを表している。
テクスチャ座標は3Dプログラミングっぽく言えばUV座標のこと。
ピクセル指定は(x,y)という整数座標ではなく、float型の0.0~1.0までで表される小数で行う。

サンプルの例(4×4ピクセル)では、左上は(0.000,0.000)、右下は(0.750,0.750)として座標指定しているのが分かるように、HSPスクリーン上で数値を表示させたものだ。




今回参考にさせていただいたサイト
http://marupeke296.com/DXG_No50_MultiPassRendering.html