問題タブ [opengl-4]

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 に答える
616 参照

python - 私が 5 のように説明してください: OpenGL 4.x レンダリング パイプライン

私はここ数週間、オフタイムに openGL を見て過ごしました。そして、古い NeHe の例のいくつかに従うことに問題はありませんが、私が読んだすべてのものから、OpenGL4 はまったく異なるプロセスです。そして、レッドブックとスーパーバイブルにアクセスできますが、前者はまだレガシーopengl呼び出しを提供していますが、後者は独自のライブラリを使用しています. どちらも、プロジェクトでコードをまとめる方法を理解するのに特に役立ちません。たとえば、私の現在の理解では、glu と glut はレガシーであり、opengl 4 には使用しないでください。

仮想モデル空間の頂点を非常に簡単に生成できます。モデルが最終的に画面にどのように表示されるかを理解するのに非常に苦労しています。私の試行の約 95% は、黒い空白の画面で終了します。

前もって感謝します。

ここにいくつかのコードがあります:

そしてもう1つ:

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

c++ - Tiled rendering compute shader light culling and shading

I'm trying to implement tiled-deferred rendering in OpenGL/GLSL and I'm stuck on light culling.

My GPU is kind of older (AMD Radeon 6490m) and for strange reasons compute shaders runs in infinite cycle when atomic operations are called inside them on shared variables so I couldn't compute minimum and maximum depth using compute shaders. Anyway, it isn't much time-consuming operation so I do it in fragment shader.

Then for every visible point light (in view space) I compute screen space bounding quad. Now I want to use single compute shader for light culling and shading. Problem is that as mentioned above, I'm not able to use atomic operations on shared variables and hence I can't build tile light list and store light count for tile.

Problem is I cant' find any other way how to do this.Any idea how to cull & build tile light lists using non-atomics?

Here is pseudo code of my compute shader:

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

c++ - シャドウ マップに対して計算されたテクスチャ座標が正しくない

シャドウ マップをサンプリングするための正しいテクスチャ座標を取得するのに問題があります。私のコードを見ると、問題は間違った行列にあるようです。これは、シャドウを行うレンダリング パスのフラグメント シェーダーです。

このシェーダーからシャドウイングに関係のないすべてのコード (ライティングなど) を削除しました。これは、最終パスをレンダリングするために使用するコードです。

私の問題に関連する場合は、深度マップとシャドウ マップの深度フレームバッファ アタッチメントを生成する方法を次に示します。

数学またはコードのどこに問題があり、それを修正するにはどうすればよいですか?

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

opengl - シャドウマップの外側でサンプリングすると異常な動作が発生する

ライト ビューの外側にあるポイントをサンプリングするときに、シャドウ マップに問題が発生します。これは、GL_CLAMP または GL_CLAMP_TO_EDGE に設定された GL_TEXTURE_WRAP のテクスチャ パラメータでシャドウ マップが作成されるたびに得られるものです。

ここで私が判断したのは、マップの影がある側の影マップの外側のすべてのポイントが影にあると見なされ、影のない側のマップの外側のすべてのポイントも影がないと見なされるということです。これは GL_CLAMP と GL_CLAMP_TO_EDGE の予想される動作だと思いますが、Web で見つけたさまざまなシャドウ マッピングの例ではこの問題は見られませんでした。これらの問題のいくつかは、GL_CLAMP_TO_BORDER を使用して境界線の色を設定することで解消されますが、これも私が見た例のいずれにも見られた修正ではありません。これは、スポットライトをシャドウイングするときに予想される問題ですか? もしそうなら、通常の修正方法は何ですか?

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

c++ - 複数のテクスチャをレンダリングするには?

OpenGL でさまざまなオブジェクトの複数のテクスチャをレンダリングする方法を理解しようとしています。glActivate が適切なテクスチャを選択するために使用されていることを知っている限り、単純に試してみることにしましたが、期待どおりに機能しません。私のコードでは、2 つのオブジェクトが (順番に) 表示されていますが、テクスチャは同じです。これは、コードのテクスチャ初期化部分です。

textureUnit は、最初のテクスチャでは 0 で、2 番目のテクスチャでは 1 です。モデル レンダリング コード:

その部分の間、またはその部分の前に glActive を配置しても、何も変わりません。私の質問は、複数のテクスチャをレンダリングする方法ですか? glActivate を別の場所に配置する必要がありますか、それとも何か他のものを変更する必要がありますか。

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

opengl - ベース テクスチャよりも小さい薄暗い (幅/高さ/深さ) の 1 つを使用してテクスチャ ビューを作成できますが、ミップマップ レベルとレイヤーの数は同じですか?

特定のミップマップ レベルやテクスチャのレイヤーをビューとして使用できることはわかっています。

たとえば、サイズが 64x64 で 12 レイヤーと 7 つの mipmpap レベルのテクスチャ 2D 配列がある場合、次のようなビューを作成できます。

  • n ミップマップ レベル (n= 0 ~ 6) のサイズ 64x64 の texture 2d。
  • n ミップマップ レベル (n= 0 ~ 4) のサイズ 16x16 の texture 2d。
  • 等々..

  • n ミップマップ レベル (n= 0 から 6) と x レイヤー (x=0 から 11) を持つサイズ 64x64 の texture 2d 配列

  • n ミップマップ レベル (n= 0 から 5) と x レイヤー (x=0 から 11) を持つサイズ 32x32 の texture 2d 配列
  • 等々..

ただし、glTextureView コマンドは、作成する必要があるビューの個々のディメンションを尋ねません。選択したミップマップ レベルから理解されますか? 上の例で言えば、サイズが 64x32 でミップマップ レベルが 7、レイヤーが 12 のテクスチャ 2D ビューを作成できないでしょうか? つまり、すべてのミップマップ レベルとレイヤーに対して、元のテクスチャの正確に半分のサブイメージを使用することになります..?