Revision: 16865
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=16865
Author:   mxcurioni
Date:     2008-10-01 17:03:35 +0200 (Wed, 01 Oct 2008)

Log Message:
-----------
soc-2008-mxcurioni: refactored Freestyle API to prepare for both rendering 
modes (OpenGL and Blender internal), applied a patch to allow CMake to be used 
for compilation.

Modified Paths:
--------------
    branches/soc-2008-mxcurioni/source/blender/CMakeLists.txt
    branches/soc-2008-mxcurioni/source/blender/freestyle/FRS_freestyle.h
    
branches/soc-2008-mxcurioni/source/blender/freestyle/intern/app_blender/api.cpp
    branches/soc-2008-mxcurioni/source/blender/python/CMakeLists.txt
    branches/soc-2008-mxcurioni/source/blender/render/CMakeLists.txt
    branches/soc-2008-mxcurioni/source/blender/render/intern/source/pipeline.c
    branches/soc-2008-mxcurioni/source/blender/src/CMakeLists.txt

Modified: branches/soc-2008-mxcurioni/source/blender/CMakeLists.txt
===================================================================
--- branches/soc-2008-mxcurioni/source/blender/CMakeLists.txt   2008-10-01 
08:23:08 UTC (rev 16864)
+++ branches/soc-2008-mxcurioni/source/blender/CMakeLists.txt   2008-10-01 
15:03:35 UTC (rev 16865)
@@ -24,7 +24,7 @@
 #
 # ***** END GPL LICENSE BLOCK *****
 
-SUBDIRS(avi nodes blenkernel blenlib blenloader blenpluginapi imbuf 
imbuf/intern/cineon gpu makesdna python radiosity readblenfile render src 
yafray)
+SUBDIRS(avi nodes blenkernel blenlib blenloader blenpluginapi imbuf 
imbuf/intern/cineon gpu makesdna python radiosity readblenfile render src 
yafray freestyle)
 
 IF(WITH_INTERNATIONAL)
   SUBDIRS(ftfont)

Modified: branches/soc-2008-mxcurioni/source/blender/freestyle/FRS_freestyle.h
===================================================================
--- branches/soc-2008-mxcurioni/source/blender/freestyle/FRS_freestyle.h        
2008-10-01 08:23:08 UTC (rev 16864)
+++ branches/soc-2008-mxcurioni/source/blender/freestyle/FRS_freestyle.h        
2008-10-01 15:03:35 UTC (rev 16865)
@@ -9,7 +9,7 @@
        
        void FRS_initialize();
        void FRS_prepare(Render* re);
-       void FRS_execute(Render* re, int render_in_layer);
+       void FRS_render_GL(Render* re);
 
 #ifdef __cplusplus
 }

Modified: 
branches/soc-2008-mxcurioni/source/blender/freestyle/intern/app_blender/api.cpp
===================================================================
--- 
branches/soc-2008-mxcurioni/source/blender/freestyle/intern/app_blender/api.cpp 
    2008-10-01 08:23:08 UTC (rev 16864)
+++ 
branches/soc-2008-mxcurioni/source/blender/freestyle/intern/app_blender/api.cpp 
    2008-10-01 15:03:35 UTC (rev 16865)
@@ -41,12 +41,11 @@
                if( controller == NULL )
                        controller = new Controller;
                
-               if( view == NULL )
+               if( view == NULL ) {
                        view = new AppGLWidget;
+                       controller->setView(view);
+               }
                
-               controller->setView(view);
-               controller->Clear();
-               
                if( strlen(style_module) == 0 ){
                        string path( pathconfig->getProjectDir() +  
Config::DIR_SEP + "style_modules" + Config::DIR_SEP + "contour.py" );
                        strcpy( style_module, path.c_str() );
@@ -82,24 +81,19 @@
                view->_camera->setUpVector(camUp);      
                view->_camera->setViewDirection(camDirection);
        }
