|
3D-программирование Вопросы, касающиеся программирования 3D мира |
28.08.2011, 18:32
|
#1
|
Легенда
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений (для 5,072 пользователей)
|
Baked Probe Light
После недавнего примера с вершинным освещением я заморочался на эту тему и вот что мне удалось написать.
Это не повертексное освещение. Это так называемый "Probe Light". Тоесть освещение заранее просчитанное для определенных точек на карте.
К достоинствам этого метода можно отнести его относительную простоту и более менее приемлемый результат ввиду того, что можно динамический объект может принимать освещение (как бы) отраженное от стен(По большей части это не освещение а трюк ). Иными словами он использует некоторые достоинства материалов макса(например отражение света от стен).
К недостаткам метода стоит отнести лишний лайтмэп и чайлды). Но ведь без затрат ничего не делается?
Здесь можно посмотреть как это работает в идеале.
А здесь немного теории.
В примере представлена очень грубая но тем не менее рабочая вариация этого метода). Основной принцип сохранен.
В архиве так же моя небольшая статья объясняющая принцип создания Probe Light для Blitz3d.
З.Ы. Ваше мнение)?
UPD. Знаю знаю блиц старый. DX9 рулит). Но к теме это не имеет никакого отношения).
__________________
Ибо как сказал Бгдн:
|
(Offline)
|
|
Эти 8 пользователя(ей) сказали Спасибо Gector за это полезное сообщение:
|
|
28.08.2011, 19:11
|
#2
|
Мастер
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений (для 1,836 пользователей)
|
Ответ: Baked Probe Light
А чо, прикольно. А с учетом наличия и других флагов в Текстуребленде можно и затенение замутить, токо шесть рендеров это дохрена по моему
Кстати не запустилось хочет функцию ReadSub(EntityName$(child),2,"%").
И можно наверно разрешение маленькое для камеры выставить там ведь важен цвет, а не детализация и сделать массив из шести камер, тогда можно будет за один рендер управиться.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
28.08.2011, 19:21
|
#3
|
Легенда
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений (для 5,072 пользователей)
|
Ответ: Baked Probe Light
Сообщение от dsd
А чо, прикольно. А с учетом наличия и других флагов в Текстуребленде можно и затенение замутить, токо шесть рендеров это дохрена по моему
Кстати не запустилось хочет функцию ReadSub(EntityName$(child),2,"%").
И можно наверно разрешение маленькое для камеры выставить там ведь важен цвет, а не детализация и сделать массив из шести камер, тогда можно будет за один рендер управиться.
|
Фак!!! Опять забыл!Емана!!!)))
Создай текстовый файл "parser.decls" и вставь туда это:
.lib "Parser.dll"
ReadSub$(String$,Index%,Delimiter$):"ReadSub"
CountDelimiter%(String$,Delimiter$):"CountDelimiter"
Что до рендера то он и так делается перед основным циклом). Это как бы пререндереный лайтмэп для активных объектов.
__________________
Ибо как сказал Бгдн:
|
(Offline)
|
|
28.08.2011, 19:23
|
#4
|
Терабайт исходников
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений (для 6,051 пользователей)
|
Ответ: Baked Probe Light
помню делал их на ксорсе.
т.к. освещение запекал в максе в лайтмапы, там же ставил скриптом все probe'ы в виде кубиков с запретом отбрасывания теней и влияния на ГИ. но они все равно могли принимать освещение на себя. на кубиках была развертка в виде 6 их сторон по очереди. затем я запекал на них свет (создавался свой лайтмап на каждый) и экспортил сцену в б3д - затем препроцессящая прога брала мин/макс коорды кубов из сцены и цвета каждой стороны из минилайтмапов. полученное сохранялось уже в использующийся в реалтайме небольшой файл.
в игре был перебор этих кубов и проверка попадания дин объекта в мин/макс коорды каждого. можно было оптимизировать через sparse octree, но я этого не сделал, было как ни странно и без того шустро с парой тысяч кубов. в случае попадания, я плавно линейно интерполировал текущий кубоцвет объекта на цвет куба, в котором он находится. т.е. каждый дин объект нёс в себе 6 RGB цветов. они передавались в шейдер и юзались как ambient cube по коду, описанному в доке про освещение в source engine.
по сабжу - тут кубмапой сделано или как? лень смотреть
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо Mr_F_ за это полезное сообщение:
|
|
28.08.2011, 19:27
|
#5
|
Легенда
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений (для 5,072 пользователей)
|
Ответ: Baked Probe Light
Сообщение от Mr_F_
по сабжу - тут кубмапой сделано или как? лень смотреть
|
Да. Это кубмап. Очередной эффект из серии "На чистом блице").
UPD: Хотя от того что делал ты отличается лишь нюансами.
__________________
Ибо как сказал Бгдн:
|
(Offline)
|
|
28.08.2011, 21:44
|
#6
|
Легенда
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений (для 5,072 пользователей)
|
Ответ: Baked Probe Light
Сообщение от dsd
сделать массив из шести камер, тогда можно будет за один рендер управиться.
|
То есть, как я понял, рендер с шести камер сразу делается в один проход, и в шесть раз меньше будет задержка? Если так то это было бы очень круто).
__________________
Ибо как сказал Бгдн:
|
(Offline)
|
|
28.08.2011, 21:58
|
#7
|
Мастер
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений (для 1,836 пользователей)
|
Ответ: Baked Probe Light
Ну да, просто вырезаешь для каждой грани разный кусок бакбуфера, да и 32х32 должно хватить с головой для каждого куска. Плюс можно подкрашивать объекты(не фон) в черный цвет во время рендера, дадут некую тень они
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
28.08.2011, 22:53
|
#8
|
Дэвелопер
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений (для 4,642 пользователей)
|
Ответ: Baked Probe Light
Или я чего-то не понял, или вы не то говорите. Блитц не умеет рендерить в один проход из нескольких камер.
__________________
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо .Squid за это полезное сообщение:
|
|
28.08.2011, 23:56
|
#9
|
Легенда
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений (для 5,072 пользователей)
|
Ответ: Baked Probe Light
Сообщение от .Squid
Или я чего-то не понял, или вы не то говорите. Блитц не умеет рендерить в один проход из нескольких камер.
|
Имеется ввиду рендер с нескольких камер в несколько вьюпортов. Вызов RenderWorld в данном случае действительно один. А вот велика ли выгода с этого - вопрос...
Я сейчас ищу способ смягчить переходы между текстурами. Тоесть сделать хотябы фейд по расстоянию. Но через гамму - глючно т.к. работает она только в оконном режиме. Лишний рендер тоже не к чему.
__________________
Ибо как сказал Бгдн:
Последний раз редактировалось Gector, 29.08.2011 в 00:04.
Причина: Проверил гамму в оконном режиме.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
29.08.2011, 00:14
|
#10
|
Дэвелопер
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений (для 4,642 пользователей)
|
Ответ: Baked Probe Light
Вызов RenderWorld - это не проход. Проход - это когда геометрия отбрабатывается один раз. А на самом деле в недрах рендерера, она обрабатывается всё те же 6 раз.
__________________
|
(Offline)
|
|
Эти 3 пользователя(ей) сказали Спасибо .Squid за это полезное сообщение:
|
|
29.08.2011, 00:23
|
#11
|
Легенда
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений (для 5,072 пользователей)
|
Ответ: Baked Probe Light
Сообщение от .Squid
Вызов RenderWorld - это не проход. Проход - это когда геометрия отбрабатывается один раз. А на самом деле в недрах рендерера, она обрабатывается всё те же 6 раз.
|
Okay ... Но тут видимо без дополнительного рендера смягчения переходов все равно не сделать.
__________________
Ибо как сказал Бгдн:
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
02.09.2011, 17:05
|
#12
|
Знающий
Регистрация: 29.05.2007
Сообщений: 227
Написано 126 полезных сообщений (для 312 пользователей)
|
Ответ: Baked Probe Light
Помню хотели для нашей игрухи такое сделать, но руки не дошли.
Мне так и не удалось запустить! Откуда взять Parser.dll (и зачем он нужен)? Залей хоть заново со всеми нужными причендалами.
|
(Offline)
|
|
02.09.2011, 18:31
|
#13
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: Baked Probe Light
Exe'шку лучше всего прикрепить..
|
(Offline)
|
|
02.09.2011, 18:41
|
#14
|
Легенда
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений (для 5,072 пользователей)
|
Ответ: Baked Probe Light
Сообщение от Coks
Помню хотели для нашей игрухи такое сделать, но руки не дошли.
Мне так и не удалось запустить! Откуда взять Parser.dll (и зачем он нужен)? Залей хоть заново со всеми нужными причендалами.
|
Я над этим еще чуток поработаю а потом выложу без парсёра).
Exe'шку лучше всего прикрепить..
|
Сделаю. Только позже.
__________________
Ибо как сказал Бгдн:
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 16:56.
|