Войти
ПрограммированиеФорумГрафика

PBR + reflection cubemaps

Страницы: 1 2 38 9 Следующая »
#0
11:16, 28 авг. 2016

Вопрос такой - как правильно смешивать освещение с отражением от кубемап? И как к этим самым кубемапам привязать френнеля, разымтие через выбор младшего мип-уровня, ведь по идее они тоже должны контролироваться от metalness\smoothness. Я посмотрел любительские демки, где-то просто складывают с результатом, а может надо подавать на вход SpecularBRDF в качестве f0?


#1
13:08, 28 авг. 2016

я делаю lerp(albedo * diffuseLight, specularLight + reflection, specularity * fresnel);

#2
13:20, 28 авг. 2016

Mr F
Я так и знал, что ты отметишься в этой теме :)
У тебя fresnel влияет на вклад  diffuse ( я про lerp ). Это правильно ?

#3
13:31, 28 авг. 2016

g-cont
> Вопрос такой - как правильно смешивать освещение с отражением от кубемап?

А как демках сделано ?

#4
14:16, 28 авг. 2016

Mr F
а на размытость кубемап (на выбор мип-уровня), какая переменная влияет? smoothness или как-то по хитрому?

innuendo
> А как демках сделано ?
та в демках как-то мутно сделано, не факт что вообще правильно.

#5
15:20, 28 авг. 2016

g-cont
> Вопрос такой - как правильно смешивать освещение с отражением от кубемап?
Складывать.
Есть тонкость, например, если у тебя есть Direct Light от солнца, то солнца в CubeMap'е быть не должно.

> И как к этим самым кубемапам привязать френнеля, разымтие через выбор младшего
> мип-уровня, ведь по идее они тоже должны контролироваться от
> metalness\smoothness.
Просто гасишь интесивность куб-мапа в зависимости от угла отражения.

Размытие сложнее, надо самому рассчитать размытие для каждого мип-уровня.
https://seblagarde.wordpress.com/2012/06/10/amd-cubemapgen-for-ph… ed-rendering/

А уже затем выбирать нужный мип-уровень в зависимости от roughness.

#6
15:30, 28 авг. 2016

>>Размытие сложнее, надо самому рассчитать размытие для каждого мип-уровня.
Спасибо, интересно. Этого у меня не было.

#7
15:55, 28 авг. 2016

Demiurg-HG
> Есть тонкость,

Там много тонкостей. Вот есть у тебя отражение от кубемапы на кубике. Оно меняется в зависимости от того, освещается сторона кубика или нет ? От времени суток зависит ?

#8
19:18, 28 авг. 2016

innuendo
> Там много тонкостей. Вот есть у тебя отражение от кубемапы на кубике. Оно
> меняется в зависимости от того, освещается сторона кубика или нет ?
Вопрос некорректный. Куб-мап это и есть "освещение", интенсивность падающего света в каждом направлении.

innuendo
> От времени суток зависит ?
Да. Для этого можно добавить альфа-канал и по нему смешивать куб-мапу окружения и куб-мапу неба.

#9
20:16, 28 авг. 2016

Кстати, хотел еще один вопрос задать, который меня мучает уже довольно давно. По логике вещей metalness отвечает за степень отражения материала (ну и за его электрическую проводимость), согласно которой неметаллы отражают свет тускло, а металлы - хорошо. Пример - дерево, покрытое лаком. Ток - не проводит, отражает отлично. В какую категорию его отнесём? А ведь материал весьма распространенный, мебель всякая.

#10
21:19, 28 авг. 2016

Не все диэлектрики плохо отражают. Вода - диэлектрик при одних условиях и проводник при других. Отражает отлично, по Френелю...

#11
21:22, 28 авг. 2016

Это к тому, что нужно быть аккуратнее с отнесением к диэлектрику. Скорее, в большинстве случаев проводимость средняя. У металлов она разная, у них состав может быть с добавками.

#12
21:27, 28 авг. 2016

Virtual_Light
Я бы не сказал, что вода - диэлектрик :)

#13
21:28, 28 авг. 2016

g-cont
> Кстати, хотел еще один вопрос задать, который меня мучает уже довольно давно.
> По логике вещей metalness отвечает за степень отражения материала (ну и за его
> электрическую проводимость), согласно которой неметаллы отражают свет тускло, а
> металлы - хорошо.

Металлы отражают только определенный спектр падающего света, а остальную часть спектра — поглощают, и поглощенная энергия идет на нагрев.
Таким образом, отражение металлов цветное: сталь отражает белый, золото — желтый, алюминий — голубоватый, медь — красноватый.
А metalness отвечает за цвет отражения.

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


Диэлектрики либо отражают свет по закону Френеля, либо пропускают свет.
Поглощенный свет либо рассеивается молекулами вещества, либо отражаются от частиц красителей (которые либо на основе металлов, либо из сложных органических молекул).
Чистый диэлектрик в той или иной степени прозрачен.

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


> Пример - дерево, покрытое лаком. Ток - не проводит, отражает
> отлично. В какую категорию его отнесём? А ведь материал весьма
> распространенный, мебель всякая.
В материалах покрытых лаком присутствует множественное отражение.
Для имитации таких материалов используют несколько составляющих зеркального отражения (например car paint).

Но в простейшем случае можно обойтись diffuse + specular.
Дерево покрытое лаком следует отнести к диэлектриками с очень низким roughness и высоким specular.

Тут хорошо написано и приведены примерные значения для различных материалов:
https://docs.unrealengine.com/latest/INT/Engine/Rendering/Materia… sicallyBased/
https://www.unrealengine.com/blog/physically-based-shading-in-ue4

#14
21:28, 28 авг. 2016

g-cont
> Я бы не сказал, что вода - диэлектрик :)
Чистая вода — диэлектрик. Проводником ее делают ионные примеси.

Страницы: 1 2 38 9 Следующая »
ПрограммированиеФорумГрафика

Тема в архиве.