Есть такой файл в составе Quake II engine - anorms.h. В нём хранятся предрассчитанные нормали (скорее всего по сфере). Если говорить про формат MD2, то key-frame анимация в нём делает хранение нормалей непосредственно в вершине неэффективным. Вместо этого, в .w компоненте хранится индекс нормали из anorms-таблицы.
Для выборки нормали я залил anorms-таблицу в буфер и подключил его как shader resource. Теперь в вершинном шейдере делается выборка нормалей по индексам и их интерполяция. Для проверки корректности я написал простой геометрический шейдер, который берёт нормаль в вершине, размножает её и выводит как линию.
Точность этого метода хранение нормалей, конечно, низковата; линейная интерполяция помогает сгладить квантование.
P.S. Теперь я узнал, почему зелёный цвет (нормалей) плохо выглядит на белом фоне: человеческий глаз наиболее чувствителен в зелёному цвету и воспринимает его как более яркий, чем красный или синий.
Для выборки нормали я залил anorms-таблицу в буфер и подключил его как shader resource. Теперь в вершинном шейдере делается выборка нормалей по индексам и их интерполяция. Для проверки корректности я написал простой геометрический шейдер, который берёт нормаль в вершине, размножает её и выводит как линию.
Точность этого метода хранение нормалей, конечно, низковата; линейная интерполяция помогает сгладить квантование.
P.S. Теперь я узнал, почему зелёный цвет (нормалей) плохо выглядит на белом фоне: человеческий глаз наиболее чувствителен в зелёному цвету и воспринимает его как более яркий, чем красный или синий.
Комментариев нет:
Отправить комментарий