diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2008-04-14 14:14:59 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2008-04-14 14:14:59 +0400 |
commit | 6da7b60cd3394259d503e2280d59e48306c42fb2 (patch) | |
tree | 82985b29587920770b8fa184c5e99df7cde91ba3 /source/blender/render/intern/include | |
parent | 3dcb3cc4cdbf2147365c51941d8c3863c9c8890b (diff) |
Attempted fix for bug #8349: QMC raytracing being very slow on some
computers, probably due to slow multithreaded malloc. Now each render
thread keeps a list of qmc samplers that it fills as needed while
rendering (since it is hard to predict the actual amount needed in
advance due to ray recursion).
Diffstat (limited to 'source/blender/render/intern/include')
-rw-r--r-- | source/blender/render/intern/include/render_types.h | 5 | ||||
-rw-r--r-- | source/blender/render/intern/include/rendercore.h | 4 |
2 files changed, 4 insertions, 5 deletions
diff --git a/source/blender/render/intern/include/render_types.h b/source/blender/render/intern/include/render_types.h index 22fb2e70d87..c2d2ea96745 100644 --- a/source/blender/render/intern/include/render_types.h +++ b/source/blender/render/intern/include/render_types.h @@ -64,8 +64,10 @@ typedef struct SampleTables typedef struct QMCSampler { + struct QMCSampler *next, *prev; int type; int tot; + int used; double *samp2d; double offs[BLENDER_MAX_THREADS][2]; } QMCSampler; @@ -150,7 +152,7 @@ struct Render /* samples */ SampleTables *samples; float jit[32][2]; - QMCSampler *qsa; + ListBase *qmcsamplers; /* shadow counter, detect shadow-reuse for shaders */ int shadowsamplenr[BLENDER_MAX_THREADS]; @@ -455,7 +457,6 @@ typedef struct LampRen { struct ShadBuf *shb; float *jitter; - QMCSampler *qsa; float imat[3][3]; float spottexfac; diff --git a/source/blender/render/intern/include/rendercore.h b/source/blender/render/intern/include/rendercore.h index cdc348279e5..0edca1a15a9 100644 --- a/source/blender/render/intern/include/rendercore.h +++ b/source/blender/render/intern/include/rendercore.h @@ -104,9 +104,7 @@ extern void ray_trace(ShadeInput *, ShadeResult *); extern void ray_ao(ShadeInput *, float *); extern void init_jitter_plane(LampRen *lar); extern void init_ao_sphere(struct World *wrld); -extern void init_lamp_hammersley(LampRen *lar); -extern void free_lamp_qmcsampler(LampRen *lar); -extern void init_render_hammersley(Render *re); +extern void init_render_qmcsampler(Render *re); extern void free_render_qmcsampler(Render *re); #endif /* RENDER_EXT_H */ |