Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brecht>2021-10-17 17:10:10 +0300
committerBrecht Van Lommel <brecht@blender.org>2021-10-18 20:02:10 +0300
commit1df3b51988852fa8ee6b530a64aa23346db9acd4 (patch)
treedd79dba4c8ff8bb8474cc399e9d1b308d845e0cb /intern/cycles/kernel/integrator/integrator_subsurface_random_walk.h
parent44c3bb729be42d6d67eaf8918d7cbcb2ff0b315d (diff)
Cycles: replace integrator state argument macros
* Rename struct KernelGlobals to struct KernelGlobalsCPU * Add KernelGlobals, IntegratorState and ConstIntegratorState typedefs that every device can define in its own way. * Remove INTEGRATOR_STATE_ARGS and INTEGRATOR_STATE_PASS macros and replace with these new typedefs. * Add explicit state argument to INTEGRATOR_STATE and similar macros In preparation for decoupling main and shadow paths. Differential Revision: https://developer.blender.org/D12888
Diffstat (limited to 'intern/cycles/kernel/integrator/integrator_subsurface_random_walk.h')
-rw-r--r--intern/cycles/kernel/integrator/integrator_subsurface_random_walk.h25
1 files changed, 13 insertions, 12 deletions
diff --git a/intern/cycles/kernel/integrator/integrator_subsurface_random_walk.h b/intern/cycles/kernel/integrator/integrator_subsurface_random_walk.h
index 45a43ea67a9..5365093decf 100644
--- a/intern/cycles/kernel/integrator/integrator_subsurface_random_walk.h
+++ b/intern/cycles/kernel/integrator/integrator_subsurface_random_walk.h
@@ -180,7 +180,8 @@ ccl_device_forceinline float3 subsurface_random_walk_pdf(float3 sigma_t,
* and the value represents the cutoff level */
#define SUBSURFACE_RANDOM_WALK_SIMILARITY_LEVEL 9
-ccl_device_inline bool subsurface_random_walk(INTEGRATOR_STATE_ARGS,
+ccl_device_inline bool subsurface_random_walk(KernelGlobals kg,
+ IntegratorState state,
RNGState rng_state,
ccl_private Ray &ray,
ccl_private LocalIntersection &ss_isect)
@@ -188,12 +189,12 @@ ccl_device_inline bool subsurface_random_walk(INTEGRATOR_STATE_ARGS,
float bssrdf_u, bssrdf_v;
path_state_rng_2D(kg, &rng_state, PRNG_BSDF_U, &bssrdf_u, &bssrdf_v);
- const float3 P = INTEGRATOR_STATE(ray, P);
- const float3 N = INTEGRATOR_STATE(ray, D);
- const float ray_dP = INTEGRATOR_STATE(ray, dP);
- const float time = INTEGRATOR_STATE(ray, time);
- const float3 Ng = INTEGRATOR_STATE(isect, Ng);
- const int object = INTEGRATOR_STATE(isect, object);
+ const float3 P = INTEGRATOR_STATE(state, ray, P);
+ const float3 N = INTEGRATOR_STATE(state, ray, D);
+ const float ray_dP = INTEGRATOR_STATE(state, ray, dP);
+ const float time = INTEGRATOR_STATE(state, ray, time);
+ const float3 Ng = INTEGRATOR_STATE(state, isect, Ng);
+ const int object = INTEGRATOR_STATE(state, isect, object);
/* Sample diffuse surface scatter into the object. */
float3 D;
@@ -219,12 +220,12 @@ ccl_device_inline bool subsurface_random_walk(INTEGRATOR_STATE_ARGS,
/* Convert subsurface to volume coefficients.
* The single-scattering albedo is named alpha to avoid confusion with the surface albedo. */
- const float3 albedo = INTEGRATOR_STATE(subsurface, albedo);
- const float3 radius = INTEGRATOR_STATE(subsurface, radius);
- const float anisotropy = INTEGRATOR_STATE(subsurface, anisotropy);
+ const float3 albedo = INTEGRATOR_STATE(state, subsurface, albedo);
+ const float3 radius = INTEGRATOR_STATE(state, subsurface, radius);
+ const float anisotropy = INTEGRATOR_STATE(state, subsurface, anisotropy);
float3 sigma_t, alpha;
- float3 throughput = INTEGRATOR_STATE_WRITE(path, throughput);
+ float3 throughput = INTEGRATOR_STATE_WRITE(state, path, throughput);
subsurface_random_walk_coefficients(albedo, radius, anisotropy, &sigma_t, &alpha, &throughput);
float3 sigma_s = sigma_t * alpha;
@@ -459,7 +460,7 @@ ccl_device_inline bool subsurface_random_walk(INTEGRATOR_STATE_ARGS,
if (hit) {
kernel_assert(isfinite3_safe(throughput));
- INTEGRATOR_STATE_WRITE(path, throughput) = throughput;
+ INTEGRATOR_STATE_WRITE(state, path, throughput) = throughput;
}
return hit;