From b0dd97ee6bf8d5daa587da40ad941efac68152df Mon Sep 17 00:00:00 2001 From: brett weiland Date: Sat, 1 Jun 2024 01:36:18 -0500 Subject: got raycasting laid out --- src/common.cuh | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 src/common.cuh (limited to 'src/common.cuh') diff --git a/src/common.cuh b/src/common.cuh new file mode 100644 index 0000000..9e026f4 --- /dev/null +++ b/src/common.cuh @@ -0,0 +1,53 @@ +#ifndef COMMON_H +#define COMMON_H + +#include "include/helper_math.h" + +/** + +template class vect_t2; +template class vect3; +template class vect_t4; + +//this feels so hacky... idk why people are so scared of metaprogramming +template <> class vect_t2 { public: using vect_t = double2; }; +template <> class vect3 { public: using vect_t = double3; }; +template <> class vect_t4 { public: using vect_t = double4; }; + +template <> class vect_t2 { public: using vect_t = float2; }; +template <> class vect3 { public: using vect_t = float3; }; +template <> class vect_t4 { public: using vect_t = float4; }; + + +template __device__ T vect_create(X x); +template __device__ T vect_create(X x, Y y, Z z); + +//I have no fucking clue if this is right, check me later ig +template __device__ inline float3 vect_create(X x) { return make_float3(x); } + +template __device__ inline float3 vect_create(X x, Y y, Z z) { return make_float3(x, y, z); } +**/ + +/** I'm not sure weather float or double percision is nessesary. I was using +templates, but this changes the structure of my entire project in unwanted +ways, so I'm switching over to typedefs. **/ + +typedef float2 vect2; +typedef float3 vect3; +typedef float T; + +#define make_vect3(...) (make_float3(__VA_ARGS__)) + +//TODO move to color.cuh +typedef float3 Color; +#define make_color(...) (make_float3(__VA_ARGS__)) + +//TODO move to ray.cuh +struct Ray { + Color color; + vect3 start; + vect3 direction; //MUST BE A UNIT VECTOR + int bounces; +}; + +#endif -- cgit v1.2.3