Quest3D - Русскоязычное сообщество

Quest3D => Визуализация, Шейдеры => Тема начата: Sqwer от 24 Апреля 2009, 15:08:02



Название: [Графика]Как проверить скорость работы приложения? (Есть ответ)
Отправлено: Sqwer от 24 Апреля 2009, 15:08:02
HLSL

Как проверить скорость выполнения шейдера?
Существует ли  софт для этого?


Название: Re: Как проверить скорость шейдера
Отправлено: Viik от 24 Апреля 2009, 16:20:47
NvPerfHud, сайт нвидии раздел Developers.


Название: Re: Как проверить скорость шейдера
Отправлено: Viik от 24 Апреля 2009, 17:45:47
Забыл расказать, там прикол с запуском.
Перетаскиваеш откомпиленную екзешку на ярлык NVPerfHud, появиться окно выбора разрешения, ставиш вот такие настройки (разрешение естественно по выбоору):



Название: Re: Как проверить скорость шейдера
Отправлено: Sqwer от 25 Мая 2009, 21:14:09
Наконец-то дошли руки до шейдеров. Но , к сожалению,  данная программа NvPerfHud отказывается работать. Делаю как описано выше: компилю в экзешник, экзешник кидаю на ярлык. Появлятся на мгновение консольное окно ... и на этом всё.

Пробовал запускать и Intel® Graphics Performance Analyzers.
Тоже без результатов.


Название: Re: Как проверить скорость шейдера
Отправлено: Viik от 25 Мая 2009, 22:39:30
Утилитные дрова поставил?
Обязательно нужно компилить с дефолтовым Start3DScene - чтобы выводилось окно выбора разрешения и т.д.


Название: Re: Как проверить скорость работы приложения?
Отправлено: Sqwer от 26 Мая 2009, 15:34:23
Всё решилось переустановкой Винды.  ;D

Прога - супер, рекомендую всем.


После тестирования возник вопрос:
"почему рисуются (Draw Call) все шейдерные объекты, даже если они не попадают в область видимости ?"
Вроде как все объекты отсекает , а шейдерные нет.

Это нормально?, Или мы нашли "узкое" место Quest'а ?


Название: Re: Как проверить скорость шейдера
Отправлено: Viik от 26 Мая 2009, 17:54:14
фрустум куллинг работает, но чтобы он работал более менее правильно нужно чтобы пивот поин объекта стоял по центру объекта а не в нолях сцены. И нужно пересчитывать баундинг бокс ("Calculated Now" в 3д обжекте) если после импорта геометри подменялась.


Название: Re: Как проверить скорость шейдера
Отправлено: Den_ya от 26 Мая 2009, 20:54:05
у меня тоже получилось запустить эту программу,обьясните пожалуйста в каких целях ее можно применять и как с ней работать


Название: Re: Как проверить скорость шейдера
Отправлено: Sqwer от 27 Мая 2009, 11:30:35
Цитировать
каких целях ее можно применять
применять для контроля всех показателей рендеринга сцены:
вот вам и ФПС
вот вам и загруженность ЦПУ
вот вам и загруженность памяти видео карты
вот вам и время прорисовки каждого объекта сцены
вот вам и кол-во вызовов прорисовки объекта
вот вам и загруженность шейдерных конвееров
 и много другое

По данной проге можно оценить параметры сцены и узнать, где можно что-то увеличить (размер текстур, сложность шейда, нагруженность геометрией) без потери производительности. Или наоборот, узнать и далее устранить причину низкой производительности.

Цитировать
как с ней работать
оказалось очень просто:
запускаем ярлык, устанавливаем горяч клавиши, которые активируют/деактивируют управление PerfHud в приложении.

запускаем приложение с PerfHud, во время исполнения приложения нажимаем гор клавиши и рРАДУЕМСЯ. Оценка проводится активная и пофремовая.

Sorry for my bad Russian  


Название: Re: Как проверить скорость работы приложения? (Есть ответ)
Отправлено: Sqwer от 27 Мая 2009, 11:54:01
Основные факторы, влияющие на производительность:

Скорость заполнения и пиксельные шейдеры (Fill Rate & Pixel Shaders)
Для увеличения скорости заполнения следует сосредоточиться на уменьшении числа обрабатываемых пикселей. Для оптимизации работы следует попытаться:
- Сконфигурировать игру под меньшее разрешение.
- Уменьшить сложность пиксельных шейдеров.
- Использовать Z-Only проход для уменьшения пикселей, для которых исполняется шейдер.
- Перенести линейные вычисления в вершинные шейдеры.
- Ограничить использование эффектов требующих двухпроходной отрисовки.
- Использовать аппаратный тест буфера глубины (Z-test) для эффективного уменьшения числа пикселей, обсчитываемых шейдерами. Упорядочить список отрисовки так, чтобы объекты располагались от камеры в глубину сцены.
- Использовать проверку на загораживание (Occlusion Query). Такая проверка используется для определения числа потенциально видимых пикселей объекта при помощи рисования не самого объекта, а его ограничивающего объема. Если Occlusion Query возвращает ноль, это значит, что ни один пиксель ограничивающего объема, а значит, и самого объекта, не был виден, следовательно, объект можно не рисовать. Такая проверка максимально эффективна для сложных объектов с большим количеством вершин.

Вершинные шейдеры (Vertex Shaders)
Для оптимизации работы с геометрией следует попытаться:
- Уменьшить сложность вершинных шейдеров.
- По возможности, использовать triangle strips вместо списка треугольников и triangle fan.
- Использовать встроенные DXUT функции по оптимизации геометрии для увеличения эффективности кеша вершин.
- Использовать LOD для высокополигональных моделей.

