问题标签 [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 - Stage3D 将 GLSL 移植到 AGAL

我正在尝试将此 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 /(宽度或高度)来采样相邻像素。我认为 mipmap 可能会有所帮助 - 但我看不到 mipmap 生成纹理的方法。

您可以在此处查看应用程序源代码在此处。AGAL 代码位于classes.WillamowskyRosslerRenderer

该代码有效,但是当我放大时我得到了这些奇怪的人工制品:

在此处输入图像描述

提前谢谢了,

西蒙

更新! 我一直在玩,人工制品和闪烁都消失了:

  • *将纹理大小设置为 2048 * 2048*
  • 配置BackBuffer(1024,1024,16)

这是一种解决方法而不是修复,所以我仍在调查

0 投票
1 回答
511 浏览

fragment-shader - 仅将红色分量写入 AGAL 像素着色器输出

我想要一个像素着色器 om AGAL,它不是简单地将从顶点着色器传递给它的颜色复制到输出,而是仅从传递的颜色复制红色分量并将绿色和蓝色分量设置为零。在伪代码中:

我不知道如何在 AGAL 中写这个。以下不这样做:

我怎样才能得到我想要的结果?

0 投票
1 回答
508 浏览

actionscript-3 - 为 Stage3D 对象添加光晕

我正在制作 Stage3D 太空游戏:www.sugarspook.com/darkmatters/demo.html,我想为一些对象添加“发光”。

有没有办法仅在 AGAL 着色器中执行此操作,或者我是否需要预渲染发光对象并“模糊”它们?

0 投票
1 回答
213 浏览

flash - 无法将矢量上传到 Stage3D 中的片段着色器

我正在尝试将矢量上传到着色器,但它不起作用,我可以找到原因。

这是代码:

其中 fc0 是我要上传的矢量:

使用此函数,我在 drawTriangles 之前调用并呈现:

我已经用Adob​​e 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:在一个着色器中重叠 2 个纹理

我设法让 alpha 工作,但我只想在一个纹理上更改 alpha。目前它只适用于两者。我设置了深度测试和混合因子:

我还没有弄清楚,究竟是什么来源和目的,任何澄清都会很好。 顶点数据包含

设置顶点寄存器

设置片段常量

顶点着色器

片段着色器

其中 fc0.x 是介于 0 和 1 之间的数字。而 v1 是 0 或 1。

0 投票
1 回答
592 浏览

shader - AGAL:在片段着色器中计算屏幕空间位置

在我更详细地定义我的问题之前,我想我应该首先解释我是如何设置所有内容的。

基本上我有一个简单的平面网格,定义如下(x,y,z,u,v):

这里没有什么好玩的。但是,我渲染它的方式就是一切都失败了。它是使用两个渲染通道渲染的;第一个是一个简单的片段着色器,它简单地将颜色复制到输出并渲染到 512x512 纹理。尽管如此,一切正常。它在第二个渲染过程中我的问题在于。

第二个也是最后一个渲染通道渲染相同的几何图形,但片段(像素)的颜色应该从第一个通道渲染的纹理中获取。这就是我的问题所在,我需要一种方法来正确计算当前像素在屏幕空间坐标中的位置,或者准确地说是 UV 坐标,以便正确地从纹理中提取它们。

我已经对如何计算这个位置进行了一些研究,但不知何故我最终创造了一个万花筒般的效果。然而,这种效果仅在 X 或 Z 轴上旋转网格时才明显,而不是 Y 轴上,如此处所示

轮换比较

用于第二遍的片段程序,即创建此效果的片段程序,如下所示

最后一点,我对这一切都很陌生。所以我可能会遗漏一些明显的东西,因此我提前道歉。

如果你想看看代码中所有不存在的荣耀,可以在这里找到 Github 存储库。

0 投票
1 回答
874 浏览

actionscript-3 - Actionscript 3 + AGAL to fade edges of plane transparent

Im showing 2D content on simple Stage3D plane made of 2 triangles. Content is drawn on BitmapData and uploaded as texture in case of redraw. I also have the AGAL program to give transparency for the whole container.

What I would like to do is to use GPU to give "fade to transparent" effect for the edges of container to blend nicely with another containers. Also to use program constants to control the faded edges.

Currently using this shader code:

vertex assembler:

fragment assembler:

Any help or hints is really appreciated