続々々・GPUのお勉強

さて、なかなか仕事が忙しく放置気味だったGPUの検討を再開。
間がいてしまったが、前回からの続きです。

最後に残っていたポリゴンエッジの問題にトライ。

– このドメインはお名前.comで取得されています。

Build software better, together
GitHub is where people build software. More than 150 million people use GitHub to discover, fork, and contribute to over...

を目一杯参考にさせて頂いて、ようやく理解。

まず改善前の状況確認ということで、エッジのケアの無い状態で、画面いっぱいに三角形を2つ描画。
ピクセルシェーダー相当のところで描画時に輝度に100を足すだけの処理を入れる。

一度も書かれていないところは黒(0)、1度かかれるところは灰(100)、2度書かれてしまったところは(200)になるはずである。つまり画面全部が灰(100)になるのが望ましい状態。

Edge

ポリゴン境界で、両方のポリゴンに含まれてしまい二度書きされている部分が発生している。よろしくない状態である。
なお、前回固定小数点化するところまでいっているので、書き残しの黒(0)は発生しない(浮動小数点だとNG)。

さて、先人の知恵を参考に判定式に1行追加。

   if ( edy[i] < (RT)0 || (edy[i] == (RT)0 && edx[i] > (RT)0 ) ) { –e0[i]; }

オリジナルとは逆符号で計算していたので、減算で補正している。

Photo_2

見事!

先人の知恵はすばらしい。勉強になりました。

さて、どうやってFPGAに持っていこう (^^;;

ちなみに最新ソースコードは

GitHub - ryuz/render_model
Contribute to ryuz/render_model development by creating an account on GitHub.

にて。

コメント

タイトルとURLをコピーしました