OpenGL, отложенное затенение, ограничивающий объем для точечного света и прохождения трафарета, ослабление света

В настоящее время я пытаюсь реализовать отложенное затенение в моем движке. Я в основном опираюсь на один учебник, созданный в Интернете (здесь я не вставляю ссылки из-за ограничения ссылок:)), но я также использую другие источники и знаю, как работает отложенное затенение. Моя текущая реализация основана на расчете источников света на полноэкранных квадраторах для всех типов источников света. Чтобы получить больше скорости, я хотел бы использовать ограничивающую сферу для точечного света с проходом трафарета, но у меня есть некоторые проблемы с этим.

Первый и самый большой - когда я хочу, чтобы сфера рендеринга в световой проход вычисляла только те пиксели, на которые будет влиять свет. Когда я рисую сферу в проходе трафарета, а затем вычисляю свет на полноэкранном четырехугольнике, я думаю, что все работает как надо (у меня только плохой размер сферы, но только для тестов): image

Но когда я пытаюсь визуализировать его на той же сфере, что и при проходе по трафарету, у меня получаются странные результаты, которые, вероятно, вызваны координатами текстур. Когда я ими не пользуюсь, у меня все черное. Когда я использую их, у меня есть это.

В уроках я видел, что люди просто визуализируют сферу, которая содержит только позиции вершин, и все работает хорошо, поэтому я не знаю, что не так.

Я также должен сделать небольшое изменение в кодах, представленных в уроках от

glStencilOpSeparate(GL_BACK, GL_KEEP, GL_INCR, GL_KEEP);
glStencilOpSeparate(GL_FRONT, GL_KEEP, GL_DECR, GL_KEEP);

в

glStencilOpSeparate(GL_BACK, GL_KEEP, GL_INCR_WRAP, GL_KEEP);
glStencilOpSeparate(GL_FRONT, GL_KEEP, GL_DECR_WRAP, GL_KEEP);

и я также хотел бы знать, почему это изменение помогает мне решить другую проблему, когда я нахожусь вне сферы (я считаю, что вы знаете, в чем проблема, и мне не нужно ее объяснять).

Последний вопрос, который я хочу задать, - какова лучшая формула для расчета размера сферы и ослабления света, например, на основе только силы света (которая является плавающим числом)?

0 ответов

Другие вопросы по тегам