Морфинг в MoleHill с использованием вершинного шейдера - PullRequest
0 голосов
/ 05 февраля 2012

Используя Molehill с Flash, я хочу создать шейдер vertiex, чтобы преобразовать одну сетку в другую, я видел, что это возможно с Flare, однако я не уверен, использовал ли это Stage3D, Может ли кто-нибудь дать мне какие-либо указания на использование шейдеров в AGAL относительно того, как это можно сделать. Спасибо

Ответы [ 2 ]

2 голосов
/ 23 марта 2012

(возможно, слишком поздно)

морфинг - это "просто" линейная интерполяция между двумя наборами позиций.

при условии, что у вас есть первый vertexBuffer 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 <= 1 и присвоением ей значения id 0, следующий код преобразует (линейно интерполирует) выходные позиции из начальной позиции в конечную позицию. </p>

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

тогда вам нужно спроецировать VT0, чтобы получить правильный вывод.

0 голосов
/ 05 февраля 2012

Следующая версия пиксельного бендера должна поддерживать создание как трехмерных вершинных, так и фрагментных шейдеров.Предварительный выпуск должен быть доступен здесь

...