Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Предоставление вершинных данных вершинным программам

Для Cg/HLSL вершинных программ СеткаОсновной графический примитив Unity. Меши составляют большую часть ваших 3D-миров. Unity поддерживает триангулированные или четырехугольные полигональные сетки. Поверхности Nurbs, Nurms, Subdiv должны быть преобразованы в полигоны. Подробнее
См. в Словарь
данные вершин передаются в качестве входных данных функции вершинного шейдера. Для каждого ввода должна быть указана семантика: например, ввод POSITION — это позиция вершины, а NORMAL — нормаль вершины.

Часто входные данные вершин объявляются в структуре, а не перечисляются по одному. Несколько часто используемых структур вершин определены в включаемом файле UnityCG.cginc, и в большинстве случаев достаточно просто их использовать. Структуры:

  • appdata_base: позиция, нормаль и одна координата текстуры.
  • appdata_tan: положение, касательная, нормаль и одна координата текстуры.
  • appdata_full: положение, касательная, нормаль, четыре координаты текстуры и цвет.

Пример. Этот шейдерпрограмма, работающая на графическом процессоре. Подробнее
См. в Словарь
окрашивает сетку на основе нормалей и использует appdata_base в качестве ввода вершинной программы:

Shader "VertexInputSimple" { SubShader { Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" struct v2f { float4 pos : SV_POSITION; fixed4 color : COLOR; }; v2f vert (appdata_base v) { v2f o; o.pos = UnityObjectToClipPos(v.vertex); o.color.xyz = v.normal * 0.5 + 0.5; o.color.w = 1.0; return o; } fixed4 frag (v2f i) : SV_Target { return i.color; } ENDCG } } }

Чтобы получить доступ к различным данным вершин, вам необходимо самостоятельно объявить структуру вершин или добавить входные параметры в вершинный шейдер. Данные вершин идентифицируются с помощью семантики Cg/HLSL и должны быть из следующего списка:

  • POSITION — позиция вершины, обычно float3 или float4. .
  • NORMAL – нормаль вершины, обычно float3.
  • TEXCOORD0 – первая координата UV, обычно float2, float3. или float4.
  • TEXCOORD1, TEXCOORD2 и TEXCOORD3 — 2-й, 3-й и 4-е UV-координаты соответственно.
  • КАСАТЕЛЬНЫЙ – это касательный вектор (используемый для сопоставления нормалей), обычно float4.
  • COLOR — цвет каждой вершины, обычно float4.

Когда данные меша содержат меньше компонентов, чем требуется входным данным вершинного шейдера, остальные заполняются нулями, за исключением компонента .w, значение которого по умолчанию равно 1. Для Например, координаты текстуры сетки часто представляют собой 2D-векторы только с компонентами x и y. Если вершинный шейдер объявляет ввод float4 с семантикой TEXCOORD0, значение, полученное < b>вершинный шейдерПрограмма, которая запускается для каждой вершины 3D-модели во время рендеринга модели. Подробнее
См. в Словарь
будет содержать (x,y,0,1).

Примеры использования этих методов для визуализации данных вершин во встроенном конвейере рендеринга см. в разделе Визуализация данных вершин.

Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
Руководство Unity 2021.3