問題タブ [depth-testing]
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.
opengl-es - OpenGL でフラグメントごとの DEPTH_TEST を実行する
を使用して OpenGL で深度テストのオン/オフを切り替えることができますがglEnable( GL_DEPTH_TEST );
、これは描画呼び出し全体のテストのオン/オフを切り替えます。
フラグメントごとにテストを制御したいと思います。
これは、次の効果を達成するためです: チェス盤のパターンでは、プリミティブのピクセルの半分が隠される可能性がありますが、残りの半分は常に描画されます。カメラ。
説明のために、ピラミッドのピクセルの半分だけがその前のボックスによって隠されている可能性があるこの例を参照してください。
赤いボックスが最初に描画され、緑のピラミッドが描画されるときに既にフレーム バッファーにあることに注意してください。
また、注: 特殊な深度テストを最後にオブジェクトを描画するため、赤いボックスが最初に描画されるケースは発生しません。
私の目的では、この方法で描画されたすべてのオブジェクトは凸状であり、それ自体を覆い隠すことはありません。
フラグメント シェーダーでチェス盤パターンを取得する方法を知っています。
しかし、私の場合、フラグメントごとに破棄をフラットにしたくはありません。フラグメントごとに深度テストを切り替えたいだけです。
OpenGL-ES 3.0 をターゲットにしています。
c++ - 単一シェーダーの N 深度マップ テクスチャ
シェーダー 1 の深度マップ テクスチャがアタッチされています。
1 つのシェーダーで異なるLightSpaceMatrix
es に複数の深度テクスチャをアタッチすることは可能ですか?
または、別のフレーム バッファで行う必要がありますか?