問題タブ [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 投票する
1 に答える
2244 参照

opengl - GLSL ジオメトリ シェーダーと射影行列

これまでいろいろいじってみたところ、GLSL ジオメトリ シェーダーは、入力頂点が射影/モデルビュー マトリックスによって変換された後に機能することがわかりました。つまり、ジオメトリ シェーダーはクリップ座標で処理を行います。

ジオメトリ シェーダーを使用して GL_POINTS を、たとえば で作られた立方体に変換するとどうなるGL_TRIANGLESでしょうか? クリップ座標で物事を計算するとき、結果の形状は常にあなたの方を向いているように見えます/回転/スケーリングなどを無視します.

また、GL_TRIANGLES可能なジオメトリ出力タイプの 1 つとしてサポートされていないようです。しかし、とにかく試してみましたが、うまくいくようです。これはビデオカードに依存していると思いますか?GL_TRIANGLESサポートされていない場合、立方体を作成することはできますか? たぶん、スペースの間に幅ゼロの三角形のストリップを作りますか??

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

glsl - GLSLジオメトリシェーダーと一般的な頂点属性

そのため、私はしばらくの間、頂点属性配列をジオメトリシェーダーに渡すことを試みてきました。これはfloatの配列です(頂点ごとの属性は単なるfloat値です)

これをジオメトリシェーダーに入れると、次のようになります。

シェーダーコンパイラは次のように文句を言います。

どうすれば正確に渡すことができますか?

また、頂点属性を配置するためのコードは次のとおりです。

私は何か間違ったことをしていますか?

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

opengl - ジオメトリ シェーダーで gl_ClipDistance を使用する

ジオメトリ シェーダー内で使用しようとしていますが、機能させるgl_ClipDistanceことができません。私のシェーダーはトランスフォーム フィードバックの記録内で実行され、4 つのクリッピング プレーンに対して三角形をカットしたいと考えています。

GLSL lang 仕様を読み、完全な例を見つけようとしました (何も見つかりませんでした)。これが私のシェーダーの外観です(短縮):

変換フィードバックを開始する前に、次のように設定しました。

MyplaneDistance()は、頂点がどちら側にあるかに応じて、正と負の距離を返します。一部の に負の値を書き込んでみましたgl_ClipDistance[c]が、何もクリップしません。

私は何を間違っていますか?

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

opengl - OpenGLが、部分的に表示ボリュームの外側にあるジオメトリシェーダーからプリミティブをクリップしないのはなぜですか?

http://www.opengl.org/wiki/Rendering_Pipeline_Overviewジオメトリシェーダーが実行された後、フラグメントがラスタライズされる前に、「表示ボリュームの内側と外側の境界にあるプリミティブがいくつかのプリミティブに分割される」と述べています。OpenGLについて私が今まで読んだ他のすべても、クリッピングプロセスを同じように説明しています。ただし、フラグメントシェーダーのgl_FragDepthを、それを生成した三角形上のポイントの実際の深度よりもカメラに近い値に設定することにより(固定をコピーした場合にフラグメントが失敗した場合に、フラグメントが深度テストに合格するように)パイプライン機能)、遠方の表示平面と部分的に重なっている場合でも、元の三角形全体に対してフラグメントが生成されていることがわかりました。一方、すべての頂点が平面の背後にある場合、

ここで何が起こっているのですか?私のジオメトリシェーダーはいくつかのデフォルト機能を置き換えますか?レンダリングパイプラインの次のステップで部分的なクリッピングを行う方法を知るために、設定する必要のあるフラグ/ヒント、または書き込む必要のある追加の組み込み変数はありますか?

NVIDIAGeForce9400MでGL_EXT_geometry_shader4拡張機能を備えたGLSLバージョン1.2を使用しています。

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

glsl - GLSL ジオメトリ シェーダー: メッシュ全体を反復する

私の目標は、頂点をその順序に従って色付けすることでした

編集: 長期的な目標: 重力の動作をシミュレートするための前後の頂点へのアクセス

私は次のコードを使用しました

しかし、すべての頂点が黒く描かれています。常に 0 と評価されているようです。何かが足りないか、間違っていますか?

編集: メタ問題を解決しました: すべてのモデル ジオメトリを単一のジオメトリ シェーダー呼び出しにフィードする方法で、メインループがすべての三角形ではなく、すべての頂点を反復するようにします。

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

directx - HLSL ジオメトリ シェーダーを使用した 20 面体の複数の細分割

現在、次のジオメトリ シェーダーを使用して 20 面体を 1 回細分割しています。

ただし、サブディビジョン レベルを指定したい。出力された頂点でシェーダーを再度呼び出す可能性はありますか、それとも他のアプローチに従う必要がありますか?

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

opengl - GLSL 1.5SimpleGeometryシェーダー

変更を試みる前に頂点を通過する単純なジオメトリシェーダーを作成しようとしています。

私の頂点シェーダーは

私のジオメトリシェーダーは

そして私のフラグメントシェーダーは

リンクされたジオメトリシェーダーがないと、すべてが正常に機能します。ただし、ジオメトリシェーダーでリンクすると、機能しなくなります。私が行方不明になっているのは何ですか?ジオメトリシェーダーにはvertexColor頂点シェーダーからの入力が必要ですか?必要な場合、それはどのように行われますか?

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

opengl - パススルージオメトリシェーダーが機能しない

ポイントを含むVBOがあり、頂点シェーダーとフラグメントシェーダーでうまくレンダリングできますが、パススルージオメトリシェーダーを追加しても何も表示されません。グローにMRTを使用していますが、この例では触れていません。

他の投稿で見たところ、あるステージから別のステージへの値の受け渡しに問題があるように思われるので、すべてのバリエーションを削除しましたが、それでも機能しません。

リンク後にプログラムパラメータを設定しました-うまくいけば大丈夫です。

ジオメトリシェーダーを無効にすると白いパーティクルが生成されるのに、有効にすると何も表示されない理由はありますか?

VERTEXシェーダー:

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

ジオメトリシェーダー:

パラメータの設定(プログラムのリンク後、プログラムはresources.particleprogramです)

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

c++ - パーティクルシステムをジオメトリシェーダーで完全に更新する必要があります

パーティクルシステムをジオメトリシェーダーで完全に更新する必要がありますか、またはジオメトリシェーダーに位置とライフなどの更新されたデータを渡す必要があります。現時点では、ジオメトリ内のすべてを更新していますが、C ++で一部のデータが必要な場合に備えて、これが最善のアイデアかどうかはわかりません。