Буфер трафарета OpenGL ИЛИ операция?

Не уверен, можно ли это сделать, но попробовать стоит.Я использую буфер трафарета, чтобы уменьшить перерисовку светлых объемов в отложенном рендерере с использованием этого алгоритма (когда камера находится вне объема):Используя дешевый шейдер, отрисуйте грани с проверкой глубины, установленной на LEQUAL, пометив их в буфере трафарета.Используя дорогостоящий шейдер освещения, нарисуйте передние грани с установкой проверки глубины GEQUAL.Это приведет к затенению только пикселей в пределах светового объема.Проблема возникает при рисовании нескольких источников света.Во-первых, поскольку изменения состояния дороги, вероятно, не лучшая идея многократно переключаться между дешевым и дорогим шейдером для каждого источника света.В идеале я хотел бы воспользоваться преимуществами всех 8 бит буфера трафарета, отрендерив 8 световых объемов с помощью дешевого шейдера, а затем 8 световых объемов с помощью дорогого шейдера.Однако при наложении источников света возникают проблемы, поскольку невозможно определить, какие пиксели каким источникам света принадлежат.Решение, которое приходит на ум, - использовать 1 бит в буфере трафарета на источник света.Итак, для света n отметьте n- й бит в буфере трафарета на дешевом проходе, а затем визуализируйте пиксели с этим битом только на дорогом проходе.Я раньше не использовал буфер трафарета, но из того, что я читаю, это кажется невозможным.Чтобы это сработало, мне пришлось бы установить буфер трафарета с помощью побитового ИЛИ, а функция трафарета должна была быть побитовым И.Однако я вижу единственные операции с буфером трафарета: KEEP, ZERO, REPLACE, INCR, DECR и INVERT, а единственные функции: NEVER, ALWAYS, LESS, EQUAL, LEQUAL, GEQUAL, GREATER и NOTEQUAL.Есть ли способ каким-то образом получить это поведение ИЛИ и И с использованием буфера трафарета?А если нет, то есть ли альтернативный подход к эффективной визуализации световых объемов?
7 голосов | спросил Gumgo 23 rdEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 23 Sep 2010 13:27:17 +0400 2010, 13:27:17

0 ответов


Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132