зачем?
если у тебя нормалкарта в объектспейсе, то просто бери значение нормали из нее.
если у тебя нормалкарта в тангентспейсе, то тебе нужно перевести источник света в тангент спейс как то так:
"vec3 n = normalize(normalmatrix * normal);\n"
"vec3 t = normalize(normalmatrix * tangent);\n"
"vec3 b = cross(n, t);\n"
"vec3 vVertex = vec3(model * vec4(position,1));\n"
"vec3 tmpVec = lightpos - vVertex;\n"
"lightVec.x = dot(tmpVec, t);\n"
"lightVec.y = dot(tmpVec, b);\n"
"lightVec.z = dot(tmpVec, n);\n"
ну есть бомжарский способ через ddx/ddy, но качество будет страдать.
|
а можно поподробнее?