forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Baked Probe Light (http://forum.boolean.name/showthread.php?t=15372)

Gector 28.08.2011 18:32

Baked Probe Light
 
Вложений: 3
После недавнего примера с вершинным освещением я заморочался на эту тему и вот что мне удалось написать.
Это не повертексное освещение. Это так называемый "Probe Light". Тоесть освещение заранее просчитанное для определенных точек на карте.
К достоинствам этого метода можно отнести его относительную простоту и более менее приемлемый результат ввиду того, что можно динамический объект может принимать освещение (как бы) отраженное от стен(По большей части это не освещение а трюк:)). Иными словами он использует некоторые достоинства материалов макса(например отражение света от стен).
К недостаткам метода стоит отнести лишний лайтмэп и чайлды). Но ведь без затрат ничего не делается?
Здесь можно посмотреть как это работает в идеале.
А здесь немного теории.
В примере представлена очень грубая но тем не менее рабочая вариация этого метода). Основной принцип сохранен.
В архиве так же моя небольшая статья объясняющая принцип создания Probe Light для Blitz3d.

З.Ы. Ваше мнение)?
UPD. Знаю знаю блиц старый. DX9 рулит). Но к теме это не имеет никакого отношения).

dsd 28.08.2011 19:11

Ответ: Baked Probe Light
 
А чо, прикольно. А с учетом наличия и других флагов в Текстуребленде можно и затенение замутить, токо шесть рендеров это дохрена по моему :)
Кстати не запустилось хочет функцию ReadSub(EntityName$(child),2,"%").

И можно наверно разрешение маленькое для камеры выставить там ведь важен цвет, а не детализация и сделать массив из шести камер, тогда можно будет за один рендер управиться.

Gector 28.08.2011 19:21

Ответ: Baked Probe Light
 
Цитата:

Сообщение от dsd (Сообщение 200398)
А чо, прикольно. А с учетом наличия и других флагов в Текстуребленде можно и затенение замутить, токо шесть рендеров это дохрена по моему :)
Кстати не запустилось хочет функцию ReadSub(EntityName$(child),2,"%").

И можно наверно разрешение маленькое для камеры выставить там ведь важен цвет, а не детализация и сделать массив из шести камер, тогда можно будет за один рендер управиться.

Фак!!! Опять забыл!Емана!!!)))
Создай текстовый файл "parser.decls" и вставь туда это:
Код:

.lib "Parser.dll"
ReadSub$(String$,Index%,Delimiter$):"ReadSub"
CountDelimiter%(String$,Delimiter$):"CountDelimiter"

Что до рендера то он и так делается перед основным циклом). Это как бы пререндереный лайтмэп для активных объектов.

Mr_F_ 28.08.2011 19:23

Ответ: Baked Probe Light
 
помню делал их на ксорсе.
т.к. освещение запекал в максе в лайтмапы, там же ставил скриптом все probe'ы в виде кубиков с запретом отбрасывания теней и влияния на ГИ. но они все равно могли принимать освещение на себя. на кубиках была развертка в виде 6 их сторон по очереди. затем я запекал на них свет (создавался свой лайтмап на каждый) и экспортил сцену в б3д - затем препроцессящая прога брала мин/макс коорды кубов из сцены и цвета каждой стороны из минилайтмапов. полученное сохранялось уже в использующийся в реалтайме небольшой файл.
в игре был перебор этих кубов и проверка попадания дин объекта в мин/макс коорды каждого. можно было оптимизировать через sparse octree, но я этого не сделал, было как ни странно и без того шустро с парой тысяч кубов. в случае попадания, я плавно линейно интерполировал текущий кубоцвет объекта на цвет куба, в котором он находится. т.е. каждый дин объект нёс в себе 6 RGB цветов. они передавались в шейдер и юзались как ambient cube по коду, описанному в доке про освещение в source engine.
по сабжу - тут кубмапой сделано или как? лень смотреть

Gector 28.08.2011 19:27

Ответ: Baked Probe Light
 
Цитата:

Сообщение от Mr_F_ (Сообщение 200400)
по сабжу - тут кубмапой сделано или как? лень смотреть

Да. Это кубмап. Очередной эффект из серии "На чистом блице").
UPD: Хотя от того что делал ты отличается лишь нюансами.

Gector 28.08.2011 21:44

Ответ: Baked Probe Light
 
Цитата:

Сообщение от dsd (Сообщение 200398)
сделать массив из шести камер, тогда можно будет за один рендер управиться.

То есть, как я понял, рендер с шести камер сразу делается в один проход, и в шесть раз меньше будет задержка? Если так то это было бы очень круто).

dsd 28.08.2011 21:58

Ответ: Baked Probe Light
 
Ну да, просто вырезаешь для каждой грани разный кусок бакбуфера, да и 32х32 должно хватить с головой для каждого куска. Плюс можно подкрашивать объекты(не фон) в черный цвет во время рендера, дадут некую тень они :)

.Squid 28.08.2011 22:53

Ответ: Baked Probe Light
 
Или я чего-то не понял, или вы не то говорите. Блитц не умеет рендерить в один проход из нескольких камер.

Gector 28.08.2011 23:56

Ответ: Baked Probe Light
 
Цитата:

Сообщение от .Squid (Сообщение 200425)
Или я чего-то не понял, или вы не то говорите. Блитц не умеет рендерить в один проход из нескольких камер.

Имеется ввиду рендер с нескольких камер в несколько вьюпортов. Вызов RenderWorld в данном случае действительно один. А вот велика ли выгода с этого - вопрос...
Я сейчас ищу способ смягчить переходы между текстурами. Тоесть сделать хотябы фейд по расстоянию. Но через гамму - глючно т.к. работает она только в оконном режиме. Лишний рендер тоже не к чему.

.Squid 29.08.2011 00:14

Ответ: Baked Probe Light
 
Вызов RenderWorld - это не проход. Проход - это когда геометрия отбрабатывается один раз. А на самом деле в недрах рендерера, она обрабатывается всё те же 6 раз.

Gector 29.08.2011 00:23

Ответ: Baked Probe Light
 
Цитата:

Сообщение от .Squid (Сообщение 200456)
Вызов RenderWorld - это не проход. Проход - это когда геометрия отбрабатывается один раз. А на самом деле в недрах рендерера, она обрабатывается всё те же 6 раз.

Okay:(... Но тут видимо без дополнительного рендера смягчения переходов все равно не сделать.

Coks 02.09.2011 17:05

Ответ: Baked Probe Light
 
Помню хотели для нашей игрухи такое сделать, но руки не дошли.
Мне так и не удалось запустить! Откуда взять Parser.dll (и зачем он нужен)? Залей хоть заново со всеми нужными причендалами.

moka 02.09.2011 18:31

Ответ: Baked Probe Light
 
Exe'шку лучше всего прикрепить..

Gector 02.09.2011 18:41

Ответ: Baked Probe Light
 
Цитата:

Сообщение от Coks (Сообщение 200961)
Помню хотели для нашей игрухи такое сделать, но руки не дошли.
Мне так и не удалось запустить! Откуда взять Parser.dll (и зачем он нужен)? Залей хоть заново со всеми нужными причендалами.

Я над этим еще чуток поработаю а потом выложу без парсёра).
Цитата:

Exe'шку лучше всего прикрепить..
Сделаю. Только позже.


Часовой пояс GMT +4, время: 06:17.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot