Having the OptiX/MetalRT/Embree/MetalRT implementations all in one file with many #ifdefs became too confusing. Instead split it up per device, and also move it together with device specific hit/filter/intersect functions and associated data types.
59 lines
2.2 KiB
C++
59 lines
2.2 KiB
C++
/* SPDX-License-Identifier: Apache-2.0
|
|
* Copyright 2019, NVIDIA Corporation.
|
|
* Copyright 2019-2022 Blender Foundation. */
|
|
|
|
// clang-format off
|
|
#include "kernel/device/optix/compat.h"
|
|
#include "kernel/device/optix/globals.h"
|
|
|
|
#include "kernel/device/gpu/image.h" /* Texture lookup uses normal CUDA intrinsics. */
|
|
|
|
#include "kernel/tables.h"
|
|
|
|
#include "kernel/integrator/state.h"
|
|
#include "kernel/integrator/state_flow.h"
|
|
#include "kernel/integrator/state_util.h"
|
|
|
|
#include "kernel/integrator/intersect_closest.h"
|
|
#include "kernel/integrator/intersect_shadow.h"
|
|
#include "kernel/integrator/intersect_subsurface.h"
|
|
#include "kernel/integrator/intersect_volume_stack.h"
|
|
// clang-format on
|
|
|
|
extern "C" __global__ void __raygen__kernel_optix_integrator_intersect_closest()
|
|
{
|
|
const int global_index = optixGetLaunchIndex().x;
|
|
const int path_index = (kernel_params.path_index_array) ?
|
|
kernel_params.path_index_array[global_index] :
|
|
global_index;
|
|
integrator_intersect_closest(nullptr, path_index, kernel_params.render_buffer);
|
|
}
|
|
|
|
extern "C" __global__ void __raygen__kernel_optix_integrator_intersect_shadow()
|
|
{
|
|
const int global_index = optixGetLaunchIndex().x;
|
|
const int path_index = (kernel_params.path_index_array) ?
|
|
kernel_params.path_index_array[global_index] :
|
|
global_index;
|
|
integrator_intersect_shadow(nullptr, path_index);
|
|
}
|
|
|
|
extern "C" __global__ void __raygen__kernel_optix_integrator_intersect_subsurface()
|
|
{
|
|
const int global_index = optixGetLaunchIndex().x;
|
|
const int path_index = (kernel_params.path_index_array) ?
|
|
kernel_params.path_index_array[global_index] :
|
|
global_index;
|
|
integrator_intersect_subsurface(nullptr, path_index);
|
|
}
|
|
|
|
extern "C" __global__ void __raygen__kernel_optix_integrator_intersect_volume_stack()
|
|
{
|
|
const int global_index = optixGetLaunchIndex().x;
|
|
const int path_index = (kernel_params.path_index_array) ?
|
|
kernel_params.path_index_array[global_index] :
|
|
global_index;
|
|
integrator_intersect_volume_stack(nullptr, path_index);
|
|
}
|
|
|