diff options
-rw-r--r-- | release/scripts/startup/bl_ui/properties_render.py | 32 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/scene.c | 11 | ||||
-rw-r--r-- | source/blender/blenloader/intern/versioning_280.c | 15 | ||||
-rw-r--r-- | source/blender/draw/engines/clay/clay_engine.c | 64 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_scene_types.h | 13 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_layer.c | 192 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_scene.c | 88 |
7 files changed, 164 insertions, 251 deletions
diff --git a/release/scripts/startup/bl_ui/properties_render.py b/release/scripts/startup/bl_ui/properties_render.py index 170f2627af5..93de404245f 100644 --- a/release/scripts/startup/bl_ui/properties_render.py +++ b/release/scripts/startup/bl_ui/properties_render.py @@ -431,25 +431,13 @@ class RENDER_PT_stereoscopy(RenderButtonsPanel, Panel): row.prop(rv, "camera_suffix", text="") -class RENDER_PT_clay_layer_settings(RenderButtonsPanel, Panel): - bl_label = "Clay Layer Settings" +class RENDER_PT_clay_settings(RenderButtonsPanel, Panel): + bl_label = "Clay Settings" COMPAT_ENGINES = {'BLENDER_CLAY'} def draw(self, context): layout = self.layout - props = context.scene.layer_properties['BLENDER_CLAY'] - - col = layout.column() - col.prop(props, "ssao_samples") - - -class RENDER_PT_clay_collection_settings(RenderButtonsPanel, Panel): - bl_label = "Clay Collection Settings" - COMPAT_ENGINES = {'BLENDER_CLAY'} - - def draw(self, context): - layout = self.layout - props = context.scene.collection_properties['BLENDER_CLAY'] + props = context.scene.display col = layout.column() col.template_icon_view(props, "matcap_icon") @@ -457,11 +445,12 @@ class RENDER_PT_clay_collection_settings(RenderButtonsPanel, Panel): col.prop(props, "matcap_hue") col.prop(props, "matcap_saturation") col.prop(props, "matcap_value") - col.prop(props, "ssao_factor_cavity") - col.prop(props, "ssao_factor_edge") - col.prop(props, "ssao_distance") - col.prop(props, "ssao_attenuation") - col.prop(props, "hair_brightness_randomness") + col.prop(props, "matcap_ssao_samples") + col.prop(props, "matcap_ssao_factor_cavity") + col.prop(props, "matcap_ssao_factor_edge") + col.prop(props, "matcap_ssao_distance") + col.prop(props, "matcap_ssao_attenuation") + col.prop(props, "matcap_hair_brightness_randomness") class RENDER_PT_eevee_ambient_occlusion(RenderButtonsPanel, Panel): @@ -756,8 +745,7 @@ classes = ( RENDER_PT_encoding, RENDER_UL_renderviews, RENDER_PT_stereoscopy, - RENDER_PT_clay_layer_settings, - RENDER_PT_clay_collection_settings, + RENDER_PT_clay_settings, RENDER_PT_eevee_sampling, RENDER_PT_eevee_film, RENDER_PT_eevee_shadows, diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c index f387ad0d4ef..eb2b1bbe26f 100644 --- a/source/blender/blenkernel/intern/scene.c +++ b/source/blender/blenkernel/intern/scene.c @@ -827,6 +827,17 @@ void BKE_scene_init(Scene *sce) copy_v3_v3(sce->display.light_direction, (float[3]){-M_SQRT1_3, -M_SQRT1_3, M_SQRT1_3}); sce->display.shadow_shift = 0.1; + sce->display.matcap_icon = 1; + sce->display.matcap_type = CLAY_MATCAP_NONE; + sce->display.matcap_hue = 0.5f; + sce->display.matcap_saturation = 0.5f; + sce->display.matcap_value = 0.5f; + sce->display.matcap_ssao_distance = 0.2f; + sce->display.matcap_ssao_attenuation = 1.0f; + sce->display.matcap_ssao_factor_cavity = 1.0f; + sce->display.matcap_ssao_factor_edge = 1.0f; + sce->display.matcap_ssao_samples = 16; + /* SceneEEVEE */ sce->eevee.gi_diffuse_bounces = 3; sce->eevee.gi_cubemap_resolution = 512; diff --git a/source/blender/blenloader/intern/versioning_280.c b/source/blender/blenloader/intern/versioning_280.c index 9c0ad15831b..eb351a247ab 100644 --- a/source/blender/blenloader/intern/versioning_280.c +++ b/source/blender/blenloader/intern/versioning_280.c @@ -1286,5 +1286,20 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *main) #undef EEVEE_GET_BOOL } } + + if (!DNA_struct_elem_find(fd->filesdna, "SceneDisplay", "int", "matcap_icon")) { + for (Scene *scene = main->scene.first; scene; scene = scene->id.next) { + scene->display.matcap_icon = 1; + scene->display.matcap_type = CLAY_MATCAP_NONE; + scene->display.matcap_hue = 0.5f; + scene->display.matcap_saturation = 0.5f; + scene->display.matcap_value = 0.5f; + scene->display.matcap_ssao_distance = 0.2f; + scene->display.matcap_ssao_attenuation = 1.0f; + scene->display.matcap_ssao_factor_cavity = 1.0f; + scene->display.matcap_ssao_factor_edge = 1.0f; + scene->display.matcap_ssao_samples = 16; + } + } } } diff --git a/source/blender/draw/engines/clay/clay_engine.c b/source/blender/draw/engines/clay/clay_engine.c index 78d2d7b344c..9c4bc90d3a1 100644 --- a/source/blender/draw/engines/clay/clay_engine.c +++ b/source/blender/draw/engines/clay/clay_engine.c @@ -41,6 +41,8 @@ #include "DRW_render.h" +#include "DEG_depsgraph_query.h" + #include "clay_engine.h" #ifdef WITH_CLAY_ENGINE @@ -273,7 +275,7 @@ static struct GPUTexture *load_matcaps(PreviewImage *prv[24], int nbr) static int matcap_to_index(int matcap) { - return (int)matcap - (int)ICON_MATCAP_01; + return matcap - 1; } /* Using Hammersley distribution */ @@ -437,10 +439,8 @@ static void clay_engine_init(void *vedata) /* SSAO setup */ { 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_CLAY); - int ssao_samples = BKE_collection_engine_property_value_get_int(props, "ssao_samples"); + Scene *scene_eval = DEG_get_evaluated_scene(draw_ctx->depsgraph); + const int ssao_samples = scene_eval->display.matcap_ssao_samples; float invproj[4][4]; float dfdyfacs[2]; @@ -639,18 +639,17 @@ static int hair_mat_in_ubo(CLAY_Storage *storage, const CLAY_HAIR_UBO_Material * static void ubo_mat_from_object(CLAY_Storage *storage, Object *UNUSED(ob), bool *r_needs_ao, int *r_id) { 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_CLAY); - - int matcap_icon = BKE_collection_engine_property_value_get_int(props, "matcap_icon"); - float matcap_rot = BKE_collection_engine_property_value_get_float(props, "matcap_rotation"); - float matcap_hue = BKE_collection_engine_property_value_get_float(props, "matcap_hue"); - float matcap_sat = BKE_collection_engine_property_value_get_float(props, "matcap_saturation"); - float matcap_val = BKE_collection_engine_property_value_get_float(props, "matcap_value"); - float ssao_distance = BKE_collection_engine_property_value_get_float(props, "ssao_distance"); - float ssao_factor_cavity = BKE_collection_engine_property_value_get_float(props, "ssao_factor_cavity"); - float ssao_factor_edge = BKE_collection_engine_property_value_get_float(props, "ssao_factor_edge"); - float ssao_attenuation = BKE_collection_engine_property_value_get_float(props, "ssao_attenuation"); + const Scene *scene_eval = DEG_get_evaluated_scene(draw_ctx->depsgraph); + + const int matcap_icon = scene_eval->display.matcap_icon; + const float matcap_rot = scene_eval->display.matcap_rotation; + const float matcap_hue = scene_eval->display.matcap_hue; + const float matcap_sat = scene_eval->display.matcap_saturation; + const float matcap_val = scene_eval->display.matcap_value; + const float ssao_distance = scene_eval->display.matcap_ssao_distance; + const float ssao_factor_cavity = scene_eval->display.matcap_ssao_factor_cavity; + const float ssao_factor_edge = scene_eval->display.matcap_ssao_factor_edge; + const float ssao_attenuation = scene_eval->display.matcap_ssao_attenuation; CLAY_UBO_Material r_ubo = {{0.0f}}; @@ -683,15 +682,14 @@ static void ubo_mat_from_object(CLAY_Storage *storage, Object *UNUSED(ob), bool static void hair_ubo_mat_from_object(Object *UNUSED(ob), CLAY_HAIR_UBO_Material *r_ubo) { 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_CLAY); + const Scene *scene_eval = DEG_get_evaluated_scene(draw_ctx->depsgraph); - int matcap_icon = BKE_collection_engine_property_value_get_int(props, "matcap_icon"); - float matcap_rot = BKE_collection_engine_property_value_get_float(props, "matcap_rotation"); - float matcap_hue = BKE_collection_engine_property_value_get_float(props, "matcap_hue"); - float matcap_sat = BKE_collection_engine_property_value_get_float(props, "matcap_saturation"); - float matcap_val = BKE_collection_engine_property_value_get_float(props, "matcap_value"); - float hair_randomness = BKE_collection_engine_property_value_get_float(props, "hair_brightness_randomness"); + const int matcap_icon = scene_eval->display.matcap_icon; + const float matcap_rot = scene_eval->display.matcap_rotation; + const float matcap_hue = scene_eval->display.matcap_hue; + const float matcap_sat = scene_eval->display.matcap_saturation; + const float matcap_val = scene_eval->display.matcap_value; + const float hair_randomness = scene_eval->display.matcap_hair_brightness_randomness; memset(r_ubo, 0x0, sizeof(*r_ubo)); @@ -945,18 +943,7 @@ static void clay_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, "matcap_icon", ICON_MATCAP_01); - BKE_collection_engine_property_add_int(props, "type", CLAY_MATCAP_NONE); - BKE_collection_engine_property_add_float(props, "matcap_rotation", 0.0f); - BKE_collection_engine_property_add_float(props, "matcap_hue", 0.5f); - BKE_collection_engine_property_add_float(props, "matcap_saturation", 0.5f); - BKE_collection_engine_property_add_float(props, "matcap_value", 0.5f); - BKE_collection_engine_property_add_float(props, "ssao_distance", 0.2f); - BKE_collection_engine_property_add_float(props, "ssao_attenuation", 1.0f); - BKE_collection_engine_property_add_float(props, "ssao_factor_cavity", 1.0f); - BKE_collection_engine_property_add_float(props, "ssao_factor_edge", 1.0f); - BKE_collection_engine_property_add_float(props, "hair_brightness_randomness", 0.0f); + UNUSED_VARS_NDEBUG(props); } static void clay_view_layer_settings_create(RenderEngine *UNUSED(engine), IDProperty *props) @@ -964,8 +951,7 @@ static void clay_view_layer_settings_create(RenderEngine *UNUSED(engine), IDProp BLI_assert(props && props->type == IDP_GROUP && props->subtype == IDP_GROUP_SUB_ENGINE_RENDER); - - BKE_collection_engine_property_add_int(props, "ssao_samples", 16); + UNUSED_VARS_NDEBUG(props); } static void clay_engine_free(void) diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h index 362839e8853..539c022902f 100644 --- a/source/blender/makesdna/DNA_scene_types.h +++ b/source/blender/makesdna/DNA_scene_types.h @@ -1361,6 +1361,19 @@ typedef struct DisplaySafeAreas { typedef struct SceneDisplay { float light_direction[3]; /* light direction for shadows/highlight */ float shadow_shift; + + int matcap_icon; + int matcap_type; + float matcap_rotation; + float matcap_hue; + float matcap_saturation; + float matcap_value; + float matcap_ssao_distance; + float matcap_ssao_attenuation; + float matcap_ssao_factor_cavity; + float matcap_ssao_factor_edge; + float matcap_hair_brightness_randomness; + int matcap_ssao_samples; } SceneDisplay; typedef struct SceneEEVEE { diff --git a/source/blender/makesrna/intern/rna_layer.c b/source/blender/makesrna/intern/rna_layer.c index 3d6cabe0fa5..8b3d59cf95c 100644 --- a/source/blender/makesrna/intern/rna_layer.c +++ b/source/blender/makesrna/intern/rna_layer.c @@ -278,46 +278,16 @@ static void rna_LayerEngineSettings_##_ENGINE_##_##_NAME_##_set(PointerRNA *ptr, BKE_collection_engine_property_value_set_##_TYPE_##_array(props, #_NAME_, values); \ } -#define RNA_LAYER_ENGINE_CLAY_GET_SET_FLOAT(_NAME_) \ - RNA_LAYER_ENGINE_GET_SET(float, Clay, _NAME_) - -#define RNA_LAYER_ENGINE_CLAY_GET_SET_FLOAT_ARRAY(_NAME_, _LEN_) \ - RNA_LAYER_ENGINE_GET_SET_ARRAY(float, Clay, _NAME_, _LEN_) - -#define RNA_LAYER_ENGINE_CLAY_GET_SET_INT(_NAME_) \ - RNA_LAYER_ENGINE_GET_SET(int, Clay, _NAME_) - -#define RNA_LAYER_ENGINE_CLAY_GET_SET_BOOL(_NAME_) \ - RNA_LAYER_ENGINE_GET_SET(bool, Clay, _NAME_) - -/* clay engine */ -#ifdef WITH_CLAY_ENGINE -/* ViewLayer settings. */ -RNA_LAYER_ENGINE_CLAY_GET_SET_INT(ssao_samples) - -/* LayerCollection settings. */ -RNA_LAYER_ENGINE_CLAY_GET_SET_INT(matcap_icon) -RNA_LAYER_ENGINE_CLAY_GET_SET_FLOAT(matcap_rotation) -RNA_LAYER_ENGINE_CLAY_GET_SET_FLOAT(matcap_hue) -RNA_LAYER_ENGINE_CLAY_GET_SET_FLOAT(matcap_saturation) -RNA_LAYER_ENGINE_CLAY_GET_SET_FLOAT(matcap_value) -RNA_LAYER_ENGINE_CLAY_GET_SET_FLOAT(ssao_factor_cavity) -RNA_LAYER_ENGINE_CLAY_GET_SET_FLOAT(ssao_factor_edge) -RNA_LAYER_ENGINE_CLAY_GET_SET_FLOAT(ssao_distance) -RNA_LAYER_ENGINE_CLAY_GET_SET_FLOAT(ssao_attenuation) -RNA_LAYER_ENGINE_CLAY_GET_SET_FLOAT(hair_brightness_randomness) -#endif /* WITH_CLAY_ENGINE */ - #undef RNA_LAYER_ENGINE_GET_SET -static void rna_ViewLayerEngineSettings_update(bContext *C, PointerRNA *UNUSED(ptr)) +static void UNUSED_FUNCTION(rna_ViewLayerEngineSettings_update)(bContext *C, PointerRNA *UNUSED(ptr)) { Scene *scene = CTX_data_scene(C); /* TODO(sergey): Use proper flag for tagging here. */ DEG_id_tag_update(&scene->id, 0); } -static void rna_LayerCollectionEngineSettings_update(bContext *UNUSED(C), PointerRNA *ptr) +static void UNUSED_FUNCTION(rna_LayerCollectionEngineSettings_update)(bContext *UNUSED(C), PointerRNA *ptr) { ID *id = ptr->id.data; /* TODO(sergey): Use proper flag for tagging here. */ @@ -376,11 +346,6 @@ static StructRNA *rna_ViewLayerSettings_refine(PointerRNA *ptr) switch (props->subtype) { case IDP_GROUP_SUB_ENGINE_RENDER: -#ifdef WITH_CLAY_ENGINE - if (STREQ(props->name, RE_engine_id_BLENDER_CLAY)) { - return &RNA_ViewLayerEngineSettingsClay; - } -#endif break; default: BLI_assert(!"Mode not fully implemented"); @@ -433,11 +398,6 @@ static StructRNA *rna_LayerCollectionSettings_refine(PointerRNA *ptr) switch (props->subtype) { case IDP_GROUP_SUB_ENGINE_RENDER: -#ifdef WITH_CLAY_ENGINE - if (STREQ(props->name, RE_engine_id_BLENDER_CLAY)) { - return &RNA_LayerCollectionEngineSettingsClay; - } -#endif break; default: BLI_assert(!"Mode not fully implemented"); @@ -897,146 +857,6 @@ static void rna_def_scene_collection(BlenderRNA *brna) RNA_def_function_return(func, parm); } -#ifdef WITH_CLAY_ENGINE -static void rna_def_view_layer_engine_settings_clay(BlenderRNA *brna) -{ - StructRNA *srna; - PropertyRNA *prop; - - srna = RNA_def_struct(brna, "ViewLayerEngineSettingsClay", "ViewLayerSettings"); - RNA_def_struct_ui_text(srna, "Clay Scene Layer Settings", "Clay Engine settings"); - - RNA_define_verify_sdna(0); /* not in sdna */ - - /* see RNA_LAYER_ENGINE_GET_SET macro */ - prop = RNA_def_property(srna, "ssao_samples", PROP_INT, PROP_NONE); - RNA_def_property_int_funcs(prop, "rna_LayerEngineSettings_Clay_ssao_samples_get", - "rna_LayerEngineSettings_Clay_ssao_samples_set", NULL); - RNA_def_property_ui_text(prop, "Samples", "Number of samples"); - RNA_def_property_range(prop, 1, 500); - RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE); - RNA_def_property_update(prop, NC_SCENE | ND_LAYER_CONTENT, "rna_ViewLayerEngineSettings_update"); - - RNA_define_verify_sdna(1); /* not in sdna */ -} -#endif /* WITH_CLAY_ENGINE */ - -#ifdef WITH_CLAY_ENGINE -static void rna_def_layer_collection_engine_settings_clay(BlenderRNA *brna) -{ - StructRNA *srna; - PropertyRNA *prop; - - static const EnumPropertyItem clay_matcap_items[] = { - {ICON_MATCAP_01, "01", ICON_MATCAP_01, "", ""}, - {ICON_MATCAP_02, "02", ICON_MATCAP_02, "", ""}, - {ICON_MATCAP_03, "03", ICON_MATCAP_03, "", ""}, - {ICON_MATCAP_04, "04", ICON_MATCAP_04, "", ""}, - {ICON_MATCAP_05, "05", ICON_MATCAP_05, "", ""}, - {ICON_MATCAP_06, "06", ICON_MATCAP_06, "", ""}, - {ICON_MATCAP_07, "07", ICON_MATCAP_07, "", ""}, - {ICON_MATCAP_08, "08", ICON_MATCAP_08, "", ""}, - {ICON_MATCAP_09, "09", ICON_MATCAP_09, "", ""}, - {ICON_MATCAP_10, "10", ICON_MATCAP_10, "", ""}, - {ICON_MATCAP_11, "11", ICON_MATCAP_11, "", ""}, - {ICON_MATCAP_12, "12", ICON_MATCAP_12, "", ""}, - {ICON_MATCAP_13, "13", ICON_MATCAP_13, "", ""}, - {ICON_MATCAP_14, "14", ICON_MATCAP_14, "", ""}, - {ICON_MATCAP_15, "15", ICON_MATCAP_15, "", ""}, - {ICON_MATCAP_16, "16", ICON_MATCAP_16, "", ""}, - {ICON_MATCAP_17, "17", ICON_MATCAP_17, "", ""}, - {ICON_MATCAP_18, "18", ICON_MATCAP_18, "", ""}, - {ICON_MATCAP_19, "19", ICON_MATCAP_19, "", ""}, - {ICON_MATCAP_20, "20", ICON_MATCAP_20, "", ""}, - {ICON_MATCAP_21, "21", ICON_MATCAP_21, "", ""}, - {ICON_MATCAP_22, "22", ICON_MATCAP_22, "", ""}, - {ICON_MATCAP_23, "23", ICON_MATCAP_23, "", ""}, - {ICON_MATCAP_24, "24", ICON_MATCAP_24, "", ""}, - {0, NULL, 0, NULL, NULL} - }; - - srna = RNA_def_struct(brna, "LayerCollectionEngineSettingsClay", "LayerCollectionSettings"); - RNA_def_struct_ui_text(srna, "Collections Clay Engine Settings", "Engine specific settings for this collection"); - - RNA_define_verify_sdna(0); /* not in sdna */ - - /* see RNA_LAYER_ENGINE_GET_SET macro */ - prop = RNA_def_property(srna, "matcap_icon", PROP_ENUM, PROP_NONE); - RNA_def_property_enum_funcs(prop, "rna_LayerEngineSettings_Clay_matcap_icon_get", "rna_LayerEngineSettings_Clay_matcap_icon_set", NULL); - RNA_def_property_enum_items(prop, clay_matcap_items); - RNA_def_property_ui_text(prop, "Matcap", "Image to use for Material Capture by this material"); - RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE); - RNA_def_property_update(prop, 0, "rna_LayerCollectionEngineSettings_update"); - - prop = RNA_def_property(srna, "matcap_rotation", PROP_FLOAT, PROP_FACTOR); - RNA_def_property_float_funcs(prop, "rna_LayerEngineSettings_Clay_matcap_rotation_get", "rna_LayerEngineSettings_Clay_matcap_rotation_set", NULL); - RNA_def_property_range(prop, 0.0f, 1.0f); - RNA_def_property_ui_text(prop, "Matcap Rotation", "Orientation of the matcap on the model"); - RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE); - RNA_def_property_update(prop, 0, "rna_LayerCollectionEngineSettings_update"); - - prop = RNA_def_property(srna, "matcap_hue", PROP_FLOAT, PROP_FACTOR); - RNA_def_property_float_funcs(prop, "rna_LayerEngineSettings_Clay_matcap_hue_get", "rna_LayerEngineSettings_Clay_matcap_hue_set", NULL); - RNA_def_property_range(prop, 0.0f, 1.0f); - RNA_def_property_ui_text(prop, "Matcap Hue Shift", "Hue correction of the matcap"); - RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE); - RNA_def_property_update(prop, 0, "rna_LayerCollectionEngineSettings_update"); - - prop = RNA_def_property(srna, "matcap_saturation", PROP_FLOAT, PROP_FACTOR); - RNA_def_property_float_funcs(prop, "rna_LayerEngineSettings_Clay_matcap_saturation_get", "rna_LayerEngineSettings_Clay_matcap_saturation_set", NULL); - RNA_def_property_range(prop, 0.0f, 1.0f); - RNA_def_property_ui_text(prop, "Matcap Saturation", "Saturation correction of the matcap"); - RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE); - RNA_def_property_update(prop, 0, "rna_LayerCollectionEngineSettings_update"); - - prop = RNA_def_property(srna, "matcap_value", PROP_FLOAT, PROP_FACTOR); - RNA_def_property_float_funcs(prop, "rna_LayerEngineSettings_Clay_matcap_value_get", "rna_LayerEngineSettings_Clay_matcap_value_set", NULL); - RNA_def_property_range(prop, 0.0f, 1.0f); - RNA_def_property_ui_text(prop, "Matcap Value", "Value correction of the matcap"); - RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE); - RNA_def_property_update(prop, 0, "rna_LayerCollectionEngineSettings_update"); - - prop = RNA_def_property(srna, "ssao_factor_cavity", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_funcs(prop, "rna_LayerEngineSettings_Clay_ssao_factor_cavity_get", "rna_LayerEngineSettings_Clay_ssao_factor_cavity_set", NULL); - RNA_def_property_ui_text(prop, "Cavity Strength", "Strength of the Cavity effect"); - RNA_def_property_range(prop, 0.0f, 250.0f); - RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE); - RNA_def_property_update(prop, 0, "rna_LayerCollectionEngineSettings_update"); - - prop = RNA_def_property(srna, "ssao_factor_edge", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_funcs(prop, "rna_LayerEngineSettings_Clay_ssao_factor_edge_get", "rna_LayerEngineSettings_Clay_ssao_factor_edge_set", NULL); - RNA_def_property_ui_text(prop, "Edge Strength", "Strength of the Edge effect"); - RNA_def_property_range(prop, 0.0f, 250.0f); - RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE); - RNA_def_property_update(prop, 0, "rna_LayerCollectionEngineSettings_update"); - - prop = RNA_def_property(srna, "ssao_distance", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_funcs(prop, "rna_LayerEngineSettings_Clay_ssao_distance_get", "rna_LayerEngineSettings_Clay_ssao_distance_set", NULL); - RNA_def_property_ui_text(prop, "Distance", "Distance of object that contribute to the Cavity/Edge 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, 0, "rna_LayerCollectionEngineSettings_update"); - - prop = RNA_def_property(srna, "ssao_attenuation", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_funcs(prop, "rna_LayerEngineSettings_Clay_ssao_attenuation_get", "rna_LayerEngineSettings_Clay_ssao_attenuation_set", NULL); - RNA_def_property_ui_text(prop, "Attenuation", "Attenuation constant"); - RNA_def_property_range(prop, 1.0f, 100000.0f); - RNA_def_property_ui_range(prop, 1.0f, 100.0f, 1, 3); - RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE); - RNA_def_property_update(prop, 0, "rna_LayerCollectionEngineSettings_update"); - - prop = RNA_def_property(srna, "hair_brightness_randomness", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_funcs(prop, "rna_LayerEngineSettings_Clay_hair_brightness_randomness_get", "rna_LayerEngineSettings_Clay_hair_brightness_randomness_set", NULL); - RNA_def_property_ui_text(prop, "Hair Brightness Randomness", "Brightness randomness for hair"); - RNA_def_property_range(prop, 0.0f, 1.0f); - RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE); - RNA_def_property_update(prop, 0, "rna_LayerCollectionEngineSettings_update"); - - RNA_define_verify_sdna(1); /* not in sdna */ -} -#endif /* WITH_CLAY_ENGINE */ - static void rna_def_view_layer_settings(BlenderRNA *brna) { StructRNA *srna; @@ -1070,10 +890,6 @@ static void rna_def_view_layer_settings(BlenderRNA *brna) parm = RNA_def_string(func, "identifier", NULL, 0, "Property Name", "Name of the property to unset"); RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); -#ifdef WITH_CLAY_ENGINE - rna_def_view_layer_engine_settings_clay(brna); -#endif - RNA_define_verify_sdna(1); } @@ -1110,10 +926,6 @@ static void rna_def_layer_collection_settings(BlenderRNA *brna) parm = RNA_def_string(func, "identifier", NULL, 0, "Property Name", "Name of the property to unset"); RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); -#ifdef WITH_CLAY_ENGINE - rna_def_layer_collection_engine_settings_clay(brna); -#endif - RNA_define_verify_sdna(1); } diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c index c6738e82e89..47af0f0ec6c 100644 --- a/source/blender/makesrna/intern/rna_scene.c +++ b/source/blender/makesrna/intern/rna_scene.c @@ -5678,6 +5678,34 @@ static void rna_def_scene_display(BlenderRNA *brna) StructRNA *srna; PropertyRNA *prop; + static const EnumPropertyItem clay_matcap_items[] = { + {1, "01", ICON_MATCAP_01, "", ""}, + {2, "02", ICON_MATCAP_02, "", ""}, + {3, "03", ICON_MATCAP_03, "", ""}, + {4, "04", ICON_MATCAP_04, "", ""}, + {5, "05", ICON_MATCAP_05, "", ""}, + {6, "06", ICON_MATCAP_06, "", ""}, + {7, "07", ICON_MATCAP_07, "", ""}, + {8, "08", ICON_MATCAP_08, "", ""}, + {9, "09", ICON_MATCAP_09, "", ""}, + {10, "10", ICON_MATCAP_10, "", ""}, + {11, "11", ICON_MATCAP_11, "", ""}, + {12, "12", ICON_MATCAP_12, "", ""}, + {13, "13", ICON_MATCAP_13, "", ""}, + {14, "14", ICON_MATCAP_14, "", ""}, + {15, "15", ICON_MATCAP_15, "", ""}, + {16, "16", ICON_MATCAP_16, "", ""}, + {17, "17", ICON_MATCAP_17, "", ""}, + {19, "18", ICON_MATCAP_18, "", ""}, + {19, "19", ICON_MATCAP_19, "", ""}, + {20, "20", ICON_MATCAP_20, "", ""}, + {21, "21", ICON_MATCAP_21, "", ""}, + {22, "22", ICON_MATCAP_22, "", ""}, + {23, "23", ICON_MATCAP_23, "", ""}, + {24, "24", ICON_MATCAP_24, "", ""}, + {0, NULL, 0, NULL, NULL} + }; + static float default_light_direction[3] = {-0.577350269, -0.577350269, 0.577350269}; srna = RNA_def_struct(brna, "SceneDisplay", NULL); @@ -5700,6 +5728,66 @@ static void rna_def_scene_display(BlenderRNA *brna) RNA_def_property_ui_range(prop, 0.00f, 1.0f, 1, 2); RNA_def_property_clear_flag(prop, PROP_ANIMATABLE); RNA_def_property_update(prop, NC_SCENE | NA_EDITED, "rna_Scene_set_update"); + +#ifdef WITH_CLAY_ENGINE + /* Matcap. */ + prop = RNA_def_property(srna, "matcap_icon", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_items(prop, clay_matcap_items); + RNA_def_property_enum_default(prop, 1); + RNA_def_property_ui_text(prop, "Matcap", "Image to use for Material Capture by this material"); + + prop = RNA_def_property(srna, "matcap_rotation", PROP_FLOAT, PROP_FACTOR); + RNA_def_property_float_default(prop, 0.0f); + RNA_def_property_range(prop, 0.0f, 1.0f); + RNA_def_property_ui_text(prop, "Matcap Rotation", "Orientation of the matcap on the model"); + + prop = RNA_def_property(srna, "matcap_hue", PROP_FLOAT, PROP_FACTOR); + RNA_def_property_float_default(prop, 0.5f); + RNA_def_property_range(prop, 0.0f, 1.0f); + RNA_def_property_ui_text(prop, "Matcap Hue Shift", "Hue correction of the matcap"); + + prop = RNA_def_property(srna, "matcap_saturation", PROP_FLOAT, PROP_FACTOR); + RNA_def_property_float_default(prop, 0.5f); + RNA_def_property_range(prop, 0.0f, 1.0f); + RNA_def_property_ui_text(prop, "Matcap Saturation", "Saturation correction of the matcap"); + + prop = RNA_def_property(srna, "matcap_value", PROP_FLOAT, PROP_FACTOR); + RNA_def_property_float_default(prop, 0.5f); + RNA_def_property_range(prop, 0.0f, 1.0f); + RNA_def_property_ui_text(prop, "Matcap Value", "Value correction of the matcap"); + + prop = RNA_def_property(srna, "matcap_ssao_factor_cavity", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_default(prop, 1.0f); + RNA_def_property_ui_text(prop, "Cavity Strength", "Strength of the Cavity effect"); + RNA_def_property_range(prop, 0.0f, 250.0f); + + prop = RNA_def_property(srna, "matcap_ssao_factor_edge", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_default(prop, 1.0f); + RNA_def_property_ui_text(prop, "Edge Strength", "Strength of the Edge effect"); + RNA_def_property_range(prop, 0.0f, 250.0f); + + prop = RNA_def_property(srna, "matcap_ssao_distance", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_default(prop, 0.2f); + RNA_def_property_ui_text(prop, "Distance", "Distance of object that contribute to the Cavity/Edge effect"); + RNA_def_property_range(prop, 0.0f, 100000.0f); + RNA_def_property_ui_range(prop, 0.0f, 100.0f, 1, 3); + + prop = RNA_def_property(srna, "matcap_ssao_attenuation", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_default(prop, 1.0f); + RNA_def_property_ui_text(prop, "Attenuation", "Attenuation constant"); + RNA_def_property_range(prop, 1.0f, 100000.0f); + RNA_def_property_ui_range(prop, 1.0f, 100.0f, 1, 3); + + prop = RNA_def_property(srna, "matcap_ssao_samples", PROP_INT, PROP_NONE); + RNA_def_property_int_default(prop, 16); + RNA_def_property_ui_text(prop, "Samples", "Number of samples"); + RNA_def_property_range(prop, 1, 500); + + prop = RNA_def_property(srna, "matcap_hair_brightness_randomness", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_default(prop, 0.0f); + RNA_def_property_ui_text(prop, "Hair Brightness Randomness", "Brightness randomness for hair"); + RNA_def_property_range(prop, 0.0f, 1.0f); +#endif } static void rna_def_scene_eevee(BlenderRNA *brna) |