0

我更新了 minko as3 代码以在标准配置文件而不是基线上运行,并且我有一个动画网格,我知道这是一个事实,有 185 个顶点常量,标准上允许的最大数量为 250,但我不断收到 [trace] 错误:错误#3659:AGAL 验证失败:源操作数 1 在顶点程序的标记 1 处的常量寄存器索引超出范围。

我对 agal 的工作原理知之甚少,但我确实了解 minko。谁能指出我正确的方向来改变什么?我已经调整了 minko Profile.as 类和使用它的位置,这就是我如何能够将注册表中顶点常量的确切数量归零(185)

4

1 回答 1

2

硬件动画需要更多的计算和更多的寄存器。

看起来标准的寄存器更少。但是 Minko AS3 着色器不知道这一点。考虑到的限制在此处强制执行:

https://github.com/aerys/minko-as3/blob/master/src/aerys/minko/render/shader/compiler/register/RegisterLimit.as

它们可能符合基线配置文件。我不确定更改它们是否真的会对您有所帮助,因为问题可能只是 AGAL 标准配置文件根本没有足够的常量寄存器......

如果您正在使用SkinningMethod.HARDWARE_MATRIX,则应考虑SkinningMethod.HARDWARE_DUAL_QUATERNION改用。

您还可以将skinningMaxInfluences网格的属性设置为较低的值。它绝对应该尝试使用更节省内存的着色器代码(参见https://github.com/aerys/minko-as3/blob/master/src/aerys/minko/render/shader/part/animation/SkinningShaderPart.as实施细节)。

于 2015-03-14T18:48:28.107 回答