yum-mirror/slang

Making it easier to work with shaders

git clone https://git.yummers.dev/yum-mirror/slang

Yong HeRewriting the lower-buffer-element-type pass to avoid unnecessary packing/unpacking. (#8526)a6deb5ed8

master
1.4 KiB36 linesraw
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}