From c571be4e05788b8d3447a0bfe59942ebb4464750 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 1 Nov 2017 21:07:15 +0100 Subject: Code refactor: sum transparent and absorption weights outside closures. --- intern/cycles/kernel/closure/volume.h | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) (limited to 'intern/cycles/kernel/closure/volume.h') diff --git a/intern/cycles/kernel/closure/volume.h b/intern/cycles/kernel/closure/volume.h index 01e67c7c2fd..4bb5e680723 100644 --- a/intern/cycles/kernel/closure/volume.h +++ b/intern/cycles/kernel/closure/volume.h @@ -19,14 +19,27 @@ CCL_NAMESPACE_BEGIN +/* VOLUME EXTINCTION */ + +ccl_device void volume_extinction_setup(ShaderData *sd, float3 weight) +{ + if(sd->flag & SD_EXTINCTION) { + sd->closure_transparent_extinction += weight; + } + else { + sd->flag |= SD_EXTINCTION; + sd->closure_transparent_extinction = weight; + } +} + +/* HENYEY-GREENSTEIN CLOSURE */ + typedef ccl_addr_space struct HenyeyGreensteinVolume { SHADER_CLOSURE_BASE; float g; } HenyeyGreensteinVolume; -/* HENYEY-GREENSTEIN CLOSURE */ - /* Given cosine between rays, return probability density that a photon bounces * to that direction. The g parameter controls how different it is from the * uniform sphere. g=0 uniform diffuse-like, g=1 close to sharp single ray. */ @@ -110,15 +123,6 @@ ccl_device int volume_henyey_greenstein_sample(const ShaderClosure *sc, float3 I return LABEL_VOLUME_SCATTER; } -/* ABSORPTION VOLUME CLOSURE */ - -ccl_device int volume_absorption_setup(ShaderClosure *sc) -{ - sc->type = CLOSURE_VOLUME_ABSORPTION_ID; - - return SD_ABSORPTION; -} - /* VOLUME CLOSURE */ ccl_device float3 volume_phase_eval(const ShaderData *sd, const ShaderClosure *sc, float3 omega_in, float *pdf) -- cgit v1.2.3