Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Производительность при отрисовке геометрии. (2 стр)

Производительность при отрисовке геометрии. (2 стр)

Страницы: 1 2 3 49 Следующая »
MrShoorУчастникwww7 дек. 20180:48#15
san
> Только сначала скажи - ты сам замерял время отрисовки просто треугольников на
> разных картах или просто хочется пофлеймить?
Что значит замерял? У меня есть участки, где обработка треугольников - это ботлнек, и да, с видеокартами меняется производительность.
MrShoorУчастникwww7 дек. 20180:50#16
san
> Если я выложу полный график (а я просто вырезал все лишнее для экономии места
> на странице), то что по нему ты можешь сказать полезного?
Ты думаешь я тебя прошу сделать скрин лучше просто так чтоль?
Идеальный вариант был бы вообще *.etl выложить.
sanПостоялецwww7 дек. 20181:08#17
MrShoor
Да ради бога, но файл весит несколько мегов. И дело то не в тормозах, как я уже писал. Для AMD R9 600.000 вершин за 5 мс не такой плохой результат, но почему Titan V и Titan Xp не делают это за 1-2 мс, вот что странно.

Правка: 7 дек. 2018 1:21

sanПостоялецwww7 дек. 20181:20#18
MrShoor
Файл неплохо зажался, но все равно тянет на 108 мег. Вот тут лежит: http://www.sanbasestudio.com/tmp/test1.zip
/A\Постоялецwww7 дек. 20181:42#19
san
> У меня не самая сложная сцена - 200.000 треугольников.
Я на телефоне в VR до 500к треугольников в 60 фпс рисовал...
Возможно надо было использовать DX11, а то в DX12/Vulkan из-за неправильного использования можно сильно замедлить рендер.
sanПостоялецwww7 дек. 20182:02#20
/A\
> Возможно надо было использовать DX11, а то в DX12/Vulkan из-за неправильного использования можно сильно замедлить рендер.
Поздно что-то менять. Да и работаю с DX12 я уже давно, просто раньше кучу треугольников не выводил.
Но твой пример как-раз может говорить о том, что на любой карте отрисовка треугольников идет за то же самое время :)
У меня не 500к треугольников а 200к но и время не 16 мс а всего 5 (хоть на AMD хоть на Titan'e).
Шучу конечно, но пока я никакого внятного обьяснению не нахожу.
/A\Постоялецwww7 дек. 20182:09#21
san
> но и время не 16 мс
на мобилках жесткий vsync на 60фпс (на некоторых старых вообще 30фпс) и даже замеры времени показывают некорректные результаты, чтоб замерить точное время кадра нужен профайлер от вендора.
sanПостоялецwww7 дек. 20183:10#22
/A\
Ну раз в 60 фпс укладывался, значит было от 16 мс и ниже. По моей безумной теории должно быть 500/200 * 5мс = 12.5 мс. Осталось подтвердить экспериментально :)

Правка: 7 дек. 2018 3:14

SuslikМодераторwww7 дек. 20185:59#23
глупый вопрос, что показывает диспетчер задач по поводу загрузки CPU?
MrShoorУчастникwww7 дек. 20186:04#24
san
Судя по логам у тебя просто синхронизация в OculusDash.exe процессе:
fence | Производительность при отрисовке геометрии.
Оно тупо на Fence стоит. Вероятнее всего в окулусе это аналог VSync, только реализованный на уровне процесса OculusDash.exe
А твой процесс:
sleep | Производительность при отрисовке геометрии.
Тупо простаивает не нагружая CPU вообще никак. Видно многократный запас по CPU и по GPU.

Короче проблемы никакой нет.

Правка: 7 дек. 2018 6:05

