В отложенном рендеринге было бы практично заменить буферы текстур материалом и буфером UV?

Я пытался вложить все, что мог, в вопрос, но вот в чем суть,

Было бы целесообразно создать отложенный рендерер, в котором вместо буфера Diffuse / Specular Buffer был бы буфер Material / UV. свечение, декаль и т. д. и т. д.) и сэмплируйте их, используя UV в буфере UV.

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


person user1175522    schedule 06.04.2013    source источник


Ответы (1)


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

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

Ваш метод не улучшит модели освещения, поскольку для него по-прежнему потребуется буфер идентификатора материала и сложный шейдер для освещения.

Ваш метод не решит проблему прозрачности или сглаживания.

В целом, материал и uv-буфер можно легко заменить просто диффузным буфером, содержащим цвет материала в uv-координате, как при обычном отложенном рендеринге.

РЕДАКТИРОВАТЬ: Вероятно, было бы практично в описанных вами обстоятельствах с несколькими буферами (например, свечение, диффузный, блеск, зеркальный...) использовать их в качестве текстур и загружать только один набор для каждого материала. Однако это сэкономит лишь небольшую часть пропускной способности, поскольку для нормальной настройки потребуются текстуры размером с экран, по сравнению с текстурами материалов, которые вы предлагаете. Также, вероятно, будет потеря производительности из-за переключения нескольких текстур для каждого материала.

person wombat    schedule 06.04.2013
comment
огромные буферы для текстур? текстуры не будут передаваться по мере необходимости, пиратский материал? пройти в пиратских текстурах. Материал динозавра? пройти в текстуры динозавров. Всех сразу не запихнешь. - person user1175522; 06.04.2013
comment
Я не совсем уверен, что вы предлагаете. Вы хотите отобразить UV-координаты и идентификаторы материалов в буфер, а затем несколько раз пройти через это для каждого материала с необходимой текстурой? Я не совсем понимаю, каким образом этот метод будет улучшением. - person wombat; 06.04.2013
comment
нормальные вычисления и пиксель для отбраковки пикселей обрабатываются в отложенном поместье, меньше геометрии для обработки, чем прямое поместье, дополнительная оптимизация за счет определения небольших областей экрана, содержащих материалы, во избежание перерисовки. - person user1175522; 06.04.2013
comment
Извините, я имею в виду улучшение по сравнению со стандартным отложенным рендерингом, а не с опережающим рендерингом. - person wombat; 06.04.2013
comment
свобода шейдеров для каждого материала и доступность дополнительной информации о текстурах без добавления дополнительных буферов - person user1175522; 06.04.2013
comment
Я не думаю, что при текстурировании пикселей происходит большая потеря производительности, которая может быть не видна в финальном рендере. Поэтому я думаю, что вам лучше просто написать диффузный буфер, используя ваши текстуры и uv в первом проходе, и впоследствии вы все равно можете использовать несколько шейдеров для разных материалов. - person wombat; 07.04.2013
comment
потеря производительности заключается не в текстурировании пикселей, а в наличии дополнительных буферов для хранения информации о текстуре (Diffuse, Specular, Glow, Decal и т. д.). Если вы хотите, чтобы некоторые модели использовали некоторые из этих карт, вам нужно место в буфере для хранения их. Вместо того, чтобы ограничивать их только диффузным цветом и силой отражения, вы можете использовать текстуры там, где они применимы. - person user1175522; 07.04.2013
comment
из того, что я могу найти, замена шейдера медленнее, чем замена текстуры, поэтому я думаю, что установил шейдер, пробежался по материалам, которые его используют, и перешел к следующему. Итак, моей следующей заботой будет организация материалов для наименьшего количества замен текстур. Я также пришел к выводу, что узким местом замены текстур являются изменения формата и размера текстуры, поэтому мне, вероятно, следует также заказывать материалы по размеру и формату текстуры. То, как он работает после заполнения буферов, начинает больше походить на предварительный z-предварительный рендерер с меньшей геометрией, поэтому они могут быть хорошим ориентиром при написании рендерера. - person user1175522; 07.04.2013
comment
Если ваше освещение полностью зависит от вашего свечения, отражения... карт, вам не нужно менять местами шейдеры в отложенном подходе. Вы сохраняете значения в нескольких текстурах размером с экран, а затем считываете их за один проход для рендеринга освещения. - person wombat; 08.04.2013
comment
неправильно, одним из ключевых преимуществ отложенного рендеринга является скорость, с которой вы можете рендерить несколько источников света благодаря уменьшенной перерисовке и сложности геометрии, но ограничения шейдера не позволяют вам иметь несколько типов источников света и моделей освещения в 1 шейдере (тем более, что Я использую DX9 для совместимости). Но меня больше всего беспокоит чрезмерное использование буферов, использование такого количества больших буферов само по себе является узким местом, поэтому вам нужно вырезать информацию о текстуре, чтобы все это уместилось. Сильно уберите свечение, карты АО, зеркальный цвет, декали и т. д. ограничение вариации сцены. - person user1175522; 08.04.2013