[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [11417] branches/soc-2007-mosani/source/ blender/render: This commit is mostly so that I will have a clean copy

Aaron Moore two.a.ron at gmail.com
Sun Jul 29 18:46:21 CEST 2007


Revision: 11417
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=11417
Author:   mosani
Date:     2007-07-29 18:46:21 +0200 (Sun, 29 Jul 2007)

Log Message:
-----------
This commit is mostly so that I will have a clean copy
to work with for integrating changes to the plugin API, 
however...

Changes I have made:
 1. added get pixel filter type,
 2. added stop render test
 3. am almost done writing render api version of threaded_tile_processor

Modified Paths:
--------------
    branches/soc-2007-mosani/source/blender/render/extern/include/RE_pipeline.h
    branches/soc-2007-mosani/source/blender/render/intern/include/render_types.h
    branches/soc-2007-mosani/source/blender/render/intern/include/renderdatabase.h
    branches/soc-2007-mosani/source/blender/render/intern/include/renderpipeline.h
    branches/soc-2007-mosani/source/blender/render/intern/source/RND_converblender.c
    branches/soc-2007-mosani/source/blender/render/intern/source/pipeline.c
    branches/soc-2007-mosani/source/blender/render/intern/source/rendercallbacks.c
    branches/soc-2007-mosani/source/blender/render/render_api/aqsis_plugin/aqsis.c
    branches/soc-2007-mosani/source/blender/render/render_api/include/RND_types.h
    branches/soc-2007-mosani/source/blender/render/render_api/include/RenderAPI.h
    branches/soc-2007-mosani/source/blender/render/render_api/include/RenderAPI_internal.h
    branches/soc-2007-mosani/source/blender/render/render_api/source/RND_context.c
    branches/soc-2007-mosani/source/blender/render/render_api/source/RND_internal.c
    branches/soc-2007-mosani/source/blender/render/render_api/source/RND_object.c
    branches/soc-2007-mosani/source/blender/render/render_api/source/RND_settings.c

Modified: branches/soc-2007-mosani/source/blender/render/extern/include/RE_pipeline.h
===================================================================
--- branches/soc-2007-mosani/source/blender/render/extern/include/RE_pipeline.h	2007-07-29 14:30:06 UTC (rev 11416)
+++ branches/soc-2007-mosani/source/blender/render/extern/include/RE_pipeline.h	2007-07-29 16:46:21 UTC (rev 11417)
@@ -45,6 +45,11 @@
 
 #define RE_MAXNAME	32
 
+/*
+ * NOTE: Render will be renamed RNDRender after the render API
+ *  convert code is completed and the old convert code removed.
+ */
+
 /* only used as handle */
 typedef struct Render Render;
 

Modified: branches/soc-2007-mosani/source/blender/render/intern/include/render_types.h
===================================================================
--- branches/soc-2007-mosani/source/blender/render/intern/include/render_types.h	2007-07-29 14:30:06 UTC (rev 11416)
+++ branches/soc-2007-mosani/source/blender/render/intern/include/render_types.h	2007-07-29 16:46:21 UTC (rev 11417)
@@ -96,6 +96,11 @@
 	int branchcount, nodecount;
 } Octree;
 
+/*
+ * NOTE: Render will be renamed RNDRender after the render API
+ *  convert code is completed and the old convert code removed.
+ */
+
 /* controls state of render, everything that's read-only during render stage */
 struct Render
 {
@@ -204,7 +209,6 @@
 	void (*setup)( RNDScene scene );
 	void (*render_frame)( RNDScene scene, RNDResult result );
 	void (*finish)();
-	void (*abort)();
 	char axis[3];
 };
 

Modified: branches/soc-2007-mosani/source/blender/render/intern/include/renderdatabase.h
===================================================================
--- branches/soc-2007-mosani/source/blender/render/intern/include/renderdatabase.h	2007-07-29 14:30:06 UTC (rev 11416)
+++ branches/soc-2007-mosani/source/blender/render/intern/include/renderdatabase.h	2007-07-29 16:46:21 UTC (rev 11417)
@@ -109,6 +109,10 @@
 	SampleTables *samples;
 	float jit[32][2];
 	
+	/* filled from render API */
+	RenderData r;
+	World wrld;
+	
 	ListBase parts;
 	
 	/* octree tables and variables for raytrace */
@@ -198,12 +202,10 @@
  *    from a Scene structure
  */
 
-void database_from_scene( RenderDatabase *db, RNDScene scene );
-void database_add_lamp( RenderDatabase *database, RNDObject object );
-void database_insert_polygon_mesh( RenderDatabase *database, RNDObject object );
+void render_database_from_scene( RenderDatabase *db, RNDScene scene );
+void render_database_free( RenderDatabase *database );
+void render_database_add_lamp( RenderDatabase *database, RNDObject object );
+void render_database_insert_polygon_mesh( RenderDatabase *database, RNDObject object );
 
