Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Вопрос о PBR, использующийся в некоторых демонстрациях возможностей дв
#1
И снова здравствуйте) В некоторых технических демках использовался револьвер Cerberus, к которому был применён PBR, и код для PBR из которого я и захотел взять для своей игры. Только вот там объект металлический, что значит, что он для PBR использует текстуры metallic и roughness, для людей же используется текстуры specular и gloss. Может кто-нибудь либо подсказать, как поменять эти два параметра в шейдере, либо либо подсказать, в каком демо используется PBR с неметаллическими предметами, пожалуйста?
Главный разработчик и дизайнер студии obsessed team. Группа студии - https://vk.com/TeamObsession
Ответ
#2
Разница не в том, металлический объект или нет. Эти две модели по сути одно и то же, просто они выносят в текстуры разные компоненты формулы освещенности. Насколько я понимаю, модель metallic+roughness придумана для того, чтобы соблюдался закон сохранения энергии (diffuse + specular < 1.0), то есть, грубо говоря,

Код:
[== Неизвестный ==]
specular = baseColor * metallic
diffuse = baseColor * (1 - metallic)

Roughness же - это просто 1-gloss.

Я сторонник metallic+roughness модели, во всех своих шейдерах использую ее) Если хранить сразу specular и diffuse, то есть вероятность, что получится "нефизичная" комбинация, где совокупная отраженная энергия больше падающей, а это уже не PBR Wink. Для сохранения энергии нужно делать дополнительные телодвижения: текстуры должны быть взаимосвязанными - чем больше gloss, тем ярче specular (и, соответственно, тусклее diffuse). У metallic+roughness такой связи между текстурами нет, что довольно удобно.

Также разница в экономии по весу:

Specular+gloss - 24-bit (diffuse) + 24-bit (specular) + 8-bit (gloss)
Metallic+roughness - 24-bit (baseColor) + 8-bit (metallic) + 8-bit (roughness)

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

В общем случае, если текстуры создавались под рендер specular+gloss, то их уже не сконвертировать в metallic+roughness, и нужно переписывать рендер. А вот обратный процесс возможен.
Ответ
#3
Спасибо, за код! А также учту всё вышенаписанное при создании и импортировании в движок модели)
Главный разработчик и дизайнер студии obsessed team. Группа студии - https://vk.com/TeamObsession
Ответ


Перейти к форуму:


Пользователи, просматривающие эту тему: 5 Гость(ей)