Тема: Id Tech 6
Показать сообщение отдельно
Старый 03.10.2013, 13:49   #65
jimon
 
Сообщений: n/a
Ответ: Id Tech 6

Amatsu
вот тебе миллионы частиц на полигонах
https://developer.nvidia.com/apex-turbulence
плюс
https://developer.nvidia.com/apex-destruction
и это всё в unreal engine 4 и это всё прекрасно взлетает на ps4

суть ебни вопроса "полигон vs воксель" лежит в другой плоскости, и мне жаль если ты не понимаешь её, плоскость заключается в том что воксели это пространство которое имеет некоторое свойство : в каждой точке пространства есть информация, собственно это пространство является полем

из-за того что пространство внезапно оказывается полем у нас решается миллион проблем и появляется миллион проблем, в основном решается задача "а попал ли я лучем в эту ебатню ?" ведь не надо уже писать йоба рейтрейсинг по полигонам которые могут иметь позицию 0.00001f, достаточно тупо округлить позицию к сетке поля и прочитать данные и узнать что там лежит, из-за этого поле красивно разбивается на всякие деревья и оно взлетает еще лучше - нужно меньше информации хранить о ветках, плюс из-за известной информации как собсно это говно лежит в памяти можно писать cache-friendly алгоритмы, чего собсно невозможно добиться с полигонами

а самый важный и геморройный вопрос - разрешающая способность этого поля, это такой камень преткновения, какая у нас разрешающая способность полигона ? сейчас это точность флоата, с помощью этой точности мы можем задавать разные штуки и при растеризации иметь возможность задавать полигон точнее в миллоны раз чем позиция пикселей в фреймбуфере

а чем ограничена разрешающая способность поля вокселей ? в основном bandwidth, если я возьму куб размером 1 мм^3, то поле 1 м^3 у нас будет хранить 1 мб байт, а если 1 км^3 то это уже 909 терабайт данных, даже если я сделаю стриминг с помощью деревьев (этакой LOD-подобный механизм), то мне всё равно нужно где-то хранить эти 909 терабайт

те чтобы запилять честные красивые партиклы с разрешением в 1 мм^3 в кубе 1 км^3 мне нужно 909 терабайт, поскольку у нас таких данных нету то парни идут другим путём - "а давайте хранить только данные о том что есть", ну те делают предположение что 99% поля будет пустым, что собсно ху*ня, но эта ху*ня взлетает, чтобы симулировать 3д массив на 909 теребайт они используют структуру которая называется octree : http://en.wikipedia.org/wiki/Octree, можно и kd-tree юзать и тд и тп, такая штуковина позволяет хранить только те клетки поля в которых что-то есть, но ничего не бывает бесплатно, если читать данные из этой структуры можно за константное время (хоть оно и больше чем чтение из массива), то вставлять новые данные или перемещать данные в этой структуре можно лишь только ценной большого количества времени, собсно потому воксели сейчас могут взлететь для статики, а для динамики им еще оооочень долго, если это вообще когда либо произойдет, всё же есть физический придел плотности вычислений в который мы рано или поздно упрёмся

а что такое честные красивые партиклы в вокселях о которых я тут простыню пишу ? это например симуляция гидродинамики, вот такие картинки только в 3д

и х*й ты сделаешь их нормально сейчас в большом размере с достаточным разрешеним и достаточной производительностью

это всё это такая CAP теорема в мире представления полей больших данных, и чтобы её решить нужно уступать, самое простое это уступать в динамике данных

ps. RTFM йопта, а то чесное слово зоебали ху*ню писать
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо за это полезное сообщение:
is.SarCasm (03.10.2013), pax (03.10.2013), SBJoker (03.10.2013)