-struct VlakRen *findOrAddVlak( RenderDatabase *db, int nr );
-struct VertRen *findOrAddVert( RenderDatabase *db, int nr );
-
 #endif /* RENDERDATABASE_H */
 

Modified: branches/soc-2007-mosani/source/blender/render/intern/include/renderpipeline.h
===================================================================
--- branches/soc-2007-mosani/source/blender/render/intern/include/renderpipeline.h	2007-07-29 14:30:06 UTC (rev 11416)
+++ branches/soc-2007-mosani/source/blender/render/intern/include/renderpipeline.h	2007-07-29 16:46:21 UTC (rev 11417)
@@ -45,6 +45,9 @@
 void Render_Frame( struct Render *re );
 void Finish( struct Render *re );
 
+void render_layer_add_pass( struct RenderResult *rr, struct RenderLayer *rl, 
+                            int channels, int passtype );
+
 #define PASS_VECTOR_MAX	10000.0f
 
 #endif /* PIPELINE_H */

Modified: branches/soc-2007-mosani/source/blender/render/intern/source/RND_converblender.c
===================================================================
--- branches/soc-2007-mosani/source/blender/render/intern/source/RND_converblender.c	2007-07-29 14:30:06 UTC (rev 11416)
+++ branches/soc-2007-mosani/source/blender/render/intern/source/RND_converblender.c	2007-07-29 16:46:21 UTC (rev 11417)
@@ -129,7 +129,14 @@
 
 #include "renderdatabase.h"
 
-void database_from_scene( RenderDatabase *db, RNDScene scene )
+/* helper prototypes */
+static struct VlakRen *render_database_findOrAddVlak( RenderDatabase *db, int nr );
+static struct VertRen *render_database_findOrAddVert( RenderDatabase *db, int nr );
+static void render_database_free_renderdata_tables( RenderDatabase *db );
+static void render_database_free_parts( RenderDatabase *db );
+static void render_database_initialize_parts( RenderDatabase *db, RNDScene scene );
+
+void render_database_from_scene( RenderDatabase *db, RNDScene scene )
 {
 	/* variables */
 	RNDObject object;
@@ -137,9 +144,9 @@
 	/* empty database */
 	memset( db, 0, sizeof(RenderDatabase) );
 	db->memArena = BLI_memarena_new(BLI_MEMARENA_STD_BUFSIZE);
-	db->totvlak = db->totvert = db->totlamp = db->tothalo = 0;
-	db->lights.first = db->lights.last = NULL;
-	db->lampren.first = db->lampren.last = NULL;
+	/*db->totvlak = db->totvert = db->totlamp = db->tothalo = 0;
+	db->lights.first = db->lights.last = NULL;        due to memset call all 
+	db->lampren.first = db->lampren.last = NULL;      of this does nothing */
 	
 	/* loop through all objects */
 	object = RND_get_objects( scene, RND_ALL );
@@ -147,18 +154,60 @@
 	{
 		switch( RND_object_get_type(object) )
 		{
-			case RND_LIGHT:
-				database_add_lamp( db, object );
+			case RND_LIGHT_POINT:
+				render_database_add_lamp( db, object );
 				break;
 			case RND_GEOMETRY_POLYGON_MESH:
-				database_insert_polygon_mesh( db, object );
+				render_database_insert_polygon_mesh( db, object );
 				break;
 			default: break;
 		}
 	}
+	
+	/* set render settings */
+	db->winx = RND_get_image_width( scene );
+	db->winy = RND_get_image_height( scene );
+	
+	db->disprect.xmin = 0;
+	db->disprect.ymin = 0;
+	db->disprect.xmax = RND_get_image_width( scene );
+	db->disprect.ymax = RND_get_image_height( scene );
+	
+	db->rectx = RND_get_image_width( scene );
+	db->recty = RND_get_image_height( scene );
+	
+	/* initialize parts */
+	render_database_initialize_parts( db, scene );
 }
+void render_database_free( RenderDatabase *db )
+{
+	LampRen *lar;
+	
+	/* free render lamps */
+	for(lar= db->lampren.first; lar; lar= lar->next) {
+		freeshadowbuf(lar);
+		if(lar->jitter) MEM_freeN(lar->jitter);
+		if(lar->shadsamp) MEM_freeN(lar->shadsamp);
+	}
+	BLI_freelistN(&db->lampren);
+	BLI_freelistN(&db->lights);
+	
+	/* free render verticies and faces */
+	render_database_free_renderdata_tables( db );
+	
+	db->totvlak = db->totvert = db->totlamp = db->tothalo = 0;
+	
+	/* free memory arena */
+	if(db->memArena) {
+		BLI_memarena_free(db->memArena);
+		db->memArena = NULL;
+	}
+	
+	/* free render parts */
+	render_database_free_parts( db );
+}
 
