2017-01-11 18 views
1

私はVulkanレンダラの作成に関する多くのオンラインチュートリアルを読んできましたが、サブパスのアイデアはまだ私には不明です。同じVulkanサブパスの複数のインスタンス

私は次のようなシナリオを想定しています:セットアップのために最初のサブパスを実行する必要があります(テスト用のデプスバッファーを満たしてから)シーン内のすべてのライトのサブパスを持ちます。各照明サブパスはまったく同じなので、2つのサブパスを宣言し、同じサブパスの複数のインスタンスを持つことは可能でしょうか?

答えて

1

ここで「合格」とは、「全画面合格」などを意味するものではありません。サブパスは、何をレンダリングしているか(および以前のサブパスレンダリングを入力添付ファイルとして読み込む)の点でのみ重要です。データがどこから来るか(ディスクリプタ/プッシュ定数)、取得する頂点データ、使用するシェーダ、サブパスに対する重要なものはありません。サブパス制御がレンダーターゲットであるのは唯一のものです。

異なる光が異なる画像にレンダリングされない限り、各光にサブパスを与える理由はありません。同じサブパス内のすべてのライトのレンダリングコマンドを発行するだけです。

+0

それぞれの光をそれぞれのスレッドに入れたいのですが?私は、各スレッドが完了した後に描画コマンドを送信して、レンダリングがすべてのライトが終了するのを待たないようにしたいと思っています - この質問が基本的であればごめんなさい – RWilco8

+0

@ RWilco8:独自のCPUスレッドですか?それは意味をなさない。コマンドは複数のCPUスレッドでは実行されません。それらを複数のCPUスレッドでCBに入れます。そしてそれを処理する方法は既にあります:セカンダリコマンドバッファ。また、遅延レンダリングを行っている場合は、ライトごとのコマンド数が非常に少ないため、これを行う理由はありません。 –

+0

ああ、私はシーンを一連のライトとしてレンダリングするフォワードレンダリングを使用したいと思います。これを行うことで、それぞれの光がコマンドプールを構築し、スレッドプールを使用してすぐにサブミットすることができる高度な並列処理を実現したいと考えています。 – RWilco8

関連する問題