ライトプリパスレンダリング Part3 アンチエイリアス

投稿日:

アンチエイリアス処理を行います。MSAAによるAAを試しましたがうまくいかなかったため、ポストプロセス処理のAAであるSMAA(Enhanced Subpixel Morphological Antialiasing)を実装してみました。かなりいい感じです。ただ、輪郭線処理との相性が悪いため輪郭線描画は無効にしています。
ライトプリパスレンダリングのプログラム作成は、ここで一旦終了します。

SMAA 1x
SMAA 1x

続きを読む ライトプリパスレンダリング Part3 アンチエイリアス

ライトプリパスレンダリング Part2 光源計算&最適化

投稿日:

光源計算の処理と最適化を行います。点光源などの影響範囲が限定されている場合、計算が必要なピクセルを検出することで処理時間を短縮します。

左上:法線 右上:Specular 左下:最終結果 右下:Diffuse
左上:法線 右上:Specular 
左下:最終結果 右下:Diffuse

続きを読む ライトプリパスレンダリング Part2 光源計算&最適化

ライトプリパスレンダリング Part1

投稿日:

ライトプリパスレンダリングの基本的な処理を作成します。ジオメトリバッファの作成、光源計算、最終レンダリングの3つのパスでレンダリングします。それとこれまでに作成した、輪郭線とステンシルシャドウも組み込んでみます。

左上:法線 右上:Specular 左下:最終結果  右下:Diffuse
左上:法線 右上:Specular
左下:最終結果 右下:Diffuse&Shadow

続きを読む ライトプリパスレンダリング Part1

ID3D11InfoQueueで特定の警告、エラーメッセージを無効化

投稿日:

DirectX11のデバッグ機能を有効(D3D11_CREATE_DEVICE_DEBUG)にすると、問題発生時にエラーメッセージが出力されます。しかし、場合によっては大量にメッセージが出力されて、必要なメッセージが埋もれてしまうことがあります。これを解決するためにID3D11InfoQueueを使って、特定のメッセージ(重要度が低い、大量に出力)を無効化します。

続きを読む ID3D11InfoQueueで特定の警告、エラーメッセージを無効化

Captcha(BestWebSoft) WordPress Pluginsでスパム対策

投稿日:

それほど多くはありませんが、最近スパムコメントが増えてきたのでスパム対策をします。Botなどによるコメント書き込みを防止するため、WordPressプラグインCaptcha(BestWebSoft)を導入します。

続きを読む Captcha(BestWebSoft) WordPress Pluginsでスパム対策

ライトプリパスレンダリング Part0

投稿日:

準備期間を終えて正式スタート。最初の課題は「ライトプリパスレンダリング」です。まずは、必要になりそうな処理、MRT(マルチレンダーターゲット)、G(ジオメトリ)バッファの生成、レンダリング結果をテクスチャとして使用、などを調査検証してみる。

左上:法線 右上:デプス⇒ワールド座標 左下:Diffuse 右下:輪郭線(赤)&影(青)
左上:法線 右上:デプス⇒ワールド座標
左下:Diffuse 右下:輪郭線(赤)&影(青)

続きを読む ライトプリパスレンダリング Part0

ID3D11QueryでGPUパフォーマンス測定

投稿日:

GPUが描画したポリゴン数や処理した頂点数などをID3D11Queryを使用して測定してみます。並列動作しているGPUの処理結果を取得するため、結果取得にちょっとした工夫が必要になります。単純な取得ではCPUとGPUの並列動作を止めてしまい、プログラムのパフォーマンスが悪化します。

続きを読む ID3D11QueryでGPUパフォーマンス測定

DirectXTKでフォント表示、日本語対応

投稿日:

デバッグ用の情報を表示するためにフォント表示を実装します。DirectX10まではフォント表示機能がありましたが、DirectX11にはないため、DirectXTKのフォント表示を使ってみます。それと日本語に対応していないようなので(バグかも)、DirectXTKを改造して無理やり日本語に対応させます。かなりいい加減な日本語対応だけどデバッグ用なので気にしない。
ss_dx11DirectXTKFont

続きを読む DirectXTKでフォント表示、日本語対応

ジオメトリシェーダでステンシルシャドウ&最適化

投稿日:

ジオメトリシェーダでステンシルシャドウを実装してみます。以前(DX9など)はシャドウボリュームの生成が面倒でしたが、ジオメトリシェーダを使うことによって簡単にできそうです。それと、単純な実装ではピクセルシェーダの負荷が大きすぎるため、できるだけシャドウボリュームの描画を減らす最適化も同時に行います。

ステンシルシャドウ
ステンシルシャドウ

続きを読む ジオメトリシェーダでステンシルシャドウ&最適化