diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2017-06-22 03:30:20 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2017-06-22 04:51:06 +0300 |
commit | 1159d8ccc9649fe1da7cfab006c19843e19eb61d (patch) | |
tree | 6864d98490edae0dbdda286b3f9abe825c0a8cab | |
parent | 2c7f6db8d1b2d2a0d59d5212899632ec838e86cc (diff) |
Eevee: Ambient Occlusion: Add UI properties.
4 files changed, 67 insertions, 0 deletions
diff --git a/release/scripts/startup/bl_ui/properties_render.py b/release/scripts/startup/bl_ui/properties_render.py index ad210498126..bd599bc0cb4 100644 --- a/release/scripts/startup/bl_ui/properties_render.py +++ b/release/scripts/startup/bl_ui/properties_render.py @@ -631,6 +631,7 @@ class RENDER_PT_eevee_poststack_settings(RenderButtonsPanel, Panel): props = scene.layer_properties['BLENDER_EEVEE'] col = layout.column() + col.prop(props, "gtao_enable") col.prop(props, "motion_blur_enable") col.prop(props, "dof_enable") col.prop(props, "bloom_enable") @@ -652,6 +653,13 @@ class RENDER_PT_eevee_postprocess_settings(RenderButtonsPanel, Panel): col = layout.column() + col.label("Ambient Occlusion:") + col.prop(props, "gtao_use_bent_normals") + col.prop(props, "gtao_samples") + col.prop(props, "gtao_distance") + col.prop(props, "gtao_factor") + col.separator() + col.label("Motion Blur:") col.prop(props, "motion_blur_samples") col.prop(props, "motion_blur_shutter") diff --git a/release/scripts/startup/bl_ui/properties_render_layer.py b/release/scripts/startup/bl_ui/properties_render_layer.py index fb52fdf5fa0..4de48f00b04 100644 --- a/release/scripts/startup/bl_ui/properties_render_layer.py +++ b/release/scripts/startup/bl_ui/properties_render_layer.py @@ -167,6 +167,7 @@ class RENDERLAYER_PT_eevee_poststack_settings(RenderLayerButtonsPanel, Panel): layer_props = layer.engine_overrides['BLENDER_EEVEE'] col = layout.column() + col.template_override_property(layer_props, scene_props, "gtao_enable") col.template_override_property(layer_props, scene_props, "motion_blur_enable") col.template_override_property(layer_props, scene_props, "dof_enable") col.template_override_property(layer_props, scene_props, "bloom_enable") @@ -189,6 +190,13 @@ class RENDERLAYER_PT_eevee_postprocess_settings(RenderLayerButtonsPanel, Panel): layer_props = layer.engine_overrides['BLENDER_EEVEE'] col = layout.column() + col.label("Ambient Occlusion:") + col.template_override_property(layer_props, scene_props, "gtao_use_bent_normals") + col.template_override_property(layer_props, scene_props, "gtao_samples") + col.template_override_property(layer_props, scene_props, "gtao_distance") + col.template_override_property(layer_props, scene_props, "gtao_factor") + col.separator() + col.label("Motion Blur:") col.template_override_property(layer_props, scene_props, "motion_blur_samples") col.template_override_property(layer_props, scene_props, "motion_blur_shutter") diff --git a/source/blender/draw/engines/eevee/eevee_engine.c b/source/blender/draw/engines/eevee/eevee_engine.c index a125bb97a91..8d3cf5ea077 100644 --- a/source/blender/draw/engines/eevee/eevee_engine.c +++ b/source/blender/draw/engines/eevee/eevee_engine.c @@ -189,6 +189,12 @@ static void EEVEE_scene_layer_settings_create(RenderEngine *UNUSED(engine), IDPr props->type == IDP_GROUP && props->subtype == IDP_GROUP_SUB_ENGINE_RENDER); + 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_float(props, "gtao_distance", 0.2f); + BKE_collection_engine_property_add_float(props, "gtao_factor", 1.0f); + BKE_collection_engine_property_add_int(props, "gtao_samples", 2); + 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); diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c index b800cb90d8c..17d85890a0b 100644 --- a/source/blender/makesrna/intern/rna_scene.c +++ b/source/blender/makesrna/intern/rna_scene.c @@ -2588,6 +2588,11 @@ RNA_LAYER_ENGINE_CLAY_GET_SET_FLOAT(hair_brightness_randomness) /* eevee engine */ /* SceneLayer settings. */ +RNA_LAYER_ENGINE_EEVEE_GET_SET_BOOL(gtao_enable) +RNA_LAYER_ENGINE_EEVEE_GET_SET_BOOL(gtao_use_bent_normals) +RNA_LAYER_ENGINE_EEVEE_GET_SET_FLOAT(gtao_factor) +RNA_LAYER_ENGINE_EEVEE_GET_SET_FLOAT(gtao_distance) +RNA_LAYER_ENGINE_EEVEE_GET_SET_INT(gtao_samples) RNA_LAYER_ENGINE_EEVEE_GET_SET_BOOL(dof_enable) RNA_LAYER_ENGINE_EEVEE_GET_SET_FLOAT(bokeh_max_size) RNA_LAYER_ENGINE_EEVEE_GET_SET_FLOAT(bokeh_threshold) @@ -6152,6 +6157,46 @@ static void rna_def_scene_layer_engine_settings_eevee(BlenderRNA *brna) RNA_define_verify_sdna(0); /* not in sdna */ /* see RNA_LAYER_ENGINE_GET_SET macro */ + + /* Ambient Occlusion */ + prop = RNA_def_property(srna, "gtao_enable", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_funcs(prop, "rna_LayerEngineSettings_Eevee_gtao_enable_get", + "rna_LayerEngineSettings_Eevee_gtao_enable_set"); + RNA_def_property_ui_text(prop, "Ambient Occlusion", "Enable ambient occlusion to simulate medium scale indirect shadowing"); + RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE); + RNA_def_property_update(prop, NC_SCENE | ND_LAYER_CONTENT, "rna_SceneLayerEngineSettings_update"); + + prop = RNA_def_property(srna, "gtao_use_bent_normals", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_funcs(prop, "rna_LayerEngineSettings_Eevee_gtao_use_bent_normals_get", + "rna_LayerEngineSettings_Eevee_gtao_use_bent_normals_set"); + RNA_def_property_ui_text(prop, "Bent Normals", "Compute main non occluded direction to sample the environment"); + RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE); + RNA_def_property_update(prop, NC_SCENE | ND_LAYER_CONTENT, "rna_SceneLayerEngineSettings_update"); + + prop = RNA_def_property(srna, "gtao_factor", PROP_FLOAT, PROP_FACTOR); + RNA_def_property_float_funcs(prop, "rna_LayerEngineSettings_Eevee_gtao_factor_get", "rna_LayerEngineSettings_Eevee_gtao_factor_set", NULL); + RNA_def_property_ui_text(prop, "Factor", "Factor for ambient occlusion blending"); + RNA_def_property_range(prop, 0, FLT_MAX); + RNA_def_property_ui_range(prop, 0.0, 1.0, 0.1, 2); + RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE); + RNA_def_property_update(prop, NC_SCENE | ND_LAYER_CONTENT, "rna_LayerCollectionEngineSettings_update"); + + prop = RNA_def_property(srna, "gtao_distance", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_funcs(prop, "rna_LayerEngineSettings_Eevee_gtao_distance_get", "rna_LayerEngineSettings_Eevee_gtao_distance_set", NULL); + RNA_def_property_ui_text(prop, "Distance", "Distance of object that contribute to the ambient occlusion effect"); + RNA_def_property_range(prop, 0.0f, 100000.0f); + RNA_def_property_ui_range(prop, 0.0f, 100.0f, 1, 3); + RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE); + RNA_def_property_update(prop, NC_SCENE | ND_LAYER_CONTENT, "rna_LayerCollectionEngineSettings_update"); + + prop = RNA_def_property(srna, "gtao_samples", PROP_INT, PROP_UNSIGNED); + RNA_def_property_int_funcs(prop, "rna_LayerEngineSettings_Eevee_gtao_samples_get", + "rna_LayerEngineSettings_Eevee_gtao_samples_set", NULL); + RNA_def_property_ui_text(prop, "Samples", "Number of samples to take to compute occlusion"); + RNA_def_property_range(prop, 2, 32); + RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE); + RNA_def_property_update(prop, NC_SCENE | ND_LAYER_CONTENT, "rna_SceneLayerEngineSettings_update"); + /* Depth of Field */ prop = RNA_def_property(srna, "dof_enable", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_funcs(prop, "rna_LayerEngineSettings_Eevee_dof_enable_get", |