Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 63 additions & 0 deletions reference/shaders-hlsl/tesc/basic.tesc
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
static uint gl_InvocationID;
static float gl_TessLevelOuter[4];
static float gl_TessLevelInner[2];
static float3 vtxColor[3];

struct SPIRV_Cross_Input
{
};

struct SPIRV_Cross_Output
{
float3 vtxColor : TEXCOORD0;
};

struct SPIRV_Cross_PatchConstant
{
float gl_TessLevelOuter[3] : SV_TessFactor;
float gl_TessLevelInner[1] : SV_InsideTessFactor;
};

void tesc_main()
{
float _18 = float(gl_InvocationID);
float3 _19 = _18.xxx;
vtxColor[gl_InvocationID] = _19;
}

void tesc_main_patch()
{
float _18 = float(gl_InvocationID);
float3 _19 = _18.xxx;
vtxColor[gl_InvocationID] = _19;
gl_TessLevelOuter[0] = 1.0f;
gl_TessLevelOuter[1] = 2.0f;
gl_TessLevelOuter[2] = 3.0f;
gl_TessLevelInner[0] = 4.0f;
}

[domain("tri")]
[partitioning("integer")]
[outputtopology("triangle_cw")]
[outputcontrolpoints(3)]
[patchconstantfunc("patch_constant")]
SPIRV_Cross_Output main(InputPatch<SPIRV_Cross_Input, 3> patch, uint uCPID : SV_OutputControlPointID)
{
gl_InvocationID = uCPID;
tesc_main();
SPIRV_Cross_Output stage_output;
stage_output.vtxColor = vtxColor[gl_InvocationID];
return stage_output;
}

SPIRV_Cross_PatchConstant patch_constant(InputPatch<SPIRV_Cross_Input, 3> patch)
{
gl_InvocationID = 0u;
tesc_main_patch();
SPIRV_Cross_PatchConstant patch_output;
patch_output.gl_TessLevelOuter[0] = gl_TessLevelOuter[0];
patch_output.gl_TessLevelOuter[1] = gl_TessLevelOuter[1];
patch_output.gl_TessLevelOuter[2] = gl_TessLevelOuter[2];
patch_output.gl_TessLevelInner[0] = gl_TessLevelInner[0];
return patch_output;
}
36 changes: 36 additions & 0 deletions reference/shaders-hlsl/tese/basic.tese
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
static float4 gl_Position;
static float3 gl_TessCoord;
static float3 outColor;

struct SPIRV_Cross_Input
{
};

struct SPIRV_Cross_Output
{
float3 outColor : TEXCOORD0;
float4 gl_Position : SV_Position;
};

struct SPIRV_Cross_PatchConstant
{
float gl_TessLevelOuter[3] : SV_TessFactor;
float gl_TessLevelInner[1] : SV_InsideTessFactor;
};

void tese_main()
{
gl_Position = float4(gl_TessCoord, 1.0f);
outColor = gl_TessCoord;
}

[domain("tri")]
SPIRV_Cross_Output main(SPIRV_Cross_PatchConstant pc, const OutputPatch<SPIRV_Cross_Input, 3> patch, float3 domain : SV_DomainLocation)
{
gl_TessCoord = domain;
tese_main();
SPIRV_Cross_Output stage_output;
stage_output.gl_Position = gl_Position;
stage_output.outColor = outColor;
return stage_output;
}
20 changes: 20 additions & 0 deletions shaders-hlsl/tesc/basic.tesc
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#version 450

layout(vertices = 3) out;

layout(location = 0) out vec3 vtxColor[];

void main()
{
vtxColor[gl_InvocationID] = vec3(float(gl_InvocationID));

barrier();

if (gl_InvocationID == 0)
{
gl_TessLevelOuter[0] = 1.0;
gl_TessLevelOuter[1] = 2.0;
gl_TessLevelOuter[2] = 3.0;
gl_TessLevelInner[0] = 4.0;
}
}
11 changes: 11 additions & 0 deletions shaders-hlsl/tese/basic.tese
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#version 450

layout(triangles, fractional_odd_spacing, cw) in;

layout(location = 0) out vec3 outColor;

void main()
{
gl_Position = vec4(gl_TessCoord, 1.0);
outColor = gl_TessCoord;
}
Loading
Loading