Учитывая, что патч мозаики с треугольниками, как изменить его новые позиции вершин?

Я создал тесселяционную плоскость с помощью треугольной тесселяции. Я хотел бы, чтобы каждый новый новый треугольник двигался вверх и вниз по оси y независимо от других.
Я хотел бы изменить их gl_Position для этого, либо в TES, либо в TCS, но все, что я получил до сих пор, — это заставить все примитивы двигаться одновременно.
Как я могу достичь своей цели?

Вот тесселяционная плоскость
[самолет]: https://ibb.co/jWRjvH «»

Вот мой TCS

#version 450 core

layout (vertices = 3) out;

// Input Block
in VS_OUT{
vec2 UV;
} tcs_in[];

// Output Block
out TCS_OUT{
vec2 UV;
} tcs_out[];void main()
{if(gl_InvocationID == 0)
{
gl_TessLevelInner[0] = 10.0;
gl_TessLevelOuter[0] = 10.0;
gl_TessLevelOuter[1] = 10.0;
gl_TessLevelOuter[2] = 10.0;
}
gl_out[gl_InvocationID].gl_Position=gl_in[gl_InvocationID].gl_Position;

tcs_out[gl_InvocationID].UV = tcs_in[gl_InvocationID].UV;
}

Вот мой тэс

#version 450 core

layout (triangles, equal_spacing, cw) in;

// Input Block
in TCS_OUT{
vec2 UV;
} tes_in[];

// Output Block
out TES_OUT{
vec2 UV;
} tes_out;void main()
{

gl_Position = (gl_TessCoord.x * gl_in[0].gl_Position +
gl_TessCoord.y * gl_in[1].gl_Position +
gl_TessCoord.z * gl_in[2].gl_Position);tes_out.UV = gl_TessCoord.x * tes_in[0].UV +
gl_TessCoord.y * tes_in[1].UV +
gl_TessCoord.z * tes_in[2].UV;

}
}

0

Решение

Я хотел бы, чтобы каждый новый новый треугольник двигался вверх и вниз по оси y независимо от других.

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

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

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]