問題タブ [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.
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つの頂点ごとに順序が逆になりますが、どうしてこれが発生するのでしょうか。パススルーシェーダー中に頂点の順序が変更された理由がまったくわかりませんでした...
actionscript-3 - 低レベルのAGALでコーディングしているときに、テクスチャごとに新しいProgram3Dを作成する必要がありますか?
例えば...
複数のテクスチャ(基本的には一意のスプライト)を必要とするアプリケーションを開発している場合、アプリケーションで使用する個々のテクスチャごとに新しい(とを使用してcontext3D.createProgram();
)を呼び出してアセンブルする必要がありますか?Program3D
VertexShaderAssembler
FragmentShaderAssembler
Program3D
通常、エンジン内でどのように機能しますか?1つのプログラムですべてを実行しますか、それともテクスチャ、モデル、マップごとに1つのプログラムを使用しますか?
そして、各フレーム()ではなく、Program3D
初期化時間()中に1回だけ作成する必要があると仮定するのは正しいですか?Event.ADDED_TO_STAGE
Event.ENTER_FRAME
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.
これが私のコードです。三角形分割からのベクトルを再確認しましたが、問題ありません。
ここで何が間違っているのでしょうか?
math - OpenGL でテクスチャの歪みを直す
グリッド スクリーン アライン メッシュにマップされたテクスチャがあるとします。次のようになります。
頂点の位置は次のとおりです。
UV:
頂点の周りを移動して画像をワープし、 を実行して出力を保存しますglReadPixels()
。
新しい歪んだ頂点の位置は次のとおりです。
そして、生成された出力は次のようになります。
次回は、先ほど保存したゆがんだ画像を入力として使用します。私がやろうとしているのは、頂点座標を変更することによって、以前に行ったワープ効果を逆にすることです。最初は、画像の歪みを解消する座標は次のようなものでなければならないと考えていました。
しかし、それは機能していません。ワープ効果は元に戻りません。私が得るものは次のようなものです:
私が間違っていることと、頂点座標またはおそらくUVをどのように変更する必要があるか考えていますか? 私は数学を間違っていると確信しています。
ありがとう!
アップデート
私の式が間違っているようです。私は行列を使うべきだった:
その後:
私が行っている変換は純粋なスケーリングであるため、変換行列は次のようになります。
ここで、S は倍率です。したがって、逆は次のようになります。
したがって、これは次のようにワーピング頂点の位置を与えます。
よりまっすぐに見えますが、それでも正しくありません:
2回目の更新
私は最初からそれを間違って始めたようです。すべてのレンダリングにはランダム要素が含まれています。私はそれを修正して、もう一度試してみます。
更新: UV ワープ
今回はUVワープで作ってみました。
これらの UV を使用してワープ:
これにより、次のものが生成されました。
そして、逆を使用してワープを解除しようとしました:
次のようになります。
これもできませんでした。見落としている 1/0 のケースが気になり始めています。
完全に無知。
webgl - webgl の頂点およびフラグメント シェーダー値
私は webgl を初めて使用します。頂点シェーダーとフラグメント シェーダーの値がどのように生成されるのか疑問に思っていました。私はいくつかのサンプルを見ていましたが、これらの値の巨大な配列を見ることができました.これらの値がどのように生成されているかを理解できませんでした.これらの値を生成するツールはありますか. 何か不足していますか?これらのシェーダー値を作成する方法について説明したチュートリアルはありませんでした。これについての助けをいただければ幸いです。
opengl - GLSL正射影行列が想定どおりに機能しない
正投影を使用しようとすると、探している結果が得られません。次の2D頂点とtexcoords(1行おきに)を含むVBOがあります。
現時点ではglDrawArrays(GL_TRIANGLE_FAN, 0, 4);
、VBOを使用して描画しています(gDEBuggerで確認しました)。代わりに、頂点シェーダーに問題があるようです。
これは問題のあるシェーダーです。
私は変換行列にあまり精通していないので、今学んでいます。正射影が必要な場合は、上記の行列を読んだことが正しいので、それを機能させることができないため、非常に混乱します。
これは問題を説明するための画像です:(テクスチャには透明な部分があることに注意してください)。
編集: これは、変更された値でどのように見えるかです:
3d - クリッピングの前または後に頂点シェーダーが呼び出されますか?
答えは前にあるべきだと思いました。しかし、私はこれと矛盾するように見えるシェーダーを持っています:
worldViewProj
は、世界の位置を画面の座標に変換する結合された行列です。この頂点シェーダーが出力をレンダーターゲットの上半分に押しつぶすと予想しましたが、実際にこれを行いますが、ビューの下半分は、通常は表示されないより多くのジオメトリで埋められます。
これは単にGPUのカリングがかなり粗雑であるためですか?
opengl-3 - 頂点シェーダーを使用してシグマ レンズを実装する方法
シェーダーを使用して OpenGLでシグマ レンズを実装しようとしていますが、いくつか問題があります。
テクスチャ座標を頂点シェーダーに渡し、フォーカス領域と遷移領域の空間変換を試みました。しかし、これは機能しません。元の画像しか取得できません。
頂点シェーダーのコードは次のとおりです。
不足しているものはありますか? Opengl と GLSL を学び始めたばかりなので、どんなアイデアでも大歓迎です。
ありがとう
opengl-es-2.0 - 複数のプログラムで1つの頂点/フラグメントシェーダーを使用する
OpenGL ES 2.0では、コンパイルされた頂点/フラグメントシェーダーを複数のリンクされたプログラムで使用できますか?
たとえば、1つのコンパイル済み頂点シェーダーと5つのコンパイル済みフラグメントシェーダーがあるとします。5つの異なるプログラム(vsh1 + fsh1、vsh1 + fsh2など)を作成できますか?
私の知る限り、これは可能であるはずですが、質問するのは決して痛いことではありません。
ありがとう
ios - OpenGL es ポイント スプライト パーティクル エフェクト頂点シェーダーに射影行列を追加する
私はopengl es 2.0プログラミングガイドからopengl esを学んでいます。爆発のように見える粒子効果があります。mat4 プロジェクション マトリックスを頂点シェーダーに追加して、サンプル コードを拡張しようとしています。シェーダーはコンパイルして動作しますが、プロジェクションを考慮して配置する効果を得るのに問題があります。私が持っているコードは次のとおりです
エラーなしで行にプロジェクションを追加できますが、残念ながら、そのコードは d=screen のオブジェクトをその寿命の終わりに配置しているため、実際には必要ありません。
ラインも変えてみました
に
しかし、私はそれを望みどおりに配置することができませんでした
私は何か間違ったことをしていますか?それとも、誰かがポイントスプライトでやるべきことではないなど、本に射影行列がなかった理由はありますか?
私が調べるべきことへの助けや指針をいただければ幸いです
ありがとう
編集:私からさらに情報が必要な場合はお知らせください