[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