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/main.cu | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 src/main.cu (limited to 'src/main.cu') diff --git a/src/main.cu b/src/main.cu new file mode 100644 index 0000000..aa74a6c --- /dev/null +++ b/src/main.cu @@ -0,0 +1,58 @@ +#include +#include +#include +#include +#include +#include + +#include "kernel.cuh" + +int main() { + //bluuuuugh i'll figure out occupancy later, this res are easy + //calculated manually for gtx1060 with 20 SM, 1024 threads/SM + const int res_x = 32 * 20; + const int res_y = 32 * 20; + const dim3 blockCount(20, 20); + const dim3 threadCount(32, 32); + + uint8_t *image_d; + Color texture_data[res_x * res_y]; + SetTargetFPS(10); + + + //see if GPU is connected (my egpu is finicky) + { + int temp_device; + cudaError_t err; + if((err = cudaGetDevice(&temp_device)) != cudaSuccess) { + printf("failed to get device!\nError: %s\n", cudaGetErrorString(err)); + return(1); + } + } + + SetTraceLogLevel(LOG_ERROR); + InitWindow(res_x, res_y, "cuda teseteroni"); + + //TODO could probably cut out + Image image = GenImageColor(res_x, res_y, BLUE); + Texture tex = LoadTextureFromImage(image); + + while(!WindowShouldClose()) { + cudaError_t err; + //cuda stuff + cudaMalloc((void **)&image_d, res_x * res_y * sizeof(Color)); + render<<>>(image_d); + if((err = cudaGetLastError()) != cudaSuccess) { + printf("kernel did not launch! Error: %s\n", cudaGetErrorString(err)); + } + cudaDeviceSynchronize(); + cudaMemcpy(texture_data, (void **)image_d, res_x * res_y * sizeof(Color), cudaMemcpyDeviceToHost); + + BeginDrawing(); + UpdateTexture(tex, texture_data); + DrawTexture(tex, 0, 0, WHITE); + DrawFPS(0, 0); + EndDrawing(); + } + return 0; +} -- cgit v1.2.3