From de90619a46f2c5896b3ee1d241981b90a1b96269 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Sat, 6 Feb 2010 20:25:17 +0000 Subject: Fix #20452: motion blur buttons were missing. Motion blur samples are now also decoupled from antialiasing samples. Implemented by Matt, I'm just committing the patch. --- source/blender/render/intern/include/render_types.h | 1 + source/blender/render/intern/source/initrender.c | 10 +++++++++- source/blender/render/intern/source/pipeline.c | 8 ++++---- source/blender/render/intern/source/zbuf.c | 6 +++--- 4 files changed, 17 insertions(+), 8 deletions(-) (limited to 'source/blender/render') diff --git a/source/blender/render/intern/include/render_types.h b/source/blender/render/intern/include/render_types.h index ba995621a98..de7d176759e 100644 --- a/source/blender/render/intern/include/render_types.h +++ b/source/blender/render/intern/include/render_types.h @@ -161,6 +161,7 @@ struct Render /* samples */ SampleTables *samples; float jit[32][2]; + float mblur_jit[32][2]; ListBase *qmcsamplers; /* shadow counter, detect shadow-reuse for shaders */ diff --git a/source/blender/render/intern/source/initrender.c b/source/blender/render/intern/source/initrender.c index abff8bf2655..faa5f17649a 100644 --- a/source/blender/render/intern/source/initrender.c +++ b/source/blender/render/intern/source/initrender.c @@ -85,15 +85,23 @@ static void init_render_jit(Render *re) { static float jit[32][2]; /* simple caching */ + static float mblur_jit[32][2]; /* simple caching */ static int lastjit= 0; + static int last_mblur_jit= 0; - if(lastjit!=re->r.osa) { + if(lastjit!=re->r.osa || last_mblur_jit != re->r.mblur_samples) { memset(jit, 0, sizeof(jit)); BLI_initjit(jit[0], re->r.osa); + + memset(mblur_jit, 0, sizeof(mblur_jit)); + BLI_initjit(mblur_jit[0], re->r.mblur_samples); } lastjit= re->r.osa; memcpy(re->jit, jit, sizeof(jit)); + + last_mblur_jit= re->r.mblur_samples; + memcpy(re->mblur_jit, mblur_jit, sizeof(mblur_jit)); } diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c index 4ae00c94c6a..95e98c1861c 100644 --- a/source/blender/render/intern/source/pipeline.c +++ b/source/blender/render/intern/source/pipeline.c @@ -1929,20 +1929,20 @@ static void do_render_blur_3d(Render *re) { RenderResult *rres; float blurfac; - int blur= re->r.osa; + int blur= re->r.mblur_samples; /* create accumulation render result */ rres= new_render_result(re, &re->disprect, 0, RR_USEMEM); /* do the blur steps */ while(blur--) { - set_mblur_offs( re->r.blurfac*((float)(re->r.osa-blur))/(float)re->r.osa ); + set_mblur_offs( re->r.blurfac*((float)(re->r.mblur_samples-blur))/(float)re->r.mblur_samples ); - re->i.curblur= re->r.osa-blur; /* stats */ + re->i.curblur= re->r.mblur_samples-blur; /* stats */ do_render_3d(re); - blurfac= 1.0f/(float)(re->r.osa-blur); + blurfac= 1.0f/(float)(re->r.mblur_samples-blur); merge_renderresult_blur(rres, re->result, blurfac, re->r.alphamode & R_ALPHAKEY); if(re->test_break(re->tbh)) break; diff --git a/source/blender/render/intern/source/zbuf.c b/source/blender/render/intern/source/zbuf.c index 6d67c068bdd..612c5660f68 100644 --- a/source/blender/render/intern/source/zbuf.c +++ b/source/blender/render/intern/source/zbuf.c @@ -2070,8 +2070,8 @@ void zbuffer_solid(RenderPart *pa, RenderLayer *rl, void(*fillfunc)(RenderPart*, zspan->zofsy= -pa->disprect.ymin - R.jit[pa->sample+zsample][1]; } else if(R.i.curblur) { - zspan->zofsx= -pa->disprect.xmin - R.jit[R.i.curblur-1][0]; - zspan->zofsy= -pa->disprect.ymin - R.jit[R.i.curblur-1][1]; + zspan->zofsx= -pa->disprect.xmin - R.mblur_jit[R.i.curblur-1][0]; + zspan->zofsy= -pa->disprect.ymin - R.mblur_jit[R.i.curblur-1][1]; } else { zspan->zofsx= -pa->disprect.xmin; @@ -3414,7 +3414,7 @@ static int zbuffer_abuf_render(RenderPart *pa, APixstr *APixbuf, APixstrand *APi if(R.osa) jit= R.jit; else if(R.i.curblur) - jit= &R.jit[R.i.curblur-1]; + jit= &R.mblur_jit[R.i.curblur-1]; else jit= NULL; -- cgit v1.2.3