リアルタイムグロー

次はポストエフェクトのグローをやります。
グーロじゃないですよ。グローです。
指定した部分が発光してぼやける効果です。
ネオンライトとか未来服?の模様とかに使います。

この前はオートマチックにするって書いてましたが
ちょっと考えてみたらそうするとパラメータが非常にたくさんになって
かえってわかりづらくなるようでした。

そんで15分くらいで考えたところでは
次のようなスクリプトで実行することになるのでは?という感じです。

E3DCreateRenderTargetTexture 512, 512, scid1, texid1, okflag, D3DFMT_A8R8G8B8
E3DCreateRenderTargetTexture 128, 128, scid2, texid2, okflag, D3DFMT_A8R8G8B8
E3DCreateRenderTargetTexture 128, 128, scid3, texid3, okflag, D3DFMT_A8R8G8B8
E3DCreateRenderTargetTexture 512, 512, scid4, texid4, okflag, D3DFMT_A8R8G8B8

//最終結果のテクスチャをスプライトに設定
E3DCreateSprite "dummy512.bmp", 0, spid4
E3DGetSpriteSize spid4, spw4, sph4
E3DSetTextureToDispObj -2, spid4, texid4

//テクスチャ1への通常レンダー
E3DBeginScene scid1
E3DRender 地面
E3DRender キャラ1
E3DRender キャラ2
E3DEndScene

//グローのレンダー
E3DBeginScene scid2, 1
E3DClearRTTexture scid2, 0, 0, 0, 0, 0.0
E3DRenderGlow 地面
E3DRenderGlow キャラ1
E3DRenderGlow キャラ2
E3DEndScene
//グローをぼかし
E3DShadeOffTexture scid3, texid2, SHADEOFF_GAUSS
//ぼかしたグローと通常レンダーを合成
E3DBlendRTTexture scid4, texid1, texid3, D3DBLENDOP_ADD, D3DBLEND_SRC, D3DBLEND_ONE


//最終画面への描画
E3DBeginScene scid0
E3DBeginSprite
E3DRenderSprite spid4
E3DEndSprite
E3DEndScene

まだこれから変更があると思いますが大まかにはこんな感じだと思います。

スクリプトを見ると分かる通り
グローをやるにはまずぼかしの機能とテクスチャの合成の機能を作らないといけません。
ひょっとしたらこれらが出来た段階でグロー実装の前に一度リリースするかもです。

あ、それとおちゃっこLAB掲示板ですが
エロ業者のスパム書き込み防止のためアドレスを変更しました。
ブックマークしてた方はトップページからリンクをたどりなおして
ブックマークしなおしてください。

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

モーションブラー

モーションブラーのプログラムが動いた!
図はカメラモードブラーでカメラを左に動かしたもの。
MBlur091006

キャラクターのブラーは徐々にアルファが薄くなっていく
奇麗なブラーが掛かってます。
でもビルボードや背景は法線の問題かバグなのか?分離した半透明だけのブラーが付いている。

半分嬉しくて半分残念!

もっと地面にもボケた部分が出来ると思ったんだけど
この方法じゃダメみたいだ。

まあ今後いろんなエフェクトを足していくから
もっとかっこいい絵も作れるかもしれない。

とりあえずこれでリリースしようと思います。
あ、まだHSP版しか出来てないから
C++版を同じように作ってサンプルを足してからリリースします。

もうしばらくお待ちください。

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

エフェクト本読んだ!

DirectX 9 シェーダプログラミングブックのポストエフェクトの章を読み終わりました!
これからどういう命令セットで実装するかを考えます。
今考えているエフェクトは

ぼかし(16ボックス、9コーン、ガウス)
ブルーム効果(HDR)
グロー
モノトーン
セピア調
モーションブラー(移動軌跡ボリューム)

です。
モーションブラーだけちょっと他のものと性質が違いますが。

全部いっぺんに実装してリリースするか少しずつ小出しにするかは
やってみてから決めます。

ひょっとしたらモーションブラーだけ実装した時点で一度リリースするかも。
ああ、やっとプログラミング出来る!!


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

ポストエフェクトのその後

勉強の比重がDirectShowよりもポストエフェクトの方に移ってきました。
なんかすぐに結果が出そうな方についつい力が入ってしまうのです。

それにしても勉強は退屈なのでプログラミングよりもモチベーションを保つのが大変!
一昨日なんてつまんなくなって昼寝して過ごしちゃいましたよ(笑)

本を読んでいろんなエフェクトを理解しました。
ぼかしもガウスだけじゃなくてエリア総和とかいろいろあるんですねー。

そんで今一番やりたいのがモーションブラー。
これも何種類かやり方があるんですが
あんまり重くない移動軌跡ボリュームを使った方法を採用しようかと思います。

でもこれ、ボーン変形と組み合わせるとなると制限があるんですよ。
普通の状態では1パーツにつき44個までボーンを使えるんですが
モーションブラーをしようとするとその半分の22個までしか使えなくなります。
これは許容範囲だろうか?
ちょっときわどい数のような気がします。


ああはやくプログラミングしたいけどまだ本を読み終わっていないのです。
あと60ページくらいありあます。もうしばらくの辛抱です。

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

ポストエフェクト

まだ勉強中です。
C#とDirectShowとポストエフェクトの勉強を同時進行してます。

C#は743ページ中300ページまで来ました。
DirectShowはまだまだ(2割くらいかな?)。
ポストエフェクトはガウスフィルタやHDRを使ったクロスフィルタなどを理解しました。

ポストエフェクトの勉強の方がはかどっているので
DirectShowの実装よりも先に実装するかもしれません。
まあ勉強の進み方次第ですが。

ポストエフェクトはどういう風に実装しようかな?
エフェクトを構成する汎用的な部品を命令にして
ユーザーさん側で組み合わせて使ってもらう方法もあるけど
これは専門知識が必要でちょっと難しいかな?
やっぱりEasy3Dだからもっとオートマチックな方がいいかもと思ったり。
汎用的な命令とオートマチックな命令と両方あれば文句ないか!
んーー、まずはオートマチックな命令から始めよう。
でもガウスフィルタとかクロスフィルタとか結構処理が重いみたい。
古いマシンじゃきついだろうなぁ。


ところで一つ分かったことがあります。
浮動小数点フォーマットのテクスチャにレンダーする際には
拡大縮小のLINEARフィルターは使えないそうです。
以前26℃さんの環境で浮動小数点フォーマットのテクスチャでビルボードの影が透過できないという現象がありましたが
ひょっとしたらこれが原因かもしれません。
拡大縮小をPOINTフィルターにしたらうまくいくかもしれません。

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

| ホーム |


PREV PAGE «  BLOG TOP  » NEXT PAGE