(возможно, слишком поздно)
морфинг - это "просто" линейная интерполяция между двумя наборами позиций.
при условии, что у вас есть первый 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, чтобы получить правильный вывод.