22 PG_RGEN_INTERSECT_CLOSEST,
23 PG_RGEN_INTERSECT_SHADOW,
24 PG_RGEN_INTERSECT_SUBSURFACE,
25 PG_RGEN_INTERSECT_VOLUME_STACK,
26 PG_RGEN_SHADE_SURFACE_RAYTRACE,
27 PG_RGEN_SHADE_SURFACE_MNEE,
42 static const int MISS_PROGRAM_GROUP_OFFSET = PG_MISS;
43 static const int NUM_MIS_PROGRAM_GROUPS = 1;
44 static const int HIT_PROGAM_GROUP_OFFSET = PG_HITD;
45 static const int NUM_HIT_PROGRAM_GROUPS = 8;
46 static const int CALLABLE_PROGRAM_GROUPS_BASE = PG_CALL_SVM_AO;
47 static const int NUM_CALLABLE_PROGRAM_GROUPS = 2;
50 enum { PIP_SHADE_RAYTRACE, PIP_SHADE_MNEE, PIP_INTERSECT, NUM_PIPELINES };
54 char header[OPTIX_SBT_RECORD_HEADER_SIZE];
57 class OptiXDevice :
public CUDADevice {
61 OptixModule optix_module =
NULL;
62 OptixModule builtin_modules[2] = {};
63 OptixPipeline pipelines[NUM_PIPELINES] = {};
65 bool motion_blur =
false;
68 OptixTraversableHandle tlas_handle = 0;
75 explicit Denoiser(OptiXDevice *device);
78 OptiXDeviceQueue
queue;
80 OptixDenoiser optix_denoiser =
nullptr;
85 bool is_configured =
false;
91 OptixDenoiserSizes sizes = {};
93 bool use_pass_albedo =
false;
94 bool use_pass_normal =
false;
95 bool use_pass_flow =
false;
106 string compile_kernel_get_common_cflags(
const uint kernel_features)
override;
108 bool load_kernels(
const uint kernel_features)
override;
110 bool build_optix_bvh(BVHOptiX *bvh,
111 OptixBuildOperation operation,
112 const OptixBuildInput &build_input,
117 void release_optix_bvh(
BVH *bvh)
override;
118 void free_bvh_memory_delayed();
120 void const_copy_to(
const char *name,
void *host,
size_t size)
override;
122 void update_launch_params(
size_t offset,
void *
data,
size_t data_size);
124 virtual unique_ptr<DeviceQueue> gpu_queue_create()
override;
130 class DenoiseContext;
141 bool denoise_filter_guiding_preprocess(DenoiseContext &
context);
145 bool denoise_filter_guiding_set_fake_albedo(DenoiseContext &
context);
152 void denoise_color_read(DenoiseContext &
context,
const DenoisePass &pass);
156 bool denoise_filter_color_preprocess(DenoiseContext &
context,
const DenoisePass &pass);
157 bool denoise_filter_color_postprocess(DenoiseContext &
context,
const DenoisePass &pass);
160 bool denoise_ensure(DenoiseContext &
context);
165 bool denoise_create_if_needed(DenoiseContext &
context);
168 bool denoise_configure_if_needed(DenoiseContext &
context);
171 bool denoise_run(DenoiseContext &
context,
const DenoisePass &pass);
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
void refit(btStridingMeshInterface *triangles, const btVector3 &aabbMin, const btVector3 &aabbMax)
#define CCL_NAMESPACE_END
ccl_gpu_kernel_postfix ccl_global float int int int int float bool int offset
struct blender::compositor::@179::@181 task
CCL_NAMESPACE_BEGIN typedef std::mutex thread_mutex