Показать сообщение отдельно
Старый 25.08.2012, 17:20   #37
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Нубошоу по шейдерам.

зачем?
если у тебя нормалкарта в объектспейсе, то просто бери значение нормали из нее.

если у тебя нормалкарта в тангентспейсе, то тебе нужно перевести источник света в тангент спейс как то так:
"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, но качество будет страдать.
а можно поподробнее?
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
dsd (25.08.2012)