[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