Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Освещение точечным источником (Omni)

Освещение точечным источником (Omni)

Страницы: 1 2 3 Следующая »
eDmkУчастникwww16 апр. 20184:11#0
Всем привет!

Подскажите пожалуйста, как рассчитать по отношению к точечному источнику (Omni) видимость полигона.
Относительно камеры он виден, а относительно Omni он может быть не виден (например, если он внутри объекта).

Тут наглядное видео: https://yadi.sk/i/COptSSOw3USSxh

В общем создается эффект внутренней подсветки, а это не нужно.
Нужно, чтобы полигоны между камерой и Omni не подсвечивались.
Конечно же у Omni нет вектора (Light Dir). Есть только позиция и радиус.

Правка: 16 апр. 2018 4:15

Battle Angel AlitaПостоялецwww16 апр. 20188:53#1
>нет LightDir
Как это нету а? А wPos - lPos это что такое?
lookidПостоялецwww16 апр. 201810:15#2
Освещенность пикселя как считаешь? (specular+defuse)*max(dot(n,l), 0.0) ?
DampireПостоялецwww16 апр. 201810:22#3
lookid
> Освещенность пикселя как считаешь? (specular+defuse)*max(dot(n,l), 0.0) ?
Bomb has been defused.
eDmkУчастникwww16 апр. 201812:09#4
>Освещенность пикселя как считаешь? (specular+defuse)*max(dot(n,l), 0.0) ?

Немного по  другому:
p = PixelPos
l = LightPos

Distance = Sqrt(Sqr(l.X - p.X) + Sqr(l.Y - p.Y) + Sqr(l.Z - p.Z));
Attenuation = 1.0 - (Distance / Radius)
gl_FragColor = (DiffColor + SpecularColor) * Attenuation

Вектора нет вообще.
Могу и так считать (specular+defuse)*max(dot(n,l), 0.0), но тогда направленный источник получается.

Правка: 16 апр. 2018 12:11

DampireПостоялецwww16 апр. 201812:26#5
гениально. пиши пейпер по новым методикам освещениея.
DampireПостоялецwww16 апр. 201812:36#6
Что по-твоему вектор? По-моему он как раз является описательной штукой направления от одной точки к другой. Две точки у тебя есть, но вывести вектор не получается? Во втором посте тебе ответили как искать направление.
SuslikМодераторwww16 апр. 201814:00#7
eDmk
> Attenuation = 1.0 - (Distance / Radius)
> gl_FragColor = (DiffColor + SpecularColor) * Attenuation
член с dot(n, l) является чисто геометрическим соотношением, говорящим, что поверхность локально находится под углом к падающему свету, поэтому если в модели освещения этого коэффициента нет, это практически гарантированный нефизичный фейк.

> Distance = Sqrt(Sqr(l.X - p.X) + Sqr(l.Y - p.Y) + Sqr(l.Z - p.Z));
удобно, да, при каждой модификации формулы менять её в трёх местах?

Правка: 16 апр. 2018 14:01

eDmkУчастникwww16 апр. 201814:20#8
Suslik
У меня софтвер. OpenGL'я нет ваще. Свои шейдеры (совместимы по расчетам с OpenGL).

Мне в общем то математика не нужна. Мне нужно понять как в таком случае считать видимость.
Просто логика подойдет. Посчитаю сам.

На крайний случай можно источник в объект не помещать, но что если вдруг он попал в объект?
Не считать же с точки зрения источник<->камера видимость для каждого треугольника?

Правка: 16 апр. 2018 14:25

lookidПостоялецwww16 апр. 201814:27#9
eDmk
Нормаль треугольника и направление камеры. Скалярное произведение
eDmkУчастникwww16 апр. 201814:43#10
lookid
>
> lookid
Это OMNI, а не направленный свет. Вы забываете.
Он направлен во все стороны СРАЗУ.

С направленным у меня нет проблем.

Правка: 16 апр. 2018 14:43

DampireПостоялецwww16 апр. 201814:47#11
eDmk
Ну-ка покажи мне как можно быть направленным во все стороны по отношению к треугольнику. Схему в паинте плес. Как придумаешь - нобелевку делим пополам.

Правка: 16 апр. 2018 14:51

lookidПостоялецwww16 апр. 201816:29#12
eDmk
Ты хочешь не пер-пиксель лайтинг, а куллинг.
eDmkУчастникwww16 апр. 201816:38#13
>куллинг
Возможно. Где почитать?
g-contПостоялецwww16 апр. 201817:48#14
eDmk
> Он направлен во все стороны СРАЗУ.
Пора вспоминать теорию относительности

eDmk
> Могу и так считать (specular+defuse)*max(dot(n,l), 0.0), но тогда направленный
> источник получается.
Источник в любом случае куда-то направлен. В одну сторону, либо во все сразу.

Правка: 16 апр. 2018 17:48

Страницы: 1 2 3 Следующая »

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

2001—2018 © GameDev.ru — Разработка игр