問題タブ [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.

0 投票する
2 に答える
343 参照

direct3d - Z ファイティング Direct3D9、動的バッファーのみ

Direct3d9 のフレームごとに頂点バッファーをロックして、blendshape コードからのデータを入力します。私のシェーディングは 2 つのステップを使用するため、1 つのシェーダーで 1 回レンダリングしてから、もう 1 つのシェーダーで加算ブレンドを描画します。

私以外の理由で、頂点バッファーのデータは、これら 2 つの描画呼び出しの間で (明らかに) わずかに異なります。

これはすべて 1 つのスレッドで行われ、バッファは render が呼び出されるかなり前にロック解除されます。さらに、シェーダー命令への変更は発生しないため、データは両方の呼び出しでまったく同じである必要があります。ブレンドシェイプが変更されない場合、Z ファイティングは発生しません。

今のところ、シェーダーの深度を少し「プッシュ」していますが、これは非常に洗練されていない解決策です。

このデータが変更される理由 バッファーのロックを解除した後、DirectX がバッファー内のデータを変更するのはなぜですか? 変更しないように強制できますか?

0 投票する
1 に答える
9062 参照

c - glPolygonOffsetのfactorパラメーターの意味と使用法

関数の最初のパラメーターの意味を理解するのに苦労していglPolygonOffsetます。

公式文書には、その要因が記載されています

各ポリゴンの可変深度オフセットを作成するために使用される倍率を指定します。

そしてそれ

各フラグメントの深度値は、適切な頂点の深度値から補間された後にオフセットされます。オフセットの値は係数×DZ+r×単位です。ここで、DZはポリゴンの画面領域に対する深さの変化の測定値であり、rは特定の値に対して解決可能なオフセットを生成することが保証されている最小値です。実装。

r私は何であるかを理解してunitいます。私が理解していないDZのは、「ポリゴンの画面領域に対する深度値の変化の測定」が何を意味するのか、そしてなぜ係数を0以外に設定する必要があるのか​​ということです。

ワイヤーフレームをオフセットしたい場合、必要なのは深度値に/から数単位を追加/実体化することだけですよね?factorパラメーター(およびドキュメントに記載されているDZ)の意味、目的、および使用例は何ですか?

0 投票する
3 に答える
587 参照

actionscript-3 - Stage3Dは、実際の距離に関係なく、他のすべてのオブジェクトの背後にオブジェクトを描画できますか?

Stage3Dで3D宇宙ゲームを作成していますが、他のすべてのオブジェクトの背後に星のフィールドを描画したいと思います。私が直面している問題は、関係する距離が非常に長いことだと思います。星が他のオブジェクトよりも本当に遠くにある場合は、正しくレンダリングされない程度にスケーリングする必要があります。特定のサイズを超えると、顔がちらつくように見えます。これは、必要なサイズ(1200〜100000ユニット)にスケーリングすると、私の惑星メッシュでも発生します。カメラに向けて、平面テクスチャに星をレンダリングしています。スケールアップしすぎない限り、遠くにある他のオブジェクトの前にあることは明らかですが、うまくレンダリングされます。私はあらゆる種類のdepthTestModes(Context3DCompareMode.LESS、Context3DCompareMode)を試しました。GREATERおよびその他すべて)zバッファにメッシュを含めたり除外したりすることと組み合わせて、運がなくても星が表示される場所に他のピクセルが存在しない場合にのみ星をレンダリングします。誰かが私がこれをどのように達成できるか知っていますか?あるいは、さらに良いことに、特定のサイズを超えるメッシュが適切にレンダリングされない理由を知っていますか?気づいていない任意の上限はありますか?

0 投票する
2 に答える
1015 参照

opengl - 深度テストを保持する OpenGL で 2D 画像 (深度あり) をレンダリングする

深度バッファーもある外部ソース (ソフトウェア レイ トレーサーなど) からの画像があります。OpenGL 深度バッファが正しく更新されるように、OpenGL シーン (他のいくつかの 3D オブジェクトを含む) でその画像をレンダリングしたいと考えています。つまり、正しい深度テストを使用して画像と他の 3D オブジェクトを組み合わせる必要があります。何か案は?シェーダーのないソリューションがいいでしょう。

0 投票する
1 に答える
223 参照

flash - AGAL では、「kil」オペコードを使用する場合、DepthTest はそのピクセルをスキップしますか?

