Войти
ПрограммированиеФорумГрафика

Suslik против Global Illumination (10 стр)

Страницы: 19 10 11 1216 Следующая »
#135

eDmk
> Во как CPU жарит.
> https://www.youtube.com/watch?v=ianMNs12ITc
в этом нет ничего хорошего, так как эти же алгоритмы на GPU ложатся очень плохо, а их пиковая мощность, вообще говоря, несравнимо выше. железо используется неоптимально, а как его использовать оптимально, никто не знает.

14 авг. 2017

#136

Везде засада, вообщем (

14 авг. 2017

#137

Уже давно пора заставить AMD\NVIDIA делать спец. блоки на GPU которые будут считать тени\отражения и SSAO.
Все равно алгоритмы у всех однотипные.
А то как в каменном веке, надо самому код на березе выбивать :)

14 авг. 2017

#138

ronniko
> блоки на GPU которые будут считать тени\отражения и SSAO
FPP?

14 авг. 2017

#139
FPP?
+ Показать

14 авг. 2017 (Правка: 17:54)

#140

кстати, Suslik, хоть я тебя тогда и неправильно понял, но оно меня натолкнуло на оптимизацию SSAO. я попробовал делать репроекцию предыдущего буфера SSAO на каждый второй кадр, из-за чего добился более высокой производительности, а следовательно и clamp на краях изображения стал почти незаметен. могу предположить, что на более мощном железе твой GI будет зрелищней в динамике, ибо в большей степени тут временные артефакты

21 авг. 2017

#141

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

22 авг. 2017

#142

Suslik
> я предпочитаю разрабатывать рендер на среднестатистической машине или даже ниже
> по спекам
В идеале надо иметь как слабое железо, так и сильное. Иначе легко можно упереться в CPU при более сильном GPU, и геймер с топовым железом (какой-нибудь GTX 1080ti) будет видеть все те же 30 фпс, которые видел ты, разрабатывая на слабеньком железе.

22 авг. 2017

#143

MrShoor
> В идеале надо иметь как слабое железо, так и сильное. Иначе легко можно
> упереться в CPU при более сильном GPU, и геймер с топовым железом (какой-нибудь
> GTX 1080ti) будет видеть все те же 30 фпс, которые видел ты, разрабатывая на
> слабеньком железе.
у меня как бы профайлер есть, чтобы GPU и CPU тайминги раздельно мерить. и фпс даже на моём слабом железе не должен падать ниже 60.

22 авг. 2017

#144

Suslik
> у меня как бы профайлер есть, чтобы GPU и CPU тайминги раздельно мерить
Ну у меня как бы тоже, но несмотря на это я умудрялся наступать несколько раз уже на подобные нюансы.
Заглянул сейчас кстати в ваш PoE. То, что ботлнек не CPU даже на моей 980 - зачет. Дает 120 кадров в секудну, но блин... вы три фрейма накапливаете:
poe | Suslik против Global Illumination
Прям вот очень очень стоит заглянуть сюда:
https://habrahabr.ru/post/308980/
и сделать хотя бы IDXGIDevice1::SetMaximumFrameLatency(1)

22 авг. 2017

#145

MrShoor
> вы три фрейма накапливаете
включи vsync, кадр в очереди будет всегда один.

22 авг. 2017 (Правка: 9:01)

#146

Suslik
> включи vsync, кадр в очереди будет всегда один.
На моем GPU да, будет один. Но только потому что моя видеокарта не выдаст на PoE меньше 60 FPS. Но если FPS просядет хотя бы до 59, то очень быстро эти три кадра накопятся. Вот тебе даже пруф:
vsync | Suslik против Global Illumination
Я включил VSync и дал параллельную нагрузочку на GPU так, чтобы фпс просел до 40 кадров... и получил 3 кадра в очереди.

22 авг. 2017

#147
я предпочитаю разрабатывать рендер на среднестатистической машине

что ты подразумеваешь под среднестатистическими? средний геймерский ПК на данный момент это около 8 гигов ОЗУ, процессор из разряда i3-i5, и 2-ух гиговая видеокарта с околоконсольной производительностью (PS4), типа моей  r7 360, и всё это в разрешении 1920x1080. но это еще свит дримс. в СНГ минимум 50% это ведра с 2-4 гиг.памяти, видеокартами с пассивным охлаждением и иногда без поддержки DX11 + квадратные мониторы. лет 5 назад на них можно было поиграть в новейшие графически продвинутые ААА- игры в маленьком окошке с 30 кадрами на минималках. ну и так как на то время выпала эпоха активного перехода на отложенное освещение и всякие скринспейсные эффекты, что с одной стороны лишило сглаживания MSAA, а без него без суперсемплинга будет либо мыло, либо лесенки, с другой - стало съедать видеопамять не в пользу текстур, из-за чего игроки наблюдали только их low-копии и ругали за мыло еще и текстур.

