問題タブ [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 - OpenGL - 1 を超える深度値を保存する方法はありますか?
この記事のように、GPU に衝突検出を実装しようとしています。
https://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch29.html
ステップ 2 - グリッド生成では、深度テストを使用して、以前のものよりも大きいパーティクル ID のみを書き込むことを確認します。
ID番号をパーティクルの総数で割ることで、これが機能しています。
gl_FragDepth = v_ID/u_totalParticleCount;
しかし、粒子が多いポイントに到達すると、これに十分な精度が得られなくなるのではないかと心配しています。
RGBA32F テクスチャをフレームバッファの深度アタッチメントにアタッチしようとしましたが、それは許可されていないと思います。
これを行う方法はありますか?または、ID を 0 ~ 1 のスペースに入れるのが唯一の方法ですか?
どうもありがとう!
unity3d - Unity3d モバイル シェーダーの透過性の問題
Unity3D (Unlit バージョン) でカスタム シェーダーを使用すると、3D オブジェクトがアルファとオーバーラップします。
代わりに、次のようになります。
何か見逃しましたか?透明度アルファ自体が重なっているようです。
編集 1
最初のパスを削除し、Zbuffer を有効にして削除if (col.a < _Cutoff)
し、テクスチャに応じて動的にしましたが、最初の画像と同じ結果が得られます。
opengl - glReadPixels()正規化された値の代わりに実際の深度を取得する方法は?
深度マップを取得するために pyopengl を使用しています。
を使用して、正規化された深度マップを取得できますglReadPixels()
。正規化された値をワールド座標の実際の深度に戻すにはどうすればよいですか?
で遊んでみましglDepthRange()
たが、常に何らかの正規化が実行されます。正規化をまったく無効にすることはできますか?
opengl - 遅延レンダリングでの深度バッファを使用したワイヤフレーム レンダリング
遅延レンダリング パイプラインを使用した科学的な視覚化用の小さな OpenGL アプリがあります。2 つのパスがあります。位置、法線、アルベド、セグメンテーションなどでテクスチャをレンダリングするジオメトリック パスです。ライティング パスでは、そのデータの一部をクワッドにマップして画面にレンダリングするか、ハード ドライブに画像を保存するだけです。つまり、古典的な遅延レンダリングです。
ここで、ワイヤフレーム レンダリングを追加のテクスチャに追加する必要があります。ジオメトリ シェーダーでやろうと思ったのですが、ちょっと複雑そうでパフォーマンスも問題なかったので、3 番目のパスを設定glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
してテクスチャにレンダリングし、それをライティング パスに渡します。他のもの。
問題なく動作しますが、何らかの方法で深度バッファを使用し、モデルの背後にあるワイヤフレームをレンダリングしないようにすることは可能でしょうか? つまり、確かに背面ポリゴンをカリングできますが、正面ポリゴンの背後にもまだいくつかの線があり、これも前面です。私が望むのは、ポリゴンが塗りつぶされているかのようにカリングすることですが、ワイヤーフレームのみをレンダリングすることです。
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
モデルをレンダリングしてからワイヤーフレームをレンダリングすることもできますが、モデルをジオメトリ パスのテクスチャにレンダリングし、別のパスのワイヤーフレームにモデルをレンダリングするため、これを行うことglPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
はできません。デフォルトの深度バッファ。
それで、皆さん、何か考えはありますか?