Войти
ПрограммированиеФорумГрафика

Непонимание шейдеров (2 стр)

Страницы: 1 2 3 4 Следующая »
#15
10:56, 10 фев. 2011

KpeHDeJIb
Всегда читал на этом форуме что шейдеры менять тяжелее всего.


#16
11:33, 10 фев. 2011

>Если менять шейдеры перед каждым ДИП-ом производительность ткнется в ноль....
Логично было бы предположить, что в таком случае это зависит от количества ДИПов ) их может быть 100, а может быть 100к )

#17
11:40, 10 фев. 2011

Всем огромное спасибо за очень дельные советы!

SNVampyre
> FFP лучше убрать совсем, потому что с ним код превратится в такую кашу, что в
> нём невозможно будет разобраться.
Да, он уже планомерно в нее превращается, но обязательно нужна поддержка старых видеокарт, которые про шейдеры даже в расширениях не слышали. Поэтому без него никуда :(

KpeHDeJIb
> Скорее всего ты что-то неправильно понял, даже к одной шейдерной программе
> можно приаттачить несколько шейдеров каждого типа, не говоря уже об
> использовании в программе нескольких шейдерных программ.
А можно сразу спросить, что даст такой подход (ну атачинг к одной шейдерной программе нескольких шейдеров) и для каких ситуаций его лучше использовать? Это так на будущее, вдруг пригодится )

innuendo
> А зачем при таком раскладе именно Кук ? Там разницы с Блинн-Фонгом не будет
> особой
Ну на этой картинке разница действительно не сильно видна, но есть рельефы на которой она хорошо заметна. Мне нужно сделать несколько моделей освещения для имитации различных материалов металла, пластика и т.д. И дать пользователю выбирать модель освещения и настраивать св-ва материала.

Sasha7b9
> Во-первых, несравнимо меньше, чем вызовы функций (кстати, производительность
> убивает даже команда nop, которая, как известно, ничего не делает).
> Во-вторых, очень редко можно предугадать, где "слабое место" в программе в
> плане производительности.
> Поэтому лучшее правило : преждевременная оптимизация - зло.
А как тогда оптимизировать шейдеры и находить в них слабые места? Просто опыта в их написании у меня практически нет, так что посмотреть и сразу увидеть что тормозит не получится. Есть ли какие-нибудь приемы оптимизации?

И можно сразу вопрос по терминологии: что такое вышеупомянутые ДИП-ы? Как то не очень понял о чем речь.

#18
11:48, 10 фев. 2011

pascal.ilya
> А как тогда оптимизировать шейдеры и находить в них слабые места?
Профайлеры использовать. Сам не пробовал измерять шейдеры, но по идее gDEBugger должен это уметь.

pascal.ilya
> И можно сразу вопрос по терминологии: что такое вышеупомянутые ДИП-ы? Как то не
> очень понял о чем речь.
DIP - это все что отрисовалось за один раз.

#19
11:50, 10 фев. 2011

DIP = Draw Indexed Primitive (вернее DrawIndexedPrimitive - название метода в DirectX, отвечающего непосредственно за рисование геометрии)

#20
11:54, 10 фев. 2011

pascal.ilya
> А как тогда оптимизировать шейдеры и находить в них слабые места?
Ну, я в этом вопросе не силён. Может, вот здесь есть:
http://ebdb.ru/Search.aspx?p=1&s=%D0%BE%D1%82%D0%BB%D0%B0%D0%… p;x=0&y=0
(там две книги должно быть - Борескова и Горнакова).

"Станислав Горнаков - Инструментальные средства программирования и отладки шейдеров в DirectX и OpenGL (+ CD-ROM)
Рассматриваются основы DirectX, показаны приемы работы с фиксированным и программируемым графическими конвейерами, дана информация по применению профайлера PIX for Windows, необходимого для отладки программ в DirectX, подробно представлена информация об и..."

Ну и, конечно, оптимизировать стОит только если тормозит. И желательно после того, как разработка программы будет ПОЛНОСТЬЮ закончена (исключение можно сделать, если тормоза мешают тестированию).

#21
12:02, 10 фев. 2011

pascal.ilya

в sdk вендоров nv,ati есть pdf про оптимизацию шейдеров - советую ознакомится

#22
12:14, 10 фев. 2011

Вот здесь что-то есть: http://developer.nvidia.com/object/gpu_programming_guide.html

#23
12:31, 10 фев. 2011

Можно ли в OpenGL как-нибудь устанавливать вершинные и фрагментные шейдеры по отдельности, как в Direct3D? Или только через объединение в программе? Если нельзя, то много ли времени занимает создание новой программы из готовых вершинного и фрагментного шейдеров? Ведь в DX этих объектов программ вообще нет.

#24
12:33, 10 фев. 2011

gammaker
> Можно ли в OpenGL как-нибудь устанавливать вершинные и фрагментные шейдеры по
> отдельности, как в Direct3D?

можно, нужно расширение http://www.opengl.org/registry/specs/EXT/separate_shader_objects.txt, но какой смысл так делать если приложение только под GL ?

#25
13:44, 10 фев. 2011

gammaker
> Если нельзя, то много ли времени занимает создание новой программу из готовых
> вершинного и фрагментного шейдеров?
По сравнению с временем компиляции шейдеров - нисколько.

#26
13:46, 10 фев. 2011

innuendo
> но какой смысл так делать если приложение только под GL ?
Ну вот писал я 7ой урок по пост-эффектам, а там один вершинный шейдер (рендер FS-quad) и 6 фрагментных (на каждый эффект), делал отдельные шейдерные программы на всех.

#27
13:47, 10 фев. 2011

-Eugene-
> По сравнению с временем компиляции шейдеров - нисколько.
Еще важно время линковки шейдеров, при больших объемах или при хитрых хаках оно может занимать какое-то время.

#28
13:57, 10 фев. 2011

KpeHDeJIb
> Ну вот писал я 7ой урок по пост-эффектам, а там один вершинный шейдер (рендер
> FS-quad) и 6 фрагментных (на каждый эффект), делал отдельные шейдерные
> программы на всех.

ну сделал ты - хорошо, а с обычной programObject было бы хуже чтоли ?

лично я вижу плюс такого использования как облегчение портирования кода с DX

это сейчас у тебя 2 - vs, ps.  а когда будет vs,ps,gs,es,ts - не запутаешся ? :)

#29
14:22, 10 фев. 2011

innuendo
> ну сделал ты - хорошо, а с обычной programObject было бы хуже чтоли ?
Так я и не делал отдельных шейдеров для программы, я сделал отдельную программу на каждый эффект со своей копией повторяющихся шейдеров.

Страницы: 1 2 3 4 Следующая »
ПрограммированиеФорумГрафика

Тема в архиве.