1617a3babSopenharmony_cistruct S {
2617a3babSopenharmony_ci    float4 pos     : SV_Position;
3617a3babSopenharmony_ci    float2 clip0   : SV_ClipDistance0;  // clip0 and clip1 form an array of float[4] externally.
4617a3babSopenharmony_ci    float2 clip1   : SV_ClipDistance1;
5617a3babSopenharmony_ci};
6617a3babSopenharmony_ci
7617a3babSopenharmony_ci[maxvertexcount(3)]
8617a3babSopenharmony_civoid main(triangle in float4 pos[3] : SV_Position, 
9617a3babSopenharmony_ci          triangle in uint VertexID[3] : VertexID,
10617a3babSopenharmony_ci          inout LineStream<S> OutputStream,
11617a3babSopenharmony_ci          triangle in float4 clip[3] : SV_ClipDistance)   // externally: an array 3 of array 4 (not vec4!) of float.
12617a3babSopenharmony_ci{
13617a3babSopenharmony_ci    S s;
14617a3babSopenharmony_ci
15617a3babSopenharmony_ci    s.pos = pos[0];
16617a3babSopenharmony_ci    s.clip0 = clip[0].xy;
17617a3babSopenharmony_ci    s.clip1 = clip[0].zw;
18617a3babSopenharmony_ci
19617a3babSopenharmony_ci    OutputStream.Append(s);
20617a3babSopenharmony_ci}
21