diff --git a/src/appleseed/renderer/kernel/rendering/baserenderer.cpp b/src/appleseed/renderer/kernel/rendering/baserenderer.cpp index 909d2f4a49..ba3d212d28 100644 --- a/src/appleseed/renderer/kernel/rendering/baserenderer.cpp +++ b/src/appleseed/renderer/kernel/rendering/baserenderer.cpp @@ -87,7 +87,11 @@ BaseRenderer::BaseRenderer( RENDERER_LOG_DEBUG("creating OSL shading system..."); m_renderer_services = new RendererServices(m_project, *m_texture_system); +#if OSL_LIBRARY_VERSION_CODE >= 10700 + m_shading_system = new OSL::ShadingSystem( +#else m_shading_system = OSL::ShadingSystem::create( +#endif m_renderer_services, m_texture_system, m_error_handler); @@ -122,7 +126,13 @@ BaseRenderer::~BaseRenderer() #ifdef APPLESEED_WITH_OSL RENDERER_LOG_DEBUG("destroying OSL shading system..."); m_project.get_scene()->release_optimized_osl_shader_groups(); + +#if OSL_LIBRARY_VERSION_CODE >= 10700 + delete m_shading_system; +#else OSL::ShadingSystem::destroy(m_shading_system); +#endif + delete m_renderer_services; #endif diff --git a/src/appleseed/renderer/kernel/rendering/rendererservices.cpp b/src/appleseed/renderer/kernel/rendering/rendererservices.cpp index 9416f2f599..08f6b510d4 100644 --- a/src/appleseed/renderer/kernel/rendering/rendererservices.cpp +++ b/src/appleseed/renderer/kernel/rendering/rendererservices.cpp @@ -504,6 +504,7 @@ bool RendererServices::get_userdata( return false; } +#if OSL_LIBRARY_VERSION_CODE < 10700 bool RendererServices::has_userdata( OIIO::ustring name, OIIO::TypeDesc type, @@ -511,6 +512,7 @@ bool RendererServices::has_userdata( { return false; } +#endif #define IMPLEMENT_ATTR_GETTER(name) \ bool RendererServices::get_##name( \ diff --git a/src/appleseed/renderer/kernel/rendering/rendererservices.h b/src/appleseed/renderer/kernel/rendering/rendererservices.h index aa74629e84..521a674abe 100644 --- a/src/appleseed/renderer/kernel/rendering/rendererservices.h +++ b/src/appleseed/renderer/kernel/rendering/rendererservices.h @@ -295,11 +295,12 @@ class RendererServices OSL::ShaderGlobals* sg, void* val) APPLESEED_OVERRIDE; - // Does the current object have the named user-data associated with it? +#if OSL_LIBRARY_VERSION_CODE < 10700 virtual bool has_userdata( - OIIO::ustring name, - OIIO::TypeDesc type, - OSL::ShaderGlobals* sg) APPLESEED_OVERRIDE; + OIIO::ustring name, + OIIO::TypeDesc type, + OSL::ShaderGlobals* sg) APPLESEED_OVERRIDE; +#endif private: // This code based on OSL's test renderer. diff --git a/src/appleseed/renderer/kernel/shading/closures.cpp b/src/appleseed/renderer/kernel/shading/closures.cpp index 80380c0d90..b98fccd711 100644 --- a/src/appleseed/renderer/kernel/shading/closures.cpp +++ b/src/appleseed/renderer/kernel/shading/closures.cpp @@ -44,6 +44,7 @@ BEGIN_OSL_INCLUDES #include "OSL/genclosure.h" #include "OSL/oslclosure.h" +#include "OSL/oslversion.h" END_OSL_INCLUDES // Boost headers. @@ -1125,7 +1126,11 @@ void CompositeSurfaceClosure::process_closure_tree( if (closure == 0) return; +#if OSL_LIBRARY_VERSION_CODE >= 10700 + switch (closure->id) +#else switch (closure->type) +#endif { case OSL::ClosureColor::MUL: { @@ -1143,7 +1148,7 @@ void CompositeSurfaceClosure::process_closure_tree( } break; - case OSL::ClosureColor::COMPONENT: + default: { const OSL::ClosureComponent* c = reinterpret_cast(closure); const Color3f w = weight * Color3f(c->w); @@ -1152,8 +1157,6 @@ void CompositeSurfaceClosure::process_closure_tree( g_closure_convert_funs[c->id](*this, original_shading_basis, c->data(), w); } break; - - assert_otherwise; } } @@ -1178,7 +1181,11 @@ void CompositeSubsurfaceClosure::process_closure_tree( if (closure == 0) return; +#if OSL_LIBRARY_VERSION_CODE >= 10700 + switch (closure->id) +#else switch (closure->type) +#endif { case OSL::ClosureColor::MUL: { @@ -1195,7 +1202,7 @@ void CompositeSubsurfaceClosure::process_closure_tree( } break; - case OSL::ClosureColor::COMPONENT: + default: { const OSL::ClosureComponent* c = reinterpret_cast(closure); @@ -1213,8 +1220,6 @@ void CompositeSubsurfaceClosure::process_closure_tree( } } break; - - assert_otherwise; } } @@ -1253,7 +1258,11 @@ void CompositeEmissionClosure::process_closure_tree( if (closure == 0) return; +#if OSL_LIBRARY_VERSION_CODE >= 10700 + switch (closure->id) +#else switch (closure->type) +#endif { case OSL::ClosureColor::MUL: { @@ -1270,7 +1279,7 @@ void CompositeEmissionClosure::process_closure_tree( } break; - case OSL::ClosureColor::COMPONENT: + default: { const OSL::ClosureComponent* c = reinterpret_cast(closure); @@ -1278,8 +1287,6 @@ void CompositeEmissionClosure::process_closure_tree( m_total_weight += weight * Color3f(c->w); } break; - - assert_otherwise; } } @@ -1296,7 +1303,11 @@ namespace { if (closure) { +#if OSL_LIBRARY_VERSION_CODE >= 10700 + switch (closure->id) +#else switch (closure->type) +#endif { case OSL::ClosureColor::MUL: { @@ -1313,14 +1324,12 @@ namespace } break; - case OSL::ClosureColor::COMPONENT: + default: { const OSL::ClosureComponent* c = reinterpret_cast(closure); return c->id == closure_id ? Color3f(c->w) : Color3f(0.0f); } break; - - assert_otherwise; } } diff --git a/src/appleseed/renderer/kernel/shading/oslshadergroupexec.cpp b/src/appleseed/renderer/kernel/shading/oslshadergroupexec.cpp index 897c510710..df866ddc0d 100644 --- a/src/appleseed/renderer/kernel/shading/oslshadergroupexec.cpp +++ b/src/appleseed/renderer/kernel/shading/oslshadergroupexec.cpp @@ -199,7 +199,11 @@ Color3f OSLShaderGroupExec::execute_background( sg.raytype = VisibilityFlags::CameraRay; m_osl_shading_system.execute( +#if OSL_LIBRARY_VERSION_CODE >= 10700 + m_osl_shading_context, +#else *m_osl_shading_context, +#endif *shader_group.shader_group_ref(), sg); @@ -220,7 +224,11 @@ void OSLShaderGroupExec::do_execute( m_osl_shading_system.renderer()); m_osl_shading_system.execute( +#if OSL_LIBRARY_VERSION_CODE >= 10700 + m_osl_shading_context, +#else *m_osl_shading_context, +#endif *shader_group.shader_group_ref(), shading_point.get_osl_shader_globals()); } diff --git a/src/appleseed/renderer/kernel/shading/oslshadergroupexec.h b/src/appleseed/renderer/kernel/shading/oslshadergroupexec.h index f44c2b2bce..ad52ede535 100644 --- a/src/appleseed/renderer/kernel/shading/oslshadergroupexec.h +++ b/src/appleseed/renderer/kernel/shading/oslshadergroupexec.h @@ -42,6 +42,7 @@ #include "foundation/platform/oslheaderguards.h" BEGIN_OSL_INCLUDES #include "OSL/oslexec.h" +#include "OSL/oslversion.h" END_OSL_INCLUDES // Forward declarations.