• M
    Generalize GPU rendering path to run on both CPU and GPU (#125) · e90458fb
    Matt Pharr 提交于
    * Generalize GPU rendering path to run on both CPU and GPU
    
    Now we have a WavefrontIntegrator that can both run on the CPU (backed by
    ParallelFor() for parallelization and pbrt's aggregates for ray
    intersection acceleration) and on the GPU (backed by GPUParallelFor() for
    parallelization and OptiX for ray intersection on NVIDIA GPUs.)
    
    Beyond generalizing the code, this refactor allows CPU-side debugging and
    testing of the wavefront integrator.  Doing so allows further isolation of
    the GPU-specific code into a few source files, now just ~2.5k lines of code.
    
    This includes a bug fix in the wavefront medium code to resolve MixMaterials
    to one of their constituent materials before enqueuing material evaluation
    and shading work.
    
    Note that on the CPU, the wavefront integrator runs 5-10x more slowly than
    pbrt's regular CPU integrators, so it is not recommended for regular use...
    Co-authored-by: NWenzel Jakob <wenzel.jakob@epfl.ch>
    e90458fb
CMakeLists.txt 32.5 KB