[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [53081] tags/blender-2.65a-release/blender : svn merge ^/trunk/ blender -c52867 -c52870 -c52871 -c52883 -c52891 -c52910 -c52915 -c52919 -c52928 -c52930 -c52945 -c52958 -c52977 -c52994 -c52995 -c52996 -c52997 -c52998 -c53015 -c53037 -c53038 -c53039 -c53056 -c53061 -c53063 -c53065 -c53066 -c53067 -c53077 -c52966 -c52981

Campbell Barton ideasman42 at gmail.com
Mon Dec 17 12:26:44 CET 2012


Revision: 53081
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=53081
Author:   campbellbarton
Date:     2012-12-17 11:26:41 +0000 (Mon, 17 Dec 2012)
Log Message:
-----------
svn merge ^/trunk/blender -c52867 -c52870 -c52871 -c52883 -c52891 -c52910 -c52915 -c52919 -c52928 -c52930 -c52945 -c52958 -c52977 -c52994 -c52995 -c52996 -c52997 -c52998 -c53015 -c53037 -c53038 -c53039 -c53056 -c53061 -c53063 -c53065 -c53066 -c53067 -c53077 -c52966 -c52981

Modified Paths:
--------------
    tags/blender-2.65a-release/blender/intern/cycles/kernel/kernel_compat_cpu.h
    tags/blender-2.65a-release/blender/intern/cycles/render/graph.h
    tags/blender-2.65a-release/blender/intern/cycles/render/nodes.h
    tags/blender-2.65a-release/blender/intern/cycles/render/osl.cpp
    tags/blender-2.65a-release/blender/intern/cycles/render/osl.h
    tags/blender-2.65a-release/blender/intern/cycles/render/svm.cpp
    tags/blender-2.65a-release/blender/intern/elbeem/intern/ntl_world.cpp
    tags/blender-2.65a-release/blender/intern/elbeem/intern/ntl_world.h
    tags/blender-2.65a-release/blender/intern/ghost/intern/GHOST_WindowCocoa.mm
    tags/blender-2.65a-release/blender/intern/iksolver/extern/IK_solver.h
    tags/blender-2.65a-release/blender/release/datafiles/startup.blend
    tags/blender-2.65a-release/blender/source/blender/blenkernel/intern/dynamicpaint.c
    tags/blender-2.65a-release/blender/source/blender/blenkernel/intern/image.c
    tags/blender-2.65a-release/blender/source/blender/blenkernel/intern/modifiers_bmesh.c
    tags/blender-2.65a-release/blender/source/blender/blenkernel/intern/sequencer.c
    tags/blender-2.65a-release/blender/source/blender/bmesh/tools/bmesh_bevel.c
    tags/blender-2.65a-release/blender/source/blender/editors/interface/interface_handlers.c
    tags/blender-2.65a-release/blender/source/blender/editors/interface/interface_widgets.c
    tags/blender-2.65a-release/blender/source/blender/editors/mesh/editmesh_knife.c
    tags/blender-2.65a-release/blender/source/blender/editors/mesh/editmesh_tools.c
    tags/blender-2.65a-release/blender/source/blender/editors/sculpt_paint/paint_vertex.c
    tags/blender-2.65a-release/blender/source/blender/editors/space_clip/space_clip.c
    tags/blender-2.65a-release/blender/source/blender/editors/space_image/image_edit.c
    tags/blender-2.65a-release/blender/source/blender/editors/space_image/space_image.c
    tags/blender-2.65a-release/blender/source/blender/editors/space_node/drawnode.c
    tags/blender-2.65a-release/blender/source/blender/editors/space_view3d/drawobject.c
    tags/blender-2.65a-release/blender/source/blender/editors/space_view3d/view3d_buttons.c
    tags/blender-2.65a-release/blender/source/blender/editors/space_view3d/view3d_edit.c
    tags/blender-2.65a-release/blender/source/blender/editors/space_view3d/view3d_ops.c
    tags/blender-2.65a-release/blender/source/blender/editors/transform/transform_conversions.c
    tags/blender-2.65a-release/blender/source/blender/editors/transform/transform_input.c
    tags/blender-2.65a-release/blender/source/blender/gpu/intern/gpu_draw.c
    tags/blender-2.65a-release/blender/source/blender/render/intern/source/convertblender.c
    tags/blender-2.65a-release/blender/source/blender/windowmanager/intern/wm_window.c
    tags/blender-2.65a-release/blender/source/blender/windowmanager/wm_event_types.h
    tags/blender-2.65a-release/blender/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp

Property Changed:
----------------
    tags/blender-2.65a-release/blender/


Property changes on: tags/blender-2.65a-release/blender
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/ge_harmony:42255,42279-42282,42286,42302,42338,42349,42616,42620,42698-42699,42739,42753,42773-42774,42832,44568,44597-44598,44793-44794
/branches/soc-2011-cucumber:37517,38166-38167,38177,38179-38180,38187,38242,38384,38387,38403-38404,38407,38968,38970,38973,39045,40845,42997-42998,43439
/branches/soc-2011-tomato:42376,42378-42379,42383,42385,42395,42397-42400,42407,42411,42418,42443-42444,42446,42467,42472,42486,42650-42652,42654-42655,42709-42710,42733-42734,42801,43872,44130,44141,44147-44149,44151-44152,44229-44230,45623-45625,46037,48089,48092,48551-48552,48679,48790,48792-48793,49076,49087,49292,49294,49466,49894,50052,50126
/trunk/blender:52842-52858
   + /branches/ge_harmony:42255,42279-42282,42286,42302,42338,42349,42616,42620,42698-42699,42739,42753,42773-42774,42832,44568,44597-44598,44793-44794
/branches/soc-2011-cucumber:37517,38166-38167,38177,38179-38180,38187,38242,38384,38387,38403-38404,38407,38968,38970,38973,39045,40845,42997-42998,43439
/branches/soc-2011-tomato:42376,42378-42379,42383,42385,42395,42397-42400,42407,42411,42418,42443-42444,42446,42467,42472,42486,42650-42652,42654-42655,42709-42710,42733-42734,42801,43872,44130,44141,44147-44149,44151-44152,44229-44230,45623-45625,46037,48089,48092,48551-48552,48679,48790,48792-48793,49076,49087,49292,49294,49466,49894,50052,50126
/trunk/blender:52842-52858,52867,52870-52871,52883,52891,52910,52915,52919,52928,52930,52945,52958,52966,52977,52981,52994-52998,53005,53015,53037-53039,53056,53061,53063,53065-53067,53077

Modified: tags/blender-2.65a-release/blender/intern/cycles/kernel/kernel_compat_cpu.h
===================================================================
--- tags/blender-2.65a-release/blender/intern/cycles/kernel/kernel_compat_cpu.h	2012-12-17 09:57:06 UTC (rev 53080)
+++ tags/blender-2.65a-release/blender/intern/cycles/kernel/kernel_compat_cpu.h	2012-12-17 11:26:41 UTC (rev 53081)
@@ -112,8 +112,8 @@
 			return make_float4(0.0f, 0.0f, 0.0f, 0.0f);
 
 		int ix, iy, nix, niy;
-		float tx = frac(x*width, &ix);
-		float ty = frac(y*height, &iy);
+		float tx = frac(x*width - 0.5f, &ix);
+		float ty = frac(y*height - 0.5f, &iy);
 
 		if(periodic) {
 			ix = wrap_periodic(ix, width);

Modified: tags/blender-2.65a-release/blender/intern/cycles/render/graph.h
===================================================================
--- tags/blender-2.65a-release/blender/intern/cycles/render/graph.h	2012-12-17 09:57:06 UTC (rev 53080)
+++ tags/blender-2.65a-release/blender/intern/cycles/render/graph.h	2012-12-17 11:26:41 UTC (rev 53081)
@@ -183,6 +183,9 @@
 	virtual void compile(SVMCompiler& compiler) = 0;
 	virtual void compile(OSLCompiler& compiler) = 0;
 
+	virtual bool has_surface_emission() { return false; }
+	virtual bool has_surface_transparent() { return false; }
+
 	vector<ShaderInput*> inputs;
 	vector<ShaderOutput*> outputs;
 

Modified: tags/blender-2.65a-release/blender/intern/cycles/render/nodes.h
===================================================================
--- tags/blender-2.65a-release/blender/intern/cycles/render/nodes.h	2012-12-17 09:57:06 UTC (rev 53080)
+++ tags/blender-2.65a-release/blender/intern/cycles/render/nodes.h	2012-12-17 11:26:41 UTC (rev 53081)
@@ -26,7 +26,7 @@
 CCL_NAMESPACE_BEGIN
 
 class ImageManager;
-class Shadr;
+class Shader;
 
 /* Texture Mapping */
 
@@ -220,6 +220,8 @@
 class TransparentBsdfNode : public BsdfNode {
 public:
 	SHADER_NODE_CLASS(TransparentBsdfNode)
+
+	bool has_surface_transparent() { return true; }
 };
 
 class VelvetBsdfNode : public BsdfNode {
@@ -255,6 +257,8 @@
 public:
 	SHADER_NODE_CLASS(EmissionNode)
 
+	bool has_surface_emission() { return true; }
+
 	bool total_power;
 };
 

Modified: tags/blender-2.65a-release/blender/intern/cycles/render/osl.cpp
===================================================================
--- tags/blender-2.65a-release/blender/intern/cycles/render/osl.cpp	2012-12-17 09:57:06 UTC (rev 53080)
+++ tags/blender-2.65a-release/blender/intern/cycles/render/osl.cpp	2012-12-17 11:26:41 UTC (rev 53081)
@@ -76,12 +76,12 @@
 
 		if(progress.get_cancel()) return;
 
-		if(shader->sample_as_light && shader->has_surface_emission)
-			scene->light_manager->need_update = true;
-
 		OSLCompiler compiler((void*)this, (void*)ss, scene->image_manager);
 		compiler.background = (shader == scene->shaders[scene->default_background]);
 		compiler.compile(og, shader);
+
+		if(shader->sample_as_light && shader->has_surface_emission)
+			scene->light_manager->need_update = true;
 	}
 
 	/* setup shader engine */
@@ -202,10 +202,16 @@
 
 const char *OSLShaderManager::shader_test_loaded(const string& hash)
 {
-	set<string>::iterator it = loaded_shaders.find(hash);
-	return (it == loaded_shaders.end())? NULL: it->c_str();
+	map<string, OSLShaderInfo>::iterator it = loaded_shaders.find(hash);
+	return (it == loaded_shaders.end())? NULL: it->first.c_str();
 }
 
+OSLShaderInfo *OSLShaderManager::shader_loaded_info(const string& hash)
+{
+	map<string, OSLShaderInfo>::iterator it = loaded_shaders.find(hash);
+	return (it == loaded_shaders.end())? NULL: &it->second;
+}
+
 const char *OSLShaderManager::shader_load_filepath(string filepath)
 {
 	size_t len = filepath.size();
@@ -261,7 +267,8 @@
 
 	if(!path_read_text(filepath, bytecode)) {
 		fprintf(stderr, "Cycles shader graph: failed to read file %s\n", filepath.c_str());
-		loaded_shaders.insert(bytecode_hash); /* to avoid repeat tries */
+		OSLShaderInfo info;
+		loaded_shaders[bytecode_hash] = info; /* to avoid repeat tries */
 		return NULL;
 	}
 
@@ -272,7 +279,13 @@
 {
 	ss->LoadMemoryShader(hash.c_str(), bytecode.c_str());
 
-	return loaded_shaders.insert(hash).first->c_str();
+	/* this is a bit weak, but works */
+	OSLShaderInfo info;
+	info.has_surface_emission = (bytecode.find("\"emission\"") != string::npos);
+	info.has_surface_transparent = (bytecode.find("\"transparent\"") != string::npos);
+	loaded_shaders[hash] = info;
+
+	return loaded_shaders.find(hash)->first.c_str();
 }
 
 /* Graph Compiler */
@@ -443,6 +456,16 @@
 			ss->ConnectShaders(id_from.c_str(), param_from.c_str(), id_to.c_str(), param_to.c_str());
 		}
 	}
