[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [28209] branches/render25: Render Branch:
Brecht Van Lommel
brecht at blender.org
Thu Apr 15 17:49:48 CEST 2010
Revision: 28209
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=28209
Author: blendix
Date: 2010-04-15 17:49:48 +0200 (Thu, 15 Apr 2010)
Log Message:
-----------
Render Branch:
Imbuf module: some small refactoring and removing a lot of unused or old code
(about 6.5k lines), it's a bit drastic but can add back if it's still useful.
* Added a ImFileType struct with callbacks to make adding an file format type,
or making changes to the API easier.
* Move imbuf init/exit code into IMB_init()/IMB_exit() functions.
* Increased mipmap levels from 10 to 20, you run into this limit already with
a 2k image.
* Removed hamx, amiga, anim5 format support.
* Removed colormap saving, only simple colormap code now for reading tga.
* Removed gen_dynlibtiff.py, editing this is almost as much work as just
editing the code directly.
* Functions removed that were only used for sequencer plugin API:
IMB_anim_nextpic, IMB_clever_double, IMB_antialias, IMB_gamwarp,
IMB_scalefieldImBuf, IMB_scalefastfieldImBuf, IMB_onethird, IMB_halflace,
IMB_dit0, IMB_dit2, IMB_cspace
Image textures can now lazely load mipmap levels from files, so if an object
is far away only a lower level is loaded. This is supported for the .tx file
format as used by prman, which is basically a tiff image with all the mipmap
levels saved in it. I tested generating them using OpenImageIO maketx utility,
(there is no way to save these from Blender currently).
Added mipmap levels simplify option (couldn't think of a better name). This
makes it possible to force using lower resolution mipmap levels, which helps
reducing memory usage a lot when using .tx files.
Next: tile loading support, then swapping them in and out with a cache.
Modified Paths:
--------------
branches/render25/release/scripts/ui/properties_scene.py
branches/render25/source/blender/blenkernel/BKE_blender.h
branches/render25/source/blender/blenkernel/intern/blender.c
branches/render25/source/blender/blenkernel/intern/bmfont.c
branches/render25/source/blender/blenkernel/intern/image.c
branches/render25/source/blender/blenkernel/intern/texture.c
branches/render25/source/blender/blenkernel/intern/writeavi.c
branches/render25/source/blender/blenloader/intern/readfile.c
branches/render25/source/blender/blenpluginapi/iff.h
branches/render25/source/blender/blenpluginapi/intern/pluginapi.c
branches/render25/source/blender/editors/screen/screendump.c
branches/render25/source/blender/editors/space_file/filelist.c
branches/render25/source/blender/editors/space_file/writeimage.c
branches/render25/source/blender/editors/space_image/image_buttons.c
branches/render25/source/blender/imbuf/IMB_imbuf.h
branches/render25/source/blender/imbuf/IMB_imbuf_types.h
branches/render25/source/blender/imbuf/IMB_thumbs.h
branches/render25/source/blender/imbuf/intern/IMB_anim.h
branches/render25/source/blender/imbuf/intern/allocimbuf.c
branches/render25/source/blender/imbuf/intern/anim.c
branches/render25/source/blender/imbuf/intern/bmp.c
branches/render25/source/blender/imbuf/intern/cineon/cineon_dpx.c
branches/render25/source/blender/imbuf/intern/dds/dds_api.cpp
branches/render25/source/blender/imbuf/intern/dds/dds_api.h
branches/render25/source/blender/imbuf/intern/divers.c
branches/render25/source/blender/imbuf/intern/dynlibtiff.c
branches/render25/source/blender/imbuf/intern/dynlibtiff.h
branches/render25/source/blender/imbuf/intern/filter.c
branches/render25/source/blender/imbuf/intern/imageprocess.c
branches/render25/source/blender/imbuf/intern/imbuf.h
branches/render25/source/blender/imbuf/intern/imbuf_cocoa.m
branches/render25/source/blender/imbuf/intern/iris.c
branches/render25/source/blender/imbuf/intern/jp2.c
branches/render25/source/blender/imbuf/intern/jpeg.c
branches/render25/source/blender/imbuf/intern/openexr/openexr_api.cpp
branches/render25/source/blender/imbuf/intern/openexr/openexr_api.h
branches/render25/source/blender/imbuf/intern/png.c
branches/render25/source/blender/imbuf/intern/radiance_hdr.c
branches/render25/source/blender/imbuf/intern/readimage.c
branches/render25/source/blender/imbuf/intern/rectop.c
branches/render25/source/blender/imbuf/intern/rotate.c
branches/render25/source/blender/imbuf/intern/scaling.c
branches/render25/source/blender/imbuf/intern/targa.c
branches/render25/source/blender/imbuf/intern/thumbs.c
branches/render25/source/blender/imbuf/intern/tiff.c
branches/render25/source/blender/imbuf/intern/util.c
branches/render25/source/blender/imbuf/intern/writeimage.c
branches/render25/source/blender/makesdna/DNA_image_types.h
branches/render25/source/blender/makesdna/DNA_scene_types.h
branches/render25/source/blender/makesrna/intern/rna_image.c
branches/render25/source/blender/makesrna/intern/rna_scene.c
branches/render25/source/blender/quicktime/apple/qtkit_import.m
branches/render25/source/blender/quicktime/apple/quicktime_import.c
branches/render25/source/blender/render/intern/source/texture_image.c
branches/render25/source/blender/windowmanager/intern/wm_init_exit.c
branches/render25/source/creator/creator.c
branches/render25/source/gameengine/GamePlayer/ghost/GPG_Application.cpp
branches/render25/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp
Added Paths:
-----------
branches/render25/source/blender/imbuf/intern/IMB_filetype.h
branches/render25/source/blender/imbuf/intern/IMB_metadata.h
branches/render25/source/blender/imbuf/intern/filetype.c
branches/render25/source/blender/imbuf/intern/metadata.c
branches/render25/source/blender/imbuf/intern/module.c
Removed Paths:
-------------
branches/render25/source/blender/imbuf/intern/IMB_amiga.h
branches/render25/source/blender/imbuf/intern/IMB_anim5.h
branches/render25/source/blender/imbuf/intern/IMB_bitplanes.h
branches/render25/source/blender/imbuf/intern/IMB_bmp.h
branches/render25/source/blender/imbuf/intern/IMB_cmap.h
branches/render25/source/blender/imbuf/intern/IMB_cocoa.h
branches/render25/source/blender/imbuf/intern/IMB_divers.h
branches/render25/source/blender/imbuf/intern/IMB_dpxcineon.h
branches/render25/source/blender/imbuf/intern/IMB_ham.h
branches/render25/source/blender/imbuf/intern/IMB_hamx.h
branches/render25/source/blender/imbuf/intern/IMB_iff.h
branches/render25/source/blender/imbuf/intern/IMB_imginfo.h
branches/render25/source/blender/imbuf/intern/IMB_iris.h
branches/render25/source/blender/imbuf/intern/IMB_jp2.h
branches/render25/source/blender/imbuf/intern/IMB_jpeg.h
branches/render25/source/blender/imbuf/intern/IMB_png.h
branches/render25/source/blender/imbuf/intern/IMB_radiance_hdr.h
branches/render25/source/blender/imbuf/intern/IMB_targa.h
branches/render25/source/blender/imbuf/intern/IMB_tiff.h
branches/render25/source/blender/imbuf/intern/amiga.c
branches/render25/source/blender/imbuf/intern/anim5.c
branches/render25/source/blender/imbuf/intern/antialias.c
branches/render25/source/blender/imbuf/intern/bitplanes.c
branches/render25/source/blender/imbuf/intern/cmap.c
branches/render25/source/blender/imbuf/intern/cspace.c
branches/render25/source/blender/imbuf/intern/data.c
branches/render25/source/blender/imbuf/intern/dither.c
branches/render25/source/blender/imbuf/intern/gen_dynlibtiff.py
branches/render25/source/blender/imbuf/intern/ham.c
branches/render25/source/blender/imbuf/intern/hamx.c
branches/render25/source/blender/imbuf/intern/iff.c
branches/render25/source/blender/imbuf/intern/imbuf_patch.h
branches/render25/source/blender/imbuf/intern/imginfo.c
branches/render25/source/blender/imbuf/intern/matrix.h
Modified: branches/render25/release/scripts/ui/properties_scene.py
===================================================================
--- branches/render25/release/scripts/ui/properties_scene.py 2010-04-15 15:36:51 UTC (rev 28208)
+++ branches/render25/release/scripts/ui/properties_scene.py 2010-04-15 15:49:48 UTC (rev 28209)
@@ -220,6 +220,7 @@
col = split.column()
col.prop(rd, "simplify_shadow_samples", text="Shadow Samples")
col.prop(rd, "simplify_ao_sss", text="AO and SSS")
+ col.prop(rd, "simplify_mipmap_levels", text="Mipmap Levels")
from bpy.props import *
Modified: branches/render25/source/blender/blenkernel/BKE_blender.h
===================================================================
--- branches/render25/source/blender/blenkernel/BKE_blender.h 2010-04-15 15:36:51 UTC (rev 28208)
+++ branches/render25/source/blender/blenkernel/BKE_blender.h 2010-04-15 15:49:48 UTC (rev 28209)
@@ -45,7 +45,7 @@
struct Main;
#define BLENDER_VERSION 252
-#define BLENDER_SUBVERSION 11
+#define BLENDER_SUBVERSION 12
#define BLENDER_MINVERSION 250
#define BLENDER_MINSUBVERSION 0
Modified: branches/render25/source/blender/blenkernel/intern/blender.c
===================================================================
--- branches/render25/source/blender/blenkernel/intern/blender.c 2010-04-15 15:36:51 UTC (rev 28208)
+++ branches/render25/source/blender/blenkernel/intern/blender.c 2010-04-15 15:49:48 UTC (rev 28209)
@@ -100,7 +100,7 @@
BKE_spacetypes_free(); /* after free main, it uses space callbacks */
- IMB_freeImBufdata(); /* imbuf lib */
+ IMB_exit();
free_nodesystem();
}
Modified: branches/render25/source/blender/blenkernel/intern/bmfont.c
===================================================================
--- branches/render25/source/blender/blenkernel/intern/bmfont.c 2010-04-15 15:36:51 UTC (rev 28208)
+++ branches/render25/source/blender/blenkernel/intern/bmfont.c 2010-04-15 15:49:48 UTC (rev 28209)
@@ -178,7 +178,7 @@
unsigned short version;
int i;
- if (ibuf != NULL) {
+ if (ibuf != NULL && ibuf->rect != NULL) {
// bitmap must have an x size that is a power of two
if (is_power_of_two(ibuf->x)) {
rect = (unsigned char *) (ibuf->rect + (ibuf->x * (ibuf->y - 1)));
Modified: branches/render25/source/blender/blenkernel/intern/image.c
===================================================================
--- branches/render25/source/blender/blenkernel/intern/image.c 2010-04-15 15:36:51 UTC (rev 28208)
+++ branches/render25/source/blender/blenkernel/intern/image.c 2010-04-15 15:49:48 UTC (rev 28209)
@@ -735,8 +735,6 @@
return TGA;
else if(imtype==R_RAWTGA)
return RAWTGA;
- else if(imtype==R_HAMX)
- return AN_hamx;
#ifdef WITH_OPENJPEG
else if(imtype==R_JP2)
return JP2;
@@ -773,8 +771,6 @@
return R_TARGA;
else if(ftype & RAWTGA)
return R_RAWTGA;
- else if(ftype == AN_hamx)
- return R_HAMX;
#ifdef WITH_OPENJPEG
else if(ftype & JP2)
return R_JP2;
@@ -787,7 +783,6 @@
int BKE_imtype_is_movie(int imtype)
{
switch(imtype) {
- case R_MOVIE:
case R_AVIRAW:
case R_AVIJPEG:
case R_AVICODEC:
@@ -864,7 +859,7 @@
extension= ".jp2";
}
#endif
- else { // R_MOVIE, R_AVICODEC, R_AVIRAW, R_AVIJPEG, R_JPEG90, R_QUICKTIME etc
+ else { // R_AVICODEC, R_AVIRAW, R_AVIJPEG, R_JPEG90, R_QUICKTIME etc
if(!( BLI_testextensie(string, ".jpg") || BLI_testextensie(string, ".jpeg")))
extension= ".jpg";
}
@@ -1212,15 +1207,15 @@
/* fill all the data values, no prefix */
stampdata(scene, &stamp_data, 0);
- if (stamp_data.file[0]) IMB_imginfo_change_field (ibuf, "File", stamp_data.file);
- if (stamp_data.note[0]) IMB_imginfo_change_field (ibuf, "Note", stamp_data.note);
- if (stamp_data.date[0]) IMB_imginfo_change_field (ibuf, "Date", stamp_data.date);
- if (stamp_data.marker[0]) IMB_imginfo_change_field (ibuf, "Marker", stamp_data.marker);
- if (stamp_data.time[0]) IMB_imginfo_change_field (ibuf, "Time", stamp_data.time);
- if (stamp_data.frame[0]) IMB_imginfo_change_field (ibuf, "Frame", stamp_data.frame);
- if (stamp_data.camera[0]) IMB_imginfo_change_field (ibuf, "Camera", stamp_data.camera);
- if (stamp_data.scene[0]) IMB_imginfo_change_field (ibuf, "Scene", stamp_data.scene);
- if (stamp_data.strip[0]) IMB_imginfo_change_field (ibuf, "Strip", stamp_data.strip);
+ if (stamp_data.file[0]) IMB_metadata_change_field (ibuf, "File", stamp_data.file);
+ if (stamp_data.note[0]) IMB_metadata_change_field (ibuf, "Note", stamp_data.note);
+ if (stamp_data.date[0]) IMB_metadata_change_field (ibuf, "Date", stamp_data.date);
+ if (stamp_data.marker[0]) IMB_metadata_change_field (ibuf, "Marker", stamp_data.marker);
+ if (stamp_data.time[0]) IMB_metadata_change_field (ibuf, "Time", stamp_data.time);
+ if (stamp_data.frame[0]) IMB_metadata_change_field (ibuf, "Frame", stamp_data.frame);
+ if (stamp_data.camera[0]) IMB_metadata_change_field (ibuf, "Camera", stamp_data.camera);
+ if (stamp_data.scene[0]) IMB_metadata_change_field (ibuf, "Scene", stamp_data.scene);
+ if (stamp_data.strip[0]) IMB_metadata_change_field (ibuf, "Strip", stamp_data.strip);
}
int BKE_write_ibuf(Scene *scene, ImBuf *ibuf, char *name, int imtype, int subimtype, int quality)
@@ -1274,9 +1269,6 @@
else if(imtype==R_RAWTGA) {
ibuf->ftype= RAWTGA;
}
- else if(imtype==R_HAMX) {
- ibuf->ftype= AN_hamx;
- }
#ifdef WITH_OPENJPEG
else if(imtype==R_JP2) {
if(quality < 10) quality= 90;
@@ -1300,7 +1292,7 @@
}
#endif
else {
- /* R_JPEG90, R_MOVIE, etc. default we save jpegs */
+ /* R_JPEG90, etc. default we save jpegs */
if(quality < 10) quality= 90;
ibuf->ftype= JPG|quality;
if(ibuf->depth==32) ibuf->depth= 24; /* unsupported feature only confuses other s/w */
@@ -1719,7 +1711,7 @@
else
BLI_path_abs(str, G.sce);
- ima->anim = openanim(str, IB_cmap | IB_rect);
+ ima->anim = openanim(str, IB_rect);
/* let's initialize this user */
if(ima->anim && iuser && iuser->frames==0)
@@ -1755,7 +1747,7 @@
{
struct ImBuf *ibuf;
char str[FILE_MAX];
- int assign = 0;
+ int assign = 0, flag;
/* always ensure clean ima */
image_free_buffers(ima);
@@ -1765,6 +1757,9 @@
ibuf = IMB_ibImageFromMemory((int *) ima->packedfile->data, ima->packedfile->size, IB_rect|IB_multilayer);
}
else {
+ flag= IB_rect|IB_multilayer|IB_metadata;
+ if(iuser->flag & IMA_USECACHE)
+ flag |= IB_usecache;
/* get the right string */
BLI_strncpy(str, ima->name, sizeof(str));
@@ -1776,7 +1771,7 @@
BLI_path_frame(str, cfra, 0);
/* read ibuf */
- ibuf = IMB_loadiffname(str, IB_rect|IB_multilayer|IB_imginfo);
+ ibuf = IMB_loadiffname(str, flag);
}
if (ibuf) {
@@ -2137,6 +2132,13 @@
BLI_unlock_thread(LOCK_IMAGE);
}
+ /* XXX temp code until tiles are used for cache, forces
+ full image rect to be loaded into memory */
+ if((!iuser || !(iuser->flag & IMA_USECACHE)) && ibuf && (ibuf->flags & IB_usecache)) {
+ IMB_getmipmaplevel(ibuf, 0);
+ ibuf->flags &= ~IB_usecache;
+ }
+
/* we assuming that if it is not rendering, it's also not multithreaded
* (a somewhat weak assumption) */
if(G.rendering==0)
Modified: branches/render25/source/blender/blenkernel/intern/texture.c
===================================================================
--- branches/render25/source/blender/blenkernel/intern/texture.c 2010-04-15 15:36:51 UTC (rev 28208)
+++ branches/render25/source/blender/blenkernel/intern/texture.c 2010-04-15 15:49:48 UTC (rev 28209)
@@ -505,6 +505,7 @@
tex->iuser.fie_ima= 2;
tex->iuser.ok= 1;
tex->iuser.frames= 100;
+ tex->iuser.flag |= IMA_USECACHE;
tex->preview = NULL;
}
Modified: branches/render25/source/blender/blenkernel/intern/writeavi.c
===================================================================
--- branches/render25/source/blender/blenkernel/intern/writeavi.c 2010-04-15 15:36:51 UTC (rev 28208)
+++ branches/render25/source/blender/blenkernel/intern/writeavi.c 2010-04-15 15:49:48 UTC (rev 28209)
@@ -75,11 +75,6 @@
mh.get_movie_path = filepath_avi;
/* do the platform specific handles */
-#ifdef __sgi
- if (imtype == R_MOVIE) {
-
- }
-#endif
#if defined(_WIN32) && !defined(FREE_WINDOWS)
if (imtype == R_AVICODEC) {
//XXX mh.start_movie= start_avi_codec;
Modified: branches/render25/source/blender/blenloader/intern/readfile.c
===================================================================
--- branches/render25/source/blender/blenloader/intern/readfile.c 2010-04-15 15:36:51 UTC (rev 28208)
+++ branches/render25/source/blender/blenloader/intern/readfile.c 2010-04-15 15:49:48 UTC (rev 28209)
@@ -6501,6 +6501,14 @@
sce->r.subdivision_rate= 1.0f;
}
+static void do_version_image_cache_250(FileData *fd, Library *lib, Main *main)
+{
+ Tex *tex;
+
+ for(tex= main->tex.first; tex; tex=tex->id.next)
+ tex->iuser.flag |= IMA_USECACHE;
+}
+
static void do_version_constraints_radians_degrees_250(ListBase *lb)
{
bConstraint *con;
@@ -8429,8 +8437,6 @@
ima->flag |= IMA_FIELDS;
if(tex->imaflag & TEX_STD_FIELD_)
ima->flag |= IMA_STD_FIELD;
- if(tex->imaflag & TEX_ANTIALI_)
- ima->flag |= IMA_ANTIALI;
}
tex->iuser.frames= tex->frames;
tex->iuser.fie_ima= tex->fie_ima;
@@ -10827,6 +10833,8 @@
do_version_shading_sys_250(fd, lib, main);
if (main->versionfile < 252 || (main->versionfile == 252 && main->subversionfile < 11))
do_version_subdivision_250(fd, lib, main);
+ if (main->versionfile < 252 || (main->versionfile == 252 && main->subversionfile < 12))
+ do_version_image_cache_250(fd, lib, main);
/* WATCH IT!!!: pointers from libdata have not been converted yet here! */
/* WATCH IT 2!: Userdef struct init has to be in editors/interface/resources.c! */
Modified: branches/render25/source/blender/blenpluginapi/iff.h
===================================================================
--- branches/render25/source/blender/blenpluginapi/iff.h 2010-04-15 15:36:51 UTC (rev 28208)
+++ branches/render25/source/blender/blenpluginapi/iff.h 2010-04-15 15:49:48 UTC (rev 28209)
@@ -35,123 +35,19 @@
#include "util.h"
#include "externdef.h"
-#define IB_rect (1 << 0)
-#define IB_planes (1 << 1)
-#define IB_cmap (1 << 2)
-#define IB_test (1 << 7)
+struct ImMetaData;
-#define IB_fields (1 << 11)
-#define IB_yuv (1 << 12)
-#define IB_zbuf (1 << 13)
-#define IB_rgba (1 << 14)
+#define IB_MIPMAP_LEVELS 20
+#define IB_FILENAME_SIZE 1023
-#define JP2 (1 << 18)
-
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list