[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