[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, ¶ms);
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, ¶ms);
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