Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClément Foucault <foucault.clem@gmail.com>2019-06-04 19:26:36 +0300
committerClément Foucault <foucault.clem@gmail.com>2019-06-04 19:42:50 +0300
commit942a748d5d5d3d03c09ae2b0b0767f1b1eb16147 (patch)
tree1bb83d9578806a72bc8715a1bdd5c845791adc52 /source/blender/draw/engines/eevee/eevee_private.h
parentff7401b02c4b9e111c0632f33bf5b51fc63026f6 (diff)
Eevee: Merge shadow map processing into one drawcall per light
This removes a lot of framebuffer configuration and binding.
Diffstat (limited to 'source/blender/draw/engines/eevee/eevee_private.h')
-rw-r--r--source/blender/draw/engines/eevee/eevee_private.h16
1 files changed, 8 insertions, 8 deletions
diff --git a/source/blender/draw/engines/eevee/eevee_private.h b/source/blender/draw/engines/eevee/eevee_private.h
index 9080d969dd1..fbbd5bc4ab3 100644
--- a/source/blender/draw/engines/eevee/eevee_private.h
+++ b/source/blender/draw/engines/eevee/eevee_private.h
@@ -393,15 +393,17 @@ typedef struct EEVEE_ShadowCascade {
} EEVEE_ShadowCascade;
typedef struct EEVEE_ShadowRender {
- float position[3], pad;
+ int shadow_samples_len[MAX_CASCADE_NUM];
+ float shadow_samples_len_inv[MAX_CASCADE_NUM];
+ float filter_size[MAX_CASCADE_NUM];
+ int view_count;
+ int base_id;
float cube_texel_size;
float stored_texel_size;
float clip_near;
float clip_far;
- int shadow_samples_len;
- float shadow_samples_len_inv;
float exponent;
- float pad2;
+ float pad;
} EEVEE_ShadowRender;
BLI_STATIC_ASSERT_ALIGN(EEVEE_Light, 16)
@@ -439,10 +441,6 @@ typedef struct EEVEE_LightsInfo {
int shadow_cube_size, shadow_cascade_size, shadow_method;
bool shadow_high_bitdepth, soft_shadows;
int shadow_cube_store_size;
- int current_shadow_cascade;
- int current_shadow_face;
- uint shadow_instance_count;
- float filter_size;
/* List of lights in the scene. */
/* XXX This is fragile, can get out of sync quickly. */
struct Object *light_ref[MAX_LIGHT];
@@ -716,8 +714,10 @@ typedef struct EEVEE_ViewLayerData {
struct GPUFrameBuffer *shadow_cube_target_fb;
struct GPUFrameBuffer *shadow_cube_store_fb;
+ struct GPUFrameBuffer *shadow_cube_copy_fb;
struct GPUFrameBuffer *shadow_cascade_target_fb;
struct GPUFrameBuffer *shadow_cascade_store_fb;
+ struct GPUFrameBuffer *shadow_cascade_copy_fb;
struct GPUTexture *shadow_cube_target;
struct GPUTexture *shadow_cube_blur;