В приложении для Android я хочу вычислить нормаль к поверхности, зависящую от другой вершины этой поверхности. Я не хочу делать это в "мастер-программе", потому что это занимает много времени. На самом деле для каждой вершины я передаю 4 массива с плавающей запятой для каждого векстекса:
attribute vec3 a_bottom;
attribute vec3 a_left;
attribute vec3 a_right;
attribute vec3 a_top;
vec3 calculNormal( ) {
return normalize( cross( (a_left - a_right) , ( a_bottom - a_top ) ) );
}
это очень-очень-очень грязный код, который я знаю, поэтому вместо передачи 4-х массивов я хочу сделать это:
vec3 calculNormal( ) {
vec3 a_left = CURRENT_FLOATBUFFER[ CURRENT_FLOAT_BUFFER_POSITION - 1 ];
vec3 a_bottom = CURRENT_FLOATBUFFER[ CURRENT_FLOAT_BUFFER_POSITION - X ];
...
return normalize( cross( (a_left - a_right) , ( a_bottom - a_top ) ) );
}
Возможно ли это в вершинном шейдере программа для доступа к текущему буферу с плавающей запятой? Есть ли специальные ключевые слова, такие как currentFloat? Или есть еще одна возможность, которую я пропустил?