лично у меня вся MRT-канитель устроена так:

  //Карты теней
  create_render_texture(int(SHADOWS_MAPS_SIZE), int(SHADOWS_MAPS_SIZE), 0, DXGI_FORMAT_R32_FLOAT);
        create_render_texture(int(SHADOWS_MAPS_SIZE), int(SHADOWS_MAPS_SIZE), 1, DXGI_FORMAT_R32_FLOAT);

  //Промежуточный буфер 
  create_render_texture(mrt__width, mrt__height, 3, DXGI_FORMAT_R8G8B8A8_UNORM);
  //Bloom
  create_render_texture(mrt__width/4, mrt__height/4, 4, DXGI_FORMAT_R8G8B8A8_UNORM);
  //Размытие теней
  create_render_texture(mrt__width,mrt__height, 5, DXGI_FORMAT_R8G8B8A8_UNORM);

  //SE - тени
  create_render_texture(mrt__width, mrt__height, 6, DXGI_FORMAT_R8G8B8A8_UNORM); //Shadows render

  //SSAO
  create_render_texture(mrt__width, mrt__height, 15, DXGI_FORMAT_R8_UNORM); //ssao
  create_render_texture(mrt__width, mrt__height, 20, DXGI_FORMAT_R8_UNORM); //SSAO blur


  //SSS
  create_render_texture(mrt__width, mrt__height, 16, DXGI_FORMAT_R8G8B8A8_UNORM); 
  create_render_texture(mrt__width, mrt__height, 17, DXGI_FORMAT_R8G8B8A8_UNORM); 

  //SSLR
  create_render_texture(mrt__width, mrt__height, 23, DXGI_FORMAT_R8G8B8A8_UNORM); //SSLR

   //Основная Геометрия
  create_render_texture(mrt__width, mrt__height, 24, DXGI_FORMAT_R16G16B16A16_FLOAT ); //Normal
  create_render_texture(mrt__width, mrt__height, 25, DXGI_FORMAT_R8G8B8A8_UNORM);  //DIFF
  create_render_texture(mrt__width, mrt__height, 26, DXGI_FORMAT_R8G8B8A8_UNORM);  //MATHERIAL
  create_render_texture(mrt__width, mrt__height, 27, DXGI_FORMAT_R32_FLOAT); //Depth
  create_render_texture(mrt__width, mrt__height, 28, DXGI_FORMAT_R8G8B8A8_UNORM);  //MATHERIAL #2
  create_render_texture(mrt__width, mrt__height, 29, DXGI_FORMAT_R8G8B8A8_UNORM);  //SS


  //Alpha (30-45 mrt)
  int alpha_slot = 0;

  for (int l = 0; l < 4; l ++)
  {
  create_render_texture(mrt__width, mrt__height, 30 + alpha_slot, DXGI_FORMAT_R8G8B8A8_UNORM);      //Diffuse A#1
  create_render_texture(mrt__width, mrt__height, 31 + alpha_slot, DXGI_FORMAT_R32_FLOAT);        //Depth A#1
  create_render_texture(mrt__width, mrt__height, 32 + alpha_slot, DXGI_FORMAT_R16G16B16A16_FLOAT ); //Normal A#1
  create_render_texture(mrt__width, mrt__height, 33 + alpha_slot, DXGI_FORMAT_R8G8B8A8_UNORM);      //Matherial A#1

  alpha_slot = l * 4;
  }

  //Отложенный расчет
  create_render_texture(int (mrt__width), mrt__height, 46, DXGI_FORMAT_R8G8B8A8_UNORM); 
  create_render_texture(int (window_width), int(window_height), 47, DXGI_FORMAT_R8G8B8A8_UNORM); //Предыдущий кадр

  //picing
  create_render_texture(int (window_width), int(window_height), 48, DXGI_FORMAT_R32_FLOAT); 

  //combine alpha
  create_render_texture(mrt__width, mrt__height, 50, DXGI_FORMAT_R8G8B8A8_UNORM); 


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

22 авг. 2017

#148

Berns
> либо лесенки
как будто это что-то плохое, чёткость жи.
Berns
> и ругали за мыло еще и текстур.
и правильно делали. Добавили мыльца, из-за которого стало тормозить, притом даже с чёткими текстурами все эти пост эффекты - мыльцо.

22 авг. 2017

#149
а уменя Clear Sky на GTX 980 тормозит)

22 авг. 2017

Страницы: 19 10 11 1216 Следующая »
ПрограммированиеФорумГрафика