ENG Новый сайт

Расширенный поиск

[ Новые сообщения · Пользователи · Правила ]
Страница 1 из 11
Форум » SpaceEngine » Свободное общение » Какой loading mode лучше ставить?
Какой 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
Награды: 54
Статус: 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
Награды: 54
Статус: 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
Награды: 54
Статус: Offline
Я сам дебажу только в асинхронном режиме. У меня он стабилен.
В этом-то и заключается основная сложность отладки - у меня всё прекрасно работает, у других пользователей (не у всех!) падает.


Форум » SpaceEngine » Свободное общение » Какой loading mode лучше ставить?
Страница 1 из 11
Поиск:

>