OpenGL: двусторонняя ROP? - PullRequest
       91

OpenGL: двусторонняя ROP?

0 голосов
/ 28 октября 2019

Я пытаюсь сделать некоторое отображение теней в моей сцене. Это уже тяжело на счет треугольника, вызовов отрисовки и скорости заполнения карты теней, поэтому я хочу сделать это за один проход и отбраковать лицевые грани. Я также отбраковываю лицевые грани, чтобы избежать теневого шума / прыщей с помощью ПК-СС. Моя проблема в том, что у меня иногда бывают легкие утечки по краям, вызванные тем, что некоторые модели являются «неполными», то есть не полностью закрыты. (См. Прилагаемое изображение).

Я думаю, что я мог бы обойти это с помощью второго прохода, где я мог бы, например, усреднить образцы тени до половины суммы глубины передней и задней поверхности. Но я надеюсь на хитрость, которая в идеале:

  • пропускает глубину записи для лицевых граней
  • если лицо дальше текущего образца тени, чем ничего не делать (как обычно)
  • если лицо находится спереди и ближе к текущему образцу тени, то «пометить» или «установить» этот пиксель в шаблонном или цветном буфере
  • , если лицо вернулось и ближе, чем текущий образец тени,«очистить» этот пиксель в трафаретном или цветном буфере

Я, конечно, открыт для других идей, но я бы предпочел обойтись без цветового буфера, поскольку известно, что рендеринг только по Z намного быстрее.

enter image description here

...