yum-mirror/slang

Making it easier to work with shaders

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

Jay KwakUpdate spirv-header and spirv-tools to Jun/2024 (#4679)ad379b7c5

master
2.5 KiB87 linesraw
1//TEST:SIMPLE(filecheck=CHECK_GLSL): -stage intersection -entry main -target glsl -allow-glsl 
2//TEST:SIMPLE(filecheck=CHECK_SPV): -stage intersection -entry main -target spirv-assembly -emit-spirv-directly -allow-glsl 
3
4layout(binding = 0) uniform accelerationStructureEXT as;
5
6//TEST_INPUT:ubuffer(data=[0], stride=4):out,name=outputBuffer
7buffer MyBlockName
8{ 
9    uint data[];
10} outputBuffer;
11
12//CHECK_GLSL-DAG: hitAttributeEXT
13//CHECK_SPV-DAG: HitAttribute{{NV|KHR}}
14hitAttributeEXT vec4 hitAttr;
15
16__generic<T : __BuiltinFloatingPointType, let N : int, let M : int>
17bool equals(matrix<T, N, M> lhs, matrix<T, N, M> rhs)
18{
19    for (int i = 0; i < N; i++)
20    {
21        for (int j = 0; j < M; j++)
22        {
23            if (
24                lhs[i][j] 
25                !=
26                rhs[i][j]
27                )
28            {
29                return false;
30            }
31        }
32    }
33    return true;
34}
35
36bool testVars() {
37    hitAttr = vec4(1);
38    
39    return true
40// CHECK_GLSL-DAG: gl_PrimitiveID
41// CHECK_SPV-DAG: PrimitiveId
42        && gl_PrimitiveID != 10000
43// CHECK_GLSL-DAG: gl_InstanceID
44// CHECK_SPV-DAG: InstanceId
45        && gl_InstanceID != 10000
46// CHECK_GLSL-DAG: gl_InstanceCustomIndexEXT
47// CHECK_SPV-DAG: InstanceCustomIndex{{NV|KHR}}
48        && gl_InstanceCustomIndexEXT != 10000
49// CHECK_GLSL-DAG: gl_GeometryIndexEXT
50// CHECK_SPV-DAG: RayGeometryIndexKHR
51        && gl_GeometryIndexEXT != 10000
52// CHECK_GLSL-DAG: gl_ObjectRayOriginEXT
53// CHECK_SPV-DAG: ObjectRayOrigin{{NV|KHR}}
54        && gl_ObjectRayOriginEXT != vec3(99)
55// CHECK_GLSL-DAG: gl_ObjectRayDirectionEXT
56// CHECK_SPV-DAG: ObjectRayDirection{{NV|KHR}}
57        && gl_ObjectRayDirectionEXT != vec3(99)
58// CHECK_GLSL-DAG: gl_ObjectToWorldEXT
59//COM: CHECK_SPV-DAG: ObjectToWorldNV
60        && !equals(gl_ObjectToWorldEXT, mat4x3(0.0f))
61// CHECK_GLSL-DAG: gl_ObjectToWorld3x4EXT
62//COM: CHECK_SPV-DAG: ObjectToWorldNV
63        && !equals(gl_ObjectToWorld3x4EXT, mat3x4(0.0f))
64// CHECK_GLSL-DAG: gl_WorldToObjectEXT
65// CHECK_SPV-DAG-N: WorldToObjectNV 
66        && !equals(gl_WorldToObjectEXT, mat4x3(0.0f))
67// CHECK_GLSL-DAG: gl_WorldToObject3x4EXT
68// spirv checked with CHECK_SPV-DAG-N
69        && !equals(gl_WorldToObject3x4EXT, mat3x4(0.0f))
70        ;
71}
72
73bool testFunctions() {
74    return true
75// CHECK_GLSL-DAG: reportIntersectionEXT
76// CHECK_SPV-DAG: OpReportIntersectionKHR
77        && reportIntersectionEXT(99, 0);
78}
79
80void main()
81{
82    outputBuffer.data[0] = true
83        && testVars()
84        && testFunctions();
85        ;
86    //BUF: 1
87}