Текстуры (Textures)
Для оптимизации работы с текстурами следует попытаться:
- Уменьшить использование текстур высокого разрешения.
- Использовать анизотропную фильтрацию только там, где она действительно нужна.
- Максимально использовать сжатые форматы текстур.
- Использовать FP (floating-point) текстуры только там, где это необходимо.
- Использовать FP текстуры с минимально возможной точностью и числом каналов.

Количество вызовов функций отрисовки и смены состояний
(DP Сalls & State Changes)
Большое количество вызовов отрисовки, смены состояний конвейера могут существенно замедлить работу приложения, поэтому следует:
- Использовать более оптимальный алгоритм проверки на видимость объектов в игровом движке.
- По возможности объединять геометрические объекты в один.
- Использовать инстансинг.
- Сортировать объекты по материалам, шейдерам для уменьшения числа смен стейтов графического конвейера.

Контроль задержек между графическими функциями (Inter Erg Stalls)
Важным аспектом оптимизации может стать уменьшение времени, которое программа проводит непосредственно между графическими вызовами. Следует контролировать количество изменений состояний DirectX (DirectX State Changes) и время изменения ресурсов (Index/Vertex Buffer Locks). В некоторых случаях GPU может оказаться недозагруженным.
Рассмотрите возможность использования CPU-ориентированных средств оптимизации (Intel® VTune™ Performance Analyzer, Intel® Parallel Studio) для уменьшения времени проводимого игрой на CPU.

Особенности GMA® X4500
- Использование uber шейдеров предпочтительнее многопроходного рисования.
- Уменьшение fill-rate является одной из основных стратегий оптимизации.
- Наиболее оптимальное количество примитивов в вызове рисования: 200-1K.
- Используйте максимально возможную версию шейдера (нет преимуществ по исполнению шейдеров ниже 2.0)
- Используйте шейдеры, а не FF конвейер.
- При использовании тумана используйте шейдерный туман (SM3.0).
- Шейдер компилируется при первом использовании, поэтому предпочтительнее загружать и использовать все шейдеры во время загрузки в невидимом буфере.
- Старайтесь использовать не более 32 констант в шейдере.
- Старайтесь минимизировать использование индексированных шейдерных констант.
- Минимизируйте число вызовов Clear(). Очищайте Z и Color в одно и тоже время (если очистка обоих буферов необходима).
- Теневые карты (Shadow Maps) более предпочтительны, чем теневые объемы (Stencil Shadows).


Название: Re: Как проверить скорость работы приложения? (Есть ответ)
Отправлено: Den_ya от 28 Мая 2009, 17:11:47
Sqwer спасибо за ответ,сейчас нет времени,у меня есть еще вопросы


Название: Re: Как проверить скорость работы приложения? (Есть ответ)
Отправлено: vap2008 от 16 Июня 2009, 11:08:32
 Перетаскиваю ЕХЕшник на ярлык NVIDIA PerfHUD 6,выбираю размер окна, запускается и по середине текст-This application is not configured to use PerfHUD.
 Это в PerfHUD проблемма,или ЕХЕ файл не такой???????????
 
 


Название: Re: Как проверить скорость работы приложения? (Есть ответ)
Отправлено: Viik от 16 Июня 2009, 12:04:32
Это нужно внимательней читать и смотерть на картинки в которых показано где что нужно нажимать.


Название: Re: Как проверить скорость работы приложения? (Есть ответ)
Отправлено: vap2008 от 16 Июня 2009, 13:17:27
 ВОТСПАСИБАТА
 Если ставлю внизу галочку,в окне выбора разрешения, у меня всё вылетает с ошибкой.


Название: Re: Как проверить скорость работы приложения? (Есть ответ)
Отправлено: Viik от 16 Июня 2009, 16:11:49
А с какой именно ошибкой? Тут как бы форум не телепатов.
Остальные настройки верно ставиш? Покажи скриншот.


Название: Re: Как проверить скорость работы приложения? (Есть ответ)
Отправлено: Sqwer от 17 Июня 2009, 09:24:54
Наверное как и чменя - не ставятся дополнительные дрова ПерфХада.

Лечится так: ставим новую винду, а потом пекет дров от Перф Хада (он ставит обычные дрова+ свои особые)
 
Возможно у меня был глюк с системой и Вам не потребуется переустановка винды. Достаточно будет удалить старые дрова.


Название: Re: Как проверить скорость работы приложения? (Есть ответ)
Отправлено: vap2008 от 17 Июня 2009, 09:43:08
А с какой именно ошибкой? Тут как бы форум не телепатов.
Остальные настройки верно ставиш? Покажи скриншот.
Перетаскиваю ЕХЕ на ярлык NVIDIA PerfHUD
Ставлю внизу галочку,запускаю-вылетает.
Если галочку не ставлю,приложение запускается,но в середине текст  This application is not configured to use PerfHUD.


Название: Re: Как проверить скорость работы приложения? (Есть ответ)
Отправлено: Viik от 17 Июня 2009, 18:12:19
В fullscreen запускай.


Название: Re: Как проверить скорость работы приложения? (Есть ответ)
Отправлено: vap2008 от 17 Июня 2009, 19:32:33
В fullscreen запускай.
  З А Р А Б О Т А Л О!!!!!!!
Спсибо! Теперь буду разбирать как штука работает.