次はHDRのブルーム

次もポストエフェクトの追加をやる予定です。
いよいよHDRを使った機能を実装しようかと思います。

今DirectXについているHDRのサンプルを眺めているところです。

だけどいきなり問題が、、、

HDRをきれいにやろうとすると浮動小数点フォーマットのテクスチャが必要なんですが
これ、GeforceFXでは使えないのとRADEONも9500以上じゃないと使えないらしいです。
やっぱり流行りものに手を出そうとすると実行環境も選ぶことになるんですね。
(整数フォーマットのアルファを使うやり方もあるらしいですが汚いらしいです。)

浮動小数点フォーマットは主に色値が大きい部分を抜き出す用途に使うようです。

でもこれが使えない環境でもそれほど落胆することはありません。
要は光らせたい部分を抜き出してぼかしてブレンドすればいいんです。
なので今ある機能でも似たようなことは出来ます。

ということで次回は浮動小数点テクスチャが使える環境のみをターゲットとした機能を作ります。
トーンマッピングも出来るようにするかもです。


テーマ : プログラミング - ジャンル : コンピュータ

グロー実装版リリース!

グロー実装版をリリースしました!
なんかレンダーステートをいろいろいじっているうちに以前より明るくなりましたよ。
それでグローの色にRGB成分ごとに倍率を指定できるようにしました。
rdb2_glowsetting

glow0_8

glow_red

上の図はRGB全部0.8倍したもの。
下の図はRだけちょっと倍率を上げたもの。
赤っぽくなってますね。
こんな感じで色合いも変えられるようにしました。
Easy3DのE3DSetMaterialGlowParamsを使えばこの倍率をリアルタイムで変化させることも可能です。

でもちょっと心配も、、、
今回のグローの追加でバンプのライト3個適用時のピクセルシェーダの命令数が
限界命令数ぴったりになりました。
もうこれ以上増やせません。
まだやりたいこといっぱいあるのになぁ。
こんなで大丈夫かな?
今後のバージョンアップでバンプのライト3個のときは使えない機能とか出てきそうです。


テーマ : プログラミング - ジャンル : コンピュータ

グロー経過

グロー実装中です。
RokDeBone2でも結果を別ウインドウで確認できるようにしています。
とりあえず途中経過の図でも。
rdb2_noglow

rdb2_withglow

rdb2_withglow125

1番上は通常の描画。
2番目はグロー。周りの枠は不透明グローで、黄色い文字のところは半透明グローです。
枠の4つ角はグロー無しです。
ちょっとこれだと物足りないような感じがしたのでオーバーにしたのが3番目の図。
3番目はグローをアッドした後さらに0.25倍のアッドを加えたものです。
ちょっとやりすぎ??光りすぎ??(笑)
3番目は試しにやってみたのですが採用しようかどうかちょっと迷ってたりします。

グローを2回アッドするとテクスチャフィルが1回増えてしまうので、
グローの元画像作成時かあるいはガウスのときに色成分を任意の倍数倍に出来るようにした方が速いかも。
ちょっと試行錯誤してみます。

と経過はこんな感じです。


テーマ : プログラミング - ジャンル : コンピュータ

グローの原型

ぼかし実装版をリリースしました!
e3d_blurtexture091020


図は左上がノーマルなレンダーで右上の小さいのがガウスぼかしで
左下がノーマルとぼかしをアッドモードでブレンドしたものです。

光って周囲がちょっとぼけてますね。
これがグローの原型になります。
グローはこの光る部分をどこにするかを制御できるようにしたものです。
どういう風に制御するかというとテクスチャのアルファを使います。
テクスチャのアルファ成分が0の部分は光らせずに
アルファ成分が0以外の部分を発光させます。

つまりグローはマテリアル単位で指定してテクスチャが無いと使えないことになります。
通常のテクスチャとグローのテクスチャは
RokDeBone2でどちらに使うかを指定するようにしようと思います。

テクスチャへのレンダリングだと正方形になるから
アスペクト比はどうすればいいのかな?
縦長に描画するようにして横長のメインウインドウに貼りつければいいのかな?
ちょっとまだその辺の実験が必要です。
ここがうまくいかないととりあえずEasy3Dだけでの表示になるかもです。


テーマ : プログラミング - ジャンル : コンピュータ

ぼかしが出来た

リアルタイムグローの途中経過です。

今は準備段階のぼかし機能が出来たところです。
16box, 9corn, Gaussの3つ出来ました。
16boxと9cornは1パスだけどGaussは2パスで(ぼかしだけのパス数で)ちょっと重め。
1パスで出来るGauss5x5っていうのが本にあったから
これも明日実装しよう。

あとは2つのテクスチャを合成する命令を作って一度リリースする予定。
ガウスぼかしをアッドモードで元画像に重ねたらそれだけでも何かの効果になるかも?

まあ本命はグローの方で
テクスチャで光らせたい部分を自由に指定できるようにするんですが。
これは一度リリースした後でやることにします。

次回のバージョンからポストエフェクトのHLSLファイルが付きます。
ユーザーさんが自由にエフェクトシェーダーをいじることが出来ます。
ボーン変形などが必要なシェーダーはまだ公開しません。
テクスチャ処理のエフェクト部分だけの公開です。
dllと同じ場所にHLSLをコピーしないと動かなくなるため
インストールの手間が少し増えますが。


テーマ : プログラミング - ジャンル : コンピュータ

| ホーム |


PREV PAGE «  BLOG TOP  » NEXT PAGE