問題タブ [agal]

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 投票する
1 に答える
769 参照

actionscript-3 - GLSL を AGAL に移植する Stage3D

この GLSL シェーダーを Stage3D と AGAL に移植しようとしていますが、うまくいきません。

頂点シェーダー (GLSL)

フラグメントシェーダー (GLSL)

結果として:

頂点シェーダー (AGAL)

フラグメントシェーダー (AGAL)

これは、私が実行した命令のトレースです。

しかし、まだ何も見えません。

更新:どうやら問題は、三角形が切り取られていることです。乗算された配列の値は 1.0 より大きいため、切り取られます。したがって、マトリックスを正規化する方法を見つけるか、クリッピングを拡張する必要があります

なにか提案を?

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

flash - エラー #3661: AGAL 検証に失敗しました: 一時レジスタ インデックスが範囲外です

このエラーがあります

このGLSLを変換しようとすると:

このコードに:

どうすればこれを解決できますか? なにか提案を?ありがとう!!!

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

stage3d - AGAL ちらつきとサンプリング アーティファクト

私はAGALを使用してセルオートマトンを作成しており、いくつかの問題があります。私のコードは基本的に次のことを行います:

  • テクスチャの作成に使用されるビットマップで開始します。
  • setTextureAt() を呼び出して、テクスチャを context3D に渡します。
  • そのテクスチャを単純な平面に適用します
  • いくつかのセルオートマトンの魔法を行います
  • バック バッファーにレンダリングします。
  • また、同じテクスチャにレンダリングします
  • 繰り返す

1 / (幅または高さ) を追加して、隣接するピクセルをサンプリングします。私は mpimapping が役立つかもしれないと思っていましたが、生成されたテクスチャを mipmap する方法がわかりません。

ここでアプリケーションを確認でき、ソース コードはここにあります。AGAL コードはクラスに存在します。WillamowskyRosslerRenderer

コードは機能しますが、拡大すると次のような奇妙なアーティファクトが発生します。

ここに画像の説明を入力

よろしくお願いします。

サイモン

アップデート! 私は遊んでいて、アーティファクトとちらつきは両方とも消えました:

  • *テクスチャサイズを 2048 * 2048 に設定*
  • configureBackBuffer(1024,1024,16)

修正ではなく回避策なので、まだ調査中です

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

fragment-shader - 赤の色成分のみを AGAL ピクセル シェーダー出力に書き込む

渡された色を頂点シェーダーから出力に単純にコピーするのではなく、渡された色から赤の成分のみをコピーし、緑と青の成分をゼロに設定する AGAL のピクセル シェーダーが必要です。擬似コード:

これを AGAL で記述する方法がわかりません。以下はそれをしません:

どうすれば欲しい結果を得ることができますか?

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

actionscript-3 - Stage3Dオブジェクトにグローを追加する

Stage3Dスペースゲームを作成しています:www.sugarspook.com/darkmatters/demo.html、いくつかのオブジェクトに「グロー」を追加したいと思います。

これをAGALシェーダーだけで行う方法はありますか、それとも、光るオブジェクトを事前にレンダリングして「ぼかし」する必要がありますか?

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

flash - Stage3D のフラグメント シェーダーにベクターをアップロードできない

ベクトルをシェーダーにアップロードしようとしていますが、うまくいきません。理由がわかりました。

コードは次のとおりです。

fc0 は、アップロードしようとしているベクターです。

この関数を使用して、drawTriangles の前に呼び出し、次のように提示します。

Adobe Scoutでシーンをデバッグしましたが、明らかに fc0 には価値がありません。

最後の ft0 を ft1 に置き換えると、テクスチャのみをレンダリングしているので機能します。

助言がありますか?

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

agal - AGAL のスケルトン アニメーションに関するシェーダー

私のプロジェクトでは、マトリックスの一部をスケルトン アニメーション用の定数レジスタにプッシュし、定数レジスタによって渡されるシェーダーのマトリックス インデックスを使用してそれらにアクセスします。

glsles を使用したサンプル シェーダー:

値 "mPalette" を割り当てて定数レジスタ: vc0 - vc59 を使用する場合、値 "mBlendindices" を割り当てて定数レジスタ: vc60 を使用し、_glesVertex を割り当てて頂点属性レジスタ: va0 を使用します。

このシェーダを AGAL に変換するには?

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

actionscript-3 - AGAL/Stage3D: 1 つのシェーダー内で 2 つのテクスチャを重ねる

なんとかアルファを機能させましたが、1 つのテクスチャだけでアルファを変更したいと考えています。現在、両方でのみ動作します。深度テストとブレンド係数を設定します。

ソースとデスティネーションが正確に何であるかはまだわかりません。明確化があればいいでしょう。 頂点データが含まれています

頂点レジスタの設定

フラグメント定数の設定

頂点シェーダー

フラグメントシェーダー

fc0.x は 0 から 1 の間の数値です。 v1 は 0 または 1 です。

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

shader - AGAL: フラグメント シェーダーでのスクリーン スペース位置の計算

問題をより詳細に定義する前に、すべてをどのように設定したかを説明することから始めるべきだと思います。

基本的に、(x、y、z、u、v) として定義された単純な平面メッシュがあります。

ここでは派手なことは何も起こっていません。しかし、私がこれをレンダリングする方法は、すべてが崩壊する場所です。2 つのレンダー パスを使用してレンダリングされます。1 つ目は単純なフラグメント シェーダーで、単純に色を出力にコピーして 512x512 テクスチャにレンダリングします。それでも、すべてがうまく機能しています。私の問題は2番目のレンダーパスにあります。

2 番目の最後のレンダリング パスは同じジオメトリをレンダリングしますが、フラグメント (ピクセル) の色は最初のパスでレンダリングされたテクスチャから取得する必要があります。そして、それが私の問題の出番です。テクスチャから正しく抽出するために、画面空間座標、または正確には UV 座標で現在のピクセルの位置を正しく計算する方法が必要です。

この位置を計算する方法についていくつかの調査を行いましたが、どういうわけか、万華鏡のような効果を作成することになりました。ただし、この効果は、ここに示すように、X 軸または Z 軸でメッシュを回転させた場合にのみ明らかであり、Y 軸では明らかになりません。

回転比較

このエフェクトを作成する 2 番目のパスに使用されるフラグメント プログラムは、次のようになります。

最後に、私はこれらすべてにまったく慣れていません。そのため、明らかな何かを見逃している可能性があるため、事前にお詫び申し上げます。

そして、存在しない栄光のコードをすべて見たい場合は、Github リポジトリをここで見つけることができます。

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

actionscript-3 - Actionscript 3 + AGAL を使用して、透明な平面のエッジをフェード

2 つの三角形で構成される単純な Stage3D 平面に 2D コンテンツを表示しています。コンテンツは BitmapData に描画され、再描画の場合はテクスチャとしてアップロードされます。また、コンテナー全体に透明性を与える AGAL プログラムもあります。

私がやりたいのは、GPU を使用して、コンテナーのエッジが別のコンテナーとうまく調和するように「透明にフェード」効果を与えることです。また、プログラム定数を使用してフェード エッジを制御します。

現在、このシェーダー コードを使用しています。

頂点アセンブラ:

フラグメントアセンブラー:

どんな助けやヒントも本当に感謝しています