-               
-       void FRS_load_mesh( Render *re ){
-               controller->LoadMesh(re);
-       }
+
        
        void FRS_prepare(Render* re) {
-               FRS_initialize();
                
+               // init
+               FRS_initialize();
                FRS_init_view(re);
                FRS_init_camera(re);
+               controller->Clear();
 
-               FRS_load_mesh(re);
-       }
-
-       void FRS_render(Render* re, int render_in_layer) {
+               // load mesh
+               controller->LoadMesh(re);
                
-               view->workingBuffer = GL_BACK;
-               
                // add style module
                cout << "Module: " << style_module << endl;
                controller->InsertStyleModule( 0, style_module );
@@ -110,76 +104,23 @@
                
                // build strokes
                controller->DrawStrokes(); 
-               
-               // render final result
-               view->draw(); 
        }
 
-       void FRS_execute(Render* re, int render_in_layer) {
+       void FRS_render_GL(Render* re) {
                
-               if(render_in_layer) {
-
-               //      GLenum status = 
glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT);
-               //      switch(status){
-               //              case GL_FRAMEBUFFER_COMPLETE_EXT:
-               //              cout << "CORRECT: GL_FRAMEBUFFER_COMPLETE" << 
endl;
-               //              break;
-               //              case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT: 
-               //              cout << "ERROR: 
GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT" << endl;
-               //              break;
-               //              case 
GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT: 
-               //              cout << "ERROR: 
GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT" << endl;
-               //              break;
-               //              case GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT: 
-               //              cout << "ERROR: 
GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT" << endl;
-               //              break;
-               //              case GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT: 
-               //              cout << "ERROR: 
GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT" << endl;
-               //              break;
-               //              case GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT: 
-               //              cout << "ERROR: 
GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT" << endl;
-               //              break;
-               //              case GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT: 
-               //              cout << "ERROR: 
GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT" << endl;
-               //              break;
-               //              case GL_FRAMEBUFFER_UNSUPPORTED_EXT: 
-               //              cout << "ERROR: GL_FRAMEBUFFER_UNSUPPORTED" << 
endl;
-               //              break;
-               // }
+               cout << "Rendering Freestyle with OpenGL" << endl;
                
-                       RenderLayer *rl;
+               // render strokes
+               view->workingBuffer = GL_BACK;
+               view->draw();
                
-                       for(rl = (RenderLayer *)re->result->layers.first; rl; 
rl= rl->next)
-                               if(rl->layflag & SCE_LAY_FRS)
-                                       break;
-                       
-                       int p;
-                       for(int j = 0; j < re->winy; j++) {
-                               for(int i = 0; i < re->winx; i++){
-                                       p = 4*(j*re->winx + i);
-                                       rl->rectf[p]      *= 0.6;
-                                       rl->rectf[p + 1]  = 0.6 * rl->rectf[p + 
1];
-                                       rl->rectf[p + 2] *= 0.6;
-                                       rl->rectf[p + 3]  = 1.0;
-                               }
-                       }
-                       
-               } else {
-                       // used to reobtain ogl context after 
RE_Database_FromScene call
-                       re->display_clear(re->result);
-                       
-                       // render strokes
-                       FRS_render(re, render_in_layer);                
-                       
-                       // display result
-                       RenderResult rres;
-                       RE_GetResultImage(re, &rres);
-                       view->readPixels(0, 0, re->winx, re->winy, 
AppGLWidget::RGBA, rres.rectf );             
-                       re->result->renlay = render_get_active_layer(re, 
re->result);
-                       re->display_draw(re->result, NULL);
-               }
-
-               
+               // display result
+               RenderResult rres;
+               RE_GetResultImage(re, &rres);
+               view->readPixels(0, 0, re->winx, re->winy, AppGLWidget::RGBA, 
rres.rectf );             
+               re->result->renlay = render_get_active_layer(re, re->result);
+               re->display_draw(re->result, NULL);
+       
                controller->CloseFile();
        }
        

