Какой loading mode лучше ставить?
|
|
Turbo | Дата: Среда, 14.03.2012, 11:54 | Сообщение # 1 |
Наблюдатель
Группа: Пользователи
Украина
Сообщений: 14
Награды: 0
Статус: Offline
| Immediate, Asynchronous или Interleaved? И объясните как оно влияет.
|
|
| |
SpaceEngineer | Дата: Четверг, 15.03.2012, 01:34 | Сообщение # 2 |
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
| Ресурс - то что загружает или генерирует загрузчик: текстура, патч поверхности планеты, узел октри со звёздами (а теперь и с галактиками), 3D модель галактики или туманности, модель подсистем галактики и звёздного скопления (звёздное октри, звёздные скопления и туманности), планетная система звезды, шейдер, модель атмосферы.
Immediate - генерация или загрузка ресурса происходит немедленно как только он становится нужен (попадает в поле зрения, становится достаточно большим или достаточно ярким при приближении), при этом рендер останавливается, пока ресурс не будет загружен. Это значит, что игра будет лагать, хотя в обычно генерация текстур при приземлении на планету происходит быстрее чем в других режимах (т.к. движок не отвлекается на рендер кадров с частично загруженной планетой). Режим идеален для записи видео, вкупе с режимом тайминга Frame Time.
Interleaved - запросы на генерацию или загрузку ресурсов накапливаются в очереди, а сама загрузка или генерация происходит между кадрами. Если время, потраченное на это, превышает значение параметра LoaderTiming в конфиге main.cfg (миллисекунд), загрузка следующих в очереди ресурсов откладывается на следующий кадр. В этом режиме управление не лагает, кромо особо тяжких случаев (шейдеры, модели галактик), а fps снижаются, т.к. часть времени в каждом кадре уходит на загрузку.
Asynchronous - запросы на генерацию или загрузку ресурсов накапливаются в очереди, а сама загрузка или генерация происходит в другом потоке, со своей скоростью. В идеале управление вообще не должно чувствовать что что-то происходит, fps не должны снижаться (или снижаться незначительно), а загрузка происходить быстрее, чем в Interleaved режиме, если процессор многоядерный, т.к. задействуются два ядра. На практике же оказалось, что OpenGL не любит многопоточность, поэтому в момент загрузки текстуры или шейдера в видеокарту рендер всё равно прерывается - происходит лаг, причём лаги даже сильнее, чем в Interleaved режиме. Кроме того, программа может упасть - асинхронный режим не отлажен полностью.
В будущих версиях я планирую разделить загрузку CPU-зависимых ресурсов (звёздые и галактические октри, подсистемы галактик, планетные системы) и GPU-зависимых ресурсов (текстуры, меши, VBO, шейдеры) - певрые грузить в нескольких параллельных потоках (по числу свободных ядер процессора), а вторые между кадрами.
|
|
| |
Turbo | Дата: Четверг, 15.03.2012, 10:02 | Сообщение # 3 |
Наблюдатель
Группа: Пользователи
Украина
Сообщений: 14
Награды: 0
Статус: Offline
| Мне так кажется или он и вправду загружает рельеф и текстуру планеты в оперативу и не сбрасывается, даже когда я улетаю с этой планеты далеко. Если несколько десятков планет перелетать и позагружать везде рельеф, начинаются ошибки генерации или слетает прога из-за недостатка памяти
|
|
| |
SpaceEngineer | Дата: Четверг, 15.03.2012, 14:12 | Сообщение # 4 |
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
| Конечно не удаляет - откуда SE знает, улетели вы планеты насовсем или просто отвернулись в сторону? Падает не из-за недостатка памяти, а из-за бага в ландшафтном движке - не те ноды иногда удаляются.
|
|
| |
TastyRat | Дата: Среда, 06.11.2013, 17:06 | Сообщение # 5 |
Космонавт
Группа: Пользователи
Российская Федерация
Сообщений: 73
Награды: 0
Статус: Offline
| Цитата SpaceEngineer (  ) Конечно не удаляет - откуда SE знает, улетели вы планеты насовсем или просто отвернулись в сторону? Падает не из-за недостатка памяти, а из-за бага в ландшафтном движке - не те ноды иногда удаляются. Ну я думаю, что со временем Вы научите SE чистить память, потому что начинает тормозить через пару минут после полета по планетам. Пусть лучше заново загружает. Сам только что случайно нажал "/" и узнал о режимах загрузки. Режим асинхронной загрузки для меня довольно стабилен. Вы его отладили с тех пор?
i5-2550K@4400, P67, 16gb-1333, gtx970
|
|
| |
SpaceEngineer | Дата: Среда, 06.11.2013, 18:51 | Сообщение # 6 |
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
| Я сам дебажу только в асинхронном режиме. У меня он стабилен. В этом-то и заключается основная сложность отладки - у меня всё прекрасно работает, у других пользователей (не у всех!) падает.
|
|
| |