Я пытаюсь сделать следующую технику для теневого копирования, я прочитал ее на сайте NVIDIA, и это показалось мне хорошей техникой.Я бы предпочел, чтобы он вычислял теневые объемы на процессоре, потому что он кажется более «верным», и я мог бы использовать его для мягкого теневого копирования.:
1-й проход:
- Заполнить буфер глубины с точки зрения LIGHT0.Скопируйте этот буфер глубины для второго прохода.(*)
2-й проход:
- Визуализация вида из EYE и для каждого фрагмента:
- Получение местоположения XY в буфере глубины, хранящемся в(*).Получите соответствующее 32-битное значение.
- Рассчитайте расстояние до источника света.
- Сопоставьте это расстояние с сохраненным значением буфера глубины.
- Если оно больше, фрагмент отображается в режиме glDisable (LIGHT0), в противном случае он рисуется с включенным освещением.Для этой цели я использую два фрагментных шейдера и фрагменты, которые смешиваются / переключаются между ними в соответствии со сравнением расстояния.
Теперь я бы хотел сделать последние шагив фрагменте шейдера, по ряду причин.Одним из них является то, что я хочу принять во внимание расстояние для «эффекта» затенения. В моей игре, если расстояние до препятствующего объекта мало, можно с уверенностью сказать, что тень будет очень «строгой»Если это еще дальше, глобальное освещение начинает увеличиваться, и тень становится меньше. Это потому, что это карточная игра, это не относится к более сложным «вогнутым» формам.
Но яЯ новичок в openGL, и я не понимаю, как сделать что-либо из следующего:
- Как получить доступ к буферу глубины 1-го прохода в фрагментном шейдере, не копируя его в 2d-текстуру. Я предполагаю, чтоневозможно?
- Если копирование 32-битного буфера глубины в текстуру, имеющую 8 бит в каждом компоненте R, G, B, A, а затем повторную сборку этого значения в фрагментном шейдере является наиболееэффективная вещь, которую я могу сделать?
- Если есть кроссплатформенные расширения, которые я мог бы использовать для этого.
Спасибо, если кто-то может мне помочь или дать мне больше идей, явидпрямо сейчас в замешательстве, а отсутствие хорошего оборудования и свободного времени действительно приводит к утомительному процессу отладки / опробования всего.