Т.е. чем больше мешей без zбуффера пересекается в проекции камеры тем больше лагов?
|
http://gamedev.stackexchange.com/que...se-depth-testi
вкратце: ты рисуешь много объектов друг на друге, по идее каждый пиксель каждого объекта на экране должен быть нарисован - выходит что ты можешь отрисовать дофига пикселей впустую, которые потом закроются другими.
у збуфера есть оптимизация - если рисуемый пиксель объекта дальше по глубине чем то что уже в нём нарисовано, то не надо его рисовать и прогонять его шейдер.
поэтому если ты отсортируешь объекты от ближних к дальним, все загороженные пиксели им будут откинуты. ксорс вряд ли их сортирует (а может и сортирует), но даже при хаотичном порядке объектов часть пикселей всё же откинется.
если ты юзаешь альфатест/клип/дискард, то видюхе придётся все равно все шейдеры всех пикселей прогонять, чтобы узнать где альфа, как минимум нужно текстуры с этой альфой прочитать.
ну и если ты используешь альфаблендинг (альфу с полупрозрачностью), то движку необходимо рисовать объекты от дальних к ближним, так же как если бы ты клал полупрозрачные слои друг на друга в фотошопе - тут из принципа нельзя ничего откинуть, и это самое жестокое по производительности.
на твоём месте я бы склеивал в рантайме массивы травы сразу по дофига пучков в цельный меш и не лодил бы никак по сути (точнее просто вырубал видимость их совсем вдалеке). зато так будет один объект/меш/сюрфейс - один вызов отрисовки для видюхи вместо тысячи, это может заметно повлиять на скорость.