Загрузка локаций там совсем не бешовная - при входе в подземелья и интерьеры возникает лоадер-бар - явно загружается отдельная сцена. Именно по рендерингу не видел ничего такого, что нельзя было бы сделать на Scriptable Pipeline. Но думаю что возможность купить сорцы у китайцев точно есть)), так что могли что-то и переписать
vertex точно медленнее, compute не помню, но вроде тоже. Там получается, что скорость зависит от количества вызова и вертексов и инстансов в DrawIndexedPrimitive(число_вершин_в_меше, число_инстансов_меша). Ну а геометрический шейдер "размножает" существующие вершины, числа в DrawIndexedPrimitive не увеличиваются
На DX8 инстансинга и чтения вершиннным шейдером структурных буферов нет. Это уж совсем старое железо, примерно 2001 год. Инстансинг это DX9 по крайней мере, структурные буферы DX10. Даже сейчас на мобилках, на Mali GPU не работают структурные буферы в OpenGL, в Vulkan правда работают
Ну официальные рекомендации предлагают использовать Compute Shaders. Ими можно в буфере вершин вместо одной вершины сделать несколько вершин, формирующих strip из треугольников. Либо можно использовать инстансинг, то есть в vertex-шейдер загнать буфер из вершин исходного меша и маленький буфер с мешем, которым мы будем рисовать по поверхности. В vertex-шейдере уже можно посчитать как исказить маленький меш, чтобы он был где нужно. Наверно такое описание не понятно, но это просто общий случай, слишком разные могут быть задачи - от рисования травинок на поверхности большого меша до рисования ребер. Да хоть извивающимися тентаклями можно всего персонажа покрыть)) Но, по моим тестам, по крайней мере на картах NVidia такой способ раза в 2 медленнее (при том же финальном количестве треугольников) чем шейдер геометрии
Да, еще есть Mesh и Task шейдеры, забыл про них написать в статье. Ими тоже можно было бы геометрию рисовать. Уже лет 7 как есть, но Unity их до сих пор не поддерживает
Да, согласен, я здесь специально не писал своих советов, это такой отстраненный обзор техник, даже в чем-то исторический.. Дальше будет интереснее, надеюсь :)
Обычно костная анимация занимает ну максимум процентов 5 от времени рендеринга кадра. Но если персонажей десятки или сотни, то да, нужно оптимизировать
Загрузка локаций там совсем не бешовная - при входе в подземелья и интерьеры возникает лоадер-бар - явно загружается отдельная сцена. Именно по рендерингу не видел ничего такого, что нельзя было бы сделать на Scriptable Pipeline. Но думаю что возможность купить сорцы у китайцев точно есть)), так что могли что-то и переписать
Ну минус не от меня был. Поставил плюс от себя, чтоб нейтрализовать..
vertex точно медленнее, compute не помню, но вроде тоже. Там получается, что скорость зависит от количества вызова и вертексов и инстансов в DrawIndexedPrimitive(число_вершин_в_меше, число_инстансов_меша). Ну а геометрический шейдер "размножает" существующие вершины, числа в DrawIndexedPrimitive не увеличиваются
На DX8 инстансинга и чтения вершиннным шейдером структурных буферов нет. Это уж совсем старое железо, примерно 2001 год. Инстансинг это DX9 по крайней мере, структурные буферы DX10. Даже сейчас на мобилках, на Mali GPU не работают структурные буферы в OpenGL, в Vulkan правда работают
Ну официальные рекомендации предлагают использовать Compute Shaders. Ими можно в буфере вершин вместо одной вершины сделать несколько вершин, формирующих strip из треугольников. Либо можно использовать инстансинг, то есть в vertex-шейдер загнать буфер из вершин исходного меша и маленький буфер с мешем, которым мы будем рисовать по поверхности. В vertex-шейдере уже можно посчитать как исказить маленький меш, чтобы он был где нужно. Наверно такое описание не понятно, но это просто общий случай, слишком разные могут быть задачи - от рисования травинок на поверхности большого меша до рисования ребер. Да хоть извивающимися тентаклями можно всего персонажа покрыть)) Но, по моим тестам, по крайней мере на картах NVidia такой способ раза в 2 медленнее (при том же финальном количестве треугольников) чем шейдер геометрии
Да, еще есть Mesh и Task шейдеры, забыл про них написать в статье. Ими тоже можно было бы геометрию рисовать. Уже лет 7 как есть, но Unity их до сих пор не поддерживает
Ну как бы где-то должен работать, но могут быть проблемы. Keijiro Takahashi, он разраб в Unity, писал что geometry shader is near-obsolete technology
Да, согласен, я здесь специально не писал своих советов, это такой отстраненный обзор техник, даже в чем-то исторический.. Дальше будет интереснее, надеюсь :)
Обычно костная анимация занимает ну максимум процентов 5 от времени рендеринга кадра. Но если персонажей десятки или сотни, то да, нужно оптимизировать