diff options
author | Brecht Van Lommel <brecht> | 2021-10-17 17:10:10 +0300 |
---|---|---|
committer | Brecht Van Lommel <brecht@blender.org> | 2021-10-18 20:02:10 +0300 |
commit | 1df3b51988852fa8ee6b530a64aa23346db9acd4 (patch) | |
tree | dd79dba4c8ff8bb8474cc399e9d1b308d845e0cb /intern/cycles/kernel/osl | |
parent | 44c3bb729be42d6d67eaf8918d7cbcb2ff0b315d (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/osl')
-rw-r--r-- | intern/cycles/kernel/osl/osl_closures.cpp | 2 | ||||
-rw-r--r-- | intern/cycles/kernel/osl/osl_services.cpp | 38 | ||||
-rw-r--r-- | intern/cycles/kernel/osl/osl_services.h | 6 | ||||
-rw-r--r-- | intern/cycles/kernel/osl/osl_shader.cpp | 16 | ||||
-rw-r--r-- | intern/cycles/kernel/osl/osl_shader.h | 16 |
5 files changed, 39 insertions, 39 deletions
diff --git a/intern/cycles/kernel/osl/osl_closures.cpp b/intern/cycles/kernel/osl/osl_closures.cpp index e814fcca246..94712a4dd13 100644 --- a/intern/cycles/kernel/osl/osl_closures.cpp +++ b/intern/cycles/kernel/osl/osl_closures.cpp @@ -500,7 +500,7 @@ bool CBSDFClosure::skip(const ShaderData *sd, int path_flag, int scattering) { /* caustic options */ if ((scattering & LABEL_GLOSSY) && (path_flag & PATH_RAY_DIFFUSE)) { - const KernelGlobals *kg = sd->osl_globals; + const KernelGlobalsCPU *kg = sd->osl_globals; if ((!kernel_data.integrator.caustics_reflective && (scattering & LABEL_REFLECT)) || (!kernel_data.integrator.caustics_refractive && (scattering & LABEL_TRANSMIT))) { diff --git a/intern/cycles/kernel/osl/osl_services.cpp b/intern/cycles/kernel/osl/osl_services.cpp index 2c7f5eb4948..bb7655fbe9a 100644 --- a/intern/cycles/kernel/osl/osl_services.cpp +++ b/intern/cycles/kernel/osl/osl_services.cpp @@ -149,7 +149,7 @@ bool OSLRenderServices::get_matrix(OSL::ShaderGlobals *sg, * a concept of shader space, so we just use object space for both. */ if (xform) { const ShaderData *sd = (const ShaderData *)xform; - const KernelGlobals *kg = sd->osl_globals; + const KernelGlobalsCPU *kg = sd->osl_globals; int object = sd->object; if (object != OBJECT_NONE) { @@ -187,7 +187,7 @@ bool OSLRenderServices::get_inverse_matrix(OSL::ShaderGlobals *sg, * a concept of shader space, so we just use object space for both. */ if (xform) { const ShaderData *sd = (const ShaderData *)xform; - const KernelGlobals *kg = sd->osl_globals; + const KernelGlobalsCPU *kg = sd->osl_globals; int object = sd->object; if (object != OBJECT_NONE) { @@ -222,7 +222,7 @@ bool OSLRenderServices::get_matrix(OSL::ShaderGlobals *sg, float time) { ShaderData *sd = (ShaderData *)(sg->renderstate); - const KernelGlobals *kg = sd->osl_globals; + const KernelGlobalsCPU *kg = sd->osl_globals; if (from == u_ndc) { copy_matrix(result, kernel_data.cam.ndctoworld); @@ -254,7 +254,7 @@ bool OSLRenderServices::get_inverse_matrix(OSL::ShaderGlobals *sg, float time) { ShaderData *sd = (ShaderData *)(sg->renderstate); - const KernelGlobals *kg = sd->osl_globals; + const KernelGlobalsCPU *kg = sd->osl_globals; if (to == u_ndc) { copy_matrix(result, kernel_data.cam.worldtondc); @@ -288,7 +288,7 @@ bool OSLRenderServices::get_matrix(OSL::ShaderGlobals *sg, * a concept of shader space, so we just use object space for both. */ if (xform) { const ShaderData *sd = (const ShaderData *)xform; - const KernelGlobals *kg = sd->osl_globals; + const KernelGlobalsCPU *kg = sd->osl_globals; int object = sd->object; if (object != OBJECT_NONE) { @@ -316,7 +316,7 @@ bool OSLRenderServices::get_inverse_matrix(OSL::ShaderGlobals *sg, * a concept of shader space, so we just use object space for both. */ if (xform) { const ShaderData *sd = (const ShaderData *)xform; - const KernelGlobals *kg = sd->osl_globals; + const KernelGlobalsCPU *kg = sd->osl_globals; int object = sd->object; if (object != OBJECT_NONE) { @@ -339,7 +339,7 @@ bool OSLRenderServices::get_inverse_matrix(OSL::ShaderGlobals *sg, bool OSLRenderServices::get_matrix(OSL::ShaderGlobals *sg, OSL::Matrix44 &result, ustring from) { ShaderData *sd = (ShaderData *)(sg->renderstate); - const KernelGlobals *kg = sd->osl_globals; + const KernelGlobalsCPU *kg = sd->osl_globals; if (from == u_ndc) { copy_matrix(result, kernel_data.cam.ndctoworld); @@ -366,7 +366,7 @@ bool OSLRenderServices::get_inverse_matrix(OSL::ShaderGlobals *sg, ustring to) { ShaderData *sd = (ShaderData *)(sg->renderstate); - const KernelGlobals *kg = sd->osl_globals; + const KernelGlobalsCPU *kg = sd->osl_globals; if (to == u_ndc) { copy_matrix(result, kernel_data.cam.worldtondc); @@ -745,7 +745,7 @@ static bool set_attribute_matrix(const Transform &tfm, TypeDesc type, void *val) return false; } -static bool get_primitive_attribute(const KernelGlobals *kg, +static bool get_primitive_attribute(const KernelGlobalsCPU *kg, const ShaderData *sd, const OSLGlobals::Attribute &attr, const TypeDesc &type, @@ -806,7 +806,7 @@ static bool get_primitive_attribute(const KernelGlobals *kg, } } -static bool get_mesh_attribute(const KernelGlobals *kg, +static bool get_mesh_attribute(const KernelGlobalsCPU *kg, const ShaderData *sd, const OSLGlobals::Attribute &attr, const TypeDesc &type, @@ -855,7 +855,7 @@ static bool get_object_attribute(const OSLGlobals::Attribute &attr, } } -bool OSLRenderServices::get_object_standard_attribute(const KernelGlobals *kg, +bool OSLRenderServices::get_object_standard_attribute(const KernelGlobalsCPU *kg, ShaderData *sd, ustring name, TypeDesc type, @@ -1000,7 +1000,7 @@ bool OSLRenderServices::get_object_standard_attribute(const KernelGlobals *kg, } } -bool OSLRenderServices::get_background_attribute(const KernelGlobals *kg, +bool OSLRenderServices::get_background_attribute(const KernelGlobalsCPU *kg, ShaderData *sd, ustring name, TypeDesc type, @@ -1091,7 +1091,7 @@ bool OSLRenderServices::get_attribute(OSL::ShaderGlobals *sg, bool OSLRenderServices::get_attribute( ShaderData *sd, bool derivatives, ustring object_name, TypeDesc type, ustring name, void *val) { - const KernelGlobals *kg = sd->osl_globals; + const KernelGlobalsCPU *kg = sd->osl_globals; int prim_type = 0; int object; @@ -1220,7 +1220,7 @@ bool OSLRenderServices::texture(ustring filename, OSLTextureHandle *handle = (OSLTextureHandle *)texture_handle; OSLTextureHandle::Type texture_type = (handle) ? handle->type : OSLTextureHandle::OIIO; ShaderData *sd = (ShaderData *)(sg->renderstate); - const KernelGlobals *kernel_globals = sd->osl_globals; + KernelGlobals kernel_globals = sd->osl_globals; bool status = false; switch (texture_type) { @@ -1367,7 +1367,7 @@ bool OSLRenderServices::texture3d(ustring filename, case OSLTextureHandle::SVM: { /* Packed texture. */ ShaderData *sd = (ShaderData *)(sg->renderstate); - const KernelGlobals *kernel_globals = sd->osl_globals; + KernelGlobals kernel_globals = sd->osl_globals; int slot = handle->svm_slot; float3 P_float3 = make_float3(P.x, P.y, P.z); float4 rgba = kernel_tex_image_interp_3d(kernel_globals, slot, P_float3, INTERPOLATION_NONE); @@ -1389,7 +1389,7 @@ bool OSLRenderServices::texture3d(ustring filename, if (handle && handle->oiio_handle) { if (texture_thread_info == NULL) { ShaderData *sd = (ShaderData *)(sg->renderstate); - const KernelGlobals *kernel_globals = sd->osl_globals; + KernelGlobals kernel_globals = sd->osl_globals; OSLThreadData *tdata = kernel_globals->osl_tdata; texture_thread_info = tdata->oiio_thread_info; } @@ -1474,7 +1474,7 @@ bool OSLRenderServices::environment(ustring filename, if (handle && handle->oiio_handle) { if (thread_info == NULL) { ShaderData *sd = (ShaderData *)(sg->renderstate); - const KernelGlobals *kernel_globals = sd->osl_globals; + KernelGlobals kernel_globals = sd->osl_globals; OSLThreadData *tdata = kernel_globals->osl_tdata; thread_info = tdata->oiio_thread_info; } @@ -1629,7 +1629,7 @@ bool OSLRenderServices::trace(TraceOpt &options, tracedata->hit = false; tracedata->sd.osl_globals = sd->osl_globals; - const KernelGlobals *kg = sd->osl_globals; + const KernelGlobalsCPU *kg = sd->osl_globals; /* Can't raytrace from shaders like displacement, before BVH exists. */ if (kernel_data.bvh.bvh_layout == BVH_LAYOUT_NONE) { @@ -1662,7 +1662,7 @@ bool OSLRenderServices::getmessage(OSL::ShaderGlobals *sg, } else { ShaderData *sd = &tracedata->sd; - const KernelGlobals *kg = sd->osl_globals; + const KernelGlobalsCPU *kg = sd->osl_globals; if (!tracedata->setup) { /* lazy shader data setup */ diff --git a/intern/cycles/kernel/osl/osl_services.h b/intern/cycles/kernel/osl/osl_services.h index a9671485eda..d9f57c642ad 100644 --- a/intern/cycles/kernel/osl/osl_services.h +++ b/intern/cycles/kernel/osl/osl_services.h @@ -40,7 +40,7 @@ class Scene; class Shader; struct ShaderData; struct float3; -struct KernelGlobals; +struct KernelGlobalsCPU; /* OSL Texture Handle * @@ -250,13 +250,13 @@ class OSLRenderServices : public OSL::RendererServices { void *data) override; #endif - static bool get_background_attribute(const KernelGlobals *kg, + static bool get_background_attribute(const KernelGlobalsCPU *kg, ShaderData *sd, ustring name, TypeDesc type, bool derivatives, void *val); - static bool get_object_standard_attribute(const KernelGlobals *kg, + static bool get_object_standard_attribute(const KernelGlobalsCPU *kg, ShaderData *sd, ustring name, TypeDesc type, diff --git a/intern/cycles/kernel/osl/osl_shader.cpp b/intern/cycles/kernel/osl/osl_shader.cpp index 880ef635c76..a1df63ca8ff 100644 --- a/intern/cycles/kernel/osl/osl_shader.cpp +++ b/intern/cycles/kernel/osl/osl_shader.cpp @@ -41,7 +41,7 @@ CCL_NAMESPACE_BEGIN /* Threads */ -void OSLShader::thread_init(KernelGlobals *kg, OSLGlobals *osl_globals) +void OSLShader::thread_init(KernelGlobalsCPU *kg, OSLGlobals *osl_globals) { /* no osl used? */ if (!osl_globals->use) { @@ -67,7 +67,7 @@ void OSLShader::thread_init(KernelGlobals *kg, OSLGlobals *osl_globals) kg->osl_tdata = tdata; } -void OSLShader::thread_free(KernelGlobals *kg) +void OSLShader::thread_free(KernelGlobalsCPU *kg) { if (!kg->osl) return; @@ -87,7 +87,7 @@ void OSLShader::thread_free(KernelGlobals *kg) /* Globals */ -static void shaderdata_to_shaderglobals(const KernelGlobals *kg, +static void shaderdata_to_shaderglobals(const KernelGlobalsCPU *kg, ShaderData *sd, const IntegratorStateCPU *state, int path_flag, @@ -174,7 +174,7 @@ static void flatten_surface_closure_tree(ShaderData *sd, } } -void OSLShader::eval_surface(const KernelGlobals *kg, +void OSLShader::eval_surface(const KernelGlobalsCPU *kg, const IntegratorStateCPU *state, ShaderData *sd, int path_flag) @@ -282,7 +282,7 @@ static void flatten_background_closure_tree(ShaderData *sd, } } -void OSLShader::eval_background(const KernelGlobals *kg, +void OSLShader::eval_background(const KernelGlobalsCPU *kg, const IntegratorStateCPU *state, ShaderData *sd, int path_flag) @@ -340,7 +340,7 @@ static void flatten_volume_closure_tree(ShaderData *sd, } } -void OSLShader::eval_volume(const KernelGlobals *kg, +void OSLShader::eval_volume(const KernelGlobalsCPU *kg, const IntegratorStateCPU *state, ShaderData *sd, int path_flag) @@ -366,7 +366,7 @@ void OSLShader::eval_volume(const KernelGlobals *kg, /* Displacement */ -void OSLShader::eval_displacement(const KernelGlobals *kg, +void OSLShader::eval_displacement(const KernelGlobalsCPU *kg, const IntegratorStateCPU *state, ShaderData *sd) { @@ -391,7 +391,7 @@ void OSLShader::eval_displacement(const KernelGlobals *kg, /* Attributes */ -int OSLShader::find_attribute(const KernelGlobals *kg, +int OSLShader::find_attribute(const KernelGlobalsCPU *kg, const ShaderData *sd, uint id, AttributeDescriptor *desc) diff --git a/intern/cycles/kernel/osl/osl_shader.h b/intern/cycles/kernel/osl/osl_shader.h index f1f17b141eb..686a1e1374a 100644 --- a/intern/cycles/kernel/osl/osl_shader.h +++ b/intern/cycles/kernel/osl/osl_shader.h @@ -39,7 +39,7 @@ struct ShaderClosure; struct ShaderData; struct IntegratorStateCPU; struct differential3; -struct KernelGlobals; +struct KernelGlobalsCPU; struct OSLGlobals; struct OSLShadingSystem; @@ -50,28 +50,28 @@ class OSLShader { static void register_closures(OSLShadingSystem *ss); /* per thread data */ - static void thread_init(KernelGlobals *kg, OSLGlobals *osl_globals); - static void thread_free(KernelGlobals *kg); + static void thread_init(KernelGlobalsCPU *kg, OSLGlobals *osl_globals); + static void thread_free(KernelGlobalsCPU *kg); /* eval */ - static void eval_surface(const KernelGlobals *kg, + static void eval_surface(const KernelGlobalsCPU *kg, const IntegratorStateCPU *state, ShaderData *sd, int path_flag); - static void eval_background(const KernelGlobals *kg, + static void eval_background(const KernelGlobalsCPU *kg, const IntegratorStateCPU *state, ShaderData *sd, int path_flag); - static void eval_volume(const KernelGlobals *kg, + static void eval_volume(const KernelGlobalsCPU *kg, const IntegratorStateCPU *state, ShaderData *sd, int path_flag); - static void eval_displacement(const KernelGlobals *kg, + static void eval_displacement(const KernelGlobalsCPU *kg, const IntegratorStateCPU *state, ShaderData *sd); /* attributes */ - static int find_attribute(const KernelGlobals *kg, + static int find_attribute(const KernelGlobalsCPU *kg, const ShaderData *sd, uint id, AttributeDescriptor *desc); |