+
+	/* test if we shader contains specific closures */
+	OSLShaderInfo *info = ((OSLShaderManager*)manager)->shader_loaded_info(name);
+
+	if(info) {
+		if(info->has_surface_emission)
+			current_shader->has_surface_emission = true;
+		if(info->has_surface_transparent)
+			current_shader->has_surface_transparent = true;
+	}
 }
 
 void OSLCompiler::parameter(const char *name, float f)
@@ -598,9 +621,9 @@
 					node->compile(*this);
 					done.insert(node);
 
-					if(node->name == ustring("emission"))
+					if(node->has_surface_emission())
 						current_shader->has_surface_emission = true;
-					if(node->name == ustring("transparent"))
+					if(node->has_surface_transparent())
 						current_shader->has_surface_transparent = true;
 				}
 				else

Modified: tags/blender-2.65a-release/blender/intern/cycles/render/osl.h
===================================================================
--- tags/blender-2.65a-release/blender/intern/cycles/render/osl.h	2012-12-17 09:57:06 UTC (rev 53080)
+++ tags/blender-2.65a-release/blender/intern/cycles/render/osl.h	2012-12-17 11:26:41 UTC (rev 53081)
@@ -45,6 +45,18 @@
 
 #ifdef WITH_OSL
 
+/* OSL Shader Info
+ * to auto detect closures in the shader for MIS and transparent shadows */
+
+struct OSLShaderInfo {
+	OSLShaderInfo()
+	: has_surface_emission(false), has_surface_transparent(false)
+	{}
+
+	bool has_surface_emission;
+	bool has_surface_transparent;
+};
+
 /* Shader Manage */
 
 class OSLShaderManager : public ShaderManager {
@@ -65,6 +77,7 @@
 	const char *shader_test_loaded(const string& hash);
 	const char *shader_load_bytecode(const string& hash, const string& bytecode);
 	const char *shader_load_filepath(string filepath);
+	OSLShaderInfo *shader_loaded_info(const string& hash);
 
 protected:
 	void texture_system_init();
@@ -74,7 +87,7 @@
 	OSL::TextureSystem *ts;
 	OSLRenderServices *services;
 	OSL::ErrorHandler errhandler;
-	set<string> loaded_shaders;
+	map<string, OSLShaderInfo> loaded_shaders;
 };
 
 #endif