-void database_add_lamp( RenderDatabase *database, RNDObject object )
+void render_database_add_lamp( RenderDatabase *database, RNDObject object )
 {	
 	RNDLight light;
 	LampRen *render_lamp;
@@ -205,7 +254,7 @@
 	render_lamp->b = color[2] * render_lamp->energy;
 }
 
-void database_insert_polygon_mesh( RenderDatabase *database, RNDObject object )
+void render_database_insert_polygon_mesh( RenderDatabase *database, RNDObject object )
 {
 	RNDGeometry geometry;
 	RNDVertex vertex;
@@ -224,7 +273,7 @@
 	vertex = RND_geometry_get_vertices( geometry );
 	for( ; RND_vertex_exists( vertex ); RND_vertex_next( vertex ) )
 	{
-		render_vertex = findOrAddVert( database, database->totvert++ );
+		render_vertex = render_database_findOrAddVert( database, database->totvert++ );
 		RND_vertex_get_coordinates( vertex, render_vertex->co );
 		MTC_Mat4MulVecfl( object_matrix, render_vertex->co );
 	}
@@ -239,7 +288,7 @@
 	face = RND_geometry_get_faces( geometry );
 	for( ; RND_face_exists( face ); RND_face_next( face ) )
 	{
-		render_face = findOrAddVlak( database, database->totvert++ );
+		render_face = render_database_findOrAddVlak( database, database->totvlak++ );
 		
 		/* assign VertRens */
 		index = RND_face_get_indices( face );
@@ -251,7 +300,7 @@
 				case 3: vertren_ptr = &render_face->v4; break; 
 			}
 			if( RND_index_exists( index ) )
-				*vertren_ptr = findOrAddVert( database, vertex_offset+i );
+				*vertren_ptr = render_database_findOrAddVert( database, vertex_offset+i );
 			else *vertren_ptr = 0;
 		}
 		
@@ -271,17 +320,15 @@
 }
 
 
-
-
 /*****************************************************************************\
  *                                                                           *
  *             H  E  L  P  E  R         F  U  N  C  T  I  O  N  S            *
  *                                                                           *
 \*****************************************************************************/
 
+/**** render tables ****/
 
-
-struct VlakRen *findOrAddVlak( RenderDatabase *db, int nr )
+static struct VlakRen *render_database_findOrAddVlak( RenderDatabase *db, int nr )
 {
 	VlakTableNode *temp;
 	VlakRen *v;
@@ -332,7 +379,7 @@
 	return v;
 }
 
-struct VertRen *findOrAddVert( RenderDatabase *db, int nr )
+static struct VertRen *render_database_findOrAddVert( RenderDatabase *db, int nr )
 {
 	VertTableNode *temp;
 	VertRen *v;
@@ -382,3 +429,138 @@
 	return v;
 }
 
+static void render_database_free_renderdata_tables( RenderDatabase *db )
+{
+	/* free render verticies */
+	if(db->vertnodes) {
+		free_renderdata_vertnodes( db->vertnodes );
+		db->vertnodes = NULL;
+		db->vertnodeslen = 0;
+	}
+	
+	/* free render faces */
+	if(db->vlaknodes) {
+		free_renderdata_vlaknodes( db->vlaknodes );
+		db->vlaknodes = NULL;
+		db->vlaknodeslen = 0;
+	}
+}
+
+/**** render parts (tiles) ****/
+
+static void render_database_free_parts( RenderDatabase *db )
+{
+	RenderPart *part= db->parts.first;
+	
+	while(part) {
+		if(part->rectp) MEM_freeN(part->rectp);
+		if(part->rectz) MEM_freeN(part->rectz);
+		part= part->next;
+	}
+	BLI_freelistN( &db->parts );
+}
+
+static void render_database_initialize_parts( RenderDatabase *db, RNDScene scene )
+{
+	int nr, xd, yd, partx, party, xparts, yparts;
+	int xminb, xmaxb, yminb, ymaxb;
+	
+	render_database_free_parts( db );
+	
+	/* just for readable code.. */
+	xminb= db->disprect.xmin;
+	yminb= db->disprect.ymin;
+	xmaxb= db->disprect.xmax;
+	ymaxb= db->disprect.ymax;
+	
+	xparts= 4; /* hard coded: current API hole */
+	yparts= 4;
+	
+	/* correct size if parts are too small, 
+	   but for exr tile saving it was checked already */
+	   
+	/* commented out: current API hole
+	if(!(db->r.scemode & R_EXR_TILE_FILE)) {
+		if(db->r.mode & R_PANORAMA) {
+			if(db->rectx/xparts < 8) 
+				xparts= 1 + db->rectx/8;
+		} 
+		else */

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list