Это своего рода глупый вопрос, но я новичок в программировании шейдеров, поэтому, пожалуйста, со мной.
Я понимаю, что (по крайней мере, используя hlsl в .fx для проекта xna) каждый метод может иметь несколько проходов, и каждый проход связан с определенным состоянием устройства и его функцией вершин и пиксельных шейдеров. Теперь мой вопрос: учитывая, что проходы в технике выполняются один за другим, означает ли каждый проход полный проход через конвейер рендеринга? Для istance, если у меня есть методика с двумя проходами, корректно следующее утверждение: Первый проход принимает данные для приложения (VertexBuffer) и проходит по конвейеру, чем второй проход принимает то, что первый выплюнул и идет в другой раз по трубопроводу.HLSL Multi-pass
ответ
Обычно проходы независимы друг от друга. Все проходы будут использовать ту же входную геометрию (обычно определяемую буфером вершин). То, что они делают с этой геометрией, может варьироваться.
E.g. у вас может быть техника с двумя проходами. Первый проход рисует объект обычным способом. Второй проход не будет рисовать объект, а нормали - как маленькие линии. Результатом является объект с нормалями, представленными в виде строк.
Аналогично несколько проходов могут использоваться для широкого спектра эффектов, таких как мех, свечение, ореол ... Имейте в виду, что результат контура обычно является цветом. Если вы хотите использовать этот результат в качестве входных данных для другого шейдера, вам нужно переписать конвейер (т. Е. Установить новые входные объекты, шейдеры ...).
- 1. Shopify Multipass в Dev Shop
- 2. Multipass Войти в assistly.com с as3crypto
- 3. DirectX 9 HLSL против DirectX 10 HLSL: синтаксис такой же?
- 4. Управление эффектами HLSL
- 5. directcompute hlsl numthreads?
- 6. Реализация нормального сопоставления HLSL
- 7. XNA 2D Rotation HLSL
- 8. HLSL неожиданные экоса результат
- 9. HLSL мула() переменные разъяснения
- 10. Длина массива в HLSL?
- 11. Повторная текстура HLSL
- 12. Эффект скоса в HLSL
- 13. HLSL компиляция скорость
- 14. HLSL vertex shader
- 15. Алгоритм изменения оттенка HLSL
- 16. HLSL и ID3DXFont/ID3DXSprite
- 17. HLSL и DirectX
- 18. HLSL: Вырезать текстуры радиально
- 19. Hardcoding HLSL Shader
- 20. Способ установки константы HLSL
- 21. Зеркальное отражение в HLSL
- 22. глубины рендеринга в HLSL
- 23. Оптимизация шейдеров HLSL
- 24. Подсчет массива XNA HLSL
- 25. HLSL точки свет проблема
- 26. Real HLSL IDE/debugger
- 27. HLSL Swizzle - in C#
- 28. Компилятор HLSL оптимизирован странно?
- 29. HLSL Координаты системы ориентации
- 30. HLSL проекционный шейдер
Спасибо за ясный ответ, но теперь у меня есть сомнения: в чем разница в создании шейдера с двумя проходами вместо создания двух шейдеров только с одним? Это только для того, чтобы сохранить чистоту и дать ощущение связи с этим эффектом? – Geoffrey91
Да, это в основном суть. Большинство кодов для визуализации объекта включают нечто вроде 'для каждого прохода в технике {apply pass, render object}'. Это более читаемо, чтобы делать это так, а не каждый раз применять разные шейдеры. Кроме того, эта функциональность может быть инкапсулирована в методе. –