[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [50364] trunk/blender/intern/cycles: Fix for Cycles OSL: The RenderServices pointer in ShadingSystem is no longer accessible from the interface class ( presumably because it is just the base class pointer anyway and would have to be casted ).
Lukas Toenne
lukas.toenne at googlemail.com
Mon Sep 3 20:51:02 CEST 2012
Revision: 50364
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=50364
Author: lukastoenne
Date: 2012-09-03 18:51:02 +0000 (Mon, 03 Sep 2012)
Log Message:
-----------
Fix for Cycles OSL: The RenderServices pointer in ShadingSystem is no longer accessible from the interface class (presumably because it is just the base class pointer anyway and would have to be casted). The OSLRenderServices pointer to our own implementation is now stored alongside the ShadingSystem in the kernel globals, so it can be accessed in thread_init.
Modified Paths:
--------------
trunk/blender/intern/cycles/kernel/osl/osl_globals.h
trunk/blender/intern/cycles/kernel/osl/osl_shader.cpp
trunk/blender/intern/cycles/render/osl.cpp
Modified: trunk/blender/intern/cycles/kernel/osl/osl_globals.h
===================================================================
--- trunk/blender/intern/cycles/kernel/osl/osl_globals.h 2012-09-03 18:50:59 UTC (rev 50363)
+++ trunk/blender/intern/cycles/kernel/osl/osl_globals.h 2012-09-03 18:51:02 UTC (rev 50364)
@@ -30,12 +30,15 @@
CCL_NAMESPACE_BEGIN
+class OSLRenderServices;
+
struct OSLGlobals {
/* use */
bool use;
/* shading system */
OSL::ShadingSystem *ss;
+ OSLRenderServices *services;
/* shader states */
vector<OSL::ShadingAttribStateRef> surface_state;
Modified: trunk/blender/intern/cycles/kernel/osl/osl_shader.cpp
===================================================================
--- trunk/blender/intern/cycles/kernel/osl/osl_shader.cpp 2012-09-03 18:50:59 UTC (rev 50363)
+++ trunk/blender/intern/cycles/kernel/osl/osl_shader.cpp 2012-09-03 18:51:02 UTC (rev 50364)
@@ -45,9 +45,7 @@
tls_set(kg->osl.thread_data, tdata);
- //((OSLRenderServices *)ssi->renderer())->thread_init(kg);
- /* XXX not sure here - dingto */
- thread_init(kg);
+ kg->osl.services->thread_init(kg);
}
void OSLShader::thread_free(KernelGlobals *kg)
Modified: trunk/blender/intern/cycles/render/osl.cpp
===================================================================
--- trunk/blender/intern/cycles/render/osl.cpp 2012-09-03 18:50:59 UTC (rev 50363)
+++ trunk/blender/intern/cycles/render/osl.cpp 2012-09-03 18:51:02 UTC (rev 50364)
@@ -101,6 +101,7 @@
/* setup shader engine */
og->ss = ss;
+ og->services = services;
int background_id = scene->shader_manager->get_shader_id(scene->default_background);
og->background_state = og->surface_state[background_id & SHADER_MASK];
og->use = true;
More information about the Bf-blender-cvs
mailing list