Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTon Roosendaal <ton@blender.org>2006-01-09 03:40:35 +0300
committerTon Roosendaal <ton@blender.org>2006-01-09 03:40:35 +0300
commit014aa7261e29810b35b3d65c759f9d255bf8a277 (patch)
tree360325f8db9431bdd187c0f0e7f7c40dcaa3a073 /source/blender/render
parent104ab9b103ab30ca87ccb9e739a58863fc29d3bf (diff)
Orange branch: OpenEXR finally in Blender!
Credits go to Gernot Ziegler, who originally coded EXR support, and to Austin Benesh for bringing it further. Kent Mein provided a lot of code for integrating float buffers in Blender imbuf and ImBuf API cleanup, and provided Make and Scons and static linking. At this moment; the EXR libraries are a *dependency*, so you cannot get the Orange branch compiled without having OpenEXR installed. Get the (precompiled or sources) stuff from www.openexr.com. Current default is that the headers and lib resides in /user/local/ Several changes/additions/fixes were added: - EXR code only supported 'half' format (16 bits per channel). I've added float writing, but for reading it I need tomorrow. :) - Quite some clumsy copying of data happened in EXR code. - cleaned up the api calls already a bit, preparing for more advanced support - Zbuffers were saved 16 bits, now 32 bits - automatic adding of .exr extensions went wrong Imbuf: - added proper imbuf->flags and imbuf->mall support for float buffers, it was created for *each* imbuf. :) - found bugs for float buffers in scaling and flipping. Code there will need more checks still - imbuf also needs to be verified to behave properly when no 32 bits rect exists (for saving for example) TODO: - support internal float images for textures, backbuf, AO probes, and display in Image window Hope this commit won't screwup syncing with bf-blender... :/
Diffstat (limited to 'source/blender/render')
-rw-r--r--source/blender/render/intern/source/envmap.c46
-rw-r--r--source/blender/render/intern/source/initrender.c6
2 files changed, 26 insertions, 26 deletions
diff --git a/source/blender/render/intern/source/envmap.c b/source/blender/render/intern/source/envmap.c
index c728c51038d..7c962ff1328 100644
--- a/source/blender/render/intern/source/envmap.c
+++ b/source/blender/render/intern/source/envmap.c
@@ -37,10 +37,6 @@
#include <math.h>
#include <string.h>
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
/* external modules: */
#include "MEM_guardedalloc.h"
#include "BLI_arithb.h"
@@ -168,18 +164,18 @@ static void envmap_split_ima(EnvMap *env)
ima->ok= 1;
env->cube[part]= ima;
}
- IMB_rectop(env->cube[0]->ibuf, env->ima->ibuf,
- 0, 0, 0, 0, dx, dx, IMB_rectcpy, 0);
- IMB_rectop(env->cube[1]->ibuf, env->ima->ibuf,
- 0, 0, dx, 0, dx, dx, IMB_rectcpy, 0);
- IMB_rectop(env->cube[2]->ibuf, env->ima->ibuf,
- 0, 0, 2*dx, 0, dx, dx, IMB_rectcpy, 0);
- IMB_rectop(env->cube[3]->ibuf, env->ima->ibuf,
- 0, 0, 0, dx, dx, dx, IMB_rectcpy, 0);
- IMB_rectop(env->cube[4]->ibuf, env->ima->ibuf,
- 0, 0, dx, dx, dx, dx, IMB_rectcpy, 0);
- IMB_rectop(env->cube[5]->ibuf, env->ima->ibuf,
- 0, 0, 2*dx, dx, dx, dx, IMB_rectcpy, 0);
+ IMB_rectcpy(env->cube[0]->ibuf, env->ima->ibuf,
+ 0, 0, 0, 0, dx, dx);
+ IMB_rectcpy(env->cube[1]->ibuf, env->ima->ibuf,
+ 0, 0, dx, 0, dx, dx);
+ IMB_rectcpy(env->cube[2]->ibuf, env->ima->ibuf,
+ 0, 0, 2*dx, 0, dx, dx);
+ IMB_rectcpy(env->cube[3]->ibuf, env->ima->ibuf,
+ 0, 0, 0, dx, dx, dx);
+ IMB_rectcpy(env->cube[4]->ibuf, env->ima->ibuf,
+ 0, 0, dx, dx, dx, dx);
+ IMB_rectcpy(env->cube[5]->ibuf, env->ima->ibuf,
+ 0, 0, 2*dx, dx, dx, dx);
env->ok= 2;
}
}
@@ -414,9 +410,12 @@ static void render_envmap(EnvMap *env)
MTC_Mat4Invert(oldviewinv, R.viewmat);
/* do first, envmap_renderdata copies entire R struct */
- if(R.rectz) MEM_freeN(R.rectz); R.rectz= NULL;
- if(R.rectot) MEM_freeN(R.rectot); R.rectot= NULL;
- if(R.rectftot) MEM_freeN(R.rectftot); R.rectftot= NULL;
+ if(R.rectz) MEM_freeN(R.rectz);
+ if(R.rectot) MEM_freeN(R.rectot);
+ if(R.rectftot) MEM_freeN(R.rectftot);
+ R.rectftot= NULL;
+ R.rectz= NULL;
+ R.rectot= NULL;
/* setup necessary globals */
envmap_renderdata(env);
@@ -478,9 +477,12 @@ static void render_envmap(EnvMap *env)
}
- if(R.rectz) MEM_freeN(R.rectz); R.rectz= NULL;
- if(R.rectot) MEM_freeN(R.rectot); R.rectot= NULL;
- if(R.rectftot) MEM_freeN(R.rectftot); R.rectftot= NULL;
+ if(R.rectz) MEM_freeN(R.rectz);
+ if(R.rectot) MEM_freeN(R.rectot);
+ if(R.rectftot) MEM_freeN(R.rectftot);
+ R.rectz= NULL;
+ R.rectot= NULL;
+ R.rectftot= NULL;
if(RE_local_test_break()) RE_free_envmapdata(env);
else {
diff --git a/source/blender/render/intern/source/initrender.c b/source/blender/render/intern/source/initrender.c
index ba9216fa80e..c0c175709e1 100644
--- a/source/blender/render/intern/source/initrender.c
+++ b/source/blender/render/intern/source/initrender.c
@@ -38,10 +38,6 @@
#include <string.h>
#include <stdio.h>
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include "blendef.h"
#include "MEM_guardedalloc.h"
@@ -897,6 +893,7 @@ static void yafrayRender(void)
/* float rgba buf */
if (R.rectftot) MEM_freeN(R.rectftot);
if (R.r.mode & R_FBUF) R.rectftot= MEM_callocN(4*sizeof(float)*R.rectx*R.recty, "rectftot");
+ else R.rectftot = NULL;
// switch must be done before prepareScene()
if (!R.r.YFexportxml)
@@ -1054,6 +1051,7 @@ static void mainRenderLoop(void) /* here the PART and FIELD loops */
if(R.rectftot) MEM_freeN(R.rectftot);
if(R.r.mode & R_FBUF) R.rectftot= MEM_callocN(4*sizeof(float)*R.rectx*R.recty, "rectftot");
+ else R.rectftot = NULL;
if(R.r.mode & R_MBLUR) {
RE_local_printrenderinfo(0.0, R.osa - blur);