[Bf-blender-cvs] [e15c16f11c] clay-engine: Changes to DNA/RNA. Follow same layout as sensors.
Clément Foucault
noreply at git.blender.org
Mon Jan 30 02:25:31 CET 2017
Commit: e15c16f11c08a13ef8288ee5000000d2d317634c
Author: Clément Foucault
Date: Mon Jan 30 02:24:18 2017 +0100
Branches: clay-engine
https://developer.blender.org/rBe15c16f11c08a13ef8288ee5000000d2d317634c
Changes to DNA/RNA. Follow same layout as sensors.
===================================================================
M release/scripts/startup/bl_ui/properties_render.py
M source/blender/draw/DRW_engine.h
M source/blender/draw/engines/clay/clay.c
M source/blender/draw/intern/DRW_render.h
M source/blender/draw/intern/draw_manager.c
M source/blender/makesdna/DNA_material_types.h
M source/blender/makesdna/DNA_scene_types.h
M source/blender/makesrna/RNA_access.h
M source/blender/makesrna/intern/rna_material.c
M source/blender/makesrna/intern/rna_scene.c
===================================================================
diff --git a/release/scripts/startup/bl_ui/properties_render.py b/release/scripts/startup/bl_ui/properties_render.py
index 593072992f..b1c68559d8 100644
--- a/release/scripts/startup/bl_ui/properties_render.py
+++ b/release/scripts/startup/bl_ui/properties_render.py
@@ -590,17 +590,17 @@ class RENDER_PT_clay(RenderButtonsPanel, Panel):
def draw(self, context):
layout = self.layout;
- settings = context.scene.render_engine
- layout.template_icon_view(settings, "matcap_icon")
- layout.prop(settings, "matcap_rotation")
- layout.prop(settings, "matcap_hue")
- layout.prop(settings, "matcap_saturation")
- layout.prop(settings, "matcap_value")
- layout.prop(settings, "ssao_factor_cavity")
- layout.prop(settings, "ssao_factor_edge")
- layout.prop(settings, "ssao_distance")
- layout.prop(settings, "ssao_attenuation")
- layout.prop(settings, "ssao_samples")
+ # settings = context.scene.engine_settings
+ # layout.template_icon_view(settings, "matcap_icon")
+ # layout.prop(settings, "matcap_rotation")
+ # layout.prop(settings, "matcap_hue")
+ # layout.prop(settings, "matcap_saturation")
+ # layout.prop(settings, "matcap_value")
+ # layout.prop(settings, "ssao_factor_cavity")
+ # layout.prop(settings, "ssao_factor_edge")
+ # layout.prop(settings, "ssao_distance")
+ # layout.prop(settings, "ssao_attenuation")
+ # layout.prop(settings, "ssao_samples")
if __name__ == "__main__": # only for live edit.
diff --git a/source/blender/draw/DRW_engine.h b/source/blender/draw/DRW_engine.h
index 4f86e3fcd9..93b5e69d4d 100644
--- a/source/blender/draw/DRW_engine.h
+++ b/source/blender/draw/DRW_engine.h
@@ -39,7 +39,7 @@ void DRW_engines_free(void);
void DRW_pass_free(struct DRWPass *pass);
/* Settings */
-void *DRW_material_settings_get(struct Material *ma, const char *engine_name);
-void *DRW_render_settings_get(struct Scene *scene, const char *engine_name);
+void *DRW_material_settings_get(struct Material *ma, const char *engine_name, void **runtime);
+void *DRW_render_settings_get(struct Scene *scene, const char *engine_name, void **runtime);
#endif /* __DRW_ENGINE_H__ */
\ No newline at end of file
diff --git a/source/blender/draw/engines/clay/clay.c b/source/blender/draw/engines/clay/clay.c
index 6e155776bb..d084a3383b 100644
--- a/source/blender/draw/engines/clay/clay.c
+++ b/source/blender/draw/engines/clay/clay.c
@@ -237,7 +237,7 @@ static struct GPUTexture *create_jitter_texture(void)
static void clay_material_settings_init(MaterialEngineSettingsClay *ma)
{
- ma->matcap_icon = 0;
+ ma->matcap_icon = ICON_MATCAP_01;
ma->matcap_rot = 0.0f;
ma->matcap_hue = 0.5f;
ma->matcap_sat = 0.5f;
@@ -252,8 +252,6 @@ RenderEngineSettings *CLAY_render_settings_create(void)
{
RenderEngineSettingsClay *settings = MEM_callocN(sizeof(RenderEngineSettingsClay), "RenderEngineSettingsClay");
- BLI_strncpy(settings->res.name, RE_engine_id_BLENDER_CLAY, 64);
-
clay_material_settings_init((MaterialEngineSettingsClay *)settings);
settings->ssao_samples = 32;
@@ -265,8 +263,6 @@ MaterialEngineSettings *CLAY_material_settings_create(void)
{
MaterialEngineSettingsClay *settings = MEM_callocN(sizeof(MaterialEngineSettingsClay), "MaterialEngineSettingsClay");
- BLI_strncpy(settings->mes.name, RE_engine_id_BLENDER_CLAY, 64);
-
clay_material_settings_init(settings);
return (MaterialEngineSettings *)settings;
@@ -366,7 +362,7 @@ static void CLAY_ssao_setup(void)
};
int i;
float *size = DRW_viewport_size_get();
- RenderEngineSettingsClay *settings = DRW_render_settings_get(NULL, RE_engine_id_BLENDER_CLAY);
+ RenderEngineSettingsClay *settings = DRW_render_settings_get(NULL, RE_engine_id_BLENDER_CLAY, NULL);
DRW_get_dfdy_factors(dfdyfacs);
@@ -429,33 +425,33 @@ static DRWShadingGroup *CLAY_shgroup_create(DRWPass *pass, int *UNUSED(material_
return grp;
}
-static void CLAY_update_material_runtime(MaterialEngineSettingsClay *settings)
+static void CLAY_update_material_runtime(MaterialEngineSettingsClay *settings, MaterialRuntimeClay **runtime)
{
- MaterialRuntimeClay *runtime;
+ MaterialRuntimeClay *rt;
- if (!settings->mes.runtime) {
- runtime = MEM_mallocN(sizeof(MaterialRuntimeClay), "MaterialRuntimeClay");
- runtime->flag = CLAY_OUTDATED;
- settings->mes.runtime = runtime;
+ if (*runtime == NULL) {
+ rt = MEM_mallocN(sizeof(MaterialRuntimeClay), "MaterialRuntimeClay");
+ rt->flag = CLAY_OUTDATED;
data.ubo_flag |= CLAY_UBO_CLEAR;
+ *runtime = rt;
}
- runtime = settings->mes.runtime;
+ rt = *runtime;
- if (runtime->flag & CLAY_OUTDATED) {
+ if (rt->flag & CLAY_OUTDATED) {
/* Update default material */
- runtime->matcap_rot[0] = cosf(settings->matcap_rot * 3.14159f * 2.0f);
- runtime->matcap_rot[1] = sinf(settings->matcap_rot * 3.14159f * 2.0f);
+ rt->matcap_rot[0] = cosf(settings->matcap_rot * 3.14159f * 2.0f);
+ rt->matcap_rot[1] = sinf(settings->matcap_rot * 3.14159f * 2.0f);
- runtime->matcap_hsv[0] = settings->matcap_hue + 0.5f;
- runtime->matcap_hsv[1] = settings->matcap_sat * 2.0f;
- runtime->matcap_hsv[2] = settings->matcap_val * 2.0f;
+ rt->matcap_hsv[0] = settings->matcap_hue + 0.5f;
+ rt->matcap_hsv[1] = settings->matcap_sat * 2.0f;
+ rt->matcap_hsv[2] = settings->matcap_val * 2.0f;
- runtime->ssao_params_var[0] = settings->ssao_distance;
- runtime->ssao_params_var[1] = settings->ssao_factor_cavity;
- runtime->ssao_params_var[2] = settings->ssao_factor_edge;
- runtime->ssao_params_var[3] = settings->ssao_attenuation;
+ rt->ssao_params_var[0] = settings->ssao_distance;
+ rt->ssao_params_var[1] = settings->ssao_factor_cavity;
+ rt->ssao_params_var[2] = settings->ssao_factor_edge;
+ rt->ssao_params_var[3] = settings->ssao_attenuation;
if (settings->matcap_icon < ICON_MATCAP_01 ||
settings->matcap_icon > ICON_MATCAP_24)
@@ -463,16 +459,16 @@ static void CLAY_update_material_runtime(MaterialEngineSettingsClay *settings)
settings->matcap_icon = ICON_MATCAP_01;
}
- runtime->matcap_id = matcap_to_index(settings->matcap_icon);
+ rt->matcap_id = matcap_to_index(settings->matcap_icon);
- if ((runtime->type != settings->type)) {
+ if ((rt->type != settings->type)) {
data.ubo_flag |= CLAY_UBO_CLEAR;
}
- runtime->type = settings->type;
+ rt->type = settings->type;
data.ubo_flag |= CLAY_UBO_REFRESH;
- runtime->flag &= ~CLAY_OUTDATED;
+ rt->flag &= ~CLAY_OUTDATED;
}
}
@@ -491,36 +487,34 @@ static void update_ubo_storage(MaterialRuntimeClay *runtime, unsigned int curren
static void CLAY_update_material_ubo(const struct bContext *C)
{
Main *bmain = CTX_data_main(C);
+ MaterialRuntimeClay *runtime;
/* Update Default materials */
for (Scene *sce = bmain->scene.first; sce; sce = sce->id.next) {
/* Using render settings as material settings */
- MaterialEngineSettingsClay *res = DRW_render_settings_get(sce, RE_engine_id_BLENDER_CLAY);
- CLAY_update_material_runtime(res);
+ MaterialEngineSettingsClay *res = DRW_render_settings_get(sce, RE_engine_id_BLENDER_CLAY, (void **)&runtime);
+ CLAY_update_material_runtime(res, &runtime);
}
/* Update Scene Materials */
for (Material *mat = bmain->mat.first; mat; mat = mat->id.next) {
- MaterialEngineSettingsClay *mesc = DRW_material_settings_get(mat, RE_engine_id_BLENDER_CLAY);
- CLAY_update_material_runtime(mesc);
+ MaterialEngineSettingsClay *mesc = DRW_material_settings_get(mat, RE_engine_id_BLENDER_CLAY, (void **)&runtime);
+ CLAY_update_material_runtime(mesc, &runtime);
}
if (data.ubo_flag & CLAY_UBO_REFRESH) {
- MaterialRuntimeClay *runtime;
int current_id = 0;
/* Default materials */
for (Scene *sce = bmain->scene.first; sce; sce = sce->id.next) {
- RenderEngineSettingsClay *ed = DRW_render_settings_get(sce, RE_engine_id_BLENDER_CLAY);
- runtime = ed->res.runtime;
+ DRW_render_settings_get(sce, RE_engine_id_BLENDER_CLAY, (void **)&runtime);
update_ubo_storage(runtime, current_id);
current_id++;
}
/* TODO only add materials linked to geometry */
for (Material *mat = bmain->mat.first; mat; mat = mat->id.next) {
- MaterialEngineSettingsClay *mesc = DRW_material_settings_get(mat, RE_engine_id_BLENDER_CLAY);
- runtime = mesc->mes.runtime;
+ DRW_material_settings_get(mat, RE_engine_id_BLENDER_CLAY, (void **)&runtime);
update_ubo_storage(runtime, current_id);
current_id++;
}
@@ -547,12 +541,10 @@ static void CLAY_create_cache(CLAY_PassList *passes, const struct bContext *C)
/* Clay Pass */
{
MaterialRuntimeClay *runtime;
- RenderEngineSettingsClay *settings = DRW_render_settings_get(NULL, RE_engine_id_BLENDER_CLAY);
+ DRW_render_settings_get(NULL, RE_engine_id_BLENDER_CLAY, (void **)&runtime);
passes->clay_pass = DRW_pass_create("Clay Pass", DRW_STATE_WRITE_COLOR);
- runtime = settings->res.runtime;
-
default_shgrp = CLAY_shgroup_create(passes->clay_pass, &runtime->material_id);
DRW_shgroup_uniform_block(default_shgrp, "material_block", data.mat_ubo, 0);
}
@@ -620,7 +612,6 @@ static void CLAY_view_draw(RenderEngine *UNUSED(engine), const struct bContext *
/* or render properties / materials change */
#ifdef WITH_VIEWPORT_CACHE_TEST
static bool once = false;
- printf("AA\n");
#endif
if (DRW_viewport_cache_is_dirty()
#ifdef WITH_VIEWPORT_CACHE_TEST
diff --git a/source/blender/draw/intern/DRW_render.h b/source/blender/draw/intern/DRW_render.h
index 16b3000a46..a486c10fe5 100644
--- a/source/blender/draw/intern/DRW_render.h
+++ b/source/blender/draw/intern/DRW_render.h
@@ -200,8 +200,8 @@ bool DRW_viewport_cache_is_dirty(void);
/* Settings */
#ifndef __DRW_ENGINE_H__
-void *DRW_material_settings_get(Material *ma, const char *engine_name);
-void *DRW_render_settings_get(Scene *scene, const char *engine_name);
+void *DRW_material_settings_get(Material *ma, const char *engine_name, void **runtime);
+void *DRW_render_settings_get(Scene *scene, const char *engine_name, void **runtime);
#endif /* __DRW_ENGINE_H__ */
/* Draw commands */
diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list