blob: 87bf2a81c0fe8f8cd774f36b12f4ea4d021f8e62 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
//TEST:SIMPLE:
// `HullShader` without `Domain` attribute
pipeline P
{
world CoarseVertex;
world ControlPoint;
world CornerPoint;
world TessPatch;
world FineVertex;
require @FineVertex vec4 RS_Position;
require @ControlPoint vec2 tessLevelInner;
require @ControlPoint vec4 tessLevelOuter;
// implicit import operator CoarseVertex->CornerPoint
extern @CornerPoint CoarseVertex[] CoarseVertex_ControlPoint;
[PerCornerIterator]
extern @CornerPoint int HS_CornerID;
extern @ControlPoint CoarseVertex[] CoarseVertex_ControlPoint;
extern @TessPatch CoarseVertex[] CoarseVertex_ControlPoint;
[InvocationId]
extern @ControlPoint int invocationId;
extern @FineVertex ControlPoint[] ControlPoint_tes;
extern @FineVertex Patch<TessPatch> perPatch_tes;
extern @FineVertex Patch<CornerPoint[3]> perCorner_tes;
[TessCoord]
extern @FineVertex vec3 tessCoord;
stage hs : HullShader
{
PatchWorld: TessPatch;
ControlPointWorld: ControlPoint;
CornerPointWorld: CornerPoint;
InputControlPointCount: 3;
ControlPointCount: 1;
// Domain: triangles;
TessLevelOuter: tessLevelOuter;
TessLevelInner: tessLevelInner;
Partitioning: integer;
OutputTopology: triangle_ccw;
}
}
shader S
targets P
{
@FineVertex float4 RS_Position = float4(0.0);
@ControlPoint float2 tessLevelInner = float2(2.0);
@ControlPoint float4 tessLevelOuter = float4(2.0);
}
|