問題タブ [tessellation]
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-11 - Directx11 とテッセレーション
テッセレーションできる複数の三角形を含むメッシュを作成しようとしています。1 つの三角形は正常に機能しますが、メッシュに別の三角形を作成しようとすると、奇妙な動作が発生します。
これは私の頂点リストです。
動作を示すためにスクリーンショットを撮りました。写真 1 は、カメラが (0, 0, -10) にあるときに撮影されます。写真 2 は、カメラが (0, 0, 10) の場合です。写真 3 は、頂点 [3] を
インデックス配列には 6 つの値があり、トポロジは D3D11_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST です。
誰かが助けてくれるなら、私はそれを大いに感謝します.私は今本当に混乱しています!
shader - テッセレーション シェーダで法線を合成する
これを調査するのに少し時間を費やしましたが、良い解決策が見つかりません。
私の問題は、テッセレーション シェーダーで法線を作成する効率的な方法を見つけることです。プロシージャルに洞窟システムのメッシュを作成し、リアルタイムでテッセレーションして解像度を向上させます。ほとんどのシステムは動作していますが、法線を作成する合理的な方法を見つけるのに苦労しています。
興味のある方のために、完全なシステムを説明している私の論文へのリンクを次に示します。
https://cs.anu.edu.au/courses/CSPROJECTS/15S2/Reports/Tony_Oakden_Report.pdf
トライプラナー シェーダーを使用してテクスチャ座標を合成し、高さマップを使用してテッセレーション評価シェーダーでメッシュを変形させています。変形は正常に機能しますが、法線を確実に作成する唯一の方法はジオメトリ シェーダーを使用することです。これは機能しますが、GS は実際には遅すぎます。
TextureGather を使用して高さマップから 4 つのテクセルを取得し、それらを使用してその時点でのおおよその法線を見つけることができるという考えがありました (x と y のグラデーションを取得し、次にエッジ ベクトルを取得し、クロス積と正規化などを取得します)。法線を取得するには)しかし、良い結果を得ることができません。Web 上でこの問題へのリンクをいくつか見つけましたが、具体的な回答はありませんでした。
シェーダーでプロシージャルに生成されたメッシュの法線を合成するのは難しい問題のようです。私が見ることができるこれらのタイプの問題に対する既知の解決策があるかどうか疑問に思っています。人々が私に指摘できる提案、リンク、テクニック、ブログも大歓迎です。
c++ - OpenGL/GLSL でのテサレーションされた LineLoops の描画
球体 (惑星の境界線) にいくつかの LineLoops をレンダリングしており、長い線が球体にクリッピングするのを防ぐために、それらを短い線に分割したいと考えています。例:

これが私の現在のソースコードです: C++ ドローコール:
頂点シェーダー:
テサレーション コントロール シェーダー:
テサレーション評価シェーダー
フラグメント シェーダー:
テサレーションは、期待どおりに機能しないようです (アイソラインに関するドキュメントも悪いです)。
これは、LineLoops と Vertex/Fragment Shader のみで描画したときの外観です。
これは、テサレーションを実装した後の様子です。
線もモザイク状に見えず、以前と同じ長さです。
こんにちはジョニー
編集:自分で解決策を見つけました。以下の回答セクションを見てください。
opengl - OpenGL でのテッセレーション シェーダーの実装をスキップできますか?
昨日、OpenGL 4.5 に関する本を購入しましたが、現在取り組んでいるプロジェクトは、合格するためにテッセレーション機能を必要としません。したがって、OpenGL パイプラインの他の多くのステージの中で、テッセレーション シェーダーの実装をスキップしたいと思います。スキップしてもいいですか?
前もって感謝します!
r - R による 3 次元のテッセレーション
私は一連の 3D ポイント (空間 (x,y) と時間 t) を持っており、可能であればディリクレ テッセレーションを使用して直交を構築し、最も重要なこととして、ディリクレ 3 次元のタイルの体積を意味する直交重みを計算します。 '。これらはすべて R で作成されました。geometry パッケージは見つかりましたが、ボリュームは計算されません。これに役立つRパッケージを知っていますか?
コードは次のとおりです。
opengl - テッセレーション シェーダーの入力パッチ サイズと出力パッチ サイズを別々に指定する必要があるのはなぜですか?
Tessellation Control Shaderの Khronos wikiには、次のように記載されています。
出力パッチ サイズは、入力パッチ サイズと一致する必要はありません。
何故ですか?また、プリミティブ生成がパッチを取得する前に、コントロール シェーダーが入力パッチ サイズを変更できるのに、なぜ入力パッチ サイズを指定する必要があるのでしょうか?
アップデート
次の説明は正しいですか?
入力パッチ(TCS への) サイズは によって設定されますglPatchParameter(GL_PATCH_VERTICES, X)。これにより、属性配列の長さinが Xになるという結果が得られます。
出力パッチサイズは、TCS によって定義されますlayout (vertices = Y) out;。これは、出力属性配列の長さが Y であることを意味します。
TCS はY 回呼び出され、出力を直接 TES に渡します。したがって、inTES の属性配列の長さは Y です。
Tessellation Primitive Generation (TPG) は抽象パッチしか認識しないため、出力パッチ頂点の数は関係ありません。抽象パッチの頂点の数は、TES によって定義されますlayout (TYPE) in;。
TES は、TCS (存在する場合) または によって定義されたテッセレーション レベルにより、抽象パッチから生じるすべての新しい頂点に対して呼び出されglPatchParameter(GL_PATCH_DEFAULT_{OUTER|INNER}_LEVEL)ます。gl_TessCoord次に、TES は、抽象パッチからの属性と、TCS からのすべての頂点 (制御点に似ています)に基づいて、属性を補間できます。
例
したがって、次のような状況が考えられます。
TCS はパッチごとに 1 つの頂点を取得します。
TCS は、出力パッチ用に 5 つの頂点を作成します。何とかして。
TPG はクワッドを抽象的なパッチとして使用し、サブディバイドします。次に、すべての新しい頂点で TES が呼び出され、TCS からの 5 つの出力頂点の属性を(何らかの方法で)抽象パッチgl_TessCoordから補間して、新しい頂点の属性を計算します。

