椿の日記

たぶんプログラムの話をします

2012-12-01から1ヶ月間の記事一覧

pixel shaderでshared memoryって使えるの?

ここまで最適化を進めてきたのですが、これ以上はpixel shaderでは高速化は無理な気がしてきました…ループに[unroll]を付けたり階乗計算を漸化式的に書き直したりした結果、アセンブリコードの大半は積和計算になりました。それでも遅いということは、レジス…

シェーダの最適化ってどうするのがいいのかな

あんまりにもSH係数の計算が重いのでシェーダコードの最適化をしています。ただ、ある程度のところより先は、どう最適化するのがよいのかよく分からんことに。というのは、生成されたアセンブリコードをCUDAコアで実行するにあたって結局どういう風にコンバ…

球面調和関数の練習

やったこと やっと時間取れたので実装してみました。上段はリファレンスとなる通常の照明計算、下段はそれを球面調和関数の係数空間で計算しました。左から順にそれぞれ次のような照明計算を行いました。 Lambertian BRDF * DirectionalLight Phong BRDF * D…

Frequency Domain Normal Map Filtering続き^4

※式が違ったので修正(12/24)セクション4.3の次の式 について、次のようにそれぞれ球面調和関数展開できるとき、 その係数が次のようになる、 というこの部分について流し読みしていたのですが、よくよく考えてみると、よくある球面調和関数の内積と違ってを…

Frequency Domain Normal Map Filtering続き^3

セクション7で出てきた次の式(16)、 の出所は、これはClustering on the Unit Hypersphere using von Mises-Fisher DistributionsのAppendixに乗っていました。導出の詳細は論文を参照するとして、von Mises-Fisher分布関数のパラメータκとμをEMアルゴリズム…

Frequency Domain Normal Map Filtering続きの続き

論文のセクション8にも意味が分からなかった部分があったのですが、解決したので覚書しておきます。問題を要約すると、入射方向ωi、出射方向ωo、そのハーフ角ωhについて、が成り立つ、というものです。通常の反射の積分は入射方向で球面上を積分しますが、Bl…

Frequency Domain Normal Map Filtering続き

この論文も後半でいくつか分からない部分がありました。論文の後半は、NDFを近似するにあたってvMF(von Mises-Fisher)分布を用いています。vMFは球面上の1つの突起を表現していて、方向、幅、振幅の3つのパラメータで表されます。複数の突起を扱うには、その…

Frequency Domain Normal Map Filteringを読了

Frequency Domain Normal Map Filteringを読みました。法線マップのフィルタリングに関する論文で、法線マップを単純にミップマップ化すると法線が平均化されて想定外の方向を向いてしまい、シェーディング結果が変わってしまう 問題に対してどのように対処…