[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [41205] branches/cycles/source/blender: Cycles: some code changes to sync with trunk.

Brecht Van Lommel brechtvanlommel at pandora.be
Sat Oct 22 20:54:58 CEST 2011


Revision: 41205
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=41205
Author:   blendix
Date:     2011-10-22 18:54:57 +0000 (Sat, 22 Oct 2011)
Log Message:
-----------
Cycles: some code changes to sync with trunk.

Modified Paths:
--------------
    branches/cycles/source/blender/imbuf/IMB_imbuf_types.h
    branches/cycles/source/blender/render/CMakeLists.txt
    branches/cycles/source/blender/render/SConscript
    branches/cycles/source/blender/render/extern/include/RE_engine.h
    branches/cycles/source/blender/render/intern/source/pipeline.c

Added Paths:
-----------
    branches/cycles/source/blender/render/intern/source/external_engine.c

Removed Paths:
-------------
    branches/cycles/source/blender/render/intern/pipeline/

Modified: branches/cycles/source/blender/imbuf/IMB_imbuf_types.h
===================================================================
--- branches/cycles/source/blender/imbuf/IMB_imbuf_types.h	2011-10-22 18:51:45 UTC (rev 41204)
+++ branches/cycles/source/blender/imbuf/IMB_imbuf_types.h	2011-10-22 18:54:57 UTC (rev 41205)
@@ -169,27 +169,39 @@
 #define JPG				(1 << 27)
 #define BMP				(1 << 26)
 
+#ifdef WITH_QUICKTIME
 #define QUICKTIME		(1 << 25)
+#endif
 
+#ifdef WITH_HDR
 #define RADHDR			(1 << 24)
+#endif
+#ifdef WITH_TIFF
 #define TIF				(1 << 23)
 #define TIF_16BIT		(1 << 8 )
+#endif
 
 #define OPENEXR			(1 << 22)
 #define OPENEXR_HALF	(1 << 8 )
 #define OPENEXR_COMPRESS (7)	
 
+#ifdef WITH_CINEON
 #define CINEON			(1 << 21)
 #define DPX				(1 << 20)
+#endif
 
+#ifdef WITH_DDS
 #define DDS				(1 << 19)
+#endif
 
+#ifdef WITH_OPENJPEG
 #define JP2				(1 << 18)
 #define JP2_12BIT		(1 << 17)
 #define JP2_16BIT		(1 << 16)
 #define JP2_YCC			(1 << 15)
 #define JP2_CINE		(1 << 14)
 #define JP2_CINE_48FPS	(1 << 13) 
+#endif
 
 #define RAWTGA	        (TGA | 1)
 

Modified: branches/cycles/source/blender/render/CMakeLists.txt
===================================================================
--- branches/cycles/source/blender/render/CMakeLists.txt	2011-10-22 18:51:45 UTC (rev 41204)
+++ branches/cycles/source/blender/render/CMakeLists.txt	2011-10-22 18:54:57 UTC (rev 41205)
@@ -56,6 +56,7 @@
 	intern/raytrace/rayobject_vbvh.cpp
 	intern/source/convertblender.c
 	intern/source/envmap.c
+	intern/source/external_engine.c
 	intern/source/gammaCorrectionTables.c
 	intern/source/imagetexture.c
 	intern/source/initrender.c
@@ -78,7 +79,6 @@
 	intern/source/volumetric.c
 	intern/source/voxeldata.c
 	intern/source/zbuf.c
-	intern/pipeline/engine.c
 
 	extern/include/RE_engine.h
 	extern/include/RE_pipeline.h

Modified: branches/cycles/source/blender/render/SConscript
===================================================================
--- branches/cycles/source/blender/render/SConscript	2011-10-22 18:51:45 UTC (rev 41204)
+++ branches/cycles/source/blender/render/SConscript	2011-10-22 18:54:57 UTC (rev 41205)
@@ -1,7 +1,7 @@
 #!/usr/bin/python
 Import ('env')
 
-sources = env.Glob('intern/source/*.c') + env.Glob('intern/pipeline/*.c')
+sources = env.Glob('intern/source/*.c')
 raysources = env.Glob('intern/raytrace/*.cpp')
 
 incs = 'intern/include #/intern/guardedalloc ../blenlib ../makesdna ../makesrna'

Modified: branches/cycles/source/blender/render/extern/include/RE_engine.h
===================================================================
--- branches/cycles/source/blender/render/extern/include/RE_engine.h	2011-10-22 18:51:45 UTC (rev 41204)
+++ branches/cycles/source/blender/render/extern/include/RE_engine.h	2011-10-22 18:54:57 UTC (rev 41205)
@@ -35,9 +35,9 @@
 #define RE_ENGINE_H
 
 #include "DNA_listBase.h"
-#include "DNA_vec_types.h"
 #include "RNA_types.h"
 
+struct Object;
 struct Render;
 struct RenderEngine;
 struct RenderEngineType;

Copied: branches/cycles/source/blender/render/intern/source/external_engine.c (from rev 41183, branches/cycles/source/blender/render/intern/pipeline/engine.c)
===================================================================
--- branches/cycles/source/blender/render/intern/source/external_engine.c	                        (rev 0)
+++ branches/cycles/source/blender/render/intern/source/external_engine.c	2011-10-22 18:54:57 UTC (rev 41205)
@@ -0,0 +1,309 @@
+/*  
+ * $Id$
+ *
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version. 
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * The Original Code is Copyright (C) 2006 Blender Foundation.
+ * All rights reserved.
+ *
+ * The Original Code is: all of this file.
+ *
+ * Contributor(s): none yet.
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+/** \file blender/render/intern/pipeline/engine.c
+ *  \ingroup render
+ */
+
+#include <stddef.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "MEM_guardedalloc.h"
+
+#include "BLI_listbase.h"
+#include "BLI_string.h"
+#include "BLI_utildefines.h"
+
+#include "BKE_report.h"
+#include "BKE_scene.h"
+
+#include "IMB_imbuf.h"
+#include "IMB_imbuf_types.h"
+
+#ifdef WITH_PYTHON
+#include "BPY_extern.h"
+#endif
+
+#include "RE_engine.h"
+#include "RE_pipeline.h"
+
+#include "render_types.h"
+#include "renderpipeline.h"
+
+/* Render Engine Types */
+
+static RenderEngineType internal_render_type = {
+	NULL, NULL,
+	"BLENDER_RENDER", "Blender Render", RE_INTERNAL,
+	NULL, NULL, NULL, NULL, NULL, NULL,
+	{NULL, NULL, NULL}};
+
+#ifdef WITH_GAMEENGINE
+
+static RenderEngineType internal_game_type = {
+	NULL, NULL,
+	"BLENDER_GAME", "Blender Game", RE_INTERNAL|RE_GAME,
+	NULL, NULL, NULL, NULL, NULL, NULL,
+	{NULL, NULL, NULL}};
+
+#endif
+
+ListBase R_engines = {NULL, NULL};
+
+void RE_engines_init(void)
+{
+	BLI_addtail(&R_engines, &internal_render_type);
+#ifdef WITH_GAMEENGINE
+	BLI_addtail(&R_engines, &internal_game_type);
+#endif
+}
+
+void RE_engines_exit(void)
+{
+	RenderEngineType *type, *next;
+
+	for(type=R_engines.first; type; type=next) {
+		next= type->next;
+
+		BLI_remlink(&R_engines, type);
+
+		if(!(type->flag & RE_INTERNAL)) {
+			if(type->ext.free)
+				type->ext.free(type->ext.data);
+
+			MEM_freeN(type);
+		}
+	}
+}
+
+RenderEngineType *RE_engines_find(const char *idname)
+{
+	RenderEngineType *type;
+	
+	type= BLI_findstring(&R_engines, idname, offsetof(RenderEngineType, idname));
+	if(!type)
+		type= &internal_render_type;
+
+	return type;
+}
+
+/* Create, Free */
+
+RenderEngine *RE_engine_create(RenderEngineType *type)
+{
+	RenderEngine *engine = MEM_callocN(sizeof(RenderEngine), "RenderEngine");
+	engine->type= type;
+
+	return engine;
+}
+
+void RE_engine_free(RenderEngine *engine)
+{
+#ifdef WITH_PYTHON
+	if(engine->py_instance) {
+		BPY_DECREF(engine->py_instance);
+	}
+#endif
+
+	if(engine->text)
+		MEM_freeN(engine->text);
+
+	MEM_freeN(engine);
+}
+
+/* Render Results */
+
+RenderResult *RE_engine_begin_result(RenderEngine *engine, int x, int y, int w, int h)
+{
+	Render *re= engine->re;
+	RenderResult *result;
+	rcti disprect;
+
+	/* ensure the coordinates are within the right limits */
+	CLAMP(x, 0, re->result->rectx);
+	CLAMP(y, 0, re->result->recty);
+	CLAMP(w, 0, re->result->rectx);
+	CLAMP(h, 0, re->result->recty);
+
+	if(x + w > re->result->rectx)
+		w= re->result->rectx - x;
+	if(y + h > re->result->recty)
+		h= re->result->recty - y;
+
+	/* allocate a render result */
+	disprect.xmin= x;
+	disprect.xmax= x+w;
+	disprect.ymin= y;
+	disprect.ymax= y+h;
+
+	result= new_render_result(re, &disprect, 0, RR_USEMEM);
+	BLI_addtail(&engine->fullresult, result);
+
+	return result;
+}
+
+void RE_engine_update_result(RenderEngine *engine, RenderResult *result)
+{
+	Render *re= engine->re;
+
+	if(result) {
+		result->renlay= result->layers.first; // weak, draws first layer always
+		re->display_draw(re->ddh, result, NULL);
+	}
+}
+
+void RE_engine_end_result(RenderEngine *engine, RenderResult *result)
+{
+	Render *re= engine->re;
+
+	if(!result)
+		return;
+
+	/* merge. on break, don't merge in result for preview renders, looks nicer */
+	if(!(re->test_break(re->tbh) && (re->r.scemode & R_PREVIEWBUTS)))
+		merge_render_result(re->result, result);
+
+	/* draw */
+	if(!re->test_break(re->tbh)) {
+		result->renlay= result->layers.first; // weak, draws first layer always
+		re->display_draw(re->ddh, result, NULL);
+	}
+
+	/* free */
+	free_render_result(&engine->fullresult, result);
+}
+
+/* Cancel */
+
+int RE_engine_test_break(RenderEngine *engine)
+{
+	Render *re= engine->re;
+
+	if(re)
+		return re->test_break(re->tbh);
+	
+	return 0;
+}
+
+/* Statistics */
+
+void RE_engine_update_stats(RenderEngine *engine, const char *stats, const char *info)
+{
+	Render *re= engine->re;
+
+	/* stats draw callback */
+	if(re) {
+		re->i.statstr= stats;
+		re->i.infostr= info;
+		re->stats_draw(re->sdh, &re->i);
+		re->i.infostr= NULL;
+		re->i.statstr= NULL;
+	}
+
+	/* set engine text */
+	if(engine->text) {
+		MEM_freeN(engine->text);
+		engine->text= NULL;
+	}
+
+	if(stats && stats[0] && info && info[0])
+		engine->text= BLI_sprintfN("%s | %s", stats, info);
+	else if(info && info[0])
+		engine->text= BLI_strdup(info);
+	else if(stats && stats[0])
+		engine->text= BLI_strdup(stats);
+}
+
+void RE_engine_update_progress(RenderEngine *engine, float progress)
+{
+	Render *re= engine->re;
+
+	if(re) {
+		CLAMP(progress, 0.0f, 1.0f);
+		re->progress(re->prh, progress);
+	}
+}
+
+void RE_engine_report(RenderEngine *engine, int type, const char *msg)
+{
+	BKE_report(engine->re->reports, type, msg);
+}
+
+/* Render */
+
+int RE_engine_render(Render *re, int do_all)
+{
+	RenderEngineType *type= RE_engines_find(re->r.engine);
+	RenderEngine *engine;
+
+	/* verify if we can render */
+	if(!type->render)
+		return 0;
+	if((re->r.scemode & R_PREVIEWBUTS) && !(type->flag & RE_USE_PREVIEW))
+		return 0;
+	if(do_all && !(type->flag & RE_USE_POSTPROCESS))
+		return 0;
+	if(!do_all && (type->flag & RE_USE_POSTPROCESS))
+		return 0;
+
+	/* create render result */
+	BLI_rw_mutex_lock(&re->resultmutex, THREAD_LOCK_WRITE);
+	if(re->result==NULL || !(re->r.scemode & R_PREVIEWBUTS)) {
+		RE_FreeRenderResult(re->result);
+		re->result= new_render_result(re, &re->disprect, 0, 0);
+	}
+	BLI_rw_mutex_unlock(&re->resultmutex);
+	
+	if(re->result==NULL)
+		return 1;
+
+	/* render */
+	engine = RE_engine_create(type);
+	engine->re= re;
+
+	if((re->r.scemode & (R_NO_FRAME_UPDATE|R_PREVIEWBUTS))==0)
+		scene_update_for_newframe(re->main, re->scene, re->lay);
+
+	if(re->r.scemode & R_PREVIEWBUTS) {
+		//type->preview_update(engine, scene, id);
+		type->preview_render(engine);
+	}
+	else {
+		type->update(engine, re->main, re->scene);
+		type->render(engine);
+	}
+
+	free_render_result(&engine->fullresult, engine->fullresult.first);
+
+	RE_engine_free(engine);
+
+	return 1;
+}
+

Modified: branches/cycles/source/blender/render/intern/source/pipeline.c

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list