В настоящее время я создаю геометрию, а не импортирую ее как модель. Это делает необходимым вычисление всех нормалей в приложении.
Я успешно реализовал затенение Гуро (для каждой вершины) и теперь хочу реализовать затенение Фонга (для каждого фрагмента / пикселя).
Я просмотрел соответствующие учебные пособия в Интернете, и есть два лагеря: один предлагает простую перестановку кода шейдера по Гуро на Фонга, которая, хотя и предлагает улучшенное освещение, на самом деле не попиксельная. Второй делает все правильно, используя карты нормалей, встроенные в текстуры, но они создаются в наборе инструментов моделирования, таком как RenderMonkey.
Мои вопросы:
Как мне программно генерировать нормали для моей сгенерированной геометрии, считая ее набором вершин? Другими словами, нужно ли будет вручную вычислять интерполированные нормали для заданного набора дискретных многоугольных точек?
Должен ли я хранить сгенерированные нормали в текстуре, как показано в Интернете, и если да, то как мне сделать это в коде, а не с помощью программного обеспечения для моделирования?