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:
authorDalai Felinto <dfelinto@gmail.com>2018-05-16 20:34:24 +0300
committerDalai Felinto <dfelinto@gmail.com>2018-05-17 00:13:28 +0300
commit15c2801aac333341f0993f53a714a66f9f2384b2 (patch)
tree9ae8f85094dc3128d65225b6e6419b6280379710 /source/blender/draw
parentd8dca3c3b05d83b3771b62def041b342fc7d6e93 (diff)
Move EEVEE properties into scene
We handle doversion for the scene properties, but not for the view layer overrides. Overrides will be implemented in a different way via dynamic overrides. For now this data is completely lost.
Diffstat (limited to 'source/blender/draw')
-rw-r--r--source/blender/draw/engines/eevee/eevee_bloom.c22
-rw-r--r--source/blender/draw/engines/eevee/eevee_depth_of_field.c10
-rw-r--r--source/blender/draw/engines/eevee/eevee_engine.c65
-rw-r--r--source/blender/draw/engines/eevee/eevee_lightprobes.c11
-rw-r--r--source/blender/draw/engines/eevee/eevee_lights.c13
-rw-r--r--source/blender/draw/engines/eevee/eevee_motion_blur.c14
-rw-r--r--source/blender/draw/engines/eevee/eevee_occlusion.c31
-rw-r--r--source/blender/draw/engines/eevee/eevee_private.h7
-rw-r--r--source/blender/draw/engines/eevee/eevee_render.c4
-rw-r--r--source/blender/draw/engines/eevee/eevee_screen_raytrace.c22
-rw-r--r--source/blender/draw/engines/eevee/eevee_subsurface.c18
-rw-r--r--source/blender/draw/engines/eevee/eevee_temporal_sampling.c11
-rw-r--r--source/blender/draw/engines/eevee/eevee_volumes.c28
13 files changed, 92 insertions, 164 deletions
diff --git a/source/blender/draw/engines/eevee/eevee_bloom.c b/source/blender/draw/engines/eevee/eevee_bloom.c
index 2b0cdf846b4..f644b59c0b7 100644
--- a/source/blender/draw/engines/eevee/eevee_bloom.c
+++ b/source/blender/draw/engines/eevee/eevee_bloom.c
@@ -31,10 +31,13 @@
#include "BKE_global.h" /* for G.debug_value */
-#include "eevee_private.h"
#include "GPU_extensions.h"
#include "GPU_texture.h"
+#include "DEG_depsgraph_query.h"
+
+#include "eevee_private.h"
+
static struct {
/* Bloom */
struct GPUShader *bloom_blit_sh[2];
@@ -87,10 +90,9 @@ int EEVEE_bloom_init(EEVEE_ViewLayerData *UNUSED(sldata), EEVEE_Data *vedata)
EEVEE_EffectsInfo *effects = stl->effects;
const DRWContextState *draw_ctx = DRW_context_state_get();
- ViewLayer *view_layer = draw_ctx->view_layer;
- IDProperty *props = BKE_view_layer_engine_evaluated_get(view_layer, RE_engine_id_BLENDER_EEVEE);
+ const Scene *scene_eval = DEG_get_evaluated_scene(draw_ctx->depsgraph);
- if (BKE_collection_engine_property_value_get_bool(props, "bloom_enable")) {
+ if (scene_eval->flag & SCE_EEVEE_BLOOM_ENABLED) {
const float *viewport_size = DRW_viewport_size_get();
/* Shaders */
@@ -120,12 +122,12 @@ int EEVEE_bloom_init(EEVEE_ViewLayerData *UNUSED(sldata), EEVEE_Data *vedata)
});
/* Parameters */
- float threshold = BKE_collection_engine_property_value_get_float(props, "bloom_threshold");
- float knee = BKE_collection_engine_property_value_get_float(props, "bloom_knee");
- float intensity = BKE_collection_engine_property_value_get_float(props, "bloom_intensity");
- const float *color = BKE_collection_engine_property_value_get_float_array(props, "bloom_color");
- float radius = BKE_collection_engine_property_value_get_float(props, "bloom_radius");
- effects->bloom_clamp = BKE_collection_engine_property_value_get_float(props, "bloom_clamp");
+ const float threshold = scene_eval->eevee.bloom_threshold;
+ const float knee = scene_eval->eevee.bloom_knee;
+ const float intensity = scene_eval->eevee.bloom_intensity;
+ const float *color = scene_eval->eevee.bloom_color;
+ const float radius = scene_eval->eevee.bloom_radius;
+ effects->bloom_clamp = scene_eval->eevee.bloom_clamp;
/* determine the iteration count */
const float minDim = (float)MIN2(blitsize[0], blitsize[1]);
diff --git a/source/blender/draw/engines/eevee/eevee_depth_of_field.c b/source/blender/draw/engines/eevee/eevee_depth_of_field.c
index 1ba9b5f9de4..c275a5005ff 100644
--- a/source/blender/draw/engines/eevee/eevee_depth_of_field.c
+++ b/source/blender/draw/engines/eevee/eevee_depth_of_field.c
@@ -82,11 +82,9 @@ int EEVEE_depth_of_field_init(EEVEE_ViewLayerData *UNUSED(sldata), EEVEE_Data *v
EEVEE_EffectsInfo *effects = stl->effects;
const DRWContextState *draw_ctx = DRW_context_state_get();
- ViewLayer *view_layer = draw_ctx->view_layer;
- IDProperty *props = BKE_view_layer_engine_evaluated_get(view_layer, RE_engine_id_BLENDER_EEVEE);
+ const Scene *scene_eval = DEG_get_evaluated_scene(draw_ctx->depsgraph);
- if (BKE_collection_engine_property_value_get_bool(props, "dof_enable")) {
- Scene *scene = draw_ctx->scene;
+ if (scene_eval->flag & SCE_EEVEE_DOF_ENABLED) {
RegionView3D *rv3d = draw_ctx->rv3d;
if (!e_data.dof_downsample_sh) {
@@ -141,7 +139,7 @@ int EEVEE_depth_of_field_init(EEVEE_ViewLayerData *UNUSED(sldata), EEVEE_Data *v
* unit.scale_length is how many meters per blender unit we have. We want to convert to blender units though
* because the shader reads coordinates in world space, which is in blender units.
* Note however that focus_distance is already in blender units and shall not be scaled here (see T48157). */
- float scale = (scene->unit.system) ? scene->unit.scale_length : 1.0f;
+ float scale = (scene_eval->unit.system) ? scene_eval->unit.scale_length : 1.0f;
float scale_camera = 0.001f / scale;
/* we want radius here for the aperture number */
float aperture = 0.5f * scale_camera * focal_len / fstop;
@@ -157,7 +155,7 @@ int EEVEE_depth_of_field_init(EEVEE_ViewLayerData *UNUSED(sldata), EEVEE_Data *v
effects->dof_params[2] = viewport_size[0] / sensor_scaled;
effects->dof_bokeh[0] = rotation;
effects->dof_bokeh[1] = ratio;
- effects->dof_bokeh[2] = BKE_collection_engine_property_value_get_float(props, "bokeh_max_size");
+ effects->dof_bokeh[2] = scene_eval->eevee.bokeh_max_size;
/* Precompute values to save instructions in fragment shader. */
effects->dof_bokeh_sides[0] = blades;
diff --git a/source/blender/draw/engines/eevee/eevee_engine.c b/source/blender/draw/engines/eevee/eevee_engine.c
index 21f14371653..4ef6644698f 100644
--- a/source/blender/draw/engines/eevee/eevee_engine.c
+++ b/source/blender/draw/engines/eevee/eevee_engine.c
@@ -428,7 +428,6 @@ static void eevee_layer_collection_settings_create(RenderEngine *UNUSED(engine),
BLI_assert(props &&
props->type == IDP_GROUP &&
props->subtype == IDP_GROUP_SUB_ENGINE_RENDER);
- // BKE_collection_engine_property_add_int(props, "high_quality_sphere_lamps", false);
UNUSED_VARS_NDEBUG(props);
}
@@ -437,69 +436,7 @@ static void eevee_view_layer_settings_create(RenderEngine *UNUSED(engine), IDPro
BLI_assert(props &&
props->type == IDP_GROUP &&
props->subtype == IDP_GROUP_SUB_ENGINE_RENDER);
-
- BKE_collection_engine_property_add_int(props, "gi_diffuse_bounces", 3);
- BKE_collection_engine_property_add_int(props, "gi_cubemap_resolution", 512);
- BKE_collection_engine_property_add_int(props, "gi_visibility_resolution", 32);
-
- BKE_collection_engine_property_add_int(props, "taa_samples", 16);
- BKE_collection_engine_property_add_int(props, "taa_render_samples", 64);
- BKE_collection_engine_property_add_bool(props, "taa_reprojection", true);
-
- BKE_collection_engine_property_add_bool(props, "sss_enable", false);
- BKE_collection_engine_property_add_int(props, "sss_samples", 7);
- BKE_collection_engine_property_add_float(props, "sss_jitter_threshold", 0.3f);
- BKE_collection_engine_property_add_bool(props, "sss_separate_albedo", false);
-
- BKE_collection_engine_property_add_bool(props, "ssr_enable", false);
- BKE_collection_engine_property_add_bool(props, "ssr_refraction", false);
- BKE_collection_engine_property_add_bool(props, "ssr_halfres", true);
- BKE_collection_engine_property_add_float(props, "ssr_quality", 0.25f);
- BKE_collection_engine_property_add_float(props, "ssr_max_roughness", 0.5f);
- BKE_collection_engine_property_add_float(props, "ssr_thickness", 0.2f);
- BKE_collection_engine_property_add_float(props, "ssr_border_fade", 0.075f);
- BKE_collection_engine_property_add_float(props, "ssr_firefly_fac", 10.0f);
-
- BKE_collection_engine_property_add_bool(props, "volumetric_enable", false);
- BKE_collection_engine_property_add_float(props, "volumetric_start", 0.1f);
- BKE_collection_engine_property_add_float(props, "volumetric_end", 100.0f);
- BKE_collection_engine_property_add_int(props, "volumetric_tile_size", 8);
- BKE_collection_engine_property_add_int(props, "volumetric_samples", 64);
- BKE_collection_engine_property_add_float(props, "volumetric_sample_distribution", 0.8f);
- BKE_collection_engine_property_add_bool(props, "volumetric_lights", true);
- BKE_collection_engine_property_add_float(props, "volumetric_light_clamp", 0.0f);
- BKE_collection_engine_property_add_bool(props, "volumetric_shadows", false);
- BKE_collection_engine_property_add_int(props, "volumetric_shadow_samples", 16);
- BKE_collection_engine_property_add_bool(props, "volumetric_colored_transmittance", true);
-
- BKE_collection_engine_property_add_bool(props, "gtao_enable", false);
- BKE_collection_engine_property_add_bool(props, "gtao_use_bent_normals", true);
- BKE_collection_engine_property_add_bool(props, "gtao_bounce", true);
- BKE_collection_engine_property_add_float(props, "gtao_distance", 0.2f);
- BKE_collection_engine_property_add_float(props, "gtao_factor", 1.0f);
- BKE_collection_engine_property_add_float(props, "gtao_quality", 0.25f);
-
- BKE_collection_engine_property_add_bool(props, "dof_enable", false);
- BKE_collection_engine_property_add_float(props, "bokeh_max_size", 100.0f);
- BKE_collection_engine_property_add_float(props, "bokeh_threshold", 1.0f);
-
- float default_bloom_color[3] = {1.0f, 1.0f, 1.0f};
- BKE_collection_engine_property_add_bool(props, "bloom_enable", false);
- BKE_collection_engine_property_add_float_array(props, "bloom_color", default_bloom_color, 3);
- BKE_collection_engine_property_add_float(props, "bloom_threshold", 0.8f);
- BKE_collection_engine_property_add_float(props, "bloom_knee", 0.5f);
- BKE_collection_engine_property_add_float(props, "bloom_intensity", 0.8f);
- BKE_collection_engine_property_add_float(props, "bloom_radius", 6.5f);
- BKE_collection_engine_property_add_float(props, "bloom_clamp", 1.0f);
-
- BKE_collection_engine_property_add_bool(props, "motion_blur_enable", false);
- BKE_collection_engine_property_add_int(props, "motion_blur_samples", 8);
- BKE_collection_engine_property_add_float(props, "motion_blur_shutter", 1.0f);
-
- BKE_collection_engine_property_add_int(props, "shadow_method", SHADOW_ESM);
- BKE_collection_engine_property_add_int(props, "shadow_cube_size", 512);
- BKE_collection_engine_property_add_int(props, "shadow_cascade_size", 1024);
- BKE_collection_engine_property_add_bool(props, "shadow_high_bitdepth", false);
+ UNUSED_VARS_NDEBUG(props);
}
static const DrawEngineDataSize eevee_data_size = DRW_VIEWPORT_DATA_SIZE(EEVEE_Data);
diff --git a/source/blender/draw/engines/eevee/eevee_lightprobes.c b/source/blender/draw/engines/eevee/eevee_lightprobes.c
index 5a1fb4f4149..95d6acdf56b 100644
--- a/source/blender/draw/engines/eevee/eevee_lightprobes.c
+++ b/source/blender/draw/engines/eevee/eevee_lightprobes.c
@@ -43,6 +43,8 @@
#include "GPU_texture.h"
#include "GPU_glew.h"
+#include "DEG_depsgraph_query.h"
+
#include "eevee_engine.h"
#include "eevee_private.h"
@@ -301,8 +303,7 @@ void EEVEE_lightprobes_init(EEVEE_ViewLayerData *sldata, EEVEE_Data *UNUSED(veda
EEVEE_CommonUniformBuffer *common_data = &sldata->common_data;
bool update_all = false;
const DRWContextState *draw_ctx = DRW_context_state_get();
- ViewLayer *view_layer = draw_ctx->view_layer;
- IDProperty *props = BKE_view_layer_engine_evaluated_get(view_layer, RE_engine_id_BLENDER_EEVEE);
+ const Scene *scene_eval = DEG_get_evaluated_scene(draw_ctx->depsgraph);
/* Shaders */
if (!e_data.probe_filter_glossy_sh) {
@@ -324,13 +325,13 @@ void EEVEE_lightprobes_init(EEVEE_ViewLayerData *sldata, EEVEE_Data *UNUSED(veda
common_data->ssr_toggle = true;
common_data->sss_toggle = true;
- int prop_bounce_num = BKE_collection_engine_property_value_get_int(props, "gi_diffuse_bounces");
+ int prop_bounce_num = scene_eval->eevee.gi_diffuse_bounces;
if (sldata->probes->num_bounce != prop_bounce_num) {
sldata->probes->num_bounce = prop_bounce_num;
update_all = true;
}
- int prop_cubemap_res = BKE_collection_engine_property_value_get_int(props, "gi_cubemap_resolution");
+ int prop_cubemap_res = scene_eval->eevee.gi_cubemap_resolution;
if (sldata->probes->cubemap_res != prop_cubemap_res) {
sldata->probes->cubemap_res = prop_cubemap_res;
update_all = true;
@@ -342,7 +343,7 @@ void EEVEE_lightprobes_init(EEVEE_ViewLayerData *sldata, EEVEE_Data *UNUSED(veda
DRW_TEXTURE_FREE_SAFE(sldata->probe_pool);
}
- int visibility_res = BKE_collection_engine_property_value_get_int(props, "gi_visibility_resolution");
+ const int visibility_res = scene_eval->eevee.gi_visibility_resolution;
if (common_data->prb_irradiance_vis_size != visibility_res) {
common_data->prb_irradiance_vis_size = visibility_res;
update_all = true;
diff --git a/source/blender/draw/engines/eevee/eevee_lights.c b/source/blender/draw/engines/eevee/eevee_lights.c
index 7d2c636e215..d6ee27ce721 100644
--- a/source/blender/draw/engines/eevee/eevee_lights.c
+++ b/source/blender/draw/engines/eevee/eevee_lights.c
@@ -30,6 +30,8 @@
#include "BKE_object.h"
+#include "DEG_depsgraph_query.h"
+
#include "eevee_engine.h"
#include "eevee_private.h"
@@ -100,8 +102,7 @@ void EEVEE_lights_init(EEVEE_ViewLayerData *sldata)
sizeof(EEVEE_ShadowCascade) * MAX_SHADOW_CASCADE;
const DRWContextState *draw_ctx = DRW_context_state_get();
- ViewLayer *view_layer = draw_ctx->view_layer;
- IDProperty *props = BKE_view_layer_engine_evaluated_get(view_layer, RE_engine_id_BLENDER_EEVEE);
+ const Scene *scene_eval = DEG_get_evaluated_scene(draw_ctx->depsgraph);
if (!e_data.shadow_sh) {
e_data.shadow_sh = DRW_shader_create(
@@ -128,10 +129,10 @@ void EEVEE_lights_init(EEVEE_ViewLayerData *sldata)
/* Flip buffers */
SWAP(EEVEE_ShadowCasterBuffer *, sldata->lamps->shcaster_frontbuffer, sldata->lamps->shcaster_backbuffer);
- int sh_method = BKE_collection_engine_property_value_get_int(props, "shadow_method");
- int sh_cube_size = BKE_collection_engine_property_value_get_int(props, "shadow_cube_size");
- int sh_cascade_size = BKE_collection_engine_property_value_get_int(props, "shadow_cascade_size");
- int sh_high_bitdepth = BKE_collection_engine_property_value_get_int(props, "shadow_high_bitdepth");
+ const int sh_method = scene_eval->eevee.shadow_method;
+ int sh_cube_size = scene_eval->eevee.shadow_cube_size;
+ int sh_cascade_size = scene_eval->eevee.shadow_cascade_size;
+ const bool sh_high_bitdepth = (scene_eval->eevee.flag & SCE_EEVEE_SHADOW_HIGH_BITDEPTH) != 0;
EEVEE_LampsInfo *linfo = sldata->lamps;
if ((linfo->shadow_cube_size != sh_cube_size) ||
diff --git a/source/blender/draw/engines/eevee/eevee_motion_blur.c b/source/blender/draw/engines/eevee/eevee_motion_blur.c
index 0c8f929ec0e..114a2450716 100644
--- a/source/blender/draw/engines/eevee/eevee_motion_blur.c
+++ b/source/blender/draw/engines/eevee/eevee_motion_blur.c
@@ -108,20 +108,19 @@ int EEVEE_motion_blur_init(EEVEE_ViewLayerData *UNUSED(sldata), EEVEE_Data *veda
EEVEE_EffectsInfo *effects = stl->effects;
const DRWContextState *draw_ctx = DRW_context_state_get();
- ViewLayer *view_layer = draw_ctx->view_layer;
+ const Scene *scene_eval = DEG_get_evaluated_scene(draw_ctx->depsgraph);
Scene *scene = draw_ctx->scene;
+
View3D *v3d = draw_ctx->v3d;
RegionView3D *rv3d = draw_ctx->rv3d;
ARegion *ar = draw_ctx->ar;
- IDProperty *props = BKE_view_layer_engine_evaluated_get(view_layer,
- RE_engine_id_BLENDER_EEVEE);
- if (BKE_collection_engine_property_value_get_bool(props, "motion_blur_enable")) {
+ if (scene_eval->eevee.flag & SCE_EEVEE_MOTION_BLUR_ENABLED) {
/* Update Motion Blur Matrices */
if (camera) {
float persmat[4][4];
- float ctime = BKE_scene_frame_get(scene);
- float delta = BKE_collection_engine_property_value_get_float(props, "motion_blur_shutter");
+ float ctime = BKE_scene_frame_get(scene_eval);
+ float delta = scene_eval->eevee.motion_blur_shutter;
Object *camera_object = DEG_get_evaluated_object(draw_ctx->depsgraph, camera);
/* Current matrix */
@@ -155,8 +154,7 @@ int EEVEE_motion_blur_init(EEVEE_ViewLayerData *UNUSED(sldata), EEVEE_Data *veda
#endif
invert_m4(effects->current_ndc_to_world);
- effects->motion_blur_samples = BKE_collection_engine_property_value_get_int(props,
- "motion_blur_samples");
+ effects->motion_blur_samples = scene_eval->eevee.motion_blur_samples;
if (!e_data.motion_blur_sh) {
eevee_create_shader_motion_blur();
diff --git a/source/blender/draw/engines/eevee/eevee_occlusion.c b/source/blender/draw/engines/eevee/eevee_occlusion.c
index 7ad56327251..305daef87d1 100644
--- a/source/blender/draw/engines/eevee/eevee_occlusion.c
+++ b/source/blender/draw/engines/eevee/eevee_occlusion.c
@@ -31,6 +31,8 @@
#include "DNA_anim_types.h"
+#include "DEG_depsgraph_query.h"
+
#include "BKE_global.h" /* for G.debug_value */
#include "eevee_private.h"
@@ -73,11 +75,9 @@ int EEVEE_occlusion_init(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
EEVEE_EffectsInfo *effects = stl->effects;
const DRWContextState *draw_ctx = DRW_context_state_get();
- ViewLayer *view_layer = draw_ctx->view_layer;
- IDProperty *props = BKE_view_layer_engine_evaluated_get(view_layer,
- RE_engine_id_BLENDER_EEVEE);
+ const Scene *scene_eval = DEG_get_evaluated_scene(draw_ctx->depsgraph);
- if (BKE_collection_engine_property_value_get_bool(props, "gtao_enable")) {
+ if (scene_eval->flag & SCE_EEVEE_GTAO_ENABLED) {
const float *viewport_size = DRW_viewport_size_get();
const int fs_size[2] = {(int)viewport_size[0], (int)viewport_size[1]};
@@ -86,19 +86,19 @@ int EEVEE_occlusion_init(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
eevee_create_shader_occlusion();
}
- common_data->ao_dist = BKE_collection_engine_property_value_get_float(props, "gtao_distance");
- common_data->ao_factor = BKE_collection_engine_property_value_get_float(props, "gtao_factor");
- common_data->ao_quality = 1.0f - BKE_collection_engine_property_value_get_float(props, "gtao_quality");
+ common_data->ao_dist = scene_eval->eevee.gtao_distance;
+ common_data->ao_factor = scene_eval->eevee.gtao_factor;
+ common_data->ao_quality = 1.0f - scene_eval->eevee.gtao_quality;
- common_data->ao_settings = 1.0; /* USE_AO */
- if (BKE_collection_engine_property_value_get_bool(props, "gtao_use_bent_normals")) {
- common_data->ao_settings += 2.0; /* USE_BENT_NORMAL */
+ common_data->ao_settings = 1.0f; /* USE_AO */
+ if (scene_eval->flag & SCE_EEVEE_GTAO_BENT_NORMALS) {
+ common_data->ao_settings += 2.0f; /* USE_BENT_NORMAL */
}
- if (BKE_collection_engine_property_value_get_bool(props, "gtao_denoise")) {
- common_data->ao_settings += 4.0; /* USE_DENOISE */
+ if (scene_eval->flag & SCE_EEVEE_GTAO_BOUNCE) {
+ common_data->ao_settings += 4.0f; /* USE_DENOISE */
}
- common_data->ao_bounce_fac = (float)BKE_collection_engine_property_value_get_bool(props, "gtao_bounce");
+ common_data->ao_bounce_fac = (scene_eval->flag & SCE_EEVEE_GTAO_BOUNCE) ? 1.0f : 0.0f;
effects->gtao_horizons = DRW_texture_pool_query_2D(fs_size[0], fs_size[1], GPU_RGBA8,
&draw_engine_eevee_type);
@@ -139,10 +139,9 @@ void EEVEE_occlusion_output_init(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata
EEVEE_EffectsInfo *effects = stl->effects;
const DRWContextState *draw_ctx = DRW_context_state_get();
- ViewLayer *view_layer = draw_ctx->view_layer;
- IDProperty *props = BKE_view_layer_engine_evaluated_get(view_layer, RE_engine_id_BLENDER_EEVEE);
+ const Scene *scene_eval = DEG_get_evaluated_scene(draw_ctx->depsgraph);
- if (BKE_collection_engine_property_value_get_bool(props, "gtao_enable")) {
+ if (scene_eval->flag & SCE_EEVEE_GTAO_ENABLED) {
DefaultTextureList *dtxl = DRW_viewport_texture_list_get();
float clear[4] = {0.0f, 0.0f, 0.0f, 0.0f};
diff --git a/source/blender/draw/engines/eevee/eevee_private.h b/source/blender/draw/engines/eevee/eevee_private.h
index 42b3d8caf98..3ab1d55aeac 100644
--- a/source/blender/draw/engines/eevee/eevee_private.h
+++ b/source/blender/draw/engines/eevee/eevee_private.h
@@ -125,13 +125,6 @@ enum {
VAR_MAT_SSSALBED = (1 << 16),
};
-/* Shadow Technique */
-enum {
- SHADOW_ESM = 1,
- SHADOW_VSM = 2,
- SHADOW_METHOD_MAX = 3,
-};
-
typedef struct EEVEE_BoundSphere {
float center[3], radius;
} EEVEE_BoundSphere;
diff --git a/source/blender/draw/engines/eevee/eevee_render.c b/source/blender/draw/engines/eevee/eevee_render.c
index 697379e34d1..2d3cb440c7c 100644
--- a/source/blender/draw/engines/eevee/eevee_render.c
+++ b/source/blender/draw/engines/eevee/eevee_render.c
@@ -400,6 +400,7 @@ static void eevee_render_draw_background(EEVEE_Data *vedata)
void EEVEE_render_draw(EEVEE_Data *vedata, RenderEngine *engine, RenderLayer *rl, const rcti *rect)
{
const DRWContextState *draw_ctx = DRW_context_state_get();
+ const Scene *scene_eval = DEG_get_evaluated_scene(draw_ctx->depsgraph);
ViewLayer *view_layer = draw_ctx->view_layer;
const char *viewname = RE_GetActiveRenderView(engine->re);
EEVEE_PassList *psl = vedata->psl;
@@ -435,8 +436,7 @@ void EEVEE_render_draw(EEVEE_Data *vedata, RenderEngine *engine, RenderLayer *rl
EEVEE_occlusion_output_init(sldata, vedata);
}
- IDProperty *props = BKE_view_layer_engine_evaluated_get(view_layer, RE_engine_id_BLENDER_EEVEE);
- uint tot_sample = BKE_collection_engine_property_value_get_int(props, "taa_render_samples");
+ uint tot_sample = scene_eval->eevee.taa_render_samples;
uint render_samples = 0;
if (RE_engine_test_break(engine)) {
diff --git a/source/blender/draw/engines/eevee/eevee_screen_raytrace.c b/source/blender/draw/engines/eevee/eevee_screen_raytrace.c
index 87395f94fbb..74760b9c828 100644
--- a/source/blender/draw/engines/eevee/eevee_screen_raytrace.c
+++ b/source/blender/draw/engines/eevee/eevee_screen_raytrace.c
@@ -30,6 +30,8 @@
#include "BLI_dynstr.h"
#include "BLI_string_utils.h"
+#include "DEG_depsgraph_query.h"
+
#include "eevee_private.h"
#include "GPU_texture.h"
@@ -111,16 +113,14 @@ int EEVEE_screen_raytrace_init(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
const float *viewport_size = DRW_viewport_size_get();
const DRWContextState *draw_ctx = DRW_context_state_get();
- ViewLayer *view_layer = draw_ctx->view_layer;
- IDProperty *props = BKE_view_layer_engine_evaluated_get(view_layer,
- RE_engine_id_BLENDER_EEVEE);
+ const Scene *scene_eval = DEG_get_evaluated_scene(draw_ctx->depsgraph);
/* Compute pixel size, (shared with contact shadows) */
copy_v2_v2(common_data->ssr_pixelsize, viewport_size);
invert_v2(common_data->ssr_pixelsize);
- if (BKE_collection_engine_property_value_get_bool(props, "ssr_enable")) {
- const bool use_refraction = BKE_collection_engine_property_value_get_bool(props, "ssr_refraction");
+ if (scene_eval->eevee.flag & SCE_EEVEE_SSR_ENABLED) {
+ const bool use_refraction = (scene_eval->eevee.flag & SCE_EEVEE_SSR_REFRACTION) != 0;
if (use_refraction) {
/* TODO: Opti: Could be shared. */
@@ -132,12 +132,12 @@ int EEVEE_screen_raytrace_init(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
});
}
- effects->reflection_trace_full = !BKE_collection_engine_property_value_get_bool(props, "ssr_halfres");
- common_data->ssr_thickness = BKE_collection_engine_property_value_get_float(props, "ssr_thickness");
- common_data->ssr_border_fac = BKE_collection_engine_property_value_get_float(props, "ssr_border_fade");
- common_data->ssr_firefly_fac = BKE_collection_engine_property_value_get_float(props, "ssr_firefly_fac");
- common_data->ssr_max_roughness = BKE_collection_engine_property_value_get_float(props, "ssr_max_roughness");
- common_data->ssr_quality = 1.0f - 0.95f * BKE_collection_engine_property_value_get_float(props, "ssr_quality");
+ effects->reflection_trace_full = (scene_eval->eevee.flag & SCE_EEVEE_SSR_HALF_RESOLUTION) == 0;
+ common_data->ssr_thickness = scene_eval->eevee.ssr_thickness;
+ common_data->ssr_border_fac = scene_eval->eevee.ssr_border_fade;
+ common_data->ssr_firefly_fac = scene_eval->eevee.ssr_firefly_fac;
+ common_data->ssr_max_roughness = scene_eval->eevee.ssr_max_roughness;
+ common_data->ssr_quality = 1.0f - 0.95f * scene_eval->eevee.ssr_quality;
common_data->ssr_brdf_bias = 0.1f + common_data->ssr_quality * 0.6f; /* Range [0.1, 0.7]. */
if (common_data->ssr_firefly_fac < 1e-8f) {
diff --git a/source/blender/draw/engines/eevee/eevee_subsurface.c b/source/blender/draw/engines/eevee/eevee_subsurface.c
index d1e760aa123..1a46e0b5c33 100644
--- a/source/blender/draw/engines/eevee/eevee_subsurface.c
+++ b/source/blender/draw/engines/eevee/eevee_subsurface.c
@@ -29,6 +29,8 @@
#include "BLI_string_utils.h"
+#include "DEG_depsgraph_query.h"
+
#include "eevee_private.h"
#include "GPU_texture.h"
@@ -69,13 +71,12 @@ int EEVEE_subsurface_init(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
const int fs_size[2] = {(int)viewport_size[0], (int)viewport_size[1]};
const DRWContextState *draw_ctx = DRW_context_state_get();
- ViewLayer *view_layer = draw_ctx->view_layer;
- IDProperty *props = BKE_view_layer_engine_evaluated_get(view_layer, RE_engine_id_BLENDER_EEVEE);
+ const Scene *scene_eval = DEG_get_evaluated_scene(draw_ctx->depsgraph);
- if (BKE_collection_engine_property_value_get_bool(props, "sss_enable")) {
- effects->sss_sample_count = 1 + BKE_collection_engine_property_value_get_int(props, "sss_samples") * 2;
- effects->sss_separate_albedo = BKE_collection_engine_property_value_get_bool(props, "sss_separate_albedo");
- common_data->sss_jitter_threshold = BKE_collection_engine_property_value_get_float(props, "sss_jitter_threshold");
+ if (scene_eval->eevee.flag & SCE_EEVEE_SSS_ENABLED) {
+ effects->sss_sample_count = 1 + scene_eval->eevee.sss_samples * 2;
+ effects->sss_separate_albedo = (scene_eval->eevee.flag & SCE_EEVEE_SSS_SEPARATE_ALBEDO) != 0;
+ common_data->sss_jitter_threshold = scene_eval->eevee.sss_jitter_threshold;
/* Force separate albedo for final render */
if (DRW_state_is_image_render()) {
@@ -147,10 +148,9 @@ void EEVEE_subsurface_output_init(EEVEE_ViewLayerData *UNUSED(sldata), EEVEE_Dat
EEVEE_EffectsInfo *effects = stl->effects;
const DRWContextState *draw_ctx = DRW_context_state_get();
- ViewLayer *view_layer = draw_ctx->view_layer;
- IDProperty *props = BKE_view_layer_engine_evaluated_get(view_layer, RE_engine_id_BLENDER_EEVEE);
+ const Scene *scene_eval = DEG_get_evaluated_scene(draw_ctx->depsgraph);
- if (BKE_collection_engine_property_value_get_bool(props, "sss_enable")) {
+ if (scene_eval->flag & SCE_EEVEE_SSS_ENABLED) {
DRW_texture_ensure_fullscreen_2D(&txl->sss_dir_accum, GPU_RGBA16F, 0);
DRW_texture_ensure_fullscreen_2D(&txl->sss_col_accum, GPU_RGBA16F, 0);
diff --git a/source/blender/draw/engines/eevee/eevee_temporal_sampling.c b/source/blender/draw/engines/eevee/eevee_temporal_sampling.c
index 889a7f6cdcd..7cd76669fe4 100644
--- a/source/blender/draw/engines/eevee/eevee_temporal_sampling.c
+++ b/source/blender/draw/engines/eevee/eevee_temporal_sampling.c
@@ -32,6 +32,8 @@
#include "BLI_rand.h"
#include "BLI_string_utils.h"
+#include "DEG_depsgraph_query.h"
+
#include "eevee_private.h"
#include "GPU_texture.h"
@@ -192,10 +194,9 @@ int EEVEE_temporal_sampling_init(EEVEE_ViewLayerData *UNUSED(sldata), EEVEE_Data
effects->taa_render_sample = 1;
const DRWContextState *draw_ctx = DRW_context_state_get();
- ViewLayer *view_layer = draw_ctx->view_layer;
- IDProperty *props = BKE_view_layer_engine_evaluated_get(view_layer, RE_engine_id_BLENDER_EEVEE);
+ const Scene *scene_eval = DEG_get_evaluated_scene(draw_ctx->depsgraph);
- if ((BKE_collection_engine_property_value_get_int(props, "taa_samples") != 1 &&
+ if (((scene_eval->eevee.taa_samples != 1) &&
/* FIXME the motion blur camera evaluation is tagging view_updated
* thus making the TAA always reset and never stopping rendering. */
(effects->enabled_effects & EFFECT_MOTION_BLUR) == 0) ||
@@ -204,7 +205,7 @@ int EEVEE_temporal_sampling_init(EEVEE_ViewLayerData *UNUSED(sldata), EEVEE_Data
float persmat[4][4], viewmat[4][4];
if (!DRW_state_is_image_render() &&
- BKE_collection_engine_property_value_get_bool(props, "taa_reprojection"))
+ (scene_eval->eevee.flag & SCE_EEVEE_TAA_REPROJECTION))
{
repro_flag = EFFECT_TAA_REPROJECT | EFFECT_VELOCITY_BUFFER | EFFECT_DEPTH_DOUBLE_BUFFER | EFFECT_DOUBLE_BUFFER | EFFECT_POST_BUFFER;
effects->taa_reproject_sample = ((effects->taa_reproject_sample + 1) % 16);
@@ -221,7 +222,7 @@ int EEVEE_temporal_sampling_init(EEVEE_ViewLayerData *UNUSED(sldata), EEVEE_Data
view_is_valid = view_is_valid && (ED_screen_animation_no_scrub(wm) == NULL);
}
- effects->taa_total_sample = BKE_collection_engine_property_value_get_int(props, "taa_samples");
+ effects->taa_total_sample = scene_eval->eevee.taa_samples;
MAX2(effects->taa_total_sample, 0);
DRW_viewport_matrix_get(persmat, DRW_MAT_PERS);
diff --git a/source/blender/draw/engines/eevee/eevee_volumes.c b/source/blender/draw/engines/eevee/eevee_volumes.c
index 30927d8df6f..2d074eea522 100644
--- a/source/blender/draw/engines/eevee/eevee_volumes.c
+++ b/source/blender/draw/engines/eevee/eevee_volumes.c
@@ -41,6 +41,8 @@
#include "ED_screen.h"
+#include "DEG_depsgraph_query.h"
+
#include "eevee_private.h"
#include "GPU_draw.h"
#include "GPU_texture.h"
@@ -155,28 +157,27 @@ int EEVEE_volumes_init(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
EEVEE_CommonUniformBuffer *common_data = &sldata->common_data;
const DRWContextState *draw_ctx = DRW_context_state_get();
- ViewLayer *view_layer = draw_ctx->view_layer;
- IDProperty *props = BKE_view_layer_engine_evaluated_get(view_layer, RE_engine_id_BLENDER_EEVEE);
+ const Scene *scene_eval = DEG_get_evaluated_scene(draw_ctx->depsgraph);
const float *viewport_size = DRW_viewport_size_get();
BLI_listbase_clear(&e_data.smoke_domains);
- if (BKE_collection_engine_property_value_get_bool(props, "volumetric_enable")) {
+ if (scene_eval->eevee.flag & SCE_EEVEE_VOLUMETRIC_ENABLED) {
/* Shaders */
if (!e_data.volumetric_scatter_sh) {
eevee_create_shader_volumes();
}
- int tile_size = BKE_collection_engine_property_value_get_int(props, "volumetric_tile_size");
+ const int tile_size = scene_eval->eevee.volumetric_tile_size;
/* Find Froxel Texture resolution. */
int tex_size[3];
tex_size[0] = (int)ceilf(fmaxf(1.0f, viewport_size[0] / (float)tile_size));
tex_size[1] = (int)ceilf(fmaxf(1.0f, viewport_size[1] / (float)tile_size));
- tex_size[2] = max_ii(BKE_collection_engine_property_value_get_int(props, "volumetric_samples"), 1);
+ tex_size[2] = max_ii(scene_eval->eevee.volumetric_samples, 1);
common_data->vol_coord_scale[0] = viewport_size[0] / (float)(tile_size * tex_size[0]);
common_data->vol_coord_scale[1] = viewport_size[1] / (float)(tile_size * tex_size[1]);
@@ -286,19 +287,16 @@ int EEVEE_volumes_init(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
GPU_ATTACHMENT_TEXTURE(txl->volume_transmittance_history)
});
- float integration_start = BKE_collection_engine_property_value_get_float(props, "volumetric_start");
- float integration_end = BKE_collection_engine_property_value_get_float(props, "volumetric_end");
- common_data->vol_light_clamp = BKE_collection_engine_property_value_get_float(props, "volumetric_light_clamp");
-
- common_data->vol_shadow_steps = (float)BKE_collection_engine_property_value_get_int(props, "volumetric_shadow_samples");
- if (BKE_collection_engine_property_value_get_bool(props, "volumetric_shadows")) {
- }
- else {
+ float integration_start = scene_eval->eevee.volumetric_start;
+ float integration_end = scene_eval->eevee.volumetric_end;
+ common_data->vol_light_clamp = scene_eval->eevee.volumetric_light_clamp;
+ common_data->vol_shadow_steps = (float)scene_eval->eevee.volumetric_shadow_samples;
+ if ((scene_eval->eevee.flag & SCE_EEVEE_VOLUMETRIC_SHADOWS) == 0) {
common_data->vol_shadow_steps = 0;
}
if (DRW_viewport_is_persp_get()) {
- float sample_distribution = BKE_collection_engine_property_value_get_float(props, "volumetric_sample_distribution");
+ float sample_distribution = scene_eval->eevee.volumetric_sample_distribution;
sample_distribution = 4.0f * (1.00001f - sample_distribution);
const float clip_start = common_data->view_vecs[0][2];
@@ -326,7 +324,7 @@ int EEVEE_volumes_init(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
common_data->vol_light_clamp = FLT_MAX;
}
- common_data->vol_use_lights = BKE_collection_engine_property_value_get_bool(props, "volumetric_lights");
+ common_data->vol_use_lights = (scene_eval->eevee.flag & SCE_EEVEE_VOLUMETRIC_LIGHTS) != 0;
return EFFECT_VOLUMETRIC | EFFECT_POST_BUFFER;
}