トップページ > 記事閲覧
ジオメトリシェーダーの使用について
名前:july1997 日時: 2019/06/21 13:33

いつもお世話になっております。 以前DXライブラリを使用してフィジカルベースドレンダリング(PBRやPBRベースのIBL)などを実装させていただいておりました。 【サンプル】 https://imgur.com/a/paNLjBo この度Voxel-based Global Illumination(ボクセルベースのグローバルイルミネーション)というものの実装に取り組んでおります。 空間をvoxelという正規格子単位(立方体)に分割し、そこからコーントレースという手法を用いて間接光を計算するというもので、 そこでボクセル化にどうしてもジオメトリシェーダが無いと実装が難しく、ジオメトリシェーダをDXライブラリで使う方法をご教授願えればと存じております。
メンテ

Page: 1 |

Re: ジオメトリシェーダーの使用について ( No.1 )
名前:管理人 日時:2019/06/22 00:37

DXライブラリを使用しているとは思えないくらいリアルなレンダリングですね… ( 遠景部分は画像ですよね? ) 現在ジオメトリシェーダを使用することはできませんが、容易に実装できそうなので実装してみます ( 今週末か、遅くとも来週末には実装できると思います ) 因みにジオメトリシェーダは Direct3D 10 から使用できるもので、DXライブラリの場合は Direct3D 11 にネイティブに対応したグラフィックスデバイスが必要ですが、その点は問題ないでしょうか? あと、シェーダーコードも Direct3D 10 以降から使用できる ShaderModel 4.0 以降を使用することになります
メンテ
Re: ジオメトリシェーダーの使用について ( No.2 )
名前:july1997 日時:2019/06/22 13:09

遠景部分は画像で、ここでは遠景画像を直接光源とするようなレンダリングをしております。 また近い内にソースなども公開したいと考えています。 また、ジオメトリシェーダについて、容易に実装できそうとのことで、お手数かかるところ申し訳ないのですが、実装されれば大変助かります! こちらではDXライブラリのDirect3D 11環境にて、ShaderModel 4.0のシェーダを用いて実装を行っておりました。 ですので、環境的には問題ないと考えております。 よろしくお願いいたします。
メンテ
Re: ジオメトリシェーダーの使用について ( No.3 )
名前:管理人 日時:2019/06/24 00:45

> 遠景部分は画像で、ここでは遠景画像を直接光源とするようなレンダリングをしております。 遠景画像を直接光源…画像から光源のパラメータを割り出すような手法でしょうか…? と思って少し調べて見ましたが、おお、そんな方法があるのですね… > また近い内にソースなども公開したいと考えています。 パッと見ただけでは恐らく理解できないと思いますが、公開された際には拝見させていただきます m(_ _)m > また、ジオメトリシェーダについて、容易に実装できそうとのことで、お手数かかるところ申し訳ないのですが、実装されれば大変助かります! お待たせしました、ジオメトリシェーダを使うための関数を追加しましたので、よろしければ こちらをダウンロードしてください m(_ _)m https://dxlib.xsrv.jp/temp/DxLibVCTest.zip // Windows版 VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.zip // Windows版 BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCC2Test.zip // Windows版 C++ Builder 10.2 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.zip // Windows版 MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // Windows版 .NET用 https://dxlib.xsrv.jp/temp/DxLibMakeTest.zip // ソース (中身を既存のライブラリのファイルに上書きして『リビルド』をして下さい) 以下の関数を追加しました // ジオメトリシェーダーバイナリをファイルから読み込みジオメトリシェーダーハンドルを作成する // ( 戻り値 -1:エラー -1以外:シェーダーハンドル ) int LoadGeometryShader( char *FileName ) ; // シェーダーを使用した描画に使用するジオメトリシェーダーを設定する( -1を渡すと解除 ) int SetUseGeometryShader( int ShaderHandle ) ; ジオメトリシェーダーで使用する定数バッファの設定は SetShaderConstantBuffer の TargetShader に DX_SHADERTYPE_GEOMETRY を渡して行ってください m(_ _)m
メンテ
Re: ジオメトリシェーダーの使用について ( No.4 )
名前:july1997(解決) 日時:2019/06/24 23:02

>遠景画像を直接光源…画像から光源のパラメータを割り出すような手法でしょうか…? イメージしてはそのようなものです。更に表面の粗さなども考え反射を変えたものが物理ベースレンダリングなどと言われております。 是非ソースなどもご覧いただければ嬉しい限りです! また、ジオメトリシェーダの件に付きまして、迅速に対応いただき誠にありがとございます! ダウンロードし、ジオメトリシェーダが使用できることを確認しました! また、頂点座標変換行列等をジオメトリシェーダ使用する場合はプログラムから設定をする必要がありますでしょうか?
メンテ
Re: ジオメトリシェーダーの使用について ( No.5 )
名前:july1997(解決) 日時:2019/06/25 01:48

すみません。プログラムから設定する方法で自己解決いたしました・・・。 ジオメトリシェーダしっかり使えるようです。対応いただいてありがとございました。 m(_ _)m より難しいシェーダの実装に取り組んでいきたいと考えております。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存