HLSL: pass tessellation execution modes through to SPIR-V
The SPIR-V generator had assumed tessellation modes such as primitive type and vertex order would only appear in tess eval (domain) shaders. SPIR-V allows either, and HLSL allows and possibly requires them to be in the hull shader. This change: 1. Passes them through for either tessellation stage, and, 2. Does not set up defaults in the domain stage for HLSl compilation, to avoid conflicting definitions.
This commit is contained in:
parent
e752f463c5
commit
e741249b72
12 changed files with 476 additions and 13 deletions
32
Test/hlsl.domain.1.tese
Normal file
32
Test/hlsl.domain.1.tese
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
|
||||
struct ds_in_t
|
||||
{
|
||||
float4 pos : POSITION;
|
||||
float3 norm : TEXCOORD0;
|
||||
};
|
||||
|
||||
struct pcf_in_t
|
||||
{
|
||||
float flTessFactor [3] : SV_TessFactor;
|
||||
float flInsideTessFactor : SV_InsideTessFactor;
|
||||
};
|
||||
|
||||
struct gs_in_t
|
||||
{
|
||||
float4 pos : POSITION;
|
||||
float3 norm : TEXCOORD0;
|
||||
};
|
||||
|
||||
[domain ( "tri" )]
|
||||
gs_in_t main (const OutputPatch <ds_in_t, 3> i, float3 tesscoord : SV_DomainLocation, pcf_in_t pcf_data )
|
||||
{
|
||||
gs_in_t o;
|
||||
|
||||
o.pos = i[0].pos + tesscoord.x;
|
||||
o.norm = i[0].norm + tesscoord.y;
|
||||
|
||||
tesscoord.z;
|
||||
|
||||
return o;
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue