问题标签 [molehill]
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 - 混合不同的 Program3D 会导致某些对象无法渲染
我在使用 Stage3D 时遇到了一些意想不到的事情。我为我的对象制作了两个不同的着色器程序。其中一个程序用于使用纹理位图和 uv 数据。另一个只是使用颜色数据。这两个对象非常不同,因为最终,我将使用纯色和简单的渲染逻辑显示一些内容(如方向线、高光等),而其他内容(如实际对象、背景等)将使用 mipmap 等进行渲染向前。问题是当我使用这两个非常不同的着色器程序时,只有一个可以工作。所以要么出现我所有的纯颜色对象,要么出现我所有的纯纹理对象。显然,我希望两者都出现。
这是纹理对象的 agal 代码:
顶点着色器:
片段着色器:
这些对象的渲染代码如下所示:
这是我用于纯色对象的 agal 代码(即没有纹理):
顶点着色器:
片段着色器:
这些对象的渲染代码如下所示:
由于某种我无法弄清楚的原因,我将不同的数据分配给不同的不同寄存器索引 (va) 的事实导致其中一个渲染过程失败。如果我首先在纹理循环中渲染纹理对象,我所有的彩色对象都会消失,反之亦然。对象将在第一帧正确显示。但是一旦渲染循环第二次播放,就会发生这种意外行为。
我发现如果我通过添加以下内容来修改颜色对象的渲染代码:
有用。但这确实不是一个好的解决方案。我不想知道在我的程序的某个地方,另一个对象正在使用 n 个不同的寄存器进行渲染,所以如果另一个 program3D 实例需要小于 n,我必须将所有那些未使用的 va 设置为 null。此外,如果我为现在需要第 4 个 va 的某个对象(例如发光对象)创建一个新的着色器程序,现在我必须返回并修改所有其他着色器程序以将 va4 设置为 null,以便一切都可以渲染。这是真的吗?当然,我在这里遗漏了一些东西。设置我所有的纹理寄存器(ft)也是如此。
我可以提供更多信息...
actionscript-3 - 如何将 Robotlegs 与 Molehill 集成?
我想扩展 Robotlegs (1.5.2) SignalContext 以允许 AGAL / Molehill 3D。那里有一个 Away3d 端口以及与 Starling 兼容的机器人腿构建的开始 - 但这看起来不完整。至少我想这需要一个自定义 SignalContext 和 MediatorMap 但我想看看其他人是否正在考虑它(可能是下一个 Robotlegs 的主要版本?)
任何关于如何实现这一目标的想法表示赞赏
干杯!
adobe - 为什么在 AGAL 中我们在 createVertexBuffer 方法中有一个最大值为 64 的 data32PerVertex?
我不明白这个 64 值......据我所知,我们有 8 个最大寄存器,每个寄存器的大小为 128 位(4 data32),
所以我们不能访问超过 32 个数据 32?我错了吗 ?对于我们可以存储在顶点中的其他 32 个数据 32 是什么?
谢谢
actionscript-3 - 质量差的纹理stage3D
我在 stage3D 中绘制了一个简单的正方形,但是图片中的数字和边缘的质量并没有达到应有的水平:
这是带有(小)源代码的示例,我将最多的源代码放在一个文件中。
http://users.telenet.be/fusion/SquareQuality/
http://users.telenet.be/fusion/SquareQuality/srcview/
我正在使用 mipmapping,在我的着色器中我使用“<2d, miplinear, repeat>”,纹理为 256x256 jpg(比图像上的大),还尝试了 png,尝试了“mipnearest”并尝试不使用 mipmapping。抗锯齿 4,但 10 或更多根本没有帮助......
有任何想法吗?问候,托马斯
molehill - adobe molehill android setting
Using Flash Builder 4.6 & SDK 4.6 Away3d and Starling Interoperation device - samsung galuxy s3
debugging on device, its run well. install exported apk on the device, its just white background.
[app name]_app.xml file setting is
shader - AGAL:在片段着色器中计算屏幕空间位置
在我更详细地定义我的问题之前,我想我应该首先解释我是如何设置所有内容的。
基本上我有一个简单的平面网格,定义如下(x,y,z,u,v):
这里没有什么好玩的。但是,我渲染它的方式就是一切都失败了。它是使用两个渲染通道渲染的;第一个是一个简单的片段着色器,它简单地将颜色复制到输出并渲染到 512x512 纹理。尽管如此,一切正常。它在第二个渲染过程中我的问题在于。
第二个也是最后一个渲染通道渲染相同的几何图形,但片段(像素)的颜色应该从第一个通道渲染的纹理中获取。这就是我的问题所在,我需要一种方法来正确计算当前像素在屏幕空间坐标中的位置,或者准确地说是 UV 坐标,以便正确地从纹理中提取它们。
我已经对如何计算这个位置进行了一些研究,但不知何故我最终创造了一个万花筒般的效果。然而,这种效果仅在 X 或 Z 轴上旋转网格时才明显,而不是 Y 轴上,如此处所示
用于第二遍的片段程序,即创建此效果的片段程序,如下所示
最后一点,我对这一切都很陌生。所以我可能会遗漏一些明显的东西,因此我提前道歉。
如果你想看看代码中所有不存在的荣耀,可以在这里找到 Github 存储库。
actionscript-3 - AGAL:m44 而不是 Matrix3D.append()
如何移动这样的计算:
在着色器中?
我目前的做法:
在 vt4 中产生错误的结果。我究竟做错了什么?
actionscript-3 - 如何使用 Matrix3D.appendTranslation()?
在舞台 3d 中,我设置了一个基本三角形,我可以使用附加旋转和附加比例,一切正常,但是在 z 轴上使用附加平移,三角形将消失,平移为 1 或更高。对于其他形状,它只会消失 3 或更高。而且看起来三角形在 0 到 0.9 平移之间并没有变得更小/更远。x 和 y 轴上的平移确实有效。
这是我的着色器代码:
我的渲染循环:
我的完整代码: