問題タブ [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.
flash - AGAL Vertex Shaderでは、出力シェーダーで使用される「w」コンポーネントは何ですか?
頂点の位置の「xyz」コンポーネントは理解していますが、「w」は何をしますか?常に同じ定数値のままにしておくことはできますか?
例:
ios - OpenGL ES 2 (iOS) 2 つの頂点セット間のモーフ/アニメーション
ライン ストリップとして使用される頂点のセットが 2 つあります。
- 頂点1
- 頂点2
これらの頂点は動的であるため、以前は不明な値を持っていることを知っておくことが重要です。
これら 2 つの間にアニメーションのトランジション (モーフ) を作成したいと考えています。私はこれを行うための2つの異なる方法を思いつきました:
オプション1:
頂点シェーダーで0 - 1の Time ユニフォームを設定します。ここで、次のようなことができます。
ご覧のとおり、これには 1 つの問題があります。 「DestinationVertexPosition」を取得するにはどうすればよいですか?
オプション 2:
頂点シェーダーの外側で補間計算を行います。各頂点をループし、補間された値の 3 番目の頂点セットを作成し、それを使用してレンダリングします。
アイデアを明確にするために、これら 2 つのコード スニペットを非常に単純化しました。
さて、2 つのオプションから、シェーダー レベルで何かが発生することを考えると、最初のオプションがパフォーマンスの点で明らかに優れているように感じます。また、 「時間」が更新されるたびに新しい頂点のセットを作成する必要はありません。.
問題の概要を説明したので、次の 3 つのことのいずれかを評価します。
- OpenGL ES 2 (iOS) で望ましい結果を達成するためのより良い方法についての議論。
- 「DestinationVertexPosition」を提供するか、何らかの方法でアイデアを変更して、同じ結果をより適切に達成することにより、オプション 1を適切に実装する方法についての説明。
- オプション 2の実装方法に関するディスカッション。
flash - VertexShader が 8 つの入力に制限されているというアドビの正確な意味は何ですか?
頂点のデータ セットごとに合計8 個の float値しか渡せないということですか?
これは、次のいずれかしか持てないということですか?
- FLOAT_4の2 つの入力。
- FLOAT_2の4 つの入力。
- FLOAT_1の8 つの入力。
- 合計で8 つの float値になる混合物はありますか?
これは事実ですか?もしそうなら、ドキュメントで8つの入力を使用できると言うのは本当に誤解を招くからです。
データを正しくフォーマットしていないために問題が発生している可能性がありますが、次のようにverticesごとに9 個の floatを使用しようとしています。
- va0 は FLOAT_4 になり、オフセットは0に設定されます。
- va1はFLOAT_4になり、オフセットは4に設定されます。
- va2はFLOAT_1になり、オフセットは8に設定されます。
しかし、この実験では画面には何も表示されません。VertexShader の入力制限を超えていますか?
shader - Three.jsの本当にシンプルなカスタムシェーダー-それを機能させる方法は?
Three.js用の最も単純なカスタムシェーダーを作成しようとしていますが、それを機能させる方法がわかりません。シェーダーを使用しているオブジェクトがまったく表示されません。
私のページのhtmlには次のものがあります。
次に、JavaScriptで:
オブジェクトがあるべき場所には何もありません。素材を。に置き換えれば問題なく動作しMeshLambertMaterial
ます。それを機能させるために必要なものが欠けていますか?
flash - Context3Dで定数(頂点またはフラグメント)をリセット/無効化できますか?
Program3D
さまざまなインスタンスに対して複数の描画呼び出しを行う場合、次の次の割り当てで使用しなくなった定数をリセットまたは無効にする方法はありますか?Program3D
私がこのようなことをする必要さえありますか?
shader - 頂点シェーダーでポリゴン内のすべての頂点にアクセスすることは可能ですか?
Unityでワイヤーフレーム頂点/フラグメントシェーダーを作成しようとしています。この論文によれば可能だと思われます。一般的な考え方は、頂点シェーダーで計算された距離ベクトルをフラグメントシェーダーの各フラグメントに渡すことです。これを使用して、ポリゴン内の位置に基づいてワイヤーフレームラインを描画する明るさを決定できます。
ただし、私が読んだ他のすべてのことから、頂点シェーダーでは1つの頂点にしかアクセスできないようです。ecah頂点のポリゴン内のすべての隣接する頂点にアクセスする必要があります。このペーパーは、ジオメトリシェーダーが不要であることを示唆しているようです。これは、Unityがまだサポートしていないため良いことです。
私は何が欠けていますか?頂点シェーダーで隣接する頂点にアクセスすることはできませんか?ジオメトリシェーダーなしでは不可能にしようとしていることはありますか?
flash - Context3DVertexBufferFormat.BYTES_4を使用する場合、1つのフィールドの値の範囲はどのくらいですか?
バイト配列メソッドを使用して頂点バッファーにデータを入力すると、次のようになります。
次に、vertex-buffer属性を次の形式で設定します。
頂点属性のフィールド(この場合、 va0.x、va0.y、va0.z、va0.w )で可能な値の範囲(0〜255?0.0〜1.0?など)はどれくらいですか?ByteArray
オブジェクトに書き込まれるデータ型( writeFloatとwriteUnsignedInt)によって異なりますか?
flash - AGALの頂点定数以外の頂点レジスタに行列を存在させることはできますか?
Matrix3DオブジェクトがAS3の頂点定数レジスタとしてContext3Dオブジェクトに渡される例を主に見てきました。しかし、他のタイプのレジスタ(一時または属性)で行列を見たことはありません。
Matrix頂点定数を一時レジスタにコピーしてから、他の指定された値(頂点属性または他の定数)を使用して、そのMatrix一時レジスタの個々のフィールド(例:回転用)を操作する方法はありますか?
簡単なmov dest, source
操作でうまくいくでしょうか?
c++ - 頂点ごとの GLSL 固定サイズ配列
デスクトップGLSLで固定サイズのfloat配列を属性として頂点シェーダーに渡すことは可能ですか? はいの場合、どのように?
キャラクター アニメーションに頂点ごとの重みを設定したいので、頂点シェーダーに次のようなものが必要です。
C++ & OpenGL プログラムから属性配列を埋めるにはどうすればよいですか? 別の質問で、配列属性の属性の場所を取得し、その場所にインデックスを追加できることを見てきました。誰かが私のかなり大きな配列の例を挙げてもらえますか?
ありがとう。
android - opengl es 2の頂点シェーダープログラムで他の頂点にアクセスするには?
私は Android アプリケーションで、このサーフェスの他の頂点に依存するサーフェスの法線を計算したいと考えています。時間がかかるので、「マスター」プログラムではやりたくありません。実際には、頂点ごとに、各ベクテックスに 4 つの float 配列を渡します。
それは私が知っている非常に非常に汚いコードなので、4つの配列を渡す代わりに、それをやりたいです:
では、頂点シェーダー プログラムで現在のフロート バッファーにアクセスすることは可能ですか? currentFloat のような特別なキーワードはありますか? または、私が見逃している別の可能性はありますか?