• Добро пожаловать на Quest3D - Русскоязычное сообщество.
 

Новости:

Форум Quest3D восстановлен!

Главное меню

[G] Мега оптимизация

Автор Sqwer, 05 июля 2009, 12:49:37

« назад - далее »

Viik

ЦитироватьЯ не знаю насколько часто применяются вертекс шейдеры изменяющие геометрию. Могут ли они стать тормозом для такого метода, их ведь надо будет применять в обоих проходах?
Даже если шейдер сложный, как скининг например, всеравно видяха его посчитает быстрее чем ЦПУ, поэтому тут особого выбора то и нет. Как бы могут, но на последних видяхах шейдера унифицированы на уровне железа, тобиш разгружая пиксельный шейдер легче будет дышать и вертексному.

ЦитироватьНе возникает ли проблем при отрисовке второго прохода из-за того, что глубина уже как-бы занята первым проходом. Т.е. видяха считает, что не нужно отрисовывать пиксели даже ближайшего объекта, ведь у них точно такая же глубина как у уже отрисованых? Хотя я бы попробовал уменьшить немного фар плейн для второго прохода.
На втором проходе делаеться только тест глубины, запись в буфер не делаеться. А видяха сама отсекает не прошедшие тест фрагменты еще до пиксельного шейдера. Есть ряд условий при которых автоматический кулинг работать не будет. Более подробно в GPU Programming guide 7xxx от Нвидии.

ЦитироватьНасколько данный способ оптимизации сравним с сортировкой объектов по расстоянию до камеры, есть ли смысл использовать сортировку, если используется рендер глубины?
Это разные вещи, сортировка в первую очередь нужна для блендинга полупрозрачной геометрии и кулинга на уровне боундинг боксов. Ничто не мешает использовать оба варианта сразу.

Sqwer

#16
И вновь проблемы:

При раздельном рендере полигонов  , находящихся на одной плоскости, возникает впечатление "запаздывания " результатов одного от другого. В итоге при изменении положения камеры появляется эффект наложения обного объекта на другой...

Viik подсказал рендить объекты прямиком через Chanel Caller, всё работает на ура. Но как быть с рендером в текстуру? И как в шедах указать параметры источников света, если они определяются в канале Render ?

По поводу первого: у нас есть вызов из бэк буфера, таким образом можно глубину закодировать 3 цвета RGB , а потом при надобнасти восстановить. Но это лишний гемор.., и скорее всего есть другой метод решения проблемы.

Пример возможности использования бэкбуфера прилагается 422

По поводу второго: в шейдер можно передать параметры напрямую через CHANNELVECTOR и CHANNELVALUE. Это тоже - гемор...

Исправлено ли это в Квесте версии 4.3.х ?

Viik

При раздельном рендере полигонов  , находящихся на одной плоскости, возникает впечатление "запаздывания " результатов одного от другого. В итоге при изменении положения камеры появляется эффект наложения обного объекта на другой...
Это из-за того что положение камеры считаеться несколько раз за один кадр, сколько раз вызываеться столько раз и пересчитываеться, сделай математику в ней принудидельно Ван Тайм.
Viik подсказал рендить объекты прямиком через Chanel Caller, всё работает на ура. Но как быть с рендером в текстуру? И как в шедах указать параметры источников света, если они определяются в канале Render ? Они "определяються" там где ты их вызываеш, Рендер ченел тут не нужен, просто в ченел коллере их вызывай и все.