DirectX alpha blending (отложенный рендеринг) - PullRequest
2 голосов
/ 10 октября 2010

У меня есть серьезная проблема, которая беспокоила меня некоторое время.

Моя проблема в том, что в моей игре используется механизм отложенного рендеринга, что очень затрудняет альфа-смешивание.

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

Затем для каждого многоугольника, имеющего текстуру с альфа-компонентом, отключите буфер z и отредактируйте его, включая нормали, глубину и цвет, а где бы ни было значение «0», не выводите ничего в глубину, нормаль и цвет буфер. Выполните расчеты освещения / другие отложенные эффекты для этих двух отдельных текстур, затем объедините цветовые буферы, используя карту глубины, чтобы проверить, какой пиксель виден.

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

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

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

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

1 Ответ

1 голос
/ 10 октября 2010

Обычный подход к рисованию прозрачной геометрии в отложенном рендере - это рисование их в отдельном проходе, но с использованием обычного прямого рендеринга, а не отложенного рендеринга.

...