diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2017-09-12 16:06:07 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2017-09-12 16:06:07 +0300 |
commit | fc42063d1e23242f52dd92a7f81ce091c3f2e20f (patch) | |
tree | 6789553114d88ad12baca5960a347f888978a5d8 /source/blender/draw/engines | |
parent | 1e1d34654b4d314bfd4925557f6378455df88a61 (diff) |
Eevee: Fix wrong shadow Orco mapping.
Diffstat (limited to 'source/blender/draw/engines')
-rw-r--r-- | source/blender/draw/engines/eevee/eevee_lights.c | 7 | ||||
-rw-r--r-- | source/blender/draw/engines/eevee/eevee_materials.c | 4 | ||||
-rw-r--r-- | source/blender/draw/engines/eevee/eevee_private.h | 8 |
3 files changed, 11 insertions, 8 deletions
diff --git a/source/blender/draw/engines/eevee/eevee_lights.c b/source/blender/draw/engines/eevee/eevee_lights.c index b68543c1c83..8ad7a3371a2 100644 --- a/source/blender/draw/engines/eevee/eevee_lights.c +++ b/source/blender/draw/engines/eevee/eevee_lights.c @@ -320,9 +320,10 @@ void EEVEE_lights_cache_shcaster_add(EEVEE_SceneLayerData *sldata, EEVEE_PassLis } void EEVEE_lights_cache_shcaster_material_add( - EEVEE_SceneLayerData *sldata, EEVEE_PassList *psl, struct GPUMaterial *gpumat, struct Gwn_Batch *geom, float (*obmat)[4], float *alpha_threshold) + EEVEE_SceneLayerData *sldata, EEVEE_PassList *psl, struct GPUMaterial *gpumat, + struct Gwn_Batch *geom, struct Object *ob, float (*obmat)[4], float *alpha_threshold) { - DRWShadingGroup *grp = DRW_shgroup_material_instance_create(gpumat, psl->shadow_cube_pass, geom); + DRWShadingGroup *grp = DRW_shgroup_material_instance_create(gpumat, psl->shadow_cube_pass, geom, ob); if (grp == NULL) return; @@ -335,7 +336,7 @@ void EEVEE_lights_cache_shcaster_material_add( for (int i = 0; i < 6; ++i) DRW_shgroup_call_dynamic_add_empty(grp); - grp = DRW_shgroup_material_instance_create(gpumat, psl->shadow_cascade_pass, geom); + grp = DRW_shgroup_material_instance_create(gpumat, psl->shadow_cascade_pass, geom, ob); DRW_shgroup_uniform_block(grp, "shadow_render_block", sldata->shadow_render_ubo); DRW_shgroup_uniform_mat4(grp, "ShadowModelMatrix", (float *)obmat); diff --git a/source/blender/draw/engines/eevee/eevee_materials.c b/source/blender/draw/engines/eevee/eevee_materials.c index 59f29cdef13..7dc28424a36 100644 --- a/source/blender/draw/engines/eevee/eevee_materials.c +++ b/source/blender/draw/engines/eevee/eevee_materials.c @@ -1247,11 +1247,11 @@ void EEVEE_materials_cache_populate(EEVEE_Data *vedata, EEVEE_SceneLayerData *sl break; case MA_BS_CLIP: gpumat = EEVEE_material_mesh_depth_get(scene, ma, false, true); - EEVEE_lights_cache_shcaster_material_add(sldata, psl, gpumat, mat_geom[i], ob->obmat, &ma->alpha_threshold); + EEVEE_lights_cache_shcaster_material_add(sldata, psl, gpumat, mat_geom[i], ob, ob->obmat, &ma->alpha_threshold); break; case MA_BS_HASHED: gpumat = EEVEE_material_mesh_depth_get(scene, ma, true, true); - EEVEE_lights_cache_shcaster_material_add(sldata, psl, gpumat, mat_geom[i], ob->obmat, NULL); + EEVEE_lights_cache_shcaster_material_add(sldata, psl, gpumat, mat_geom[i], ob, ob->obmat, NULL); break; case MA_BS_NONE: default: diff --git a/source/blender/draw/engines/eevee/eevee_private.h b/source/blender/draw/engines/eevee/eevee_private.h index e5994a0c147..7ead97c4022 100644 --- a/source/blender/draw/engines/eevee/eevee_private.h +++ b/source/blender/draw/engines/eevee/eevee_private.h @@ -548,10 +548,12 @@ void EEVEE_update_util_texture(float offset); void EEVEE_lights_init(EEVEE_SceneLayerData *sldata); void EEVEE_lights_cache_init(EEVEE_SceneLayerData *sldata, EEVEE_PassList *psl); void EEVEE_lights_cache_add(EEVEE_SceneLayerData *sldata, struct Object *ob); -void EEVEE_lights_cache_shcaster_add(EEVEE_SceneLayerData *sldata, EEVEE_PassList *psl, struct Gwn_Batch *geom, float (*obmat)[4]); +void EEVEE_lights_cache_shcaster_add( + EEVEE_SceneLayerData *sldata, EEVEE_PassList *psl, struct Gwn_Batch *geom, float (*obmat)[4]); void EEVEE_lights_cache_shcaster_material_add( - EEVEE_SceneLayerData *sldata, EEVEE_PassList *psl, - struct GPUMaterial *gpumat, struct Gwn_Batch *geom, float (*obmat)[4], float *alpha_threshold); + EEVEE_SceneLayerData *sldata, EEVEE_PassList *psl, + struct GPUMaterial *gpumat, struct Gwn_Batch *geom, struct Object *ob, + float (*obmat)[4], float *alpha_threshold); void EEVEE_lights_cache_finish(EEVEE_SceneLayerData *sldata); void EEVEE_lights_update(EEVEE_SceneLayerData *sldata); void EEVEE_draw_shadows(EEVEE_SceneLayerData *sldata, EEVEE_PassList *psl); |