問題タブ [geometry-shader]

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 投票する
0 に答える
476 参照

opengl - GLGS: サンプラーをテクスチャに「接続」するにはどうすればよいですか?

ジオメトリ シェーダー内の 3D テクスチャから読み取ろうとしています。

これは、初期化 GL コード内でテクスチャを設定する方法です。

しかし、ジオメトリ シェーダー内のサンプラーの「テキスト」をテクスチャに関連付けるにはどうすればよいでしょうか?

これまでのところ、「テキスト」という名前のサンプラーがあり、テクスチャをサンプリングすることを OpenGL に伝えていません。

編集:私は次のことを試しました:

ここで何が問題なのですか?

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

opengl - ジオメトリシェーダーを使用したキューブレンダリングの最適化

私の最初のopengl'voxel'プロジェクトでは、ジオメトリシェーダーを使用してgl_pointsからキューブを作成しています。これは非常にうまく機能しますが、もっとうまくできると確信しています。アルファカラーでは、どの面をレンダリングするか(他の立方体に隣接する面をスキップするため)に関する情報を渡します。次に、「参照」立方体定義を使用して、表示される面の頂点を作成します。すべての点に3つの行列が掛けられます。本能は、多分顔全体がすべての点ではなくそれらで乗算される可能性があると私に言いますが、私の数学のスキルは貧弱なので、アドバイスしてください。

-------更新されたコード:------

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

glsl - 法線とカラーを使用したシンプルなパススルージオメトリシェーダー

非常に単純なパススルージオメトリシェーダーを作成しました。私の入力プリミティブはポイントであり、出力プリミティブもポイントです。また、カラーと法線を頂点シェーダーからジオメトリシェーダーを介してフラグメントシェーダーに転送したいと思います。シェーダーは完璧にコンパイルおよびリンクされていますが、最終的な色は非常に奇妙です。この転送には何か問題があると思います。誰かが問題を指摘できますか?これが私のシェーダーです:

バーテックスシェーダー:

ジオメトリシェーダー:

フラグメントシェーダー:

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

opengl - ジオメトリ シェーダーの追加プリミティブ

GLSL ジオメトリ シェーダーを使用してライン ストリップを確認し、現在の ModelView を考慮して、テクスチャ アノテーションを配置する場所を決定したいと考えていました。(GL_LINE_STRIP_ADJACENCY を使用して)呼び出しごとに 4 つの頂点しか取得できないようですが、必要なのは評価するライン ストリップ全体です。

他のプリミティブ タイプ (GL に同等のものがある場合はマルチポイントなど) を使用することもできますが、重要な点は、一部だけでなく、すべてのジオメトリを考慮したいということです。

Geometry シェーダーに追加の頂点を提供するように、come の拡張機能はありますか? または、Geometry シェーダーを使用する以外にこれを行うためのより良い方法はありますか?

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

opengl - GLSL のジオメトリ シェーダーでいくつかの頂点を取得する方法

頂点シェーダー処理後に 4 つの頂点を取得する必要があります。ターゲットを持つプリミティブ (quad) 描画: GL_TRIANGLE_STRIP。

私のコード:

コンパイラがエラーをスローします:「配列インデックスが範囲外です」

ジオメトリ シェーダーで 4 つの頂点を取得するにはどうすればよいですか?

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

computational-geometry - ベクトル上の点でベクトルに垂直

これらの点を結ぶ線上の点 p3 で、p1 と p2 (3d) からのベクトルに対する垂直を計算する必要があるモデルを使用しています。

配置は、この p1--------p3---------p2​​ のようなものになります。この p3 は、p1 または p2 と一致する場合があります。

一般に、内積を使用して比率を決定し、ベクトル p1-p2 に垂直なベクトルを計算する方法を知っています。しかし、この点 p3 を通過させるにはどうすればよいでしょうか。

ジオメトリシェーダーで計算します..!

何か案は .. ?

0 投票する
0 に答える
954 参照

opengl - glVertex として機能する Vertex Shader(glVertexAttrib3f) の属性変数の更新

