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