Форум Игромании

Форум Игромании (http://forum.igromania.ru/index.php)
-   Общеигровые вопросы (http://forum.igromania.ru/forumdisplay.php?f=75)
-   -   Оптимизация в играх, консоли и ПК (http://forum.igromania.ru/showthread.php?t=140737)

[CCCP] Monster 27.03.2016 13:04

lYXl, окей, давай посчитаем: в случае обычного инстансинга у нас получается количество drawCalls как количество уникальных объектов * количество лодов для каждого из двух типов возможных объектов в deferred shading (непрозрачных и прозрачных), для каждого рендер-таргета (в том числе тени и прочее), это умножить еще где-то на 4-8. Причем прозрачные и непрозрачные ты даже в forward-rendering все равно сортируешь, потому что, например, растения имеют попиксельную прозрачность, что заставляет перейти с Early-Z на Late-Z, и обратный переход, если ты вызовешь после листвы рендеринг чего-то непрозрачного, это вызовет GPU-stall пока все Late-Z процессы дальше по конвейеру не завершатся.

Но у нас количество самих объектов (например, деревьев), обычно сильно больше, чем всех этих draw-calls вместе взятых, и их надо отсечь из области видимости, поэтому самым тяжелым тут являются не вызовы отрисовки, а отсечение, и именно они делают большинство игр CPU-Bound. В таких случаях каллинг выводят на GPU, и поскольку данные уже оказываются там, использование indirect-вызовов как-то само собой подразумевается. А индиректы хороши тем, что минимизируют необходимый размер стейта для передачи в драйвер, и соответственно, занимают меньше времени.

Единственный оставшийся случай, когда сам по себе draw-call является очень медленным и потому приложение упирается в CPU, это когда у тебя DX9/XNA. Там да, даже с инстансингом все будет плохо.

lYXl 01.04.2016 16:16

Было бы интересно мнение по DX12 и Metal API. Или с выходом Vulkan они уже никому не будут нужны, кроме их же разработчиков? Что-нибудь удалось опробовать лично из перечисленных API?

lYXl 10.05.2016 00:12

Если кто не видел: https://vc.ru/p/unity-pics
Статья про то, как происходит отрисовка кадра на примере Unity.

VirtTrans 03.03.2017 15:59

Цитата:

Оптимизация
Забудьте это слово на ПК. Ваша оптимизация это новая видеокарта каждые 3-5 лет.

Zasranec 06.03.2017 23:01

Может немного не в тему, но недавно с удивлением обнаружил, что просадки fps были нормой и на 6-м поколении консолей (XBOX, PS2, GamuCube), хотя раньше как-то не обращал на это внимание. Особенно сильно в глаза бросились тормоза в первом KotOR на XBOX'е. Хотя тот же Doom 3 на нём (в принципе, как и Doom 3: Resurrection of Evil) идет очень даже неплохо. А Far Cry: Instincts - просто шикарно. Все-таки что ни говори - железо железом, а ровные руки у программистов решают.

кук 07.03.2017 01:09

Zasranec, на Деньди так же есть пачка игр с плохой оптимизацией, как например Contra force или Panic restoration и еще других. Так, что да, кривые руки всегда встречались.


Часовой пояс GMT +4, время: 07:06.

Powered by vBulletin® Version 3.8.0
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.