問題タブ [vertex-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 に答える
343 参照

opengl - OpenGL変換フィードバックは逆順の結果を得ました

変換フィードバック関数を使用してみましたが、頂点の位置にのみ影響する2つの頂点シェーダーを作成しました。

1つ目は、パススルーシェーダーです。ここで、position out =positionin ;です。2つ目は、頂点位置のmodleview-projectionの結果です。ここで、position out = position in * mvp;

問題は、変換フィードバックバッファーをロックして読み取ると、データの順序がおかしいことに気づいたことです。私の入力データはvec3(3 floatの自己定義構造体)の配列であるため、データはx1、y1、z1のようになります。x2、y2、z2; x3、y3、z3; x4、y4、z4; x5、y5、z5; x6、y6、z6; ..。

しかし、変換フィードバックバッファーから読み取った結果は次 のとおりです。x3、y3、z3,1; x2、y2、z2,1; x1、y1、z1,1; x6、y6、z6,1; x5、y5、z5,1; x4、y4、z4,1; 3つの頂点ごとに順序が逆になりますが、どうしてこれが発生するのでしょうか。パススルーシェーダー中に頂点の順序が変更された理由がまったくわかりませんでした...

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

actionscript-3 - 低レベルのAGALでコーディングしているときに、テクスチャごとに新しいProgram3Dを作成する必要がありますか?

例えば...

複数のテクスチャ(基本的には一意のスプライト)を必要とするアプリケーションを開発している場合、アプリケーションで使用する個々のテクスチャごとに新しい(とを使用しcontext3D.createProgram();)を呼び出してアセンブルする必要がありますか?Program3DVertexShaderAssemblerFragmentShaderAssembler

Program3D通常、エンジン内でどのように機能しますか?1つのプログラムですべてを実行しますか、それともテクスチャモデルマップごとに1つのプログラムを使用しますか?

そして、各フレーム()ではなく、Program3D初期化時間()中に1回だけ作成する必要があると仮定するのは正しいですか?Event.ADDED_TO_STAGEEvent.ENTER_FRAME

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

xna - DrawUserPrimitives頂点シェーダーの Color0 が見つからないという不平を言う

まず第一に、私は XNA と、GPU がどのように機能し、XNA (または DirectX) API とどのように連携するかについては初めてです。

SpriteBatch を使用して描画するポリゴンがあります。ポリゴンを三角測量しVertexPositionTexture、頂点を保持する配列を作成しています。頂点を設定し (簡単にするために、テクスチャ オフセット ベクトルをゼロに設定し)、プリミティブを描画しようとしましたが、次のエラーが発生しました。

The current vertex declaration does not include all the elements required by the current vertex shader. Color0 is missing.

これが私のコードです。三角形分割からのベクトルを再確認しましたが、問題ありません。

ここで何が間違っているのでしょうか?

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

math - OpenGL でテクスチャの歪みを直す

グリッド スクリーン アライン メッシュにマップされたテクスチャがあるとします。次のようになります。

元の画像

頂点の位置は次のとおりです。

UV:

頂点の周りを移動して画像をワープし、 を実行して出力を保存しますglReadPixels()

新しい歪んだ頂点の位置は次のとおりです。

そして、生成された出力は次のようになります。

ゆがんだ画像

次回は、先ほど保存したゆがんだ画像を入力として使用します。私がやろうとしているのは、頂点座標を変更することによって、以前に行ったワープ効果を逆にすることです。最初は、画像の歪みを解消する座標は次のようなものでなければならないと考えていました。

しかし、それは機能していません。ワープ効果は元に戻りません。私が得るものは次のようなものです:

アンワープしようとした

私が間違っていることと、頂点座標またはおそらくUVをどのように変更する必要があるか考えていますか? 私は数学を間違っていると確信しています。

ありがとう!

アップデート

私の式が間違っているようです。私は行列を使うべきだった:

その後:

私が行っている変換は純粋なスケーリングであるため、変換行列は次のようになります。

ここで、S は倍率です。したがって、逆は次のようになります。

したがって、これは次のようにワーピング頂点の位置を与えます。

よりまっすぐに見えますが、それでも正しくありません:

ワープ解除の 2 回目の試み

2回目の更新

私は最初からそれを間違って始めたようです。すべてのレンダリングにはランダム要素が含まれています。私はそれを修正して、もう一度試してみます。

更新: UV ワ​​ープ

今回はUVワープで作ってみました。

これらの UV を使用してワープ:

これにより、次のものが生成されました。

ゆがんだ紫外線

そして、逆を使用してワープを解除しようとしました:

次のようになります。

失敗した UV アンワープ

これもできませんでした。見落としている 1/0 のケースが気になり始めています。

完全に無知。

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

webgl - webgl の頂点およびフラグメント シェーダー値

私は webgl を初めて使用します。頂点シェーダーとフラグメント シェーダーの値がどのように生成されるのか疑問に思っていました。私はいくつかのサンプルを見ていましたが、これらの値の巨大な配列を見ることができました.これらの値がどのように生成されているかを理解できませんでした.これらの値を生成するツールはありますか. 何か不足していますか?これらのシェーダー値を作成する方法について説明したチュートリアルはありませんでした。これについての助けをいただければ幸いです。

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

opengl - GLSL正射影行列が想定どおりに機能しない

正投影を使用しようとすると、探している結果が得られません。次の2D頂点とtexcoords(1行おきに)を含むVBOがあります。

現時点ではglDrawArrays(GL_TRIANGLE_FAN, 0, 4); 、VBOを使用して描画しています(gDEBuggerで確認しました)。代わりに、頂点シェーダーに問題があるようです。

これは問題のあるシェーダーです。

私は変換行列にあまり精通していないので、今学んでいます。正射影が必要な場合は、上記の行列を読んだことが正しいので、それを機能させることができないため、非常に混乱します。

これは問題を説明するための画像です:(テクスチャには透明な部分があることに注意してください)。

画像

編集: これは、変更された値でどのように見えるかです:

画像

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

3d - クリッピングの前または後に頂点シェーダーが呼び出されますか?

答えは前にあるべきだと思いました。しかし、私はこれと矛盾するように見えるシェーダーを持っています:

worldViewProjは、世界の位置を画面の座標に変換する結合された行列です。この頂点シェーダーが出力をレンダーターゲットの上半分に押しつぶすと予想しましたが、実際にこれを行いますが、ビューの下半分は、通常は表示されないより多くのジオメトリで埋められます。

これは単にGPUのカリングがかなり粗雑であるためですか?

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

opengl-3 - 頂点シェーダーを使用してシグマ レンズを実装する方法

シェーダーを使用して OpenGLでシグマ レンズを実装しようとしていますが、いくつか問題があります。

テクスチャ座標を頂点シェーダーに渡し、フォーカス領域と遷移領域の空間変換を試みました。しかし、これは機能しません。元の画像しか取得できません。

頂点シェーダーのコードは次のとおりです。

不足しているものはありますか? Opengl と GLSL を学び始めたばかりなので、どんなアイデアでも大歓迎です。

ありがとう

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

opengl-es-2.0 - 複数のプログラムで1つの頂点/フラグメントシェーダーを使用する

OpenGL ES 2.0では、コンパイルされた頂点/フラグメントシェーダーを複数のリンクされたプログラムで使用できますか?

たとえば、1つのコンパイル済み頂点シェーダーと5つのコンパイル済みフラグメントシェーダーがあるとします。5つの異なるプログラム(vsh1 + fsh1、vsh1 + fsh2など)を作成できますか?

私の知る限り、これは可能であるはずですが、質問するのは決して痛いことではありません。

ありがとう

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

ios - OpenGL es ポイント スプライト パーティクル エフェクト頂点シェーダーに射影行列を追加する

私はopengl es 2.0プログラミングガイドからopengl esを学んでいます。爆発のように見える粒子効果があります。mat4 プロジェクション マトリックスを頂点シェーダーに追加して、サンプル コードを拡張しようとしています。シェーダーはコンパイルして動作しますが、プロジェクションを考慮して配置する効果を得るのに問題があります。私が持っているコードは次のとおりです

エラーなしで行にプロジェクションを追加できますが、残念ながら、そのコードは d=screen のオブジェクトをその寿命の終わりに配置しているため、実際には必要ありません。

ラインも変えてみました

しかし、私はそれを望みどおりに配置することができませんでした

私は何か間違ったことをしていますか?それとも、誰かがポイントスプライトでやるべきことではないなど、本に射影行列がなかった理由はありますか?

私が調べるべきことへの助けや指針をいただければ幸いです

ありがとう

編集:私からさらに情報が必要な場合はお知らせください