Eevee: Fix crash when baking

Was caused by the normal pass being enbaled in the renderlayer settings.

Fix T57344
This commit is contained in:
Clément Foucault 2018-10-23 15:52:04 +02:00
parent 2c35307f09
commit ee8e866a0e
Notes: blender-bot 2023-03-24 17:05:22 +01:00
Referenced by issue #57344, Blender CRASHES any time I try to bake indirect ligthing
5 changed files with 6 additions and 6 deletions

View File

@ -144,7 +144,7 @@ static void eevee_create_shader_downsample(void)
GPU_FRAMEBUFFER_FREE_SAFE(fb_color); \
}
void EEVEE_effects_init(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata, Object *camera)
void EEVEE_effects_init(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata, Object *camera, const bool minimal)
{
EEVEE_CommonUniformBuffer *common_data = &sldata->common_data;
EEVEE_StorageList *stl = vedata->stl;
@ -181,7 +181,7 @@ void EEVEE_effects_init(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata, Object
effects->enabled_effects |= EEVEE_volumes_init(sldata, vedata);
/* Force normal buffer creation. */
if (DRW_state_is_image_render() &&
if (DRW_state_is_image_render() && !minimal &&
(view_layer->passflag & SCE_PASS_NORMAL) != 0)
{
effects->enabled_effects |= EFFECT_NORMAL_BUFFER;

View File

@ -96,7 +96,7 @@ static void eevee_engine_init(void *ved)
}
/* EEVEE_effects_init needs to go first for TAA */
EEVEE_effects_init(sldata, vedata, camera);
EEVEE_effects_init(sldata, vedata, camera, false);
EEVEE_materials_init(sldata, stl, fbl);
EEVEE_lights_init(sldata);
EEVEE_lightprobes_init(sldata, vedata);

View File

@ -669,7 +669,7 @@ static void eevee_lightbake_cache_create(EEVEE_Data *vedata, EEVEE_LightBake *lb
};
DRW_render_viewport_size_set(viewport_size);
EEVEE_effects_init(sldata, vedata, NULL);
EEVEE_effects_init(sldata, vedata, NULL, true);
EEVEE_materials_init(sldata, stl, fbl);
EEVEE_lights_init(sldata);
EEVEE_lightprobes_init(sldata, vedata);

View File

@ -957,7 +957,7 @@ void EEVEE_volumes_free_smoke_textures(void);
void EEVEE_volumes_free(void);
/* eevee_effects.c */
void EEVEE_effects_init(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata, Object *camera);
void EEVEE_effects_init(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata, Object *camera, const bool minimal);
void EEVEE_effects_cache_init(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata);
void EEVEE_create_minmax_buffer(EEVEE_Data *vedata, struct GPUTexture *depth_src, int layer);
void EEVEE_downsample_buffer(EEVEE_Data *vedata, struct GPUTexture *texture_src, int level);

View File

@ -114,7 +114,7 @@ void EEVEE_render_init(EEVEE_Data *ved, RenderEngine *engine, struct Depsgraph *
DRW_viewport_matrix_override_set(g_data->viewinv, DRW_MAT_VIEWINV);
/* EEVEE_effects_init needs to go first for TAA */
EEVEE_effects_init(sldata, vedata, ob_camera_eval);
EEVEE_effects_init(sldata, vedata, ob_camera_eval, false);
EEVEE_materials_init(sldata, stl, fbl);
EEVEE_lights_init(sldata);
EEVEE_lightprobes_init(sldata, vedata);