Modified: branches/soc-2008-mxcurioni/source/blender/python/CMakeLists.txt
===================================================================
--- branches/soc-2008-mxcurioni/source/blender/python/CMakeLists.txt    
2008-10-01 08:23:08 UTC (rev 16864)
+++ branches/soc-2008-mxcurioni/source/blender/python/CMakeLists.txt    
2008-10-01 15:03:35 UTC (rev 16865)
@@ -35,6 +35,7 @@
   ../render/extern/include ../radiosity/extern/include
   ../makesdna ../../../intern/guardedalloc ../../../intern/bmfont ../imbuf 
../include
   ${PYTHON_INC} ../../../extern/glew/include ../gpu
+  ../freestyle ../freestyle/intern/python
 )
 
 IF(WITH_QUICKTIME)

Modified: branches/soc-2008-mxcurioni/source/blender/render/CMakeLists.txt
===================================================================
--- branches/soc-2008-mxcurioni/source/blender/render/CMakeLists.txt    
2008-10-01 08:23:08 UTC (rev 16864)
+++ branches/soc-2008-mxcurioni/source/blender/render/CMakeLists.txt    
2008-10-01 15:03:35 UTC (rev 16865)
@@ -30,6 +30,7 @@
   intern/include ../../../intern/guardedalloc ../blenlib ../makesdna
   extern/include ../blenkernel ../radiosity/extern/include ../imbuf
   ../quicktime ../include ../../kernel/gen_messaging ../yafray ../blenloader
+  ../freestyle
 )
 
 IF(WITH_OPENEXR)

Modified: 
branches/soc-2008-mxcurioni/source/blender/render/intern/source/pipeline.c
===================================================================
--- branches/soc-2008-mxcurioni/source/blender/render/intern/source/pipeline.c  
2008-10-01 08:23:08 UTC (rev 16864)
+++ branches/soc-2008-mxcurioni/source/blender/render/intern/source/pipeline.c  
2008-10-01 15:03:35 UTC (rev 16865)
@@ -1630,14 +1630,13 @@
        else
           RE_Database_FromScene(re, re->scene, 1);
        
-       threaded_tile_processor(re);
-       
        /* Freestyle */
        if( re->r.mode & R_EDGE_FRS ) {
                FRS_prepare(re);
-               FRS_execute(re,1);
        }
        
+       threaded_tile_processor(re);
+       
        /* do left-over 3d post effects (flares) */
        if(re->flag & R_HALO)
                if(!re->test_break())
@@ -2201,8 +2200,6 @@
 
 static void freestyleRender(Render *re)
 {
-       float mat[4][4];
-       
        // init render result
        RE_FreeRenderResult(re->result);
        re->result = new_render_result(re, &re->disprect, 0, RR_USEMEM);
@@ -2215,13 +2212,16 @@
                RE_Database_FromScene_Vectors(re, re->scene);
        else
           RE_Database_FromScene(re, re->scene, 1);
-               
+       
+       // used to reobtain ogl context after RE_Database_FromScene call
+       re->display_clear(re->result);
+       
        // Freestyle initialization
        FRS_prepare(re);
        
        // run Freestyle
        re->i.starttime = PIL_check_seconds_timer();
-       FRS_execute(re, 0);
+       FRS_render_GL(re);
        re->i.lastframetime = PIL_check_seconds_timer()- re->i.starttime;
        re->stats_draw(&re->i);
        

Modified: branches/soc-2008-mxcurioni/source/blender/src/CMakeLists.txt
===================================================================
--- branches/soc-2008-mxcurioni/source/blender/src/CMakeLists.txt       
2008-10-01 08:23:08 UTC (rev 16864)
+++ branches/soc-2008-mxcurioni/source/blender/src/CMakeLists.txt       
2008-10-01 15:03:35 UTC (rev 16865)
@@ -35,7 +35,7 @@
   ../../kernel/gen_system ../../../intern/SoundSystem ../readstreamglue
   ../quicktime ../../../intern/elbeem/extern
   ../../../intern/ghost ../../../intern/opennl/extern
-  ../nodes ../../../extern/glew/include ../gpu
+  ../nodes ../../../extern/glew/include ../gpu ../freestyle
   ${PYTHON_INC}
   ${SDL_INC}
 )


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to