From ed347e304d7a3ae30a07fbd65d5ba912f70eac88 Mon Sep 17 00:00:00 2001 From: Godzil Date: Wed, 26 Feb 2020 02:18:54 +0000 Subject: [PATCH] Quick (and dirty) change to be able to use OpenMP for rendering. --- source/CMakeLists.txt | 9 ++++++++- source/camera.cpp | 3 +++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index 268939d..4211899 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -1,4 +1,9 @@ # To simplify testing, the app is build in two passes, +option(USE_OPENMP "Build using OpenMP" OFF) + +if (USE_OPENMP) + find_package(OpenMP REQUIRED) +endif() # First most is build as a library add_library(rayonnement STATIC) @@ -11,7 +16,9 @@ file(GLOB RAY_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp ${CMAKE_CURRENT_SOURCE_D target_include_directories(rayonnement PUBLIC include pattern) target_sources(rayonnement PRIVATE ${RAY_HEADERS} ${RAY_SOURCES}) target_link_libraries(rayonnement LodePNG) - +if (USE_OPENMP) + target_link_libraries(rayonnement OpenMP::OpenMP_CXX) +endif() # Second we build the main executable add_executable(dorayme main.cpp) target_include_directories(rayonnement PUBLIC include ${LODEPNG_INCLUDE_FOLDER}) diff --git a/source/camera.cpp b/source/camera.cpp index b7ce660..7630d14 100644 --- a/source/camera.cpp +++ b/source/camera.cpp @@ -12,6 +12,8 @@ #include #include +#include + Camera::Camera(uint32_t hsize, uint32_t vsize, double fov) : verticalSize(vsize), horizontalSize(hsize), fieldOfView(fov) { double aspectRatio = (double)hsize / (double)vsize; @@ -62,6 +64,7 @@ Canvas Camera::render(World world, uint32_t depth) for(y = 0; y < this->verticalSize; y++) { + #pragma omp parallel for for(x = 0; x < this->horizontalSize; x++) { Ray r = this->rayForPixel(x, y);