diff options
Diffstat (limited to 'source/blender/render/intern')
-rw-r--r-- | source/blender/render/intern/include/initrender.h | 11 | ||||
-rw-r--r-- | source/blender/render/intern/include/render_result.h | 11 | ||||
-rw-r--r-- | source/blender/render/intern/include/render_types.h | 11 | ||||
-rw-r--r-- | source/blender/render/intern/include/renderpipeline.h | 11 | ||||
-rw-r--r-- | source/blender/render/intern/include/texture.h | 11 | ||||
-rw-r--r-- | source/blender/render/intern/include/zbuf.h | 9 | ||||
-rw-r--r-- | source/blender/render/intern/source/bake_api.c | 24 | ||||
-rw-r--r-- | source/blender/render/intern/source/external_engine.c | 16 | ||||
-rw-r--r-- | source/blender/render/intern/source/initrender.c | 12 | ||||
-rw-r--r-- | source/blender/render/intern/source/multires_bake.c | 7 | ||||
-rw-r--r-- | source/blender/render/intern/source/pipeline.c | 29 | ||||
-rw-r--r-- | source/blender/render/intern/source/pointdensity.c | 2 | ||||
-rw-r--r-- | source/blender/render/intern/source/render_texture.c | 2 |
13 files changed, 92 insertions, 64 deletions
diff --git a/source/blender/render/intern/include/initrender.h b/source/blender/render/intern/include/initrender.h index 99282a8e703..f5ac352752f 100644 --- a/source/blender/render/intern/include/initrender.h +++ b/source/blender/render/intern/include/initrender.h @@ -21,8 +21,11 @@ * \ingroup render */ -#ifndef __INITRENDER_H__ -#define __INITRENDER_H__ +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif /* Functions */ @@ -30,4 +33,6 @@ void RE_parts_init(Render *re); void RE_parts_free(Render *re); void RE_parts_clamp(Render *re); -#endif /* __INITRENDER_H__ */ +#ifdef __cplusplus +} +#endif diff --git a/source/blender/render/intern/include/render_result.h b/source/blender/render/intern/include/render_result.h index 0ed8871b224..187685cd464 100644 --- a/source/blender/render/intern/include/render_result.h +++ b/source/blender/render/intern/include/render_result.h @@ -21,8 +21,7 @@ * \ingroup render */ -#ifndef __RENDER_RESULT_H__ -#define __RENDER_RESULT_H__ +#pragma once #define PASS_VECTOR_MAX 10000.0f @@ -44,6 +43,10 @@ struct RenderResult; struct Scene; struct rcti; +#ifdef __cplusplus +extern "C" { +#endif + /* New */ struct RenderResult *render_result_new(struct Render *re, @@ -148,4 +151,6 @@ bool render_result_has_views(struct RenderResult *rr); } \ ((void)0) -#endif /* __RENDER_RESULT_H__ */ +#ifdef __cplusplus +} +#endif diff --git a/source/blender/render/intern/include/render_types.h b/source/blender/render/intern/include/render_types.h index 3ae4b9c0b90..6be5fb4792c 100644 --- a/source/blender/render/intern/include/render_types.h +++ b/source/blender/render/intern/include/render_types.h @@ -21,8 +21,7 @@ * \ingroup render */ -#ifndef __RENDER_TYPES_H__ -#define __RENDER_TYPES_H__ +#pragma once /* ------------------------------------------------------------------------- */ /* exposed internal in render module only! */ @@ -43,6 +42,10 @@ struct Object; struct RenderEngine; struct ReportList; +#ifdef __cplusplus +extern "C" { +#endif + /* this is handed over to threaded hiding/passes/shading engine */ typedef struct RenderPart { struct RenderPart *next, *prev; @@ -160,4 +163,6 @@ struct Render { /* R.flag */ #define R_ANIMATION 1 -#endif /* __RENDER_TYPES_H__ */ +#ifdef __cplusplus +} +#endif diff --git a/source/blender/render/intern/include/renderpipeline.h b/source/blender/render/intern/include/renderpipeline.h index 12b231ef55f..062df59bfd3 100644 --- a/source/blender/render/intern/include/renderpipeline.h +++ b/source/blender/render/intern/include/renderpipeline.h @@ -21,8 +21,7 @@ * \ingroup render */ -#ifndef __RENDERPIPELINE_H__ -#define __RENDERPIPELINE_H__ +#pragma once struct ListBase; struct Render; @@ -30,10 +29,16 @@ struct RenderData; struct RenderLayer; struct RenderResult; +#ifdef __cplusplus +extern "C" { +#endif + struct RenderLayer *render_get_active_layer(struct Render *re, struct RenderResult *rr); void render_update_anim_renderdata(struct Render *re, struct RenderData *rd, struct ListBase *render_layers); void render_copy_renderdata(struct RenderData *to, struct RenderData *from); -#endif /* __RENDERPIPELINE_H__ */ +#ifdef __cplusplus +} +#endif diff --git a/source/blender/render/intern/include/texture.h b/source/blender/render/intern/include/texture.h index f051d3ed318..22023baab95 100644 --- a/source/blender/render/intern/include/texture.h +++ b/source/blender/render/intern/include/texture.h @@ -21,8 +21,11 @@ * \ingroup render */ -#ifndef __TEXTURE_H__ -#define __TEXTURE_H__ +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif #define BRICONT \ texres->tin = (texres->tin - 0.5f) * tex->contrast + tex->bright - 0.5f; \ @@ -95,4 +98,6 @@ void image_sample(struct Image *ima, float result[4], struct ImagePool *pool); -#endif /* __TEXTURE_H__ */ +#ifdef __cplusplus +} +#endif diff --git a/source/blender/render/intern/include/zbuf.h b/source/blender/render/intern/include/zbuf.h index bc6addd6c5f..b898ff89ae4 100644 --- a/source/blender/render/intern/include/zbuf.h +++ b/source/blender/render/intern/include/zbuf.h @@ -18,8 +18,11 @@ * \ingroup render */ -#ifndef __ZBUF_H__ -#define __ZBUF_H__ +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif /* span fill in method, is also used to localize data for zbuffering */ typedef struct ZSpan { @@ -40,4 +43,6 @@ void zspan_scanconvert(struct ZSpan *zpan, float *v3, void (*func)(void *, int, int, float, float)); +#ifdef __cplusplus +} #endif diff --git a/source/blender/render/intern/source/bake_api.c b/source/blender/render/intern/source/bake_api.c index 06f77854595..6e336604b59 100644 --- a/source/blender/render/intern/source/bake_api.c +++ b/source/blender/render/intern/source/bake_api.c @@ -694,14 +694,7 @@ void RE_bake_pixels_populate(Mesh *me, const BakeImages *bake_images, const char *uv_layer) { - BakeDataZSpan bd; - size_t i; - int a, p_id; - const MLoopUV *mloopuv; - const int tottri = poly_to_tri_count(me->totpoly, me->totloop); - MLoopTri *looptri; - if ((uv_layer == NULL) || (uv_layer[0] == '\0')) { mloopuv = CustomData_get_layer(&me->ldata, CD_MLOOPUV); } @@ -714,25 +707,26 @@ void RE_bake_pixels_populate(Mesh *me, return; } + BakeDataZSpan bd; bd.pixel_array = pixel_array; bd.zspan = MEM_callocN(sizeof(ZSpan) * bake_images->size, "bake zspan"); /* initialize all pixel arrays so we know which ones are 'blank' */ - for (i = 0; i < num_pixels; i++) { + for (int i = 0; i < num_pixels; i++) { pixel_array[i].primitive_id = -1; pixel_array[i].object_id = 0; } - for (i = 0; i < bake_images->size; i++) { + for (int i = 0; i < bake_images->size; i++) { zbuf_alloc_span(&bd.zspan[i], bake_images->data[i].width, bake_images->data[i].height); } - looptri = MEM_mallocN(sizeof(*looptri) * tottri, __func__); + const int tottri = poly_to_tri_count(me->totpoly, me->totloop); + MLoopTri *looptri = MEM_mallocN(sizeof(*looptri) * tottri, __func__); BKE_mesh_recalc_looptri(me->mloop, me->mpoly, me->mvert, me->totloop, me->totpoly, looptri); - p_id = -1; - for (i = 0; i < tottri; i++) { + for (int i = 0; i < tottri; i++) { const MLoopTri *lt = &looptri[i]; const MPoly *mp = &me->mpoly[lt->poly]; float vec[3][2]; @@ -744,9 +738,9 @@ void RE_bake_pixels_populate(Mesh *me, } bd.bk_image = &bake_images->data[image_id]; - bd.primitive_id = ++p_id; + bd.primitive_id = i; - for (a = 0; a < 3; a++) { + for (int a = 0; a < 3; a++) { const float *uv = mloopuv[lt->tri[a]].uv; /* Note, workaround for pixel aligned UVs which are common and can screw up our @@ -761,7 +755,7 @@ void RE_bake_pixels_populate(Mesh *me, zspan_scanconvert(&bd.zspan[image_id], (void *)&bd, vec[0], vec[1], vec[2], store_bake_pixel); } - for (i = 0; i < bake_images->size; i++) { + for (int i = 0; i < bake_images->size; i++) { zbuf_free_span(&bd.zspan[i]); } diff --git a/source/blender/render/intern/source/external_engine.c b/source/blender/render/intern/source/external_engine.c index 5391775cab8..633b9324d9f 100644 --- a/source/blender/render/intern/source/external_engine.c +++ b/source/blender/render/intern/source/external_engine.c @@ -624,10 +624,6 @@ void RE_engine_frame_set(RenderEngine *engine, int frame, float subframe) return; } -#ifdef WITH_PYTHON - BPy_BEGIN_ALLOW_THREADS; -#endif - Render *re = engine->re; double cfra = (double)frame + (double)subframe; @@ -636,10 +632,6 @@ void RE_engine_frame_set(RenderEngine *engine, int frame, float subframe) BKE_scene_graph_update_for_newframe(engine->depsgraph, re->main); BKE_scene_camera_switch_update(re->scene); - -#ifdef WITH_PYTHON - BPy_END_ALLOW_THREADS; -#endif } /* Bake */ @@ -871,8 +863,16 @@ int RE_engine_render(Render *re, int do_all) re->draw_lock(re->dlh, 0); } + if (engine->type->flag & RE_USE_GPU_CONTEXT) { + DRW_render_context_enable(engine->re); + } + type->render(engine, engine->depsgraph); + if (engine->type->flag & RE_USE_GPU_CONTEXT) { + DRW_render_context_disable(engine->re); + } + /* Grease pencil render over previous render result. * * NOTE: External engine might have been requested to free its diff --git a/source/blender/render/intern/source/initrender.c b/source/blender/render/intern/source/initrender.c index 2e9f30397db..d631dd1a2ff 100644 --- a/source/blender/render/intern/source/initrender.c +++ b/source/blender/render/intern/source/initrender.c @@ -211,14 +211,14 @@ void RE_SetCamera(Render *re, Object *cam_ob) re_camera_params_get(re, ¶ms); } -void RE_GetCameraWindow(struct Render *re, struct Object *camera, float mat[4][4]) +void RE_GetCameraWindow(struct Render *re, struct Object *camera, float r_winmat[4][4]) { RE_SetCamera(re, camera); - copy_m4_m4(mat, re->winmat); + copy_m4_m4(r_winmat, re->winmat); } /* Must be called after RE_GetCameraWindow(), does not change re->winmat. */ -void RE_GetCameraWindowWithOverscan(struct Render *re, float mat[4][4], float overscan) +void RE_GetCameraWindowWithOverscan(struct Render *re, float overscan, float r_winmat[4][4]) { CameraParams params; params.is_ortho = re->winmat[3][3] != 0.0f; @@ -233,12 +233,12 @@ void RE_GetCameraWindowWithOverscan(struct Render *re, float mat[4][4], float ov params.viewplane.ymin -= overscan; params.viewplane.ymax += overscan; BKE_camera_params_compute_matrix(¶ms); - copy_m4_m4(mat, params.winmat); + copy_m4_m4(r_winmat, params.winmat); } -void RE_GetCameraModelMatrix(Render *re, struct Object *camera, float r_mat[4][4]) +void RE_GetCameraModelMatrix(Render *re, struct Object *camera, float r_modelmat[4][4]) { - BKE_camera_multiview_model_matrix(&re->r, camera, re->viewname, r_mat); + BKE_camera_multiview_model_matrix(&re->r, camera, re->viewname, r_modelmat); } /* ~~~~~~~~~~~~~~~~ part (tile) calculus ~~~~~~~~~~~~~~~~~~~~~~ */ diff --git a/source/blender/render/intern/source/multires_bake.c b/source/blender/render/intern/source/multires_bake.c index 7c301f7d591..b30821a1b73 100644 --- a/source/blender/render/intern/source/multires_bake.c +++ b/source/blender/render/intern/source/multires_bake.c @@ -1319,8 +1319,11 @@ static void bake_ibuf_filter(ImBuf *ibuf, char *mask, const int filter) } } -static void bake_ibuf_normalize_displacement( - ImBuf *ibuf, float *displacement, char *mask, float displacement_min, float displacement_max) +static void bake_ibuf_normalize_displacement(ImBuf *ibuf, + const float *displacement, + const char *mask, + float displacement_min, + float displacement_max) { int i; const float *current_displacement = displacement; diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c index b335862abe0..fa53ad522a6 100644 --- a/source/blender/render/intern/source/pipeline.c +++ b/source/blender/render/intern/source/pipeline.c @@ -1879,14 +1879,14 @@ const char *RE_GetActiveRenderView(Render *re) } /* evaluating scene options for general Blender render */ -static int render_initialize_from_main(Render *re, - const RenderData *rd, - Main *bmain, - Scene *scene, - ViewLayer *single_layer, - Object *camera_override, - int anim, - int anim_init) +static int render_init_from_main(Render *re, + const RenderData *rd, + Main *bmain, + Scene *scene, + ViewLayer *single_layer, + Object *camera_override, + int anim, + int anim_init) { int winx, winy; rcti disprect; @@ -2004,8 +2004,7 @@ void RE_RenderFrame(Render *re, scene->r.cfra = frame; - if (render_initialize_from_main( - re, &scene->r, bmain, scene, single_layer, camera_override, 0, 0)) { + if (render_init_from_main(re, &scene->r, bmain, scene, single_layer, camera_override, 0, 0)) { const RenderData rd = scene->r; MEM_reset_peak_memory(); @@ -2058,7 +2057,7 @@ void RE_RenderFrame(Render *re, void RE_RenderFreestyleStrokes(Render *re, Main *bmain, Scene *scene, int render) { re->result_ok = 0; - if (render_initialize_from_main(re, &scene->r, bmain, scene, NULL, NULL, 0, 0)) { + if (render_init_from_main(re, &scene->r, bmain, scene, NULL, NULL, 0, 0)) { if (render) { do_render_3d(re); } @@ -2422,7 +2421,7 @@ void RE_RenderAnim(Render *re, (rd.im_format.views_format == R_IMF_VIEWS_INDIVIDUAL)); /* do not fully call for each frame, it initializes & pops output window */ - if (!render_initialize_from_main(re, &rd, bmain, scene, single_layer, camera_override, 0, 1)) { + if (!render_init_from_main(re, &rd, bmain, scene, single_layer, camera_override, 0, 1)) { return; } @@ -2493,13 +2492,15 @@ void RE_RenderAnim(Render *re, { float ctime = BKE_scene_frame_get(scene); AnimData *adt = BKE_animdata_from_id(&scene->id); - BKE_animsys_evaluate_animdata(&scene->id, adt, ctime, ADT_RECALC_ALL, false); + const AnimationEvalContext anim_eval_context = BKE_animsys_eval_context_construct( + re->pipeline_depsgraph, ctime); + BKE_animsys_evaluate_animdata(&scene->id, adt, &anim_eval_context, ADT_RECALC_ALL, false); } render_update_depsgraph(re); /* only border now, todo: camera lens. (ton) */ - render_initialize_from_main(re, &rd, bmain, scene, single_layer, camera_override, 1, 0); + render_init_from_main(re, &rd, bmain, scene, single_layer, camera_override, 1, 0); if (nfra != scene->r.cfra) { /* Skip this frame, but could update for physics and particles system. */ diff --git a/source/blender/render/intern/source/pointdensity.c b/source/blender/render/intern/source/pointdensity.c index 8daad33b477..c49cf6203e0 100644 --- a/source/blender/render/intern/source/pointdensity.c +++ b/source/blender/render/intern/source/pointdensity.c @@ -557,7 +557,7 @@ static float density_falloff(PointDensityRangeData *pdr, int index, float square } if (pdr->density_curve && dist != 0.0f) { - BKE_curvemapping_initialize(pdr->density_curve); + BKE_curvemapping_init(pdr->density_curve); density = BKE_curvemapping_evaluateF(pdr->density_curve, 0, density / dist) * dist; } diff --git a/source/blender/render/intern/source/render_texture.c b/source/blender/render/intern/source/render_texture.c index 9926e08c968..b37eeed3681 100644 --- a/source/blender/render/intern/source/render_texture.c +++ b/source/blender/render/intern/source/render_texture.c @@ -902,7 +902,7 @@ static void do_2d_mapping( float fx, fy, fac1, area[8]; int ok, proj, areaflag = 0, wrap; - /* mtex variables localized, only cubemap doesn't cooperate yet... */ + /* #MTex variables localized, only cube-map doesn't cooperate yet. */ wrap = mtex->mapping; tex = mtex->tex; |