|
05.03.2015, 14:40
|
#826
|
Терабайт исходников
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений (для 6,051 пользователей)
|
Ответ: [TrueHorror] - разработка
а как ты определил, что посылается на блендинг?
|
(Offline)
|
|
05.03.2015, 14:46
|
#827
|
Дэвелопер
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений (для 1,540 пользователей)
|
Ответ: [TrueHorror] - разработка
че? я говорю о том что если ограничивающая сфера не пройдет z тест, то никаких фрагментов фулскрин квада не отрисуется. а у меня почему то все равно производительность падает, даже если источник света загорожен. наверное все таки попробую occlusion query
__________________
|
(Offline)
|
|
05.03.2015, 14:56
|
#828
|
Терабайт исходников
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений (для 6,051 пользователей)
|
Ответ: [TrueHorror] - разработка
ну так говорю, даже если блендинга нет, все равно куча фулскрин тестов всех пикселей квада об стенсил буфер идёт йопт.
|
(Offline)
|
|
05.03.2015, 15:04
|
#829
|
Дэвелопер
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений (для 1,540 пользователей)
|
Ответ: [TrueHorror] - разработка
ну таки что делать? порталы я юзать не хочу, там нужно карту вручную разбивать
неужели используя occlusion query я не буду в выигрыше? им нужно затестить только сферы ограничивающие
__________________
|
(Offline)
|
|
05.03.2015, 15:17
|
#830
|
Терабайт исходников
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений (для 6,051 пользователей)
|
Ответ: [TrueHorror] - разработка
Попробую еще рисовать сферку вместо квада, как предложил Mr_F_.
|
вот это сделай и ок будет.
а если не будет, то в любом случае не рекомендую query, результат может приходить иногда через 1, а иногда и через все 15 кадров.
с такими опозданиями что ты будешь делать? лайты будут запоздало появляться.
Последний раз редактировалось Mr_F_, 05.03.2015 в 16:46.
|
(Offline)
|
|
06.03.2015, 12:40
|
#831
|
Дэвелопер
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений (для 1,540 пользователей)
|
Ответ: [TrueHorror] - разработка
Кароч не ок. фпс почти не увеличился, он также проваливается даже когда свет загорожен стенкой. хуита кароч, даже не смотря на то что серьезно уменьшилось число фрагментов проходящих через трафарет, все равно фпс проваливается. я в пичали.
__________________
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
06.03.2015, 13:25
|
#832
|
Терабайт исходников
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений (для 6,051 пользователей)
|
Ответ: [TrueHorror] - разработка
хм, странно, в общем тут уже надо в PIXе смотреть детально что происходит.
ты левел собираешь из каких-то модулей (типа кусок пещеры прямой, кусок с поворотом) или просто полигоны тянешь? на основе модулей можно было бы автоматом порталы сгенерить.
|
(Offline)
|
|
06.03.2015, 14:35
|
#833
|
Дэвелопер
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений (для 1,540 пользователей)
|
Ответ: [TrueHorror] - разработка
Попробовал occlusion query. Результат порадовал, если свет(70 источников) загорожен стенкой, то фпс 130. Если эти же источники распределить в лабиринте ( чтоб все сразу не было видно ) то фпс в среднем 90, без оклюжена фпс 58. Я щитаю это вин.
upd. Проверил в игре, фпс не опускается ниже 100
Но без косяков никуда. Бывает такой момент, что сферка пролезает сквозь стену и соответственно на экране нет ее фрагментов и свет пропадает, что с этим делать я не знаю.
Код оклюжена такой:
gpDevice->SetRenderState( D3DRS_STENCILENABLE, FALSE );
gpDevice->SetRenderState( D3DRS_COLORWRITEENABLE, 0x00000000 );
gpDevice->SetRenderState( D3DRS_CULLMODE, D3DCULL_NONE );
for( auto pLight : g_pointLightList ) {
pLight->pQuery->Issue( D3DISSUE_BEGIN );
RenderSphere( pLight );
pLight->pQuery->Issue( D3DISSUE_END);
pLight->trulyVisible = false;
}
gpDevice->SetRenderState( D3DRS_COLORWRITEENABLE, 0xFFFFFFFF );
gpDevice->SetRenderState( D3DRS_STENCILENABLE, TRUE );
int count = g_pointLightList.size(), readyCount = 0;
do {
for( auto pLight : g_pointLightList ) {
DWORD pixelsVisible;
if( !pLight->trulyVisible ) {
if( pLight->pQuery->GetData( &pixelsVisible, sizeof( pixelsVisible ), D3DGETDATA_FLUSH ) == S_OK ) {
readyCount++;
if( pixelsVisible > 0 ) {
pLight->trulyVisible = true;
}
}
}
}
} while( readyCount < count );
Для каждого света свой IDirect3DQuery9
ты левел собираешь из каких-то модулей (типа кусок пещеры прямой, кусок с поворотом) или просто полигоны тянешь?
|
просто полигоны
__________________
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
06.03.2015, 15:44
|
#834
|
Терабайт исходников
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений (для 6,051 пользователей)
|
Ответ: [TrueHorror] - разработка
теперь попробуй резко за угол выскочить, лайты могут с опозданием появиться. чем ниже общий фпс, тем больше будет заметно.
|
(Offline)
|
|
06.03.2015, 15:50
|
#835
|
Дэвелопер
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений (для 1,540 пользователей)
|
Ответ: [TrueHorror] - разработка
теперь попробуй резко за угол выскочить, лайты могут с опозданием появиться.
|
есть такое.
я думаю сделать что-то типа кэширования видимости источников света. берем всю сцену в большой aabb этот aabb равномерно заполняем точками и в процессе игры для каждой точки будут запоминаться источники света которые видимы оклюженом. хз насколько это правильно, но нужно попробовать.
__________________
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
06.03.2015, 21:49
|
#836
|
Дэвелопер
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений (для 1,540 пользователей)
|
Ответ: [TrueHorror] - разработка
В общем сделал кэширование, работает хорошо. Опишу алгоритм:
При перемещении камеры строим ее путь - просто добавляем точки через равные промежутки, попутно проверяя наличие уже существующих точек рядом - таким образом на пути следования камеры образуется регулярная(с равным шагом ) сетка из точек, а заодно находим ближайшую существующую точку к камере. При рендере стартуем оклюжен, и при помощи него формируем список источников света видимых из данной точки. Есть одна очень досаждающая особенность оклюжена для света, если ограничивающая сфера пройдет сквозь стенку, то свет не отрисуется, потому что никакие фрагменты сферы не были отрисованы - решается это отрисовкой сферы 1/4 размера исходной.
Пробовал записать видео, но фрапс лочит фпс и поэтому производительность надо щупать самому. Код можно глянуть на гитхабе в DeferredRenderer.cpp и Camera.cpp
У меня средний фпс не опускается ниже 105 к\с( 2560х1440 ). без этого метода фпс иногда( когда много источников света в далеке за стеной ) проваливается до 57 к\с. Также убрана задержка оклюжена.
__________________
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо mr.DIMAS за это полезное сообщение:
|
|
08.03.2015, 03:12
|
#837
|
Дэвелопер
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений (для 1,540 пользователей)
|
Ответ: [TrueHorror] - разработка
А тем временем я пилю новый уровень с гермодверями и лабиринтами - канализация. АХТУНГ! На скринах нет графония, у вас может произойти кровавое слезотечение от следующих скриншотов .
Двери открываются кнопками на стене. По началу хотел сделать вентили( типа крутишь и дверь поднимается\опускается ), но словил нехилую попоболь с осями вращения вентилей, так что сделал кнопками.
__________________
|
(Offline)
|
|
Эти 6 пользователя(ей) сказали Спасибо mr.DIMAS за это полезное сообщение:
|
|
08.03.2015, 04:24
|
#838
|
Мастер
Регистрация: 12.01.2009
Сообщений: 980
Написано 389 полезных сообщений (для 632 пользователей)
|
Ответ: [TrueHorror] - разработка
Сообщение от mr.DIMAS
По началу хотел сделать вентили( типа крутишь и дверь поднимается\опускается ), но словил нехилую попоболь с осями вращения вентилей, так что сделал кнопками.
|
Ещё можно рычагами как у домкрата или инвалидной коляски.
|
(Offline)
|
|
08.03.2015, 06:50
|
#839
|
Гигант индустрии
Регистрация: 13.09.2008
Сообщений: 2,893
Написано 1,185 полезных сообщений (для 3,298 пользователей)
|
Ответ: [TrueHorror] - разработка
Твоя игра уже в сталкера/метро 2033 превращается.
|
(Offline)
|
|
08.03.2015, 07:46
|
#840
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,360
Написано 2,473 полезных сообщений (для 6,856 пользователей)
|
Ответ: [TrueHorror] - разработка
Сообщение от Nex
Твоя игра уже в сталкера/метро 2033 превращается.
|
Дак и хорошо же
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо Randomize за это полезное сообщение:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 19:15.
|