san
В помощь.
https://docs.blender.org/manual/en/latest/modeling/modifiers/gene… decimate.html
После применения требуется доработка напильником.
nonamezerox
Спасибо. В максе тоже есть нечто похожее. Интересно сколько времени у меня займёт обработка 1000 моделей с доработкой их "напильником"?... Мда...
Ладно, пока оставлю эту работу "на потом". Моя рабочая карта справляется но перед релизом видимо придется посидеть неделю гробя глаза.
san
Так я же предлагал делать иерархически, бить город на несколько групп зданий, причем в твоем случае начинать проверку с AABB целого города, затем уже группы, и только потом здания (хотя если они меньше 1000 вершин, то наверное не стоит).
san
Слабовато для простого пиксельного шейдера. У тебя точно в вершинном ничего кроме умножения вектора на матрицу нет?
Я тут скачал Amazon Bistro (чуть больше 2,8 миллиона треугольников), загрузил в свой рендер - менее 0,5 мс в FullHD (там тоже простой рендер, пишет в 2x32bit рендертаргета + 32bit глубина). У меня, конечно, 2080 Super, но не может же она быть в 20 раз быстрее.
Но вообще все равно лучше про лоды подумать, так как даже если ты отрисуешь весь город за адекватный тайминг, то, смотря на него целиком, ты наверняка будешь видеть вдалеке маленькие треугольники, которые дадут алиазинг/артефакты при движении камеры.
phridrich
>Слабовато для простого пиксельного шейдера.
Время работы пиксельного шейдера не зависит от количества вертексов а зависит от площади рендер таргета (числа ПИКСЕЛЕЙ). Поскольку у меня картинки идентичные что без отбраковки фрустумом, что с отбраковкой (т.е. число пикселей которые обрабатывает пиксельный шейдер одинаковы), то изменение времени зависит только от количества поданных ВЕРТЕКСОВ, т.е. от работы вертексного шейдера, точнее пейплайна ДО пиксельного шейдер. Для 99% полигонов пиксельный шейдер просто не вызывается.
>У тебя точно в вершинном ничего кроме умножения вектора на матрицу нет?
Да. Но вызывать то его нужно, и проверять глубину (т.е. делать отбраковку) тоже. Это не внутри моего шейдера, но пейплайн то все равно работает.
>У меня, конечно, 2080 Super, но не может же она быть в 20 раз быстрее.
А как ты время измерял? В принципе я не удивлюсь если и так, только не в 20 а в 10 (у меня >5М тр.). Потом чем ты рендерил? Движки же на CPU проверяют что выводить. Надо посмотреть сколько у меня получается на Titan V.
san
> Время работы пиксельного шейдера не зависит от количества вертексов а зависит от площади рендер таргета (числа ПИКСЕЛЕЙ).
Да зависит (от количества полигонов и их расположения на экране), тебе ведь не только я об этом писал. Зачем люди придумали deferred rendering по-твоему? Ну или скинь пруф, интересно почитать.
> Да. Но вызывать то его нужно, и проверять глубину (т.е. делать отбраковку) тоже. Это не внутри моего шейдера, но пейплайн то все равно работает.
Ну так у меня тоже все это делается. За 0,5 мс.
> А как ты время измерял?
> Потом чем ты рендерил?
Рендер на DirectX 12, все растеризируется один ExecuteIndirect'ом (но внутри дроуколлов много). Время - GPU'шное, мерял Timestamp Query'ми.
Если у тебя рендер на DX9, то вопрос снят конечно, но у тебя же вроде тоже было толи DX12, толи Vulkan?
> (у меня >5М тр.)
Вроде тут писал, что 3 миллиона. Ну пусть в 10 раз, но это все равно слишком много. Беглый поиск бенчмарков показывает примерно троекратный разрыв.
phridrich
> Да зависит (от количества полигонов и их расположения на экране)
Зависит, но это можно свести почти к нулю. Если глубина выводимого пикселя больше чем значение буфера глубины то пиксельный шейдер не вызывается. Т.е. некоторый оверхед получается только из-за порядка отрисовки, например если постоянно выводить треугольники начиная с самых дальних, то пиксельному шейдеру придется делать кучу бессмысленной работы (впрочем иногда без этого не обойтись - например если в сцене есть много прозрачных предметов). В моем случае нужно выводить все начиная с ближних обьектов и тогда зависимости от количества полигонов на пиксельном уровне почти не будет, но я только сейчас сообразил, что я эту опцию отключил когда тестировал. Так что возможно еще не все так плохо.
>Ну пусть в 10 раз, но это все равно слишком много. Беглый поиск бенчмарков показывает примерно троекратный разрыв.
Не забывай про размеры памяти и кеша. В R9 только 4 гига памяти. Я пока так и не проверил на Титане, он в режиме float примерно как 2080Ti. Сравнивая чистую производительность компьют-шейдера я получил разницу между Titan'ом и R9 около 5 раз. Если добавить кеш то наверно может и 10 получиться.
Картинка сейчас выглядит так:
а 4-5 кк поликов в кадре при сносном фпс не ниже 60 это норм для движка с более чем 10-летней историей?
Тема в архиве.