トップページgamedev
509コメント160KB

シェーダープログラマが集うスレ

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。01/11/08 11:06ID:???

       ∧ ∧      / ̄ ̄ ̄ ̄ ̄ ̄ ̄
       (,,・∀・)    <  ゲームにもシェーダーの時代到来でち♪
       @_)      \_______


バーテックスシェーダーとかピクセルシェーダーとかを語りまくるスレ。
0470名前は開発中のものです。2010/05/09(日) 08:14:30ID:zbXbbgYt
>>440
レスthx
大分理解が進んだ気がするけど、実装方法がいまいちわからず
いくつか質問させてください

>RSMからVirtual Point Lightsの基準になる点を選ぶ。
fluxマップの各テクセル全てが二次光源になるということ?

>あとは、法線方向に半球に広がるSH係数を3Dテクスチャに書き込む。
このSH係数はどうやって求めるんだろう?任意の位置のfluxマップの近傍からどうにかするんだろうか?謎
あと3DテクスチャへのレンダリングってたしかDX10以降じゃないとできないよね?

>それを6方向(±XYZ)に広げていくだけ。
これもCPU側で全グリッドをぶんまわして処理するんかな?

>カスケード
>遮蔽するようなSH係数を書き込む
>SH Gradient
この辺に至ってはさっぱりイメージもつかない・・・

概要はなんとなくわかったけど実装となると・・・・
サンプル(擬似コード)を書いてくれると非常にありがたいのだけども
0471名前は開発中のものです。2010/05/09(日) 14:07:31ID:OSyt/H/l
>>470
> fluxマップの各テクセル全てが二次光源になるということ?
意味的にはそう。
けど実際には重点的サンプリングで個数を減らす。
シェーダコードがCryEngine3 のLPVの資料に書いてあるから見てみるといいかも。

> このSH係数はどうやって求めるんだろう?
VPLはそれぞれ点光源なんで、法線方向に半球状に分布したSH係数を作ればいい。色はRSMから引っ張ってくる。
で、この係数はZonalHarmonicsていうSHの特殊な形態+SHRotationで求めることができるんで、シェーダでも計算可。
ZH+SHRotationの詳細は、PyramidのCEDEC2006講演の資料を見るといいかも。

> あと3DテクスチャへのレンダリングってたしかDX10以降じゃないとできないよね?
DX9だとテクスチャ1枚に展開して自前でバイリニアサンプリングを実装するのが一番楽かも。
CPUを混ぜて描画先のサーフェスを引っ張ってくるのも有りだけど、重そうだな…。

> これもCPU側で全グリッドをぶんまわして処理するんかな?
シェーダで。
各イテレーションごとに、前後左右上下6方向の色から自身(現在見ているテクセル)の次の色を求める。
それを数回繰り返して拡散(=プロパゲーション)させる

> サンプル(擬似コード)を書いてくれると非常にありがたいのだけども
Crytek の資料に Injection と Propagation の疑似コードはあった希ガス。
■ このスレッドは過去ログ倉庫に格納されています