Говоря о картировании рельефа, зеркальном освещении и подобных вещах в OpenGL Shading Language (GLSL)
У меня есть:
Теперь, как я могу вычислить бинормаль и касательную для каждой вершины? Я имею в виду, какова формула для вычисления бинормалей, что я должен использовать на основе этой информации? И о касательной?
Я построю TBN Матрица в любом случае, так что если вы знаете формулу для построения матрицы непосредственно на основе этой информации, будет хорошо!
О, да,Если нужно, у меня тоже есть координаты текстуры. И поскольку я говорю о GLSL, было бы неплохо решение для каждой вершины, я имею в виду такое, которое не требует доступа к более чем одной информации о вершине за раз.
---- Обновление ---- -
Я нашел это решение:
vec3 tangent; vec3 binormal; vec3 c1 = cross(a_normal, vec3(0.0, 0.0, 1.0)); vec3 c2 = cross(a_normal, vec3(0.0, 1.0, 0.0)); if (length(c1)>length(c2)) { tangent = c1; } else { tangent = c2; } tangent = normalize(tangent); binormal = cross(v_nglNormal, tangent); binormal = normalize(binormal);
Но я не знаю, правильно ли оно на 100%.