Некоторая путаница в моделях затенения openGL для GL_FLAT и GL_SMOOTH

Я знал, что в [openGL] есть только два режима затенения: GL_FLAT и GL_SMOOTH. Я просто хочу знать, есть ли способы добиться затенения Гуро и затенения Фонга, используя только указанные выше режимы затенения в [openGL]?


person Jamin    schedule 26.10.2019    source источник
comment
Настоятельно рекомендуем вам забыть об этом API и использовать современный программируемый OpenGL.   -  person Michael IV    schedule 26.10.2019


Ответы (1)


Функциональность, о которой вы говорите, слишком устарела. GL_FLAT и GL_SMOOTH — это режимы фиксированного функционального конвейера, в котором использовалось освещение Блинна-Фонга.

Оба режима дают одну и ту же модель освещения, но значения GL_FLAT для пикселей внутри полигона не интерполируются. Таким образом, каждый полигон с GL_FLAT освещается равномерно и выглядит плоским.

Отвечая на ваш вопрос, вы не можете получить ничего, кроме Блинна-Фонга с GL_SMOOTH и GL_FLAT.

Я знал, что есть только два режима затенения

Это неправда, так как ~ 15 лет назад.

В настоящее время функциональность фиксированного конвейера устарела. Пожалуйста, используйте шейдеры и реализуйте любое освещение, которое вы хотите, если только вы не вынуждены использовать устаревший GL из-за угроз насилия.

person Sergey    schedule 26.10.2019
comment
Я знал, что они устарели, но это некоторые требования в нашем исследовательском задании. Но кажется, что мы можем использовать GL_SMOOTH для достижения затенения по Гуро путем имитации интерполяции цветов? - person Jamin; 27.10.2019
comment
Почему мы не можем добиться затенения Фонга напрямую, используя эти две функции GL? - person Jamin; 27.10.2019
comment
Затенение @Jamin Gouraud кажется модельно-независимым методом, суть которого состоит в том, чтобы вычислять освещение только для вершин и интерполировать цвета вместо интерполяции нормалей. Само вычисление освещения может быть выполнено с помощью модели Фонга (точечное произведение направлений взгляда) или модели Блинна-Фонга (точечное произведение полинормальных и полунормальных). Так что, если в спецификации указано, что это Блинн-Фонг, то вы не можете получить Фонга, так как у них разные формулы для интенсивности света. - person Sergey; 28.10.2019
comment
См. также вики-страницу: Аппаратная поддержка освещения расширена только до Blinn- Модель освещения Фонга, рассчитанная для каждой вершины и интерполированная как окончательная интенсивность света. - person Sergey; 28.10.2019