yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
f5fae0108
master
1//TEST:SIMPLE(filecheck=CHECK): -target cuda -entry closestHitShader -stage closesthit 2//TEST:SIMPLE(filecheck=CHECK_PTX): -target ptx -entry closestHitShader -stage closesthit 3 4//CHECK: optixGetAttribute_0() 5//CHECK: __int_as_float(optixGetAttribute_1()) 6//CHECK: optixGetAttribute_2() 7//CHECK: __int_as_float(optixGetAttribute_3()) 8//CHECK: optixGetAttribute_4() 9//CHECK: __int_as_float(optixGetAttribute_5()) 10//CHECK: optixGetAttribute_6() 11//CHECK: __int_as_float(optixGetAttribute_7()) 12//CHECK_PTX: _optix_get_attribute_0 13//CHECK_PTX: _optix_get_attribute_1 14//CHECK_PTX: _optix_get_attribute_2 15//CHECK_PTX: _optix_get_attribute_3 16//CHECK_PTX: _optix_get_attribute_4 17//CHECK_PTX: _optix_get_attribute_5 18//CHECK_PTX: _optix_get_attribute_6 19//CHECK_PTX: _optix_get_attribute_7 20 21struct CustomIntersectionAttributes 22{ 23 uint attr0; // Will use index 0 - integer 24 float attr1; // Will use index 1 - float 25 uint attr2; // Will use index 2 - integer 26 float attr3; // Will use index 3 - float 27 int attr4; // Will use index 4 - integer 28 float attr5; // Will use index 5 - float 29 uint attr6; // Will use index 6 - integer 30 float attr7; // Will use index 7 - float 31}; 32 33struct RayPayload 34{ 35 uint uintValues[4]; 36 float floatValues[4]; 37}; 38 39[shader("closesthit")] 40void closestHitShader(inout RayPayload payload, in CustomIntersectionAttributes attr) 41{ 42 payload.uintValues[0] = attr.attr0; // optixGetAttribute_0() 43 payload.floatValues[0] = attr.attr1; // __int_as_float(optixGetAttribute_1()) 44 payload.uintValues[1] = attr.attr2; // optixGetAttribute_2() 45 payload.floatValues[1] = attr.attr3; // __int_as_float(optixGetAttribute_3()) 46 payload.uintValues[2] = uint(attr.attr4); // optixGetAttribute_4() 47 payload.floatValues[2] = attr.attr5; // __int_as_float(optixGetAttribute_5()) 48 payload.uintValues[3] = attr.attr6; // optixGetAttribute_6() 49 payload.floatValues[3] = attr.attr7; // __int_as_float(optixGetAttribute_7()) 50}