sanПостоялецwww7 дек. 20186:14#25
Suslik
> глупый вопрос, что показывает диспетчер задач по поводу загрузки CPU?
Щас посмотрим... 2.4%. Не тут дело не в процессоре.
Есть у меня одно смутное подозрение:
Я всю геометрую (все 600.000 вертексов и индексов) засовываю в два очень больших буфера на видеокарте. Ну и индексация в нем разумеется 32 битная. Но может быть карты заточены на работу с отдельными сравнительно небольшими буферами, т.е. надо каждую модель совать в собственный ресурс с 16 битными индексами? Это надо проверить, но уже не сегодня, у меня на часах 22:15.
sanПостоялецwww7 дек. 20186:20#26
MrShoor
>Тупо простаивает не нагружая CPU вообще никак. Видно многократный запас по CPU и по GPU.
Я же все это показал еще в первом своем посте, не знаю что ты пытался еще выяснить.

> Короче проблемы никакой нет.
Я не проблему ищу, все работает. Я же обьяснял... Я пытаюсь понять логику, по которой разные видеокарты имеют одинаковую производительность при выводе большого массива треугольников. Не по фпсам, а по реальному времени выполнения. Но фпс тут тоже косвенно замешан, поскольку я вылезаю за 11 мс на любой карте, включая Titan V. Ну и фпс падает вдвое. Для такого поведения есть какая-то общая причина. Я уже ответил Суслику про мои подозрения. Завтра проверю.

Правка: 7 дек. 2018 6:44

MrShoorУчастникwww7 дек. 20186:42#27
san
> Я пытаюсь понять логику, по которой разные видеокарты имеют одинаковую производительность.
И? Да, имеют. Только ботлнек у тебя не производительность твоей карты. Время твоего рендера на R9 примерно 1 миллисекунда. Может чуть больше. Могло бы быть 1000FPS. Оно просто ждет на какой-то синхронизации. Наверняка это особенность окулуса.м Так что ты можешь спокойно в 10-20 раз сильнее нагрузить рендер, и фреймрейт не просядет.

wait | Производительность при отрисовке геометрии.


А на скрине в нульпосте ты привел не свой Device Context контекст, а какой-то левый, который ты видимо сам и не создавал. Этот второй контекст по всей видимости тоже стоит в синхронизации, скорее всего в каком-то memory barier-е. Т.е. GPU в это время не работает.
А твой контекст отличить легко, потому что в нем есть Present token packet.

Правка: 7 дек. 2018 6:43

sanПостоялецwww7 дек. 20186:59#28
MrShoor
> Время твоего рендера на R9 примерно 1 миллисекунда
Время рендера порядка 5 мс на каждый глаз. Надо смотреть не на CPU а на GPU. Смотри в самом вверху, там показана загрузка каждой из моих видеокарт. И ты еще меня обвинял в незнании GPUviewe... К R9 у меня поключен монитор, он же отбражает контрольное окно. А работа приложения идет на Титане V. Если ты посмотришь внимательно, то заметишь, что в компе стоят три видеокарты.

Правка: 7 дек. 2018 7:05

MrShoorУчастникwww7 дек. 20187:23#29
san
> Надо смотреть не на CPU а на GPU.
Так и смотри. Я тебе показал где твой Device Context, в котором ты рендеришь. Рендеришь ты там, где есть Present. Контекст у тебя такой один. На остальное смотреть не надо, потому что там может быть много ожиданий в синхронизациях, связанных с внутренней кухней драйверов, и из-за этого может казаться, что GPU долго работает, хотя по факту он не работает, а просто ждет. И собственно из-за того, что идет ожидание - время этого самого ожидания не меняется, вне зависимости от того, на какой ты видеокарте рендеришь.
Можешь запустить NSight, и посмотреть, сколько времени занимает непосредственно отрисовка. Там ты сможешь увидеть время каждого дравколла.

> И ты еще меня обвинял в незнании GPUviewe... К R9 у меня поключен монитор, он же отбражает контрольное окно.
Вот только GPUView не показывает на каком именно GPU ты рендеришь. Он просто показывает Device Context-ы без привязки к GPU.

Правка: 7 дек. 2018 7:24

Страницы: 1 2 3 49 Следующая »

/ Форум / Программирование игр / Графика

2001—2018 © GameDev.ru — Разработка игр