yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
d8a8559a5
master
1//DISABLED_TEST:COMPARE_HLSL: -profile sm_5_1 -entry HS -stage hull -entry DS -stage domain 2 3// tests/render/tess.hlsl 4 5// -profile vs_5_1 -o my-shader.vs.dxbc -entry VS -profile ps_5_1 -o my-shader.ps.dxbc -entry PS 6 7struct IA_OUTPUT 8{ 9float3 cpoint : CPOINT ; 10}; 11 12struct VS_OUTPUT 13{ 14float3 cpoint : CPOINT ; 15}; 16 17struct HS_CONSTANT_OUTPUT 18{ 19float edges [ 2 ] : SV_TessFactor ; 20}; 21 22struct HS_OUTPUT 23{ 24float3 cpoint : CPOINT ; 25}; 26 27struct DS_OUTPUT 28{ 29float4 position : SV_Position ; 30}; 31 32VS_OUTPUT VS ( IA_OUTPUT input ) 33{ 34VS_OUTPUT output ; 35output . cpoint = input . cpoint ; 36return output ; 37} 38 39HS_CONSTANT_OUTPUT HSConst () 40{ 41HS_CONSTANT_OUTPUT output ; 42 43output . edges [ 0 ] = 1.0f ; // Detail factor 44output . edges [ 1 ] = 64.0f ; // Density factor 45 46return output ; 47} 48 49[ domain ( "isoline" )] 50[ partitioning ( "integer" )] 51[ outputtopology ( "line" )] 52[ outputcontrolpoints ( 4 )] 53[ maxtessfactor ( 16.0 )] 54[ patchconstantfunc ( "HSConst" )] 55HS_OUTPUT HS ( InputPatch < VS_OUTPUT , 4 > ip , uint id : SV_OutputControlPointID ) 56{ 57HS_OUTPUT output ; 58output . cpoint = ip [ id ]. cpoint ; 59return output ; 60} 61 62[ domain ( "isoline" )] 63DS_OUTPUT DS ( HS_CONSTANT_OUTPUT input , OutputPatch < HS_OUTPUT , 4 > op , float2 uv : SV_DomainLocation ) 64{ 65DS_OUTPUT output ; 66 67float t = uv . x ; 68 69float3 pos = pow ( 1.0f - t , 3.0f ) * op [ 0 ]. cpoint + 3.0f * pow ( 1.0f - t , 2.0f ) * t * op [ 1 ]. cpoint + 3.0f * ( 1.0f - t ) * pow ( t , 2.0f ) * op [ 2 ]. cpoint + pow ( t , 3.0f ) * op [ 3 ]. cpoint ; 70 71output . position = float4 ( pos , 1.0f ); 72 73return output ; 74} 75 76float4 PS ( DS_OUTPUT input ) : SV_Target0 77{ 78return float4 ( 0.0f , 0.0f , 0.0f , 1.0f ); 79}