Modified: tags/blender-2.65a-release/blender/intern/cycles/render/svm.cpp
===================================================================
--- tags/blender-2.65a-release/blender/intern/cycles/render/svm.cpp	2012-12-17 09:57:06 UTC (rev 53080)
+++ tags/blender-2.65a-release/blender/intern/cycles/render/svm.cpp	2012-12-17 11:26:41 UTC (rev 53081)
@@ -478,9 +478,9 @@
 		stack_clear_users(node, done);
 		stack_clear_temporary(node);
 
-		if(node->name == ustring("emission"))
+		if(node->has_surface_emission())
 			current_shader->has_surface_emission = true;
-		if(node->name == ustring("transparent"))
+		if(node->has_surface_transparent())
 			current_shader->has_surface_transparent = true;
 
 		/* end node is added outside of this */
@@ -538,9 +538,9 @@
 
 		mix_weight_offset = SVM_STACK_INVALID;
 
-		if(node->name == ustring("emission"))
+		if(node->has_surface_emission())
 			current_shader->has_surface_emission = true;
-		if(node->name == ustring("transparent"))
+		if(node->has_surface_transparent())
 			current_shader->has_surface_transparent = true;
 	}
 

Modified: tags/blender-2.65a-release/blender/intern/elbeem/intern/ntl_world.cpp
===================================================================
--- tags/blender-2.65a-release/blender/intern/elbeem/intern/ntl_world.cpp	2012-12-17 09:57:06 UTC (rev 53080)
+++ tags/blender-2.65a-release/blender/intern/elbeem/intern/ntl_world.cpp	2012-12-17 11:26:41 UTC (rev 53081)
@@ -420,7 +420,12 @@
 	// Was: double targetTime = mSimulationTime + (*mpSims)[mFirstSim]->getFrameTime(framenum); - DG
 	double totalTime = 0.0, targetTime = 0.0;
 	for(size_t i = 0; i < mSimFrameCnt; i++)
-		totalTime += (*mpSims)[mFirstSim]->getFrameTime(framenum);
+	{
+		/* We need an intermediate array "mSimFrameValue" because
+		otherwise if we don't start with starttime = 0, 
+		the sim gets out of sync - DG */
+		totalTime += (*mpSims)[mFirstSim]->getFrameTime(mSimFrameValue[i]);	
+	}
 	targetTime = totalTime + (*mpSims)[mFirstSim]->getFrameTime(framenum);
 
 	int gstate = 0;
@@ -468,6 +473,7 @@
 		sim->prepareVisualization();
 	}
 
+	mSimFrameValue.push_back(framenum);
 	mSimFrameCnt++;
 
 	return 0;


@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list