yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
a6deb5ed8
master
1// get-attribute-at-vertex.slang 2 3// Basic test for `GetAttributeAtVertex` function 4 5//TEST:SIMPLE(filecheck=CHECK-SPIRV):-target spirv -entry main -stage fragment -profile glsl_450+GL_EXT_fragment_shader_barycentric 6//TEST:SIMPLE(filecheck=CHECK-GLSL):-target glsl -entry main -stage fragment -profile glsl_450+GL_EXT_fragment_shader_barycentric 7 8// CHECK-SPIRV: OpCapability FragmentBarycentricKHR 9// CHECK-SPIRV: OpExtension "SPV_KHR_fragment_shader_barycentric" 10 11// CHECK-SPIRV: OpEntryPoint Fragment %main "main" 12 13// CHECK-SPIRV-DAG: OpDecorate %{{.*}} BuiltIn BaryCoordKHR 14 15// CHECK-SPIRV-DAG: OpDecorate %{{.*}} BuiltIn BaryCoordNoPerspKHR 16 17// CHECK-SPIRV: %{{.*}} = OpAccessChain %_ptr_Input_{{.*}} %{{.*}} %uint_0 18// CHECK-SPIRV: %{{.*}} = OpAccessChain %_ptr_Input_{{.*}} %{{.*}} %uint_1 19// CHECK-SPIRV: %{{.*}} = OpAccessChain %_ptr_Input_{{.*}} %{{.*}} %uint_2 20 21// CHECK-GLSL: #extension GL_EXT_fragment_shader_barycentric : require 22// CHECK-GLSL-DAG: gl_BaryCoordEXT 23// CHECK-GLSL-DAG: gl_BaryCoordNoPerspEXT 24 25[shader("fragment")] 26void main( 27 pervertex float4 color : COLOR, 28 float3 bary : SV_Barycentrics, 29 noperspective float3 baryNoPerspective : SV_Barycentrics, 30 out float4 result : SV_Target) 31{ 32 result = bary.x * GetAttributeAtVertex(color, 0) 33 + bary.y * GetAttributeAtVertex(color, 1) 34 + bary.z * GetAttributeAtVertex(color, 2) 35 + baryNoPerspective.x * 0.1f; 36}