[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [50303] trunk/blender/intern/cycles/kernel /osl: Cycles / OSLGlobals:

Thomas Dinges blender at dingto.org
Fri Aug 31 22:31:21 CEST 2012


Revision: 50303
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=50303
Author:   dingto
Date:     2012-08-31 20:31:21 +0000 (Fri, 31 Aug 2012)
Log Message:
-----------
Cycles / OSLGlobals:
* Fixes for changes in the Open Shading Langauge API from version 0.6.0: https://github.com/imageworks/OpenShadingLanguage/commit/11ce51418b45e975ace4d919a4bdd8c2001ba300

* Removed the need for ShadingSystemImpl.

Modified Paths:
--------------
    trunk/blender/intern/cycles/kernel/osl/osl_globals.h
    trunk/blender/intern/cycles/kernel/osl/osl_shader.cpp

Modified: trunk/blender/intern/cycles/kernel/osl/osl_globals.h
===================================================================
--- trunk/blender/intern/cycles/kernel/osl/osl_globals.h	2012-08-31 20:08:55 UTC (rev 50302)
+++ trunk/blender/intern/cycles/kernel/osl/osl_globals.h	2012-08-31 20:31:21 UTC (rev 50303)
@@ -60,7 +60,7 @@
 	/* thread key for thread specific data lookup */
 	struct ThreadData {
 		OSL::ShaderGlobals globals;
-		void *thread_info;
+		OSL::PerThreadInfo *thread_info;
 	};
 
 	static tls_ptr(ThreadData, thread_data);

Modified: trunk/blender/intern/cycles/kernel/osl/osl_shader.cpp
===================================================================
--- trunk/blender/intern/cycles/kernel/osl/osl_shader.cpp	2012-08-31 20:08:55 UTC (rev 50302)
+++ trunk/blender/intern/cycles/kernel/osl/osl_shader.cpp	2012-08-31 20:31:21 UTC (rev 50303)
@@ -36,25 +36,27 @@
 
 void OSLShader::thread_init(KernelGlobals *kg)
 {
-	OSL::pvt::ShadingSystemImpl *ssi = (OSL::pvt::ShadingSystemImpl *)kg->osl.ss;
+	OSL::ShadingSystem *ss = kg->osl.ss;
 
 	OSLGlobals::ThreadData *tdata = new OSLGlobals::ThreadData();
 
 	memset(&tdata->globals, 0, sizeof(OSL::ShaderGlobals));
-	tdata->thread_info = ssi->create_thread_info();
+	tdata->thread_info = ss->create_thread_info();
 
 	tls_set(kg->osl.thread_data, tdata);
 
-	((OSLRenderServices *)ssi->renderer())->thread_init(kg);
+	//((OSLRenderServices *)ssi->renderer())->thread_init(kg);
+	/* XXX not sure here - dingto */
+	thread_init(kg);
 }
 
 void OSLShader::thread_free(KernelGlobals *kg)
 {
-	OSL::pvt::ShadingSystemImpl *ssi = (OSL::pvt::ShadingSystemImpl *)kg->osl.ss;
+	OSL::ShadingSystem *ss = kg->osl.ss;
 
 	OSLGlobals::ThreadData *tdata = tls_get(OSLGlobals::ThreadData, kg->osl.thread_data);
 
-	ssi->destroy_thread_info(tdata->thread_info);
+	ss->destroy_thread_info(tdata->thread_info);
 
 	delete tdata;
 }
@@ -201,10 +203,10 @@
 void OSLShader::eval_surface(KernelGlobals *kg, ShaderData *sd, float randb, int path_flag)
 {
 	/* gather pointers */
-	OSL::pvt::ShadingSystemImpl *ssi = (OSL::pvt::ShadingSystemImpl *)kg->osl.ss;
+	OSL::ShadingSystem *ss = kg->osl.ss;
 	OSLGlobals::ThreadData *tdata = tls_get(OSLGlobals::ThreadData, kg->osl.thread_data);
 	OSL::ShaderGlobals *globals = &tdata->globals;
-	OSL::pvt::ShadingContext *ctx = ssi->get_context(tdata->thread_info);
+	OSL::ShadingContext *ctx = ss->get_context(tdata->thread_info);
 
 	/* setup shader globals from shader data */
 	sd->osl_ctx = ctx;
@@ -214,7 +216,7 @@
 	int shader = sd->shader & SHADER_MASK;
 
 	if (kg->osl.surface_state[shader])
-		ctx->execute(OSL::pvt::ShadUseSurface, *(kg->osl.surface_state[shader]), *globals);
+		ss->execute(*ctx, *(kg->osl.surface_state[shader]), *globals);
 
 	/* flatten closure tree */
 	sd->num_closure = 0;
@@ -259,10 +261,10 @@
 float3 OSLShader::eval_background(KernelGlobals *kg, ShaderData *sd, int path_flag)
 {
 	/* gather pointers */
-	OSL::pvt::ShadingSystemImpl *ssi = (OSL::pvt::ShadingSystemImpl *)kg->osl.ss;
+	OSL::ShadingSystem *ss = kg->osl.ss;
 	OSLGlobals::ThreadData *tdata = tls_get(OSLGlobals::ThreadData, kg->osl.thread_data);
 	OSL::ShaderGlobals *globals = &tdata->globals;
-	OSL::pvt::ShadingContext *ctx = ssi->get_context(tdata->thread_info);
+	OSL::ShadingContext *ctx = ss->get_context(tdata->thread_info);
 
 	/* setup shader globals from shader data */
 	sd->osl_ctx = ctx;
@@ -270,7 +272,7 @@
 
 	/* execute shader for this point */
 	if (kg->osl.background_state)
-		ctx->execute(OSL::pvt::ShadUseSurface, *kg->osl.background_state, *globals);
+		ss->execute(*ctx, *(kg->osl.background_state), *globals);
 
 	/* return background color immediately */
 	if (globals->Ci)
@@ -336,10 +338,10 @@
 void OSLShader::eval_volume(KernelGlobals *kg, ShaderData *sd, float randb, int path_flag)
 {
 	/* gather pointers */
-	OSL::pvt::ShadingSystemImpl *ssi = (OSL::pvt::ShadingSystemImpl *)kg->osl.ss;
+	OSL::ShadingSystem *ss = kg->osl.ss;
 	OSLGlobals::ThreadData *tdata = tls_get(OSLGlobals::ThreadData, kg->osl.thread_data);
 	OSL::ShaderGlobals *globals = &tdata->globals;
-	OSL::pvt::ShadingContext *ctx = ssi->get_context(tdata->thread_info);
+	OSL::ShadingContext *ctx = ss->get_context(tdata->thread_info);
 
 	/* setup shader globals from shader data */
 	sd->osl_ctx = ctx;
@@ -349,7 +351,7 @@
 	int shader = sd->shader & SHADER_MASK;
 
 	if (kg->osl.volume_state[shader])
-		ctx->execute(OSL::pvt::ShadUseSurface, *(kg->osl.volume_state[shader]), *globals);
+		ss->execute(*ctx, *(kg->osl.volume_state[shader]), *globals);
 
 	if (globals->Ci)
 		flatten_volume_closure_tree(sd, globals->Ci);
@@ -360,10 +362,10 @@
 void OSLShader::eval_displacement(KernelGlobals *kg, ShaderData *sd)
 {
 	/* gather pointers */
-	OSL::pvt::ShadingSystemImpl *ssi = (OSL::pvt::ShadingSystemImpl *)kg->osl.ss;
+	OSL::ShadingSystem *ss = kg->osl.ss;
 	OSLGlobals::ThreadData *tdata = tls_get(OSLGlobals::ThreadData, kg->osl.thread_data);
 	OSL::ShaderGlobals *globals = &tdata->globals;
-	OSL::pvt::ShadingContext *ctx = ssi->get_context(tdata->thread_info);
+	OSL::ShadingContext *ctx = ss->get_context(tdata->thread_info);
 
 	/* setup shader globals from shader data */
 	sd->osl_ctx = ctx;
@@ -373,7 +375,7 @@
 	int shader = sd->shader & SHADER_MASK;
 
 	if (kg->osl.displacement_state[shader])
-		ctx->execute(OSL::pvt::ShadUseSurface, *(kg->osl.displacement_state[shader]), *globals);
+		ss->execute(*ctx, *(kg->osl.displacement_state[shader]), *globals);
 
 	/* get back position */
 	sd->P = TO_FLOAT3(globals->P);
@@ -381,10 +383,11 @@
 
 void OSLShader::release(KernelGlobals *kg, const ShaderData *sd)
 {
-	OSL::pvt::ShadingSystemImpl *ssi = (OSL::pvt::ShadingSystemImpl *)kg->osl.ss;
+	OSL::ShadingSystem *ss = kg->osl.ss;
 	OSLGlobals::ThreadData *tdata = tls_get(OSLGlobals::ThreadData, kg->osl.thread_data);
+	OSL::ShadingContext *ctx = ss->get_context(tdata->thread_info);
 
-	ssi->release_context((OSL::pvt::ShadingContext *)sd->osl_ctx, tdata->thread_info);
+	ss->release_context(ctx);
 }
 
 /* BSDF Closure */




More information about the Bf-blender-cvs mailing list