[Bf-blender-cvs] [a61ade52832] blender2.8-workbench: Workbench: view specific ambient light for shadows

Jeroen Bakker noreply at git.blender.org
Thu May 3 09:03:07 CEST 2018


Commit: a61ade528329696627ee7d02fc403e459f4d9560
Author: Jeroen Bakker
Date:   Wed May 2 16:59:13 2018 +0200
Branches: blender2.8-workbench
https://developer.blender.org/rBa61ade528329696627ee7d02fc403e459f4d9560

Workbench: view specific ambient light for shadows

===================================================================

M	release/scripts/startup/bl_ui/properties_render.py
M	release/scripts/startup/bl_ui/space_view3d.py
M	source/blender/draw/engines/workbench/workbench_engine.c
M	source/blender/draw/engines/workbench/workbench_materials.c
M	source/blender/draw/engines/workbench/workbench_private.h
M	source/blender/makesdna/DNA_view3d_types.h
M	source/blender/makesrna/intern/rna_layer.c
M	source/blender/makesrna/intern/rna_space.c

===================================================================

diff --git a/release/scripts/startup/bl_ui/properties_render.py b/release/scripts/startup/bl_ui/properties_render.py
index 3de97789691..5e5a55a3dab 100644
--- a/release/scripts/startup/bl_ui/properties_render.py
+++ b/release/scripts/startup/bl_ui/properties_render.py
@@ -768,7 +768,6 @@ class RENDER_PT_workbench_environment_light(RenderButtonsPanel, Panel):
         col.prop(props, "diffuse_light_z_neg", text="")
 
         layout.prop(props, "light_direction", text="")
-        layout.prop(props, "ambient_light_intensity")
 
 
 classes = (
diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py
index fbf72a32eb4..f436533171d 100644
--- a/release/scripts/startup/bl_ui/space_view3d.py
+++ b/release/scripts/startup/bl_ui/space_view3d.py
@@ -3552,6 +3552,9 @@ class VIEW3D_PT_shading(Panel):
             col.row().prop(shading, "single_color_mode", expand=True)
             col.prop(shading, "show_object_overlap")
             col.prop(shading, "show_shadows")
+            if shading.show_shadows:
+                col.prop(shading, "ambient_light_intensity")
+
 
             if shading.light == 'STUDIO':
                 # TODO: don't store these settings in the scene
diff --git a/source/blender/draw/engines/workbench/workbench_engine.c b/source/blender/draw/engines/workbench/workbench_engine.c
index 844513372c9..32c8479393e 100644
--- a/source/blender/draw/engines/workbench/workbench_engine.c
+++ b/source/blender/draw/engines/workbench/workbench_engine.c
@@ -74,9 +74,7 @@ static void workbench_view_layer_settings_create(RenderEngine *UNUSED(engine), I
 	BKE_collection_engine_property_add_float_array(props, "diffuse_light_z_neg", diffuse_z_neg, 3);
 
 	const float light_direction[3] = {0.577350269, 0.577350269, 0.577350269};
-	const float ambient_light_intensity = 0.8;
 	BKE_collection_engine_property_add_float_array(props, "light_direction", light_direction, 3);
-	BKE_collection_engine_property_add_float(props, "ambient_light_intensity", ambient_light_intensity);
 }
 
 /* Note: currently unused, we may want to register so we can see this when debugging the view. */
diff --git a/source/blender/draw/engines/workbench/workbench_materials.c b/source/blender/draw/engines/workbench/workbench_materials.c
index 98397403edb..1445a90d53d 100644
--- a/source/blender/draw/engines/workbench/workbench_materials.c
+++ b/source/blender/draw/engines/workbench/workbench_materials.c
@@ -51,8 +51,6 @@ static struct {
 	struct GPUTexture *normal_buffer_tx; /* ref only, not alloced */
 
 	float light_direction[3]; /* world light direction for shadows */
-	float light_multiplier;
-	float shadow_multiplier;
 	int next_object_id;
 } e_data = {NULL};
 
@@ -288,6 +286,7 @@ void workbench_materials_cache_init(WORKBENCH_Data *vedata)
 	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, COLLECTION_MODE_NONE, RE_engine_id_BLENDER_WORKBENCH);
+	static float light_multiplier = 1.0f;
 
 	const DRWContextState *DCS = DRW_context_state_get();
 
@@ -297,10 +296,12 @@ void workbench_materials_cache_init(WORKBENCH_Data *vedata)
 	if (v3d) {
 		wpd->drawtype_lighting = v3d->drawtype_lighting;
 		wpd->drawtype_options = v3d->drawtype_options;
+		wpd->drawtype_ambient_intensity = v3d->drawtype_ambient_intensity;
 	}
 	else {
 		wpd->drawtype_lighting = V3D_LIGHTING_STUDIO;
 		wpd->drawtype_options = 0;
+		wpd->drawtype_ambient_intensity = 0.8;
 	}
 
 	select_deferred_shaders(wpd);
@@ -318,8 +319,6 @@ void workbench_materials_cache_init(WORKBENCH_Data *vedata)
 		wpd->world_ubo = DRW_uniformbuffer_create(sizeof(WORKBENCH_UBO_World), NULL);
 		DRW_uniformbuffer_update(wpd->world_ubo, &wpd->world_data);
 
