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

Range и Intensity Point Light'a (2 стр)

Страницы: 1 2
#15
12:41, 12 сен 2018

ENAleksey
А где берем LightData.CosOuterCone и LightData.InvCosConeDifference?) Вручную задаем?)

#16
13:03, 12 сен 2018

  float DistanceSqr = dot(ToLight, ToLight);
  L = ToLight * rsqrt(DistanceSqr);

Dot двух одинаковых векторов всегда будет равен единице ибо же они сонаправлены... Да и то, что это квадрат дистанции не видно - что там делает скалярное произведение двух одинаковы векторнов?) А потом извлекать из единицы квадрат) ToLight - вектор направления от источника света как я понял... Хотелось бы объяснения смысла)

#17
13:12, 12 сен 2018

Mr F
> Вот ещё хорошая ссылка по хдр тонмапам:
> http://filmicworlds.com/blog/filmic-tonemapping-operators/
>
> Спотлайты по идее могут быть тысячи разных форм - всё зависит от конструкции
> прожектора. Многие производители ламп замеряют яркость своих продуктов на
> разных углах и публикуют в виде IES файлов - можно много их нагуглить. Я делал
> конвертер из иесов в кубмапу и потом просто домножал поинтовый свет на выборку
> из неё.
> В принципе твой спот уже смотрится неплохо, так что можешь не париться)
О, за ссылочку спасибо)
Я видел подобное что-то c IES в UE4) И еще...) Как лучше текстурку для спота заиспользовать? (например, гало от ручного фонарика) Это как-то, учитывая расстояние от позиции спота и до освещаемого фрагмента, брать значение расстояния и на его основе как-то проецировать текстуру, учитывая направление?)

#18
13:23, 12 сен 2018

Привязал к камере)
Изображение

#19
13:45, 12 сен 2018

Код из UE4.
https://docs.unrealengine.com/en-us/Resources/ContentExamples/Lighting/1_2

const float ClampedInnerConeAngle = Clamp(Component->InnerConeAngle, 0.0f, 89.0f) * (float)PI / 180.0f;
const float ClampedOuterConeAngle = Clamp(Component->OuterConeAngle * (float)PI / 180.0f, ClampedInnerConeAngle + 0.001f, 89.0f * (float)PI / 180.0f + 0.001f);
CosOuterCone = Cos(ClampedOuterConeAngle);
CosInnerCone = Cos(ClampedInnerConeAngle);
InvCosConeDifference = 1.0f / (CosInnerCone - CosOuterCone);
#20
14:08, 12 сен 2018

Target
> Dot двух одинаковых векторов всегда будет равен единице
Почему?
Изображение
dot(vec3(1, 2, 3), vec3(1, 2, 3)) == 14

#21
14:16, 12 сен 2018

Target
> Dot двух одинаковых векторов всегда будет равен единице
Dot двух сонаправленных еденичных(нормализованных) векторов.

#22
14:21, 12 сен 2018

ENAleksey
> > Dot двух одинаковых векторов всегда будет равен единице
> Почему?
> Изображение
> dot(vec3(1, 2, 3), vec3(1, 2, 3)) == 14
MrOcelot
> > Dot двух одинаковых векторов всегда будет равен единице
> Dot двух сонаправленных еденичных(нормализованных) векторов.

Цц) Прошу прощения за сей упущение) Действительно - нормализованных) Забыл про это совсем)

Сделал, как предложил ENAleksey и вот что получилось:

+ Показать
#23
14:34, 12 сен 2018

Все круто)

#24
14:42, 12 сен 2018

Все круто)

https://www.youtube.com/watch?v=eLLYi191dwI

#25
14:54, 12 сен 2018

Ziltop
Сам в шоке

#26
20:52, 15 окт 2018

Ещё советую почитать вот это: https://google.github.io/filament/Filament.md.html
Очень много полезной информации по созданию реалистичной картинки (система материалов, освещение, пост-эффекты, туман), и всё с кодом.
Исходники движка: https://github.com/google/filament/

Страницы: 1 2
ПрограммированиеФорумГрафика

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