問題タブ [zbuffer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
unity3d - Unity3D ViewModel Z 深度バッファー修正浮動小数点
Meshes と Skinned Meshes の浮動小数点の問題を修正する方法を知っている人はいますか?
Rust はこの問題の解決策を見つけており、Garry はここで説明しています: http://garry.tv/2014/04/07/unity-viewmodels/
Unity3d の方法ではなく、Rust の方法でどのように機能するかを知りたいです。
それがどのように機能するか、その問題をどのように解決するか知っている人はいますか? どんな助けでも大歓迎です。ありがとう。
c++ - OpenGL での深度テスト
私のプログラムは深度テストを拒否しています。2 つの球体オブジェクトは、位置に従ってではなく、常に作成された順序で描画されます。球のアルファは (0, 0, 1) に配置され、球のベータは (0, 0, -10) に配置されますが、OpenGL は依然としてアルファの上にベータを描画します。プログラムで深度テストを有効に設定しました。
何も機能していないようです。ウィンドウに描画されたすべてのオブジェクトに対して、OpenGL が深度テストを自動的に実行するようにします。どんな助けやアドバイスも大歓迎です。これが完全なコードです。
Ubuntu 14.04 オペレーティング システムを使用しています。
c++ - CUDA での単純な Z バッファーの実装
3D ポイント クラウドがあり、ピクセルをイメージ プレーンに投影します。一部の 3D ポイントは同じピクセルにマッピングされるため、Z 値が最も低いピクセルのみをカメラに表示したいと考えています。深度値を追跡するために、Z バッファー (float 配列) を使用します。ここにいくつかの擬似コードがあります:
これの完全に機能するシングルコア CPU バージョンがあります。
cuda バージョンは問題なく見え、非常に高速ですが、z-test が役割を果たす領域だけが非常に「縞模様」になっています。これは、一部の背景ポイントが前景ピクセルを上書きしていることを意味すると思います。また、カラー画像を見ると、画像には存在しない色のランダムな色の筋が見られます。
CUDA バージョンは次のようになります。
ここで並行性が問題になると思います。1 つのスレッドがこのピクセルの最も近い Z 値を Z バッファーに書き込むことがありますが、同時に別のスレッドが古い値を読み取り、正しい値を上書きします。
CUDAでこれを防ぐにはどうすればよいですか?
Edit1: ブロック サイズを (16,16) から (1,1) に縮小すると、縞模様は少なくなりますが、1 ピクセルの穴のように見えます。
Edit2:これは最小限の例です:
インデックス 0 の z の値は、それが最小値であるため 1 である必要がありますが、a の最後の値である 5 です。
c++ - GlReadPixels は常に深度バッファ 0 から取得します
状況は、交差する多くのサーフェスがあり、カーソル位置の実際の座標を決定するためにマウス クリックする必要がないということです。それが何またはサーフェスを指している場合、このために使用したかったglReadPixels
シェーダー全体をペイントし、最終的glReadPixels
に、現在のピクセルの深さは常に に等しいことがわかり0
ます。これは、これが可能であり、の新しいバージョンの代替機能のいずれかを持っている可能性がありopengl
、フォーラムで情報を探していますが、私が助けることができることがわかりました、ありがとうあらかじめ。
webgl - 深度計算で使用されない WebGL シェーダーの z 位置
WebGL をいくつか試してみましたが、修正方法がわからないバグがあります。
現在、次の設定があります。すべての位置があり、単一のgl.drawArrays
関数によって描画されている約 100 個の三角形があります。それらを正しい順序で描画するためにgl.enable(gl.DEPTH_TEST);
、正しい結果が得られました。
私が今抱えている問題はgl_Position
、頂点シェーダーの三角形を更新すると、更新された Z 値が深度テストで使用されないことです。その結果、agl_Position.z
が 1 の三角形を a が 10 の三角形の上に描画できますがgl_Position.z
、これはまさに私が望んでいるものではありません。
私は何を試しましたか?
と
レンダリング機能で。
次のコードは、バッファを作成するために使用されます。
より高い z 値を持つ三角形はサイズがはるかに大きくなりますが (パースペクティブのため)、小さな三角形がその上に表示されます (レンダリング順序のため)。
フラグメント シェーダーでgl_fragCoord.z
、それが正しく、(遠くにある) 小さい三角形が大きい三角形 (近くにある) よりも高いアルファを受け取ったかどうかを確認するために使用しました。
奇妙な描画動作の原因は何ですか?