[Bf-blender-cvs] [08a44d29815] master: Cleanup: refactor passing of OSL kernel globals for upcoming changes

Brecht Van Lommel noreply at git.blender.org
Fri May 3 15:43:27 CEST 2019


Commit: 08a44d29815f6b0b9b675a503829d2e2ce7f6426
Author: Brecht Van Lommel
Date:   Thu May 2 15:39:23 2019 +0200
Branches: master
https://developer.blender.org/rB08a44d29815f6b0b9b675a503829d2e2ce7f6426

Cleanup: refactor passing of OSL kernel globals for upcoming changes

===================================================================

M	intern/cycles/kernel/kernel_types.h
M	intern/cycles/kernel/osl/background.cpp
M	intern/cycles/kernel/osl/bsdf_diffuse_ramp.cpp
M	intern/cycles/kernel/osl/bsdf_phong_ramp.cpp
M	intern/cycles/kernel/osl/emissive.cpp
M	intern/cycles/kernel/osl/osl_bssrdf.cpp
M	intern/cycles/kernel/osl/osl_closures.cpp
M	intern/cycles/kernel/osl/osl_closures.h
M	intern/cycles/kernel/osl/osl_services.cpp
M	intern/cycles/kernel/osl/osl_services.h
M	intern/cycles/kernel/osl/osl_shader.cpp
M	intern/cycles/render/osl.cpp
M	intern/cycles/render/osl.h

===================================================================

