問題タブ [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.
directx - CPU 上のジオメトリ シェーダーからの出力の読み取り
ストリーム出力を使用してバッファーに出力するジオメトリ シェーダーから出力を読み取ろうとしています。
ジオメトリ シェーダーで使用される出力バッファーは、次のように記述されます。
ジオメトリ シェーダーは、1 つのポイントに基づいて多数の三角形を作成します (ポイントごとに最大 12 個の三角形)。SDK を正しく理解していれば、CPU 上のジオメトリ シェーダーからの出力を読み取るために、ステージング リソースを作成する必要があります。
次のように別のバッファー リソースを宣言しました (今回は STAGING フラグを設定します)。
アプリケーションの最初の描画呼び出しの後、ジオメトリ シェーダーはすべての三角形の作成を完了し、描画できるようになります。ただし、この最初の描画呼び出しの後、ジオメトリ シェーダーによって出力された頂点を読み取れるようにしたいと考えています。
バッファステージングリソースを使用して、次のようにしようとしています(最初の描画呼び出しの直後):
これはコンパイルされ、実行時にエラーは発生しません。ただし、出力が得られていないようです。
ジオメトリ シェーダーは次を出力します。
VERTEX_STREAMOUT は次のように宣言されます。
ここで何か不足していますか?
macos - GLSLジオメトリシェーダーはOSXのGMAX3100で機能しますか
些細なジオメトリシェーダーを使用しようとしていますが、GMAX3100を搭載したラップトップのShaderBuilderで実行すると、フォールバックしてソフトウェアレンダリングを使用します。このドキュメントによると、GMAX3100はをサポートしていEXT_geometry_shader4
ます。
入力はPOINTS
で、出力はLINE_STRIP
です。
GPUで実行するには何が必要ですか(可能な場合)
opengl - GL_POINTSをフィードすると、ジオメトリシェーダーは何もしません
ジオメトリシェーダーを使用してポイントをラインセグメント(GL_POINTSからGL_LINE_STRIP)に変換しようとしていますが、ラインセグメントが表示されません。入力をGL_LINESに変更し、頂点を繰り返すだけで、期待どおりの動作が得られます。どうしたの?
これは、動作を示す完全なプログラムです。現状では、黒い窓しか見えません。USE_POINTSをFalseに設定すると、期待している回転するサイケデリックスの点滅する線が表示されます。
opengl - まったく同じ位置に 2 つの異なる色を持つ 2 つの頂点がある場合、破片は何色になりますか?
OpenGL レンダリング パイプラインについて質問があります。
最近、GLSL の Geometry Shader に関する理論を読んでいます。新しいジオメトリを放出し、新しい頂点に色を割り当てる方法の基本を理解していると思います。ただし、これらの新しい頂点の 1 つが Vertex シェーダーからの頂点とまったく同じ位置にある場合、フラグメントがどのような色になるかはわかりません。
次の例を考えてみましょう。私が理解している限りでは、Vertex シェーダーで 1 つの頂点を処理できます。何らかの変換を行い、その位置を glPosition に保存します。さらに、たとえば glFrontColor に格納することにより、その頂点に色を割り当てることができます。例として、赤色を指定します。すべてのチャネルが 32 ビットの場合、0xFFFFFFFF'00000000'00000000'00000000 になりますね。次に、ジオメトリ シェーダーが関係します。ジオメトリ シェーダーがいくつかの追加の頂点を放出するようにします。それらの少なくとも 1 つは、Vertex シェーダーから入ってくる元の頂点とまったく同じ位置にあります。ただし、緑などの別の色が割り当てられます。それは 0x00000000'FFFFFFFF'00000000'00000000 ですよね?遅かれ早かれ、すべての頂点が処理された後、ラスタライズが行われます。私が理解しているように、両方の頂点がラスタライズされるため、まったく同じフラグメントになります。では、行きましょう。その特定のフラグメントは何色になりますか? ある種の自動ブレンディングがあり、フラグメントは黄色になりますか? それとも赤というか緑ですか?
この質問はばかげているかもしれません。しかし、私はそれについてはっきりしていません。誰かが私のためにそれを明確にしていただければ幸いです.
ブレンディングがない場合 (私はそう思います)、どうすればブレンディング効果を作成できますか?
cocoa - OpenGL ジオメトリ シェーダー Mac OS X
Mac OS X 10.6 で動作するように、ジオメトリ シェーダーを介した単純なパスを取得しようとしています。コードは問題なくコンパイルおよびリンクされますが、何らかの理由でジオメトリが画面に描画されません。ここに私のシェーダーコードがあります:
誰かが助けてくれれば、私はそれを感謝します.
opengl - インスタンス化のためのジオメトリ シェーダーの使用
だから私はたくさんのクワッド (または立方体) を描きたいと思っていて、ジオメトリ シェーダーと呼ばれるこの素敵なものに出くわしました。
私は今それがどのように機能するかをちょっと理解しており、おそらくそれを操作して頂点バッファー内のすべての頂点の立方体を描画することができますが、それが正しい方法であるかどうかはわかりません. ジオメトリ シェーダーは頂点シェーダーとフラグメント シェーダーの間で発生するため、スクリーン スペース内の頂点で機能します。しかし、変換を行うにはワールド空間でそれらが必要です。
では、頂点シェーダーで単純に入力をジオメトリ シェーダーにパイプし、プリミティブを作成した後にジオメトリ シェーダーに modelviewproj マトリックスを乗算しても問題ないでしょうか? 統合されたシェーダー アーキテクチャでは問題ないはずですが、頂点シェーダーを冗長化するときはまだ吐き気がします。
代替手段はありますか?それとも、これは本当に「正しい」方法ですか?
graphics - ジオメトリシェーダーの実行回数?
したがって、頂点シェーダーは頂点ごとに実行され、フラグメントシェーダーはフラグメントごとに実行されます(右?)。
ジオメトリシェーダーは何回実行されますか?
opengl - ジオメトリシェーダーからフラグメントシェーダーへの変数の受け渡し
次のようなGLSLジオメトリシェーダーがあります。
ただし、フラグメントシェーダーで「テスト」にアクセスしようとすると、アプリケーションがクラッシュします。これが私のフラグメントシェーダーです:
誰かがジオメトリからフラグメントシェーダーに変数を渡すのを手伝ってもらえますか?varying
で非推奨になりました#version 150
。
hlsl - ジオメトリ シェーダーが DirectX10 HLSL でコンパイルされない
Frank Luna の著書『Introduction to 3D Game Programming with DirectX』で説明されているように、ビルボード システムを生成するためにジオメトリ シェーダーをコーディングしようとしています。次のようにシェーダーをテクニックに挿入します。
ただし、これによりエラー 1>D3DEffectCompiler : エラー : 有効な VertexShader-GeometryShader の組み合わせが Technique render の Pass P3 に見つかりませんでした。
VS と GS の両方の構造体を以下に示します。
それらは同じであるべきですか?