タグ付けされた質問 「performance」

1
誰もが「1秒あたりの光線数」をどのようにカウントしますか?
最近、モンテカルロパストレーサーを開発しています。トレーサーのパフォーマンスを測定するために、1秒間にトレースできる光線の数をカウントする単純なメカニズムを実装することにしました。次に問題が発生します。単一の光線を定義するには2つの方法があります。 完全なレイ。つまり、カメラから始まり、終了するまでシーンの周囲をバウンドします。 光線は各交点から発生しました。 多くの人が「レイ/秒」を使用してレイ/パストレーサーのパフォーマンスを測定しますが、「レイ」をどのように認識するかは私には不明確です。多分誰かが知っていますか?

1
最近のGPUにはバレルシフターが含まれていますか?
最近のほとんどのGPUは、浮動小数点向けに設計されていますが、最近では整数パフォーマンスでほぼ同等であり、融合型乗算加算がないなどのいくつかの注意点があります。これがシフト操作にどのように適用されるかはわかりません。私はGPUでマーチングキューブを実行しています。最初に各サーフェスキューブの32ビットのパックされた位置を書き出し、次にこれらを次のようにそのキューブの実際の頂点へのパスでアンパックします。 ivec3 unpackedPos = ivec3( packedPos >> 20 & 0x3FF, packedPos >> 10 & 0x3FF, packedPos & 0x3FF); 最近、シェーダーユニットにバレルシフターが搭載されているのではないかと思いました。ここで2シフトまたは30シフトしていますか? 編集>>私はばかです...知っておくと便利な回答の人たちに感謝しますが、私はこれについてすべて間違っています。RGB10_A2UIテクスチャ形式を使用してから、ビットシフトをいじるのではなく、単一のイメージのロード/ストア命令でパック/アンパックする必要があります。 RE_EDIT >>かどうか...この方法は明らかに赤いボックスでは機能しますが、緑色のボックスでは機能しないため、ビットシフトに戻ります。

2
部分モデルマトリックスを頂点シェーダーにアップロードした方がよいのはいつですか?
現在のところ、シーンをレンダリングするとき、およびシーングラフを反復処理するとき、各ノードのモデルマトリックスは、親のモデルマトリックスとシーンノードのポーズから計算されます。これは非常に単純で、行列の乗算の数をノードとフレームごとに1回の乗算にすでに減らしています。 しかし、これらのすべての行列乗算は、シーンノードの(複数の連続した)動きを非常に高速に実行できるように、CPUとすべてのフレームで実行する必要があります。ただし、GPUは多くの行列乗算を実行するのに適しているため、CPUですべてを計算するのではなく、複数の部分モデル行列を頂点シェーダーに送信することを検討しています。 この場合、すべての計算がすべてのノードではなくすべての頂点に対して行われるため、実際にはパフォーマンスが低下するため、GPUにすべてのパーツ(したがって、すべてのノードのポーズ)を送信することはおそらく意味がありません。しかし、多くの子を持つシーンノード、または(親に対して)移動しない子のみを持つシーンノードは、モデルマトリックスを分割し、乗算をシェーダーにシフトする場所になる可能性があります。 では、部分モデルマトリックスをシェーダーに送信して、乗算をGPUに移動するのはどのような場合に適していますか?それともこれは単に悪い考えですか?

1
シェーダー均一性能
シェーダーのユニフォームをどのように構成するかに基づいて、パフォーマンスに影響があるかどうか知りたいのですが。たとえば、4つのfloatを渡すことは、単一のvec4を渡すよりも悪いですか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.