Рубрики
Examples "ShaderLab (CgFx,HLSL)" Mesh Unity vertex Треугольник

Шейдер «Построить Треугольник через 3 вершины меша»

CGINCLUDE

Ссылки к модулям cginc

#include "Name.cginc"

переменные

int x1;

структуры

struct geometryOutput
{
float4 pos : SV_POSITION;
float2 uv: TEXCOORD0;
};

простые функции

geometryOutput VertexOutput(float3 pos, float2 uv)
{
geometryOutput o;
o.pos = UnityObjectToClipPos(pos);
o.uv = x1 * uv;
return o;
}

[maxvertexcount(3)]
void geo(triangle geometryOutput IN[3] : SV_POSITION, inout TriangleStream<geometryOutput> OutputStream)
{
geometryOutput o;
float3 pos = IN[0].pos;
float x = x1;
OutputStream.Append(VertexOutput(float3(x, -x, 0), float2(1, 0)));
OutputStream.Append(VertexOutput(float3(-x, -x, 0), float2(1, 1)));
OutputStream.Append(VertexOutput(float3(-x, 0, 0), float2(0, 1)));
}

описание
[km_showhide]
[maxvertexcount(3)]
Он говорит GPU, что мы будем выводить не более 3 вершин
но не обязаны это делать

triangle geometryOutput IN[3]
в качестве ввода один треугольник
(состоящий из трёх точек)
[/km_showhide]

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *