?

Log in

No account? Create an account
30 авг, 2006 @ 15:34 Вопрос по оптимизации

Дошла пора до оптимизации, вследствии чего возник вопрос - как лучше делать.
Пока есть 3 варианта.

1) Выставляем все текстуры и буфера модели, рисуем глубину, рисуем тот же объект для всех источников освещения(плюсы - Лампочек может быть сколь угодно много, но выставление текстур и буферов происходит только один раз для модели, а не для каждого прохода)

2) Рисуем глубину для всей сцены, после - начинаем рисовать ppl проходы для каждого объекта(плюсы - удобство в реализации.)

3) Рисуем глубину для всей сцены, сортируем все модели по шейдерам, дальше отрисовываем всю сцену с минимилизацией смены шейдеров(плюсы - сокращение кол-ва биндов шейдеров, но при этом увеличиться объем SetTextureCall, SetVertexBufferCall, etc)

Какой вариант выбрать? Или есть более оптимальные решения?

P.S. В среднем на модель: ~ 2-3 источника света. ~ 3-5 текстуры. Всего типов шейдеров ~8

haruko
timai:
[User Picture Icon]
From:sim0nsays
Date:Август, 31, 2006 06:08 (UTC)
(Ссылка)
Во-первых, depth pass как таковой нужно делать целиком до второго, иначе теряется основной пойнт.
Т.е. в любом случае получается, что нужно сначала все рисовать в depth, а потом все в color.
Далее, нынешние приоритеты выглядят так (в порядке удешевления):
- Vertex/Pixel Shader, Vertex Declaration
- Texture
- Vertex/Index Buffers
Отметим, что для depth-прохода шейдеров гораздо меньше, чем для основного.
Именно по этим критериям и надо сортировать каждый из render pass.

Поэтому скорее всего вариант 3 наилучший.
(Ответить) (Ветвь дискуссии)