4D同種空間でクリッピングするときにGPUが実際に行うことの詳細は?


10

小さなソフトウェアレンダラーを実装して、プログラム可能なレンダリングパイプラインを学習しています。私はそれを「ハードウェア」スタイルで実装しようとしています。しかし、私はGPUパイプラインに慣れておらず、均一クリッピングの問題がいくつかありました。

同種のクリッピングスペースには、各頂点でさまざまなw変数が含まれます。各頂点オブジェクトの同種座標(射影行列とwによる同種除算の間)は、独自のクリッピング空間にありますか?もしそうなら、どのようにラインと三角形をFrustumよりも近く、またはカメラの後ろに伸ばすかをクリップする方法(つまり、w <= frustum_znear)?

更新このスレッドは、同種空間でのクリッピングは4D同種空間での交差問題に直接つながると述べています。つまり、交点はp_vec4 = t * point1_vec4 + (1 - t) * point2_vec4です。言う私はP0(-70, -70, 118, 120)P1(-32, -99, -13, -11)して4D均質な空間で、交点plane w = -z(NDCにおけるZ = -1である)である(-35, -96, -1, 0.9) t = 0.99NDC空間においてcorrresponding頂点オブジェクトを取得する方法、?

そして、正しい交点を取得したら、頂点シェーダーによって生成された頂点オブジェクト間の補間を行って、新しい頂点オブジェクトを取得する必要がありますか?


これは、1つの投稿に対する質問が多すぎるため、おそらく分割する必要があります。一般的なルールは、投稿ごとに1つの質問(または少なくとも重要な質問)です。
ピカレク2016年

@Pikalek私は他の2つの質問を削除して、このスレッドを妥当なものにしようとしています。アドバイスをしてくれてありがとう。
stanleyerror 2016年

回答:


1

クリッピングは、4D空間ではなく、「w」分割の前に3D空間で行われます。

GPUは、ビューのフラスタムのニアプレーンとファープレーン、または6つの3Dプレーンすべてを検出し、これにジオをクリップします。

座標の符号が目/カメラの後ろの頂点で反転する前にw除算が行われた場合。

w分割の前に3Dクリップに遠方平面のみを使用する場合、xおよびy平面のラスタライズ段階で2Dクリッピングのみに依存する場合があります。


WはZに直接関連する単なるプロジェクションディバイダーであり、実際には4次元ではありません。4x4マトリックスは、変換と投影の分割を便利な形式で含める「ハック」です。これは、位置が(x、y、z、1)であることが暗示され、法線が(x、y、z、0)であることが暗示されているためにのみ機能します。

しかし、実際には4つの独立した次元ではありません。

「W」の値が1でも0でもない場合、ジオメトリにはほとんど意味がありません。これは、変換をオフにするための便利なオン/オフスイッチです。


0

同種のクリップ空間座標を正規化デバイス座標(NDC)座標に変換することについて質問している場合、プロセスは次のとおりです。 <x y z w> → <x/w y/w z/w>

このGDSEに関するQ / Aで、なぜクリップスペースは常に「同種のクリップスペース」と呼ばれるのですか?あなたにも役立つかもしれません。


1
ご回答有難うございます。しかし、私の問題は補間についてです。3D目の座標の下にある2つの点e1、e2が4Dの均一なクリッピング空間h1、h2に投影されるとします。次に、4D同次空間で補間を行い、セグメントh1-h2が4Dポイントh(t)= t * h1 +(1-t)* h2でクリップされます。一般性を失うことなく、h1-h(t)の部分(表示可能)がラスタライズステージに供給されていると仮定します。したがって、対応する頂点プロパティを生成する必要があります(頂点シェーダーの出力形式と同じ)。私の質問は、これらの新しい頂点のプロパティを生成する方法ですか?
stanleyerror 2016年

私の理解では、HCSでは補間は行われませんが、誤解されている可能性があります。ここでより多くの/より良い答えが得られない場合は、SOに再質問/移行してみてください。
ピカレク2016年

OK。このスレッドを直接SOに移行できますか、それとも新しい質問を再度開く必要がありますか?
stanleyerror 2016年

あなたに再質問を提案することに対する私の間違い; 通常、クロスポストはお勧めしません
ピカレク2016年

管理者は移行できると思います。
Sidar
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.