[Bf-committers] [Bf-blender-cvs] SVN commit: /data/svn/bf-blender [22541] branches/blender2.5/blender: 2.5: Render Api

Campbell Barton ideasman42 at gmail.com
Mon Aug 17 09:56:23 CEST 2009


Id prefer to keep the offset option, while I agree its annoying to
have to use them, the reason I added is povray cant render a cropped
image when rendering regions.

On Sun, Aug 16, 2009 at 3:53 PM, Brecht Van Lommel<brecht at blender.org> wrote:
> Revision: 22541
>          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=22541
> Author:   blendix
> Date:     2009-08-17 00:53:15 +0200 (Mon, 17 Aug 2009)
>
> Log Message:
> -----------
> 2.5: Render Api
>
> * Add RenderResult.load_from_file to load whole multilayer exr's at once.
> * Removed x/y offset from RenderLayer.load_from_file, better to encourage
>  using offset in begin_result() to minimize memory usage.
> * Added WITH_OPENEXR in some screen/file/image module for scons/make, exr
>  was not working in some places there.
>
> Modified Paths:
> --------------
>    branches/blender2.5/blender/release/io/engine_render_pov.py
>    branches/blender2.5/blender/source/blender/editors/screen/Makefile
>    branches/blender2.5/blender/source/blender/editors/screen/SConscript
>    branches/blender2.5/blender/source/blender/editors/space_file/Makefile
>    branches/blender2.5/blender/source/blender/editors/space_file/SConscript
>    branches/blender2.5/blender/source/blender/editors/space_image/Makefile
>    branches/blender2.5/blender/source/blender/editors/space_image/SConscript
>    branches/blender2.5/blender/source/blender/makesrna/intern/rna_render.c
>    branches/blender2.5/blender/source/blender/render/extern/include/RE_pipeline.h
>    branches/blender2.5/blender/source/blender/render/intern/source/pipeline.c
>
> Modified: branches/blender2.5/blender/release/io/engine_render_pov.py
> ===================================================================
> --- branches/blender2.5/blender/release/io/engine_render_pov.py 2009-08-16 22:49:17 UTC (rev 22540)
> +++ branches/blender2.5/blender/release/io/engine_render_pov.py 2009-08-16 22:53:15 UTC (rev 22541)
> @@ -727,7 +727,7 @@
>                                result = self.begin_result(0, 0, x, y)
>                                lay = result.layers[0]
>                                # possible the image wont load early on.
> -                               try:            lay.rect_from_file(self.temp_file_out, 0, 0)
> +                               try:            lay.load_from_file(self.temp_file_out)
>                                except: pass
>                                self.end_result(result)
>
>
> Modified: branches/blender2.5/blender/source/blender/editors/screen/Makefile
> ===================================================================
> --- branches/blender2.5/blender/source/blender/editors/screen/Makefile  2009-08-16 22:49:17 UTC (rev 22540)
> +++ branches/blender2.5/blender/source/blender/editors/screen/Makefile  2009-08-16 22:53:15 UTC (rev 22541)
> @@ -54,3 +54,8 @@
>  # own include
>
>  CPPFLAGS += -I../include
> +
> +ifeq ($(WITH_OPENEXR), true)
> +    CPPFLAGS += -DWITH_OPENEXR
> +endif
> +
>
> Modified: branches/blender2.5/blender/source/blender/editors/screen/SConscript
> ===================================================================
> --- branches/blender2.5/blender/source/blender/editors/screen/SConscript        2009-08-16 22:49:17 UTC (rev 22540)
> +++ branches/blender2.5/blender/source/blender/editors/screen/SConscript        2009-08-16 22:53:15 UTC (rev 22541)
> @@ -12,5 +12,7 @@
>
>  if not env['WITH_BF_PYTHON']:
>     defs += 'DISABLE_PYTHON'
> +if env['WITH_BF_OPENEXR']:
> +       defs += ' WITH_OPENEXR'
>
>  env.BlenderLib ( 'bf_editors_screen', sources, Split(incs), Split(defs), libtype=['core'], priority=[105] )
>
> Modified: branches/blender2.5/blender/source/blender/editors/space_file/Makefile
> ===================================================================
> --- branches/blender2.5/blender/source/blender/editors/space_file/Makefile      2009-08-16 22:49:17 UTC (rev 22540)
> +++ branches/blender2.5/blender/source/blender/editors/space_file/Makefile      2009-08-16 22:53:15 UTC (rev 22541)
> @@ -59,3 +59,7 @@
>        CPPFLAGS += -DWITH_OPENJPEG
>  endif
>
> +ifeq ($(WITH_OPENEXR), true)
> +    CPPFLAGS += -DWITH_OPENEXR
> +endif
> +
>
> Modified: branches/blender2.5/blender/source/blender/editors/space_file/SConscript
> ===================================================================
> --- branches/blender2.5/blender/source/blender/editors/space_file/SConscript    2009-08-16 22:49:17 UTC (rev 22540)
> +++ branches/blender2.5/blender/source/blender/editors/space_file/SConscript    2009-08-16 22:53:15 UTC (rev 22541)
> @@ -12,5 +12,7 @@
>
>  if env['WITH_BF_OPENJPEG']:
>     defs.append('WITH_OPENJPEG')
> +if env['WITH_BF_OPENEXR']:
> +       defs.append('WITH_OPENEXR')
>
>  env.BlenderLib ( 'bf_editors_space_file', sources, Split(incs), defs, libtype=['core'], priority=[115] )
>
> Modified: branches/blender2.5/blender/source/blender/editors/space_image/Makefile
> ===================================================================
> --- branches/blender2.5/blender/source/blender/editors/space_image/Makefile     2009-08-16 22:49:17 UTC (rev 22540)
> +++ branches/blender2.5/blender/source/blender/editors/space_image/Makefile     2009-08-16 22:53:15 UTC (rev 22541)
> @@ -53,3 +53,7 @@
>
>  CPPFLAGS += -I../include
>
> +ifeq ($(WITH_OPENEXR), true)
> +    CPPFLAGS += -DWITH_OPENEXR
> +endif
> +
>
> Modified: branches/blender2.5/blender/source/blender/editors/space_image/SConscript
> ===================================================================
> --- branches/blender2.5/blender/source/blender/editors/space_image/SConscript   2009-08-16 22:49:17 UTC (rev 22540)
> +++ branches/blender2.5/blender/source/blender/editors/space_image/SConscript   2009-08-16 22:53:15 UTC (rev 22541)
> @@ -11,5 +11,7 @@
>
>  if env['WITH_BF_LCMS']:
>        defs.append('WITH_LCMS')
> +if env['WITH_BF_OPENEXR']:
> +       defs.append('WITH_OPENEXR')
>
>  env.BlenderLib ( 'bf_editors_space_image', sources, Split(incs), defs, libtype=['core'], priority=[40] )
>
> Modified: branches/blender2.5/blender/source/blender/makesrna/intern/rna_render.c
> ===================================================================
> --- branches/blender2.5/blender/source/blender/makesrna/intern/rna_render.c     2009-08-16 22:49:17 UTC (rev 22540)
> +++ branches/blender2.5/blender/source/blender/makesrna/intern/rna_render.c     2009-08-16 22:53:15 UTC (rev 22541)
> @@ -273,10 +273,17 @@
>  {
>        StructRNA *srna;
>        PropertyRNA *prop;
> +       FunctionRNA *func;
>
>        srna= RNA_def_struct(brna, "RenderResult", NULL);
>        RNA_def_struct_ui_text(srna, "Render Result", "Result of rendering, including all layers and passes.");
>
> +       func= RNA_def_function(srna, "load_from_file", "RE_result_load_from_file");
> +       RNA_def_function_ui_description(func, "Copies the pixels of this render result from an image file.");
> +       RNA_def_function_flag(func, FUNC_USE_REPORTS);
> +       prop= RNA_def_string(func, "filename", "", 0, "Filename", "Filename to load into this render tile, must be no smaller then the render result");
> +       RNA_def_property_flag(prop, PROP_REQUIRED);
> +
>        RNA_define_verify_sdna(0);
>
>        prop= RNA_def_property(srna, "resolution_x", PROP_INT, PROP_NONE);
> @@ -303,15 +310,11 @@
>        srna= RNA_def_struct(brna, "RenderLayer", NULL);
>        RNA_def_struct_ui_text(srna, "Render Layer", "");
>
> -       func= RNA_def_function(srna, "rect_from_file", "RE_layer_rect_from_file");
> +       func= RNA_def_function(srna, "load_from_file", "RE_layer_load_from_file");
>        RNA_def_function_ui_description(func, "Copies the pixels of this renderlayer from an image file.");
>        RNA_def_function_flag(func, FUNC_USE_REPORTS);
>        prop= RNA_def_string(func, "filename", "", 0, "Filename", "Filename to load into this render tile, must be no smaller then the renderlayer");
>        RNA_def_property_flag(prop, PROP_REQUIRED);
> -       prop= RNA_def_int(func, "x", 0, 0, INT_MAX, "Offset X", "Offset the position to copy from if the image is larger then the render layer", 0, INT_MAX);
> -       RNA_def_property_flag(prop, PROP_REQUIRED);
> -       prop= RNA_def_int(func, "y", 0, 0, INT_MAX, "Offset Y", "Offset the position to copy from if the image is larger then the render layer", 0, INT_MAX);
> -       RNA_def_property_flag(prop, PROP_REQUIRED);
>
>        RNA_define_verify_sdna(0);
>
>
> Modified: branches/blender2.5/blender/source/blender/render/extern/include/RE_pipeline.h
> ===================================================================
> --- branches/blender2.5/blender/source/blender/render/extern/include/RE_pipeline.h      2009-08-16 22:49:17 UTC (rev 22540)
> +++ branches/blender2.5/blender/source/blender/render/extern/include/RE_pipeline.h      2009-08-16 22:53:15 UTC (rev 22541)
> @@ -266,7 +266,8 @@
>        ListBase fullresult;
>  } RenderEngine;
>
> -void RE_layer_rect_from_file(RenderLayer *layer, struct ReportList *reports, char *filename, int x, int y);
> +void RE_layer_load_from_file(RenderLayer *layer, struct ReportList *reports, char *filename);
> +void RE_result_load_from_file(RenderResult *result, struct ReportList *reports, char *filename);
>
>  struct RenderResult *RE_engine_begin_result(RenderEngine *engine, int x, int y, int w, int h);
>  void RE_engine_update_result(RenderEngine *engine, struct RenderResult *result);
>
> Modified: branches/blender2.5/blender/source/blender/render/intern/source/pipeline.c
> ===================================================================
> --- branches/blender2.5/blender/source/blender/render/intern/source/pipeline.c  2009-08-16 22:49:17 UTC (rev 22540)
> +++ branches/blender2.5/blender/source/blender/render/intern/source/pipeline.c  2009-08-16 22:53:15 UTC (rev 22541)
> @@ -868,33 +868,26 @@
>                        strcpy(rpass->name, get_pass_name(rpass->passtype, -1));
>  }
>
> -
> -/* only for temp buffer files, makes exact copy of render result */
> -static void read_render_result(Render *re, int sample)
> +/* called for reading temp files, and for external engines */
> +static int read_render_result_from_file(char *filename, RenderResult *rr)
>  {
>        RenderLayer *rl;
>        RenderPass *rpass;
>        void *exrhandle= IMB_exr_get_handle();
>        int rectx, recty;
> -       char str[FILE_MAX];
> -
> -       RE_FreeRenderResult(re->result);
> -       re->result= new_render_result(re, &re->disprect, 0, RR_USEMEM);
>
> -       render_unique_exr_name(re, str, sample);
> -       if(IMB_exr_begin_read(exrhandle, str, &rectx, &recty)==0) {
> +       if(IMB_exr_begin_read(exrhandle, filename, &rectx, &recty)==0) {
>                IMB_exr_close(exrhandle);
> -               printf("cannot read: %s\n", str);
> -               return;
> +               return 0;
>        }
>
> -       printf("read exr tmp file: %s\n", str);
> -
> -       if(re->result == NULL || rectx!=re->result->rectx || recty!=re->result->recty) {
> +       if(rr == NULL || rectx!=rr->rectx || recty!=rr->recty) {
>                printf("error in reading render result\n");
> +               IMB_exr_close(exrhandle);
> +               return 0;
>        }
>        else {
> -               for(rl= re->result->layers.first; rl; rl= rl->next) {
> +               for(rl= rr->layers.first; rl; rl= rl->next) {
>
>                        /* combined */
>                        if(rl->rectf) {
> @@ -914,12 +907,29 @@
>
>                }
>                IMB_exr_read_channels(exrhandle);
> -               renderresult_add_names(re->result);
> +               renderresult_add_names(rr);
>        }
>
>        IMB_exr_close(exrhandle);
> +
> +       return 1;
>  }
>
> +/* only for temp buffer files, makes exact copy of render result */
> +static void read_render_result(Render *re, int sample)
> +{
> +       char str[FILE_MAX];
> +
> +       RE_FreeRenderResult(re->result);
> +       re->result= new_render_result(re, &re->disprect, 0, RR_USEMEM);
> +
> +       render_unique_exr_name(re, str, sample);
> +       printf("read exr tmp file: %s\n", str);
> +
> +       if(!read_render_result_from_file(str, re->result))
> +               printf("cannot read: %s\n", str);
> +}
> +
>  /* *************************************************** */
>
>  Render *RE_GetRender(const char *name)
> @@ -2944,7 +2954,7 @@
>
>  /* loads in image into a result, size must match
>  * x/y offsets are only used on a partial copy when dimensions dont match */
> -void RE_layer_rect_from_file(RenderLayer *layer, ReportList *reports, char *filename, int x, int y)
> +void RE_layer_load_from_file(RenderLayer *layer, ReportList *reports, char *filename)
>  {
>        ImBuf *ibuf = IMB_loadiffname(filename, IB_rect);
>
> @@ -2955,7 +2965,7 @@
>
>                        memcpy(layer->rectf, ibuf->rect_float, sizeof(float)*4*layer->rectx*layer->recty);
>                } else {
> -                       if ((ibuf->x - x >= layer->rectx) && (ibuf->y - y >= layer->recty)) {
> +                       if ((ibuf->x >= layer->rectx) && (ibuf->y >= layer->recty)) {
>                                ImBuf *ibuf_clip;
>
>                                if(ibuf->rect_float==NULL)
> @@ -2963,7 +2973,7 @@
>
>                                ibuf_clip = IMB_allocImBuf(layer->rectx, layer->recty, 32, IB_rectfloat, 0);
>                                if(ibuf_clip) {
> -                                       IMB_rectcpy(ibuf_clip, ibuf, 0,0, x,y, layer->rectx, layer->recty);
>
> @@ Diff output truncated at 10240 characters. @@
>
> _______________________________________________
> Bf-blender-cvs mailing list
> Bf-blender-cvs at blender.org
> http://lists.blender.org/mailman/listinfo/bf-blender-cvs
>



-- 
- Campbell


More information about the Bf-committers mailing list