diff options
-rw-r--r-- | source/blender/freestyle/FST_freestyle.h | 2 | ||||
-rw-r--r-- | source/blender/freestyle/SConscript | 3 | ||||
-rw-r--r-- | source/blender/freestyle/intern/app_blender/api.cpp | 44 | ||||
-rwxr-xr-x | source/blender/freestyle/intern/rendering/GLStrokeRenderer.cpp | 1 | ||||
-rw-r--r-- | source/blender/render/intern/source/pipeline.c | 10 |
5 files changed, 52 insertions, 8 deletions
diff --git a/source/blender/freestyle/FST_freestyle.h b/source/blender/freestyle/FST_freestyle.h index 52940815fe4..1f516078258 100644 --- a/source/blender/freestyle/FST_freestyle.h +++ b/source/blender/freestyle/FST_freestyle.h @@ -5,7 +5,7 @@ extern "C" { #endif - void FRS_execute(); + void FRS_execute(Render* re); #ifdef __cplusplus } diff --git a/source/blender/freestyle/SConscript b/source/blender/freestyle/SConscript index 58d4e980e8b..33bc9682bbe 100644 --- a/source/blender/freestyle/SConscript +++ b/source/blender/freestyle/SConscript @@ -6,7 +6,8 @@ sources = [] defs = [] incs = '' -incs += '../blenkernel ../blenlib ../imbuf ../makesdna ../python' +incs += '../blenkernel ../blenlib ../imbuf ../makesdna ../python ' +incs += '../render/extern/include ../render/intern/include' incs += ' #/extern/freestyle/lib3ds' incs += ' ' + env['BF_PYTHON_INC'] incs += ' ' + env['BF_LIB3DS_INC'] diff --git a/source/blender/freestyle/intern/app_blender/api.cpp b/source/blender/freestyle/intern/app_blender/api.cpp index eb29580f891..d842e59d31b 100644 --- a/source/blender/freestyle/intern/app_blender/api.cpp +++ b/source/blender/freestyle/intern/app_blender/api.cpp @@ -6,13 +6,26 @@ #include <iostream> +#ifdef __cplusplus +extern "C" { +#endif + +#include "render_types.h" +//#include "renderdatabase.h" +/* display_draw() needs render layer info */ +#include "renderpipeline.h" + +#ifdef __cplusplus +} +#endif + using namespace std; #ifdef __cplusplus extern "C" { #endif - void FRS_execute() { + void FRS_execute(Render* re) { cout << "Freestyle start" << endl; Config::Path pathconfig; @@ -20,16 +33,39 @@ extern "C" { AppGLWidget *view = new AppGLWidget; c->SetView(view); - view->setWidth(640); - view->setHeight(640); + unsigned int width = re->winx; + unsigned int height = re->winy; + view->setWidth(width); + view->setHeight(height); c->Load3DSFile( TEST_3DS_FILE ); c->InsertStyleModule( 0, TEST_STYLE_MODULE_FILE ); c->toggleLayer(0, true); c->ComputeViewMap(); - + c->DrawStrokes(); + + RenderResult rres; + RE_GetResultImage(re, &rres); + float *rgb = new float[3*width*height]; + view->readPixels(0,0,width,height,AppGLWidget::RGB, rgb); + + for (unsigned short y=0; y<height; y++) { + float* bpt = (float*)rres.rectf + ((y*width) << 2); + for (unsigned short x=0; x<width; x++) { + float *pos = rgb + 3 * ( y*width + x ); + + bpt[0] = pos[0]; // r + bpt[1] = pos[1]; // g + bpt[2] = pos[2]; // b + bpt[3] = 1.0; // a + bpt += 4; + } + } + + re->result->renlay = render_get_active_layer(re, re->result); + re->display_draw(re->result, NULL); cout << "Freestyle end" << endl; diff --git a/source/blender/freestyle/intern/rendering/GLStrokeRenderer.cpp b/source/blender/freestyle/intern/rendering/GLStrokeRenderer.cpp index 94518cee58f..5033cc5d895 100755 --- a/source/blender/freestyle/intern/rendering/GLStrokeRenderer.cpp +++ b/source/blender/freestyle/intern/rendering/GLStrokeRenderer.cpp @@ -513,7 +513,6 @@ GLTextureManager::preparePaper (const char *name, GLuint itexname) ImBuf *qim = IMB_loadiffname(name, 0); char filename[FILE_MAXFILE]; BLI_splitdirstring((char *)name, filename); - qim->depth = 32; if (!qim) //soc { diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c index 27abbf96122..d45dd77fe1e 100644 --- a/source/blender/render/intern/source/pipeline.c +++ b/source/blender/render/intern/source/pipeline.c @@ -2193,7 +2193,15 @@ static void do_render_composite_fields_blur_3d(Render *re) static void freestyleRender(Render *re) { - FRS_execute(); + RE_FreeRenderResult(re->result); + re->result= new_render_result(re, &re->disprect, 0, RR_USEMEM); + + RE_SetCamera(re, re->scene->camera); + + FRS_execute(re); + + re->stats_draw(&re->i); + RE_Database_Free(re); } #ifndef DISABLE_YAFRAY |