1) Revert previous commit, rendering negative won't work that simple...
Needs much more attention. 2) Fix for zcombine node: - it skipped execution when no image rgba out was used - didnt work for FSA yet
This commit is contained in:
parent
3c2adb1801
commit
58046762f8
|
@ -306,6 +306,19 @@ typedef struct RenderData {
|
|||
float simplify_aosss;
|
||||
} RenderData;
|
||||
|
||||
/* control render convert and shading engine */
|
||||
typedef struct RenderProfile {
|
||||
struct RenderProfile *next, *prev;
|
||||
char name[32];
|
||||
|
||||
short particle_perc;
|
||||
short subsurf_max;
|
||||
short shadbufsample_max;
|
||||
short pad1;
|
||||
|
||||
float ao_error, pad2;
|
||||
|
||||
} RenderProfile;
|
||||
|
||||
typedef struct GameFraming {
|
||||
float col[3];
|
||||
|
@ -330,7 +343,7 @@ typedef struct ImagePaintSettings {
|
|||
} ImagePaintSettings;
|
||||
|
||||
typedef struct ParticleBrushData {
|
||||
short size, strength; /* commong settings */
|
||||
short size, strength; /* common settings */
|
||||
short step, invert; /* for specific brushes only */
|
||||
} ParticleBrushData;
|
||||
|
||||
|
|
|
@ -52,6 +52,9 @@ static void do_zcombine(bNode *node, float *out, float *src1, float *z1, float *
|
|||
}
|
||||
else {
|
||||
QUATCOPY(out, src2);
|
||||
|
||||
if(node->custom1)
|
||||
*z1= *z2;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -78,54 +81,57 @@ static void do_zcombine_add(bNode *node, float *out, float *col1, float *col2, f
|
|||
static void node_composit_exec_zcombine(void *data, bNode *node, bNodeStack **in, bNodeStack **out)
|
||||
{
|
||||
RenderData *rd= data;
|
||||
|
||||
CompBuf *cbuf= in[0]->data;
|
||||
CompBuf *zbuf;
|
||||
|
||||
/* stack order in: col z col z */
|
||||
/* stack order out: col z */
|
||||
if(out[0]->hasoutput==0)
|
||||
if(out[0]->hasoutput==0 && out[1]->hasoutput==0)
|
||||
return;
|
||||
|
||||
/* no input image; do nothing now */
|
||||
if(in[0]->data==NULL) {
|
||||
return;
|
||||
}
|
||||
else if(rd->scemode & R_FULL_SAMPLE) {
|
||||
|
||||
if(out[1]->hasoutput) {
|
||||
/* copy or make a buffer for for the first z value, here we write result in */
|
||||
if(in[1]->data)
|
||||
zbuf= dupalloc_compbuf(in[1]->data);
|
||||
else {
|
||||
float *zval;
|
||||
int tot= cbuf->x*cbuf->y;
|
||||
|
||||
zbuf= alloc_compbuf(cbuf->x, cbuf->y, CB_VAL, 1);
|
||||
for(zval= zbuf->rect; tot; tot--, zval++)
|
||||
*zval= in[1]->vec[0];
|
||||
}
|
||||
/* lazy coder hack */
|
||||
node->custom1= 1;
|
||||
out[1]->data= zbuf;
|
||||
}
|
||||
else {
|
||||
node->custom1= 0;
|
||||
zbuf= in[1]->data;
|
||||
}
|
||||
|
||||
if(rd->scemode & R_FULL_SAMPLE) {
|
||||
/* make output size of first input image */
|
||||
CompBuf *cbuf= in[0]->data;
|
||||
CompBuf *stackbuf= alloc_compbuf(cbuf->x, cbuf->y, CB_RGBA, 1); // allocs
|
||||
|
||||
composit4_pixel_processor(node, stackbuf, in[0]->data, in[0]->vec, in[1]->data, in[1]->vec, in[2]->data, in[2]->vec,
|
||||
composit4_pixel_processor(node, stackbuf, in[0]->data, in[0]->vec, zbuf, in[1]->vec, in[2]->data, in[2]->vec,
|
||||
in[3]->data, in[3]->vec, do_zcombine, CB_RGBA, CB_VAL, CB_RGBA, CB_VAL);
|
||||
|
||||
out[0]->data= stackbuf;
|
||||
}
|
||||
else {
|
||||
/* make output size of first input image */
|
||||
CompBuf *cbuf= in[0]->data;
|
||||
CompBuf *stackbuf= alloc_compbuf(cbuf->x, cbuf->y, CB_RGBA, 1); /* allocs */
|
||||
CompBuf *zbuf, *mbuf;
|
||||
CompBuf *mbuf;
|
||||
float *fp;
|
||||
int x;
|
||||
char *aabuf;
|
||||
|
||||
if(out[1]->hasoutput) {
|
||||
/* copy or make a buffer for for the first z value, here we write result in */
|
||||
if(in[1]->data)
|
||||
zbuf= dupalloc_compbuf(in[1]->data);
|
||||
else {
|
||||
float *zval;
|
||||
int tot= cbuf->x*cbuf->y;
|
||||
|
||||
zbuf= alloc_compbuf(cbuf->x, cbuf->y, CB_VAL, 1);
|
||||
for(zval= zbuf->rect; tot; tot--, zval++)
|
||||
*zval= in[1]->vec[0];
|
||||
}
|
||||
/* lazy coder hack */
|
||||
node->custom1= 1;
|
||||
}
|
||||
else {
|
||||
node->custom1= 0;
|
||||
zbuf= in[1]->data;
|
||||
}
|
||||
|
||||
/* make a mask based on comparison, optionally write zvalue */
|
||||
mbuf= alloc_compbuf(cbuf->x, cbuf->y, CB_VAL, 1);
|
||||
|
@ -153,9 +159,8 @@ static void node_composit_exec_zcombine(void *data, bNode *node, bNodeStack **in
|
|||
MEM_freeN(aabuf);
|
||||
|
||||
out[0]->data= stackbuf;
|
||||
if(node->custom1)
|
||||
out[1]->data= zbuf;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
bNodeType cmp_node_zcombine= {
|
||||
|
|
|
@ -1516,25 +1516,10 @@ static void shade_lamp_loop_only_shadow(ShadeInput *shi, ShadeResult *shr)
|
|||
/* let's map negative light as if it mirrors positive light, otherwise negative values disappear */
|
||||
static void wrld_exposure_correct(float *diff)
|
||||
{
|
||||
float f= diff[0];
|
||||
|
||||
if(f>0.0f)
|
||||
diff[0]= R.wrld.linfac*(1.0f-exp( f*R.wrld.logfac) );
|
||||
else
|
||||
diff[0]= - R.wrld.linfac*(1.0f-exp( - f*R.wrld.logfac) );
|
||||
|
||||
f= diff[1];
|
||||
if(f>0.0f)
|
||||
diff[1]= R.wrld.linfac*(1.0f-exp( f*R.wrld.logfac) );
|
||||
else
|
||||
diff[1]= - R.wrld.linfac*(1.0f-exp( - f*R.wrld.logfac) );
|
||||
|
||||
f= diff[2];
|
||||
if(f>0.0f)
|
||||
diff[2]= R.wrld.linfac*(1.0f-exp( f*R.wrld.logfac) );
|
||||
else
|
||||
diff[2]= - R.wrld.linfac*(1.0f-exp( - f*R.wrld.logfac) );
|
||||
|
||||
diff[0]= R.wrld.linfac*(1.0f-exp( diff[0]*R.wrld.logfac) );
|
||||
diff[1]= R.wrld.linfac*(1.0f-exp( diff[1]*R.wrld.logfac) );
|
||||
diff[2]= R.wrld.linfac*(1.0f-exp( diff[2]*R.wrld.logfac) );
|
||||
}
|
||||
|
||||
void shade_lamp_loop(ShadeInput *shi, ShadeResult *shr)
|
||||
|
|
Loading…
Reference in New Issue