hlsl.hull.ctrlpt-1.tesc 883 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. // ***
  2. // per-control-point invocation of PCF from entry point return value
  3. // ***
  4. struct hs_in_t
  5. {
  6. float3 val : TEXCOORD0;
  7. };
  8. struct hs_pcf_t
  9. {
  10. float tfactor[3] : SV_TessFactor; // must turn into a size 4 array in SPIR-V
  11. float flInFactor : SV_InsideTessFactor; // must turn into a size 2 array in SPIR-V
  12. };
  13. struct hs_out_t
  14. {
  15. float3 val : TEXCOORD0;
  16. };
  17. [ domain ("tri") ]
  18. [ partitioning ("fractional_odd") ]
  19. [ outputtopology ("triangle_cw") ]
  20. [ outputcontrolpoints (3) ]
  21. [ patchconstantfunc ( "PCF" ) ]
  22. hs_out_t main (InputPatch <hs_in_t, 3> i , uint cpid : SV_OutputControlPointID)
  23. {
  24. hs_out_t o;
  25. o.val = cpid;
  26. return o;
  27. }
  28. hs_pcf_t PCF( const OutputPatch <hs_out_t, 3> pcf_out)
  29. {
  30. hs_pcf_t o;
  31. o.tfactor[0] = pcf_out[0].val.x;
  32. o.tfactor[1] = pcf_out[1].val.x;
  33. o.tfactor[2] = pcf_out[2].val.x;
  34. o.flInFactor = 4;
  35. return o;
  36. }