もきもき3D

アクセスカウンタ

zoom RSS 取り合えずCookTorranceをでっち上げたけど

<<   作成日時 : 2009/07/17 01:39   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

DGF/(N・V)はいいとして、フレネル項に与えるべきΘが未だに謎(・з・)

http://www.siggraph.org/education/materials/HyperGraph/illumin/specular_highlights/blinn_model_for_specular_reflect_1.htm
のBlinnモデルのD項がBeckmannモデルに代わっただけなら、F項に与えるのはV・Hという事になるんだろうけど、wikiにはF項としてF=(1+(N・V))λとかなってるし('A`)

うーん('A`)
----
一応フレネル。

t == dot積 == cosΘ、IOR==大気1に対する屈折率として、
その1
g = sqrt((IOR * IOR) + (t * t) - 1);
f1 = (g - t) / (g + t);
f2 = ((t * (g + t)) - 1) / ((t * (g - t)) + 1);
F = 0.5 * (f1 * f1) * (1 + (f2 * f2));

その2(厳解式?)
p1 = acos(t); // radianにし。
// sinΘにしてからIORで割り、屈折角を作った後にradianにする。
// cosΘのままIORで割ると0度〜90度時のF値が90〜0の逆転した値になる(その1と比べて)。
p2 = asin(sin(p1) / IOR);
f1 = pow(sin(p1 - p2) / sin(p1 + p2), 2);
f2 = pow(tan(p1 - p2) / tan(p1 + p2), 2);
F = 0.5 * (f1 + f2);

その3(簡易式)
f1 = pow((1 - IOR) / (1 + IOR), 2);
F = f1 + ((1 - f1) * pow(1.0 - t, 5));

その1は0度〜5度でほぼ同じ値になる。
その2は0度の時では#INDを返すので注意。
1と2は0度を除き、小数6桁位は同じ値になる。
その3は結構誤差あるっぽい。 0度〜から広範な範囲で同じ値になる事多し。

テーマ

注目テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
取り合えずCookTorranceをでっち上げたけど もきもき3D/BIGLOBEウェブリブログ
文字サイズ:       閉じる