31 #ifndef OPTIX_COMPILATION 32 #define OPTIX_COMPILATION 39 #include <vector_types.h> 50 FERMAT_HOST_DEVICE FERMAT_FORCEINLINE
53 FERMAT_HOST_DEVICE FERMAT_FORCEINLINE
54 Payload(
const float _t,
const int32 _tri_id,
const float _u,
const float _v,
const uint8 _mask)
57 set_triangle_id( _tri_id );
62 FERMAT_HOST_DEVICE FERMAT_FORCEINLINE
63 void set_t(
const float _t) { packed.x = __float_as_uint(_t); }
65 FERMAT_HOST_DEVICE FERMAT_FORCEINLINE
66 float t()
const {
return __uint_as_float(packed.x); }
68 FERMAT_HOST_DEVICE FERMAT_FORCEINLINE
69 void set_triangle_id(
const int32 _tri_id) { packed.y = uint32(_tri_id); }
71 FERMAT_HOST_DEVICE FERMAT_FORCEINLINE
72 int32 triangle_id()
const {
return int32(packed.y); }
74 FERMAT_HOST_DEVICE FERMAT_FORCEINLINE
75 void set_uv(
const float _u,
const float _v) { packed.z =
cugar::binary_cast<uint32>( __floats2half2_rn(_u,_v) ); }
77 FERMAT_HOST_DEVICE FERMAT_FORCEINLINE
78 float2 uv()
const {
return __half22float2( cugar::binary_cast<__half2>( packed.z ) ); }
80 FERMAT_HOST_DEVICE FERMAT_FORCEINLINE
81 float t(
const float _t) {
return __uint_as_float(packed.x); }
83 FERMAT_HOST_DEVICE FERMAT_FORCEINLINE
84 void set_mask(
const uint8 _mask) { packed.w = uint32(_mask); }
86 FERMAT_HOST_DEVICE FERMAT_FORCEINLINE
87 uint32 mask()
const {
return uint32(packed.w); }
89 FERMAT_HOST_DEVICE FERMAT_FORCEINLINE
92 return make_hit( t(), triangle_id(), uv().x, uv().y );
95 FERMAT_HOST_DEVICE FERMAT_FORCEINLINE
96 operator bool()
const {
return t() >= 0.0f; }
105 FERMAT_HOST_DEVICE FERMAT_FORCEINLINE
108 FERMAT_HOST_DEVICE FERMAT_FORCEINLINE
115 FERMAT_HOST_DEVICE FERMAT_FORCEINLINE
116 uint32 mask()
const {
return uint32(packed.x); }
118 FERMAT_HOST_DEVICE FERMAT_FORCEINLINE
119 void set_mask(
const uint8 _mask) { packed.x = _mask; }
121 FERMAT_HOST_DEVICE FERMAT_FORCEINLINE
122 void set_hit(
const bool _hit) { packed.y = _hit ? 1u : 0u; }
124 FERMAT_HOST_DEVICE FERMAT_FORCEINLINE
125 operator bool()
const {
return packed.y ? true :
false; }
Definition: optix_payload.h:46
Definition: optix_payload.h:101
CUGAR_FORCEINLINE CUGAR_HOST_DEVICE Out binary_cast(const In in)
Definition: types.h:288