-		e_data.light_multiplier = 1.0;
-		e_data.shadow_multiplier = BKE_collection_engine_property_value_get_float(props, "ambient_light_intensity");
 		copy_v3_v3(e_data.light_direction, BKE_collection_engine_property_value_get_float_array(props, "light_direction"));
 		negate_v3(e_data.light_direction);
 
@@ -327,7 +326,7 @@ void workbench_materials_cache_init(WORKBENCH_Data *vedata)
 		grp = DRW_shgroup_create(wpd->composite_sh, psl->composite_pass);
 		workbench_composite_uniforms(wpd, grp);
 		DRW_shgroup_stencil_mask(grp, 0x00);
-		DRW_shgroup_uniform_float(grp, "lightMultiplier", &e_data.light_multiplier, 1);
+		DRW_shgroup_uniform_float(grp, "lightMultiplier", &light_multiplier, 1);
 		DRW_shgroup_call_add(grp, DRW_cache_fullscreen_quad_get(), NULL);
 
 		if (SHADOW_ENABLED(wpd)) {
@@ -348,7 +347,7 @@ void workbench_materials_cache_init(WORKBENCH_Data *vedata)
 			grp = DRW_shgroup_create(wpd->composite_sh, psl->composite_shadow_pass);
 			DRW_shgroup_stencil_mask(grp, 0x00);
 			workbench_composite_uniforms(wpd, grp);
-			DRW_shgroup_uniform_float(grp, "lightMultiplier", &e_data.shadow_multiplier, 1);
+			DRW_shgroup_uniform_float(grp, "lightMultiplier", &wpd->drawtype_ambient_intensity, 1);
 			DRW_shgroup_call_add(grp, DRW_cache_fullscreen_quad_get(), NULL);
 #endif
 		}
diff --git a/source/blender/draw/engines/workbench/workbench_private.h b/source/blender/draw/engines/workbench/workbench_private.h
index 8984292c31a..0ce0f695a48 100644
--- a/source/blender/draw/engines/workbench/workbench_private.h
+++ b/source/blender/draw/engines/workbench/workbench_private.h
@@ -76,6 +76,8 @@ typedef struct WORKBENCH_PrivateData {
 	struct GPUShader *composite_sh;
 	short drawtype_lighting;
 	short drawtype_options;
+	float drawtype_ambient_intensity;
+
 	struct GPUUniformBuffer *world_ubo;
 	struct DRWShadingGroup *shadow_shgrp;
 	WORKBENCH_UBO_World world_data;
diff --git a/source/blender/makesdna/DNA_view3d_types.h b/source/blender/makesdna/DNA_view3d_types.h
index 95f36497dc7..2c1c4f58618 100644
--- a/source/blender/makesdna/DNA_view3d_types.h
+++ b/source/blender/makesdna/DNA_view3d_types.h
@@ -259,9 +259,9 @@ typedef struct View3D {
 	short drawtype_lighting;
 	short drawtype_options;
 	short pad5;
+	float drawtype_ambient_intensity;
 
 	int overlays;
-	int pad6;
 
 	View3DDebug debug;
 } View3D;
diff --git a/source/blender/makesrna/intern/rna_layer.c b/source/blender/makesrna/intern/rna_layer.c
index 54a117da47f..e80b2e7314f 100644
--- a/source/blender/makesrna/intern/rna_layer.c
+++ b/source/blender/makesrna/intern/rna_layer.c
@@ -1770,8 +1770,9 @@ static void rna_def_view_layer_engine_settings_workbench(BlenderRNA *brna)
 
 	prop = RNA_def_property(srna, "ambient_light_intensity", PROP_FLOAT, PROP_NONE);
 	RNA_def_property_float_funcs(prop, "rna_LayerEngineSettings_Workbench_ambient_light_intensity_get", "rna_LayerEngineSettings_Workbench_ambient_light_intensity_set", NULL);
-	RNA_def_property_ui_text(prop, "Ambient Light", "Intensity of ambient light");
+	RNA_def_property_ui_text(prop, "Ambient Light", "Intensity of ambient light for shadows");
 	RNA_def_property_range(prop, 0.0f, 1.0f);
+	RNA_def_property_ui_range(prop, 0.00f, 1.0f, 1, 3);
 	RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE);
 	RNA_def_property_update(prop, NC_SCENE | ND_LAYER_CONTENT, "rna_ViewLayerEngineSettings_update");
 
diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c
index e063b99909d..f55729b28ee 100644
--- a/source/blender/makesrna/intern/rna_space.c
+++ b/source/blender/makesrna/intern/rna_space.c
@@ -2241,6 +2241,14 @@ static void rna_def_space_view3d_shading(BlenderRNA *brna)
 	RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
 	RNA_def_property_ui_text(prop, "Shadow", "Show Shadow");
 	RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, "rna_3DViewShading_type_update");
+
+	prop = RNA_def_property(srna, "ambient_light_intensity", PROP_FLOAT, PROP_NONE);
+	RNA_def_property_float_sdna(prop, NULL, "drawtype_ambient_intensity");
+	RNA_def_property_ui_text(prop, "Ambient Light", "Intensity of ambient light for shadows");
+	RNA_def_property_range(prop, 0.0f, 1.0f);
+	RNA_def_property_ui_range(prop, 0.00f, 1.0f, 1, 3);
+	RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
+	RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, "rna_3DViewShading_type_update");
 }
 
 static void rna_def_space_view3d_overlay(BlenderRNA *brna)



More information about the Bf-blender-cvs mailing list