Unity 6.3
0 онлайн 17 гостей 3 в системе
Вход

Particle System пользовательские потоки вершин во Встроенном Render Pipeline

Если вам удобно писать свои собственные шейдеры, вы можете использовать Модуль рендеринга’s Пользовательские потоки вершин функция для настройки систем частиц для передачи более широкого диапазона данных в ваши пользовательские шейдеры.

Есть ряд встроенных потоки данных На выбор есть такие параметры, как скорость, размер и центральное положение. Помимо возможности создания мощных пользовательских шейдеров, эти потоки позволяют получить ряд более общих преимуществ:

  • Используйте поток Tangent для поддержки обычных отображаемых частиц.
  • Вы можете удалить Цвет и затем добавить потоки Тангенс UV2 и AnimBlend для использования Standard Shader на частицах.
  • Чтобы легко выполнить линейное смешивание текстур флипбуков, добавьте потоки UV2 и AnimBlend и подключите Particles/Anim Alpha Blended Shader.

Также существуют два полностью настраиваемых потока данных по частицам (ParticleSystemVertexStreams.Custom1 и ParticleSystemVertexStreams.Custom2), которые могут быть заполнены из скрипта. Вызов SetCustomParticleData и GetCustomParticleData с вашим массивом данных для их использования. Существует два способа использования этого:

  • Для управления настраиваемым поведением в скриптах путем прикрепления собственных данных к частицам; например, прикрепление значения «здоровье» к каждой частице.
  • Чтобы передать эти данные в шейдер, добавив один из двух пользовательских потоков, так же, как вы отправляете любой другой поток в ваш шейдер (см. ParticleSystemRenderer.EnableVertexStreams). Развивая первый пример, возможно, ваш пользовательский атрибут здоровья теперь может также управлять каким-то визуальным эффектом, а также управлять логикой игры, основанной на скриптах.

При добавлении потоков вершин, Unity предоставит вам некоторую информацию в скобках, рядом с каждым элементом, чтобы помочь вам прочитать правильные данные в вашем шейдере:

  • Позиция (POSITION.xyz)
  • Нормальная (NORMAL.xyz)
  • Цвет (COLOR.xyzw)
  • UV (TEXCOORD0.xy)
  • UV2 (TEXCOORD0.zw)
  • AnimBlend (TEXCOORD1.x)

Каждый элемент в скобках соответствует входу Vertex Shader, который вы должны указать в вашем Shader. Здесь приведена правильная структура входа для этой конфигурации.

            struct appdata_t {
                float4 vertex : POSITION;
                float3 normal : NORMAL;
                fixed4 color : COLOR;
                float4 texcoords : TEXCOORD0;
                float texcoordBlend : TEXCOORD1;
            };

Обратите внимание, что UV и UV2 передаются в разных частях TEXCOORD0, так что мы используем одно объявление для обоих. Чтобы получить доступ к каждому из них в вашем шейдере, вы должны использовать swizzles xy и zw. Это позволяет вам эффективно упаковывать данные вершин.

Дополнительные ресурсы