diff --git a/intern/cycles/kernel/kernel_types.h b/intern/cycles/kernel/kernel_types.h
index 0c6b4b401f0..7d4f655a32e 100644
--- a/intern/cycles/kernel/kernel_types.h
+++ b/intern/cycles/kernel/kernel_types.h
@@ -981,7 +981,6 @@ typedef ccl_addr_space struct ShaderData {
   differential3 ray_dP;
 
 #ifdef __OSL__
-  struct KernelGlobals *osl_globals;
   struct PathState *osl_path_state;
 #endif
 
diff --git a/intern/cycles/kernel/osl/background.cpp b/intern/cycles/kernel/osl/background.cpp
index b395227845d..03fa88f40ad 100644
--- a/intern/cycles/kernel/osl/background.cpp
+++ b/intern/cycles/kernel/osl/background.cpp
@@ -52,7 +52,7 @@ using namespace OSL;
 ///
 class GenericBackgroundClosure : public CClosurePrimitive {
  public:
-  void setup(ShaderData *sd, int /* path_flag */, float3 weight)
+  void setup(const KernelGlobals *, ShaderData *sd, int /* path_flag */, float3 weight)
   {
     background_setup(sd, weight);
   }
@@ -67,7 +67,7 @@ class GenericBackgroundClosure : public CClosurePrimitive {
 ///
 class HoldoutClosure : CClosurePrimitive {
  public:
-  void setup(ShaderData *sd, int /* path_flag */, float3 weight)
+  void setup(const KernelGlobals *, ShaderData *sd, int /* path_flag */, float3 weight)
   {
     closure_alloc(sd, sizeof(ShaderClosure), CLOSURE_HOLDOUT_ID, weight);
     sd->flag |= SD_HOLDOUT;
diff --git a/intern/cycles/kernel/osl/bsdf_diffuse_ramp.cpp b/intern/cycles/kernel/osl/bsdf_diffuse_ramp.cpp
index c5edc7c9be3..419837ab8d6 100644
--- a/intern/cycles/kernel/osl/bsdf_diffuse_ramp.cpp
+++ b/intern/cycles/kernel/osl/bsdf_diffuse_ramp.cpp
@@ -51,7 +51,7 @@ class DiffuseRampClosure : public CBSDFClosure {
   DiffuseRampBsdf params;
   Color3 colors[8];
 
-  void setup(ShaderData *sd, int /* path_flag */, float3 weight)
+  void setup(const KernelGlobals *, ShaderData *sd, int /* path_flag */, float3 weight)
   {
     DiffuseRampBsdf *bsdf = (DiffuseRampBsdf *)bsdf_alloc_osl(
         sd, sizeof(DiffuseRampBsdf), weight, &params);
diff --git a/intern/cycles/kernel/osl/bsdf_phong_ramp.cpp b/intern/cycles/kernel/osl/bsdf_phong_ramp.cpp
index 4b7e59ff932..6bf39934235 100644
--- a/intern/cycles/kernel/osl/bsdf_phong_ramp.cpp
+++ b/intern/cycles/kernel/osl/bsdf_phong_ramp.cpp
@@ -50,7 +50,7 @@ class PhongRampClosure : public CBSDFClosure {
   PhongRampBsdf params;
   Color3 colors[8];
 
-  void setup(ShaderData *sd, int /* path_flag */, float3 weight)
+  void setup(const KernelGlobals *, ShaderData *sd, int /* path_flag */, float3 weight)
   {
     PhongRampBsdf *bsdf = (PhongRampBsdf *)bsdf_alloc_osl(
         sd, sizeof(PhongRampBsdf), weight, &params);
diff --git a/intern/cycles/kernel/osl/emissive.cpp b/intern/cycles/kernel/osl/emissive.cpp
index c29ddb13e2e..894727a5c7b 100644
--- a/intern/cycles/kernel/osl/emissive.cpp
+++ b/intern/cycles/kernel/osl/emissive.cpp
@@ -54,7 +54,7 @@ using namespace OSL;
 ///
 class GenericEmissiveClosure : public CClosurePrimitive {
  public:
-  void setup(ShaderData *sd, int /* path_flag */, float3 weight)
+  void setup(const KernelGlobals *, ShaderData *sd, int /* path_flag */, float3 weight)
   {
     emission_setup(sd, weight);
   }
diff --git a/intern/cycles/kernel/osl/osl_bssrdf.cpp b/intern/cycles/kernel/osl/osl_bssrdf.cpp
index dd52c33071c..b487aef09a1 100644
--- a/intern/cycles/kernel/osl/osl_bssrdf.cpp
+++ b/intern/cycles/kernel/osl/osl_bssrdf.cpp
@@ -67,7 +67,7 @@ class CBSSRDFClosure : public CClosurePrimitive {
     params.roughness = 0.0f;
   }
 
-  void setup(ShaderData *sd, int path_flag, float3 weight)
+  void setup(const KernelGlobals *, ShaderData *sd, int path_flag, float3 weight)
   {
     if (method == u_cubic) {
       alloc(sd, path_flag, weight, CLOSURE_BSSRDF_CUBIC_ID);
diff --git a/intern/cycles/kernel/osl/osl_closures.cpp b/intern/cycles/kernel/osl/osl_closures.cpp
index 27205df3732..7152a56bd70 100644
--- a/intern/cycles/kernel/osl/osl_closures.cpp
+++ b/intern/cycles/kernel/osl/osl_closures.cpp
@@ -227,9 +227,9 @@ CLOSURE_FLOAT3_PARAM(DiffuseClosure, params.N),
     return bsdf;
   }
 
-  void setup(ShaderData *sd, int path_flag, float3 weight)
+  void setup(const KernelGlobals *kg, ShaderData *sd, int path_flag, float3 weight)
   {
-    if (!skip(sd, path_flag, LABEL_GLOSSY)) {
+    if (!skip(kg, sd, path_flag, LABEL_GLOSSY)) {
       PrincipledHairBSDF *bsdf = (PrincipledHairBSDF *)alloc(sd, path_flag, weight);
       if (!bsdf) {
         return;
@@ -287,7 +287,7 @@ class PrincipledClearcoatClosure : public CBSDFClosure {
     return bsdf;
   }
 
-  void setup(ShaderData *sd, int path_flag, float3 weight)
+  void setup(const KernelGlobals *kg, ShaderData *sd, int path_flag, float3 weight)
   {
     MicrofacetBsdf *bsdf = alloc(sd, path_flag, weight);
     if (!bsdf) {
@@ -471,12 +471,13 @@ void OSLShader::register_closures(OSLShadingSystem *ss_)
 
 /* BSDF Closure */
 
-bool CBSDFClosure::skip(const ShaderData *sd, int path_flag, int scattering)
+bool CBSDFClosure::skip(const KernelGlobals *kg,
+                        const ShaderData *sd,
+                        int path_flag,
+                        int scattering)
 {
   /* caustic options */
   if ((scattering & LABEL_GLOSSY) && (path_flag & PATH_RAY_DIFFUSE)) {
-    KernelGlobals *kg = sd->osl_globals;
-
     if ((!kernel_data.integrator.caustics_reflective && (scattering & LABEL_REFLECT)) ||
         (!kernel_data.integrator.caustics_refractive && (scattering & LABEL_TRANSMIT))) {
       return true;
@@ -494,12 +495,12 @@ class MicrofacetFresnelClosure : public CBSDFClosure {
   float3 color;
   float3 cspec0;
 
-  MicrofacetBsdf *alloc(ShaderData *sd, int path_flag, float3 weight)
+  MicrofacetBsdf *alloc(const KernelGlobals *kg, ShaderData *sd, int path_flag, float3 weight)
   {
     /* Technically, the MultiGGX Glass closure may also transmit. However,
      * since this is set statically and only used for caustic flags, this
      * is probably as good as it gets. */
-    if (skip(sd, path_flag, LABEL_GLOSSY | LABEL_REFLECT)) {
+    if (skip(kg, sd, path_flag, LABEL_GLOSSY | LABEL_REFLECT)) {
       return NULL;
     }
 
@@ -524,9 +525,9 @@ class MicrofacetFresnelClosure : public CBSDFClosure {
 
 class MicrofacetGGXFresnelClosure : public MicrofacetFresnelClosure {
  public:
-  void setup(ShaderData *sd, int path_flag, float3 weight)
+  void setup(const KernelGlobals *kg, ShaderData *sd, int path_flag, float3 weight)
   {
-    MicrofacetBsdf *bsdf = alloc(sd, path_flag, weight);
+    MicrofacetBsdf *bsdf = alloc(kg, sd, path_flag, weight);
     if (!bsdf) {
       return;
     }
@@ -553,9 +554,9 @@ CCLOSURE_PREPARE(closure_bsdf_microfacet_ggx_fresnel_prepare, MicrofacetGGXFresn
 
 class MicrofacetGGXAnisoFresnelClosure : public MicrofacetFresnelClosure {
  public:
-  void setup(ShaderData *sd, int path_flag, float3 weight)
+  void setup(const KernelGlobals *kg, ShaderData *sd, int path_flag, float3 weight)
   {
-    MicrofacetBsdf *bsdf = alloc(sd, path_flag, weight);
+    MicrofacetBsdf *bsdf = alloc(kg, sd, path_flag, weight);
     if (!bsdf) {
       return;
     }
@@ -588,12 +589,12 @@ class MicrofacetMultiClosure : public CBSDFClosure {
   MicrofacetBsdf params;
   float3 color;
 
-  MicrofacetBsdf *alloc(ShaderData *sd, int path_flag, float3 weight)
+  MicrofacetBsdf *alloc(const KernelGlobals *kg, ShaderData *sd, int path_flag, float3 weight)
   {
     /* Technically, the MultiGGX closure may also transmit. However,
      * since this is set statically and only used for caustic flags, this
      * is probably as good as it gets. */
-    if (skip(sd, path_flag, LABEL_GLOSSY | LABEL_REFLECT)) {
+    if (skip(kg, sd, path_flag, LABEL_GLOSSY | LABEL_REFLECT)) {
       return NULL;
     }
 
@@ -618,9 +619,9 @@ class MicrofacetMultiClosure : public CBSDFClosure {
 
 class MicrofacetMultiGGXClosure : public MicrofacetMultiClosure {
  public:
-  void setup(ShaderData *sd, int path_flag, float3 weight)
+  void setup(const KernelGlobals *kg, ShaderData *sd, int path_flag, float3 weight)
   {
-    MicrofacetBsdf *bsdf = alloc(sd, path_flag, weight);
+    MicrofacetBsdf *bsdf = alloc(kg, sd, path_flag, weight);
     if (!bsdf) {
       return;
     }
@@ -646,9 +647,9 @@ CCLOSURE_PREPARE(closure_bsdf_microfacet_multi_ggx_prepare, MicrofacetMultiGGXCl
 
 class MicrofacetMultiGGXAnisoClosure : public MicrofacetMultiClosure {
  public:
-  void setup(ShaderData *sd, int path_flag, float3 weight)
+  void setup(const KernelGlobals *kg, ShaderData *sd, int path_flag, float3 weight)
   {
-    MicrofacetBsdf *bsdf = alloc(sd, path_flag, weight);
+    MicrofacetBsdf *bsdf = alloc(kg, sd, path_flag, weight);
     if (!bsdf) {
       return;
     }
@@ -678,9 +679,9 @@ class MicrofacetMultiGGXGlassClosure : public MicrofacetMultiClosure {
   {
   }
 
-  void setup(ShaderData *sd, int path_flag, float3 weight)
+  void setup(const KernelGlobals *kg, ShaderData *sd, int path_flag, float3 weight)
   {
-    MicrofacetBsdf *bsdf = alloc(sd, path_flag, weight);
+    MicrofacetBsdf *bsdf = alloc(kg, sd, path_flag, weight);
     if (!bsdf) {
       return;
     }
@@ -712,12 +713,12 @@ class MicrofacetMultiFresnelClosure : public CBSDFClosure {
   float3 color;
   float3 cspec0;
 
-  MicrofacetBsdf *alloc(ShaderData *sd, int path_flag, float3 weight)
+  MicrofacetBsdf *alloc(const KernelGlobals *kg, ShaderData *sd, int path_flag, float3 weight)
   {
     /* Technically, the MultiGGX closure may also transmit. However,
      * since this is set statically and only used for caustic flags, this
      * is probably as good as it gets. */
-    if (skip(sd, path_flag, LABEL_GLOSSY | LABEL_REFLECT)) {
+    if (skip(kg, sd, path_flag, LABEL_GLOSSY | LABEL_REFLECT)) {
       return NULL;
     }
 
@@ -742,9 +743,9 @@ class MicrofacetMultiFresnelClosure : public CBSDFClosure {
 
 class MicrofacetMultiGGXFresnelClosure : public MicrofacetMultiFresnelClosure {
  public:
-  void setup(ShaderData *sd, int path_flag, float3 weight)
+  void setup(const KernelGlobals *kg, ShaderData *sd, int path_flag, float3 weight)
   {
-    MicrofacetBsdf *bsdf = alloc(sd, path_flag, weight);
+    MicrofacetBsdf *bsdf = alloc(kg, sd, path_flag, weight);
     if (!bsdf) {
       return;
     }
@@ -772,9 +773,9 @@ CCLOSURE_PREPARE(closure_bsdf_microfacet

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list