私がゲームを構築していて、いくつかのレイヤーで世界を作成するためのいくつかのタイルマップがあったとしましょう。ビューは正射投影であり、基本的には世界のトップダウン ビューです。

Depth-Test を使用して、どのスプライトが上から下に (レイヤーごとに) 描画されるかを比較することを考えています。(注:これがこの問題への最善のアプローチではないかもしれないことは承知していますが、冗談を言ってください...

エッジが完全に透明なキャラクター スプライト (スプライトの周囲にキー カラーまたはゼロ アルファ) がある場合、フラグメント シェーダーで「kil」オペコードを使用して、クワッドが存在しないことを確認できますか?スプライトの透明部分に「穴」?(少なくとも、それが起こると私が想定していることです)。

これに対するより単純な質問は....「kil」はそのピクセルを無視し、最後のdrawTriangles()呼び出しの前/にあったピクセルの色をそのままにしますか?

0 投票する
1 に答える
7030 参照

opengl - glDepthRange はどのように機能しますか?

私の頂点コードは次のとおりです。

今、私は次のようにzコードを変更しています:

現在、glDepthRange 呼び出しにより z コードが -0.5 から 0.5 の範囲にマップされ、適切な立方体が表示されることを期待していますが、上記の glDepthRange 呼び出しを歪んだジオメトリでコメントした場合と同じように o/p が返されます。

0 投票する
1 に答える
574 参照

opengl - depth_clampとdepth_testの実行順序

デプスクランプはデプステストの前またはデプステストの後に発生しますか?座標が1.0以上-1.0未満のプリミティブをレンダリングし、深度テストで深度クランプを使用しています。しかし、深度テストを有効にすると、ジオメトリはレンダリングされません。

これが私のコードです:

デプステストとクランプを一緒に使用するにはどうすればよいですか?

上記のコードが深度テストを有効にした状態で画面に何も描画しないのはなぜですか?

0 投票する
2 に答える
424 参照

java - カラーピックのオフスクリーンレンダリングで深度テストが機能しないのはなぜですか?

OpenGLでQUADSの選択ツールを実装するために、カラーリングとオフスクリーンレンダリングを使用しています。ただし、深度テストはオフスクリーンレンダリングでは機能しないようで、特定の角度と回転では、前面のQUADが選択されます。バッファや添付ファイルをどのように設定する必要があるかについて何か考えはありますか?この問題は私の法線と関係がありますか?それとも単に深度テストですか?個人的には深度テストだと思いますが、いまいましいことはうまくいきません!!!

バッファ用のMyinit関数は次のとおりです。

「コメント1」と「コメント2」の部分のコメントを解除すると、レンダリングバッファの問題が発生します。しかし、「カラーアタッチメントに加えて、レンダリングバッファをGL_DEPTH_ATTACHMENTにアタッチする」必要があると聞きました。(出典:このQを見てください。どうすればそれができるのだろうか。

また、これが私の使用法コードです:

0 投票する
1 に答える
106 参照

opengl - デプステクスチャのチャネルについて

デプステクスチャを実装し、2つの異なるドライバーで異なる出力を取得しました。フラグメントシェーダーのtexture()ですべてのチャネルを読み取っています:

この場合、AとBにそれぞれ赤と灰色の画像が表示されます。赤のチャネルを読み取り、それを4つのチャネルすべてに複製すると、Aに次のような灰色の画像が表示されます。

どちらが正しいですか? ここに画像の説明を入力してください

ここに画像の説明を入力してください

0 投票する
1 に答える
2198 参照

opengl - glEnable(GL_DEPTH_TEST) を使用して正しく表示されない

以下の私のプログラムは、単純なライトで照らされた回転中の立方体を表示する必要があります。問題は、キューブが点滅していることです。glEnable(GL_DEPTH_TEST) の呼び出しを取り消すと、立方体は点滅しませんが、その中の面が見えます (深度テストがないため正常です)。ただし、この呼び出しは不可欠です。したがって、この関数の呼び出しが正しく機能しない理由がわかりません。

これが私のコードです:

これが glEnable(GL_DEPTH_TEST) の画面です (顔が点滅しています)

ここに画像の説明を入力

そして、この呼び出しなし(点滅表示はありませんが、深度テストはありません)

ここに画像の説明を入力

成功せずにいくつかのコードの組み合わせを試しました。

誰でも私を助けることができますか?

よろしくお願いします。