Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Проекты > Проекты на Unity

Ответ
 
Опции темы
Старый 01.03.2015, 16:25   #31
WISHMASTER35
Бывалый
 
Аватар для WISHMASTER35
 
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений
(для 357 пользователей)
Ответ: Еще один Minecraft на юнити

Сообщение от WISHMASTER35 Посмотреть сообщение
А синие точки это ячейки, которые не имеют прямого доступа друг к другу.
Я ошибся. Синие точки вообщем-то имеют прямой доступ друг к другу.
Даже в таком случае есть доступ.
Миниатюры
Нажмите на изображение для увеличения
Название: A.png
Просмотров: 1068
Размер:	7.9 Кб
ID:	21541  Нажмите на изображение для увеличения
Название: B.png
Просмотров: 1048
Размер:	9.0 Кб
ID:	21542  
(Offline)
 
Ответить с цитированием
Старый 13.03.2015, 00:08   #32
WISHMASTER35
Бывалый
 
Аватар для WISHMASTER35
 
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений
(для 357 пользователей)
Ответ: Еще один Minecraft на юнити

Продолжу монолог.
Light Radiance - текущий алгоритм
Снял видел объясняющее как работает Light Spread алгоритм в MineCraft. Честно сказать, я до этого не совсем правильно представлял как он работает))

Все LightPoint'ы добавляются в очередь и равномерно рассеиваются. Когда одна LightPoint встречается с другой, то рассеивание прекращается. По этой причине для максимальной производительности необходимо добавить в очередь все LightPoint'ы сцены (А это сотни тысяч). И многопоточность нельзя использовать т.к. используется только одна очередь.

Light Gathering
Можно вычислять свет лишь для блоков, граничащих с твердыми блоками или содержащими в себе траву или что-то подобное. На рисунке эти блоки выделены красным.
Вот видео показывающие работу такого алгоритма.

Плюсы такого метода:
- Можно вообще не выделять память на хранение освещение. Разве какие-то ускоряющие структуры создать.
- Легко распараллеливается.
Но есть и серьезные недостатки:
Метод Light Spread в посещенные ячейки записывает освещение, поэтому алгоритм второй раз в одну и тужу ячейку не зайдет. И вообще не зайдет в ячейку, в которой уже есть свет, который больше текущего.
Можно создавать массив в который записывать посещенные вершины. Думаю, можно 1 bit на вершину. Но этот массив придется каждый раз чистить.
Пока не представляю сколько времени займет такой алгоритм, но памяти он экономил бы много.
Задача в общем-то сводится к графу, каждая вершина которого содержит\не содержит свет и имеет уровень прозрачности (воздух, вода, непрозрачный).
Вот и надо обойти все соседние вершины и собрать с них свет.
Может у кого-то есть идеи как это можно ускорить или не хранить посещенные вершины?

Правильный Global Illumination
Ray Tracing
Мне парой кажется, что нормальный Global Illumination будет не медленнее, чем тот Light Gathering.

Можно Indirect Lighting вычислять не для всей сцены, а для куска карты, вокруг игрока.
На карте 256x256x256 есть ~230тыс блоков, для которых надо вычислить свет.
Для сбора света из hemi-cube размером 64 нужно 12288 луча, это не так и много.
int faceArea = 64 * 64;
int halfFaceArea = faceArea / 2;
int hemiCubeArea = (halfFaceArea * 4) + faceArea; // = 12288
Для hemi-sphere возможно еще меньше. Конечно длинна луча 64 это не очень много. Будут проблемы в длинный коридорах, когда луч от одной стены не достает до другой и думает, что он ушел в небо.

И того.
12.288 лучей * 230.000 ячеек = 2.826.240.000. Почти 3 миллиарда лучей - очень огромное число. И это только для одного bounce.
Если бы можно было вычисление света разделить на несколько кадров. Сначала 1й bounce, потом 2й bounce. Еще можно сделать, чтобы за кадр пускался только каждый десятый луч, типа сначала четные, потом нечетные.
Было бы терпимо, если бы свет полностью перевычислялся за 0.5 - 1 секунду.
Но вряд ли даже за минуту можно пустить такое кол-во лучей.

LVP
Можно при изменении геометрии пересчитывать сферические гармоники.
Тогда освещение нужно будет собирать с ячеек, которые попали внутрь объема сферической гармоники.
Если я вообще правильно понимаю смысл сферических гармоник.
Но я понятия не имею сколько времени нужно на перерасчет сферических гармоник.

Список видимых ячеек
Просто для каждой ячейки хранить список видимых ячеек. Для многих ячеек такой список будет одинаковым или почти одинаковым, поэтому можно будет хорошо сжать. Собрать освещение из готового списка ячеек - самое простое.
Но этот список надо еще вычислить и сжать. Как вычислить, сколько времени это займет - тоже вопрос.
Миниатюры
Нажмите на изображение для увеличения
Название: 1.png
Просмотров: 1029
Размер:	8.8 Кб
ID:	21561  
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
impersonalis (16.03.2015)
Старый 15.03.2017, 03:41   #33
WISHMASTER35
Бывалый
 
Аватар для WISHMASTER35
 
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений
(для 357 пользователей)
Ответ: Еще один Minecraft на юнити


Спустя много много времени я все таки придумал новую систему освещения.
Подробности там.
(Offline)
 
Ответить с цитированием
Эти 6 пользователя(ей) сказали Спасибо WISHMASTER35 за это полезное сообщение:
ABTOMAT (15.03.2017), Антихрист (15.03.2017), pax (15.03.2017), St_AnGer (15.03.2017), tormoz (15.03.2017), Жека (15.03.2017)
Старый 15.03.2017, 07:12   #34
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений
(для 886 пользователей)
Ответ: Еще один Minecraft на юнити

Выглядит офигенно!
(Offline)
 
Ответить с цитированием
Старый 15.03.2017, 07:48   #35
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: Еще один Minecraft на юнити

Знатная работа проделана!
Монстр напомнил скелетика из Keep Out
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 15.03.2017, 13:53   #36
WISHMASTER35
Бывалый
 
Аватар для WISHMASTER35
 
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений
(для 357 пользователей)
Ответ: Еще один Minecraft на юнити

Сообщение от ABTOMAT Посмотреть сообщение
Знатная работа проделана!
Монстр напомнил скелетика из Keep Out
Мы взяли монстров из одного пака.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
ABTOMAT (15.03.2017)
Старый 03.04.2017, 01:44   #37
WISHMASTER35
Бывалый
 
Аватар для WISHMASTER35
 
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений
(для 357 пользователей)
Ответ: Еще один Minecraft на юнити

Сделал несколько панорамных скриншота. Пост эффекты пришлось отключить т.к. они обычно зависят от направления взгляда и получалось черти что.
https://www.facebook.com/terra.voxel...83283398395233

Последний раз редактировалось WISHMASTER35, 08.04.2017 в 14:23.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо WISHMASTER35 за это полезное сообщение:
ABTOMAT (03.04.2017), pax (03.04.2017)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com