yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
ad379b7c5
master
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}