頂点シェーダーに値を取得するための属性変数の使用に問題があります。いくつかの計算のために、ジオメトリ シェーダーに前のプリミティブ (ライン) からのポイントの 1 つを提供したいと考えています。頂点シェーダーに vec3 属性変数 (Ppoint) を使用してこのポイントを提供し、次に頂点シェーダーの out 変数とジオメトリ シェーダーの in 変数 (pointPass) を使用してジオメトリ シェーダーに提供しています。

問題は、線の描画中に glBegin()/glEnd() ブロックの属性変数を更新しているときに、glVertexAttrib3f の値が頂点として取得され、線もそれらの点にレンダリングされることです。これにより、余分な線が表示され、すべてのジオメトリ シェーダー機能が妨げられます。

これは、すべてのシェーダーのコードと、線を描画するための私の opengl プログラムです。

頂点シェーダー

ジオメトリ シェーダー

フラグメントシェーダー

線を描画するための OpenGL プログラム

したがって、vPoints[1] から vPoints[2] および vPoints[2] から vPoints[3] に描画したい 2 つの線の代わりに、2 つの glVertexAttrib3f ステートメントを頂点として考慮して、6 つの頂点を持つ 3 つの線を取得しています。

私はそれを正しくやっていますか、それともこれを行うためのより良い方法または別の方法がありますか.

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

opengl - GLSL シェーダーを使用して OpenGL で髪の粒子に輝度を均一に適用する方法は?

ヘア パーティクル システムを使用して Blender 2.66 でヘアスタイルを作成しました。これは次のようになります。

ここに画像の説明を入力

ご覧のとおり、明度は線の断片に適用されています。変換後、ヘアスタイル メッシュを OBJ ファイル形式にエクスポートしました。私は自分のプログラムでそれを解析し、レンダリングは次のようになります:

ここに画像の説明を入力

パーティクルは GL_LINES として描画されています (私の OBJ ファイルでは、面ごとに 2 つの頂点があります)。

別のテスト プログラムでは、単純な線の断片で光度をテストしたいと考えていました。ここに私の頂点バッファがあります:

そして結果(線はX軸に直交する原点で回転しています->より良い結果を得るためにglLineWidth(5.0f)を呼び出しました):

ここに画像の説明を入力

リアルタイム アニメーションで、光度は正しいが、線の特定の「側」にあることがわかりました。線分には無限の法線があると想定されており、法線は 2 つ (頂点ごとに 1 つ) しかないため、これは正常です。これらの 2 つの法線が方程式 Y = 0 -> n(0.0, 1.0, 0.0) の平面の法線であることを正確に示したいと思います。では、頂点ごとに複数の法線を追加することは可能でしょうか? OpengL ではそれができないと思います。しかし、おそらく別の方法が可能です。これは、線分の各部分で正しい光度を計算するために何をしたいのかを説明する図です。

ここに画像の説明を入力

上記の最初の写真でわかるように、Blender は線分でリアルタイムに光度を計算できます。さらに、この画像にあるのは OpenGL レンダーです。だから、それができると確信しています。同じ線分の座標を 2 回繰り返してみましたが、2 行目では反対の法線 n2(0.0, -1.0, 0.0) を適用しましたが、うまくいきません。「向こう側」は「暗い」です。2 つのポリゴンの場合も同じです。現在、GLSL シェーダーを使用しています。ジオメトリ シェーダーやテッセレーション シェーダーなどの特殊なシェーダーを使用することで可能だと思います。たぶんCUDA言語が必要です。確信はないけど。

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

0 投票する
0 に答える
319 参照

c++ - クリッピング プレーンとジオメトリが交差するサーフェス

vbo と組み合わせてジオメトリ シェーダーを使用して表示しているジオメトリがあります。また、必要なオブジェクトの部分を表示するために必要な 2 つのクリッピング プレーンもあります。

ここで、クリッピング プレーンによって生じるジオメトリの開口部 (ジオメトリ シェーダーを使用して中空の閉じたサーフェスをレンダリングします) を覆うサーフェスを表示したいと考えています。

ジオメトリを 2 回レンダリングして、ステンシル バッファ アプローチを試しました。しかし、それはひどく遅いです。

速くする方法を提案します。