#ifndef RAYTRACERC_H #define RAYTRACERC_H #include "pch.h" #include "Scene.h" class Raytracer { private: std::vector mCudaVBOs; std::vector mCudaEBOs; cudaGraphicsResource* mCudaTexture; Scene* mSc; unsigned int* mTex; OptixDeviceContext mOptixContext; CUcontext mCudaContext; OptixTraversableHandle mGas_handle; CUdeviceptr mD_gas_output_buffer; OptixPipeline mPipeline; public: Raytracer(Scene* sc, unsigned int* tex); void registerBuffers(); void buildGAS(); void setUpPrograms(); void launch(); const char* readPtxFile(size_t& ptxSize); static void context_log_cb(unsigned int level, const char* tag, const char* message, void* /*cbdata*/ ) { std::cerr << "[" << std::setw(2) << level << "][" << std::setw(12) << tag << "]: " << message << "\n"; } }; #endif