対数ラスタライザを作った。

こんにちわ。
Pocolです。
もう年末ですね,みなさんいかがお過ごしでしょうか?

自分は冬休みの宿題としてLogPSMを実用的に実装しよう!というものをやっていたのですが,コンピュートシェーダを使ってのラスタライザ処理がシーンに結構依存して,「カメラぐりぐり動かしたいのに,これはだめだなぁ」という結論に達してしまいました。
一応これからプランBに移りますが,せっかく書いたコードをそのまま放置しておくのもあれだなぁ~と思ったので,

デバッグ用途に作成したCPUでラスタライズするコードを公開しておきます。
もし,バグがあれば正しい修正方法と共にご指摘いただけると幸いです。

線形ラスタライズは,https://github.com/ProjectAsura/Rasterizer/tree/master/LinearRasterizerです。
一応下記のような感じになります。
depth

対数ラスタライズは,https://github.com/ProjectAsura/Rasterizer/tree/master/LogarithmicRasterizerです。
実行結果は下記のようになります。
color

ラスタライズ処理自体は,重心座標を用いて計算しています。
線形ラスタライズ自体の説明はhttp://www.sunshine2k.de/coding/java/TriangleRasterization/TriangleRasterization.htmlあたりを参考にしました。
最近だと三つ葉レイさんが解説してくれているので,そちらの動画を見る方が良いかもしれません。

対数ラスタライズの実装についての説明は,”Logarithmic Perspective Shadow Maps”の CHAPTER 7. Logarithmic rasterization hardware(pp.148-160)に詳細が載っていますので,そちらをご参照ください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください