使用顶点着色器在MoleHill中变形

时间:2012-02-05 12:20:15

标签: flash actionscript-3 flex shader molehill

使用Molehill with Flash我希望创建一个vertiex着色器,让一个网格转换成另一个网格,我已经看到它可以使用Flare,但是我不确定是否使用了Stage3D, 任何人都可以在AGAL中使用着色器给我任何关于如何做到这一点的指示。 感谢

2 个答案:

答案 0 :(得分:2)

(也许为时已晚)

变形是“简单地”两组位置之间的线性插值。

假设您有第一个表示原点的顶点缓冲区VA0和表示目标的第二个顶点缓冲区VA1。你可以将它们存储在临时寄存器中:

"mov vt0 va0                \n" +//temp var, will hold the result
"mov vt1 va0                \n" +//start position
"mov vt2 va1                \n" +//destination

然后你需要一个T值,你可以像这样传递一个常量:

context.setProgramConstantsFromVector( Context3DProgramType.VERTEX, id, constant );

如果您传递类似

的内容
Vector.<Number>([ T, 0,0, 1 ])

将0 <= T&lt; = 1作为常量并将其置于id 0,以下代码将从起始位置到结束位置变换(线性地插入)输出位置。

//lerp
"sub vt0 vt2 vt1            \n" +
"mul vt0 vt0 vc0.x          \n" +
"add vt0 vt0 va1            \n" +

然后您需要投影VT0以获得正确的输出。

答案 1 :(得分:0)

下一版像素弯曲器应该支持创建三维顶点和片段着色器。预览版本应为available here