[Bf-blender-cvs] [b86e5a9fbf] clay-engine: Fixed Pointer problem. Now materials are working.
Clément Foucault
noreply at git.blender.org
Mon Jan 30 15:36:21 CET 2017
Commit: b86e5a9fbfc7b2b2bb1d80f800ac17f5c4fc1f8a
Author: Clément Foucault
Date: Mon Jan 30 15:09:35 2017 +0100
Branches: clay-engine
https://developer.blender.org/rBb86e5a9fbfc7b2b2bb1d80f800ac17f5c4fc1f8a
Fixed Pointer problem. Now materials are working.
===================================================================
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/makesrna/intern/rna_scene.c
===================================================================
diff --git a/source/blender/draw/DRW_engine.h b/source/blender/draw/DRW_engine.h
index 93b5e69d4d..05222574ae 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 **runtime);
-void *DRW_render_settings_get(struct Scene *scene, const char *engine_name, void **runtime);
+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 d084a3383b..a588412903 100644
--- a/source/blender/draw/engines/clay/clay.c
+++ b/source/blender/draw/engines/clay/clay.c
@@ -487,19 +487,19 @@ 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;
+ 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, (void **)&runtime);
- CLAY_update_material_runtime(res, &runtime);
+ 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, (void **)&runtime);
- CLAY_update_material_runtime(mesc, &runtime);
+ 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) {
@@ -507,15 +507,15 @@ static void CLAY_update_material_ubo(const struct bContext *C)
/* Default materials */
for (Scene *sce = bmain->scene.first; sce; sce = sce->id.next) {
- DRW_render_settings_get(sce, RE_engine_id_BLENDER_CLAY, (void **)&runtime);
- update_ubo_storage(runtime, current_id);
+ 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) {
- DRW_material_settings_get(mat, RE_engine_id_BLENDER_CLAY, (void **)&runtime);
- update_ubo_storage(runtime, current_id);
+ DRW_material_settings_get(mat, RE_engine_id_BLENDER_CLAY, (void ***)&runtime);
+ update_ubo_storage(*runtime, current_id);
current_id++;
}
@@ -540,12 +540,12 @@ static void CLAY_create_cache(CLAY_PassList *passes, const struct bContext *C)
/* Clay Pass */
{
- MaterialRuntimeClay *runtime;
- DRW_render_settings_get(NULL, RE_engine_id_BLENDER_CLAY, (void **)&runtime);
+ MaterialRuntimeClay **runtime;
+ DRW_render_settings_get(NULL, RE_engine_id_BLENDER_CLAY, (void ***)&runtime);
passes->clay_pass = DRW_pass_create("Clay Pass", DRW_STATE_WRITE_COLOR);
- default_shgrp = CLAY_shgroup_create(passes->clay_pass, &runtime->material_id);
+ default_shgrp = CLAY_shgroup_create(passes->clay_pass, &(*runtime)->material_id);
DRW_shgroup_uniform_block(default_shgrp, "material_block", data.mat_ubo, 0);
}
diff --git a/source/blender/draw/intern/DRW_render.h b/source/blender/draw/intern/DRW_render.h
index a486c10fe5..6d26f7b8b7 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 **runtime);
-void *DRW_render_settings_get(Scene *scene, const char *engine_name, void **runtime);
+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
index 683c0bd178..45c8b911df 100644
--- a/source/blender/draw/intern/draw_manager.c
+++ b/source/blender/draw/intern/draw_manager.c
@@ -849,7 +849,7 @@ void DRW_state_reset(void)
/* ****************************************** Settings ******************************************/
-void *DRW_material_settings_get(Material *ma, const char *engine_name, void **runtime)
+void *DRW_material_settings_get(Material *ma, const char *engine_name, void ***runtime)
{
MaterialEngineSettings *ms = NULL;
@@ -881,7 +881,7 @@ void *DRW_material_settings_get(Material *ma, const char *engine_name, void **ru
}
/* If scene is NULL, use context scene */
-void *DRW_render_settings_get(Scene *scene, const char *engine_name, void **runtime)
+void *DRW_render_settings_get(Scene *scene, const char *engine_name, void ***runtime)
{
RenderEngineSettings *rs = NULL;
@@ -905,8 +905,6 @@ void *DRW_render_settings_get(Scene *scene, const char *engine_name, void **runt
BLI_assert(false);
}
- printf("DRW_render_settings_get %s\n", rs->name);
-
BLI_addtail(&scene->engines_settings, rs);
}
diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c
index 604a758980..b18fd6dcbb 100644
--- a/source/blender/makesrna/intern/rna_scene.c
+++ b/source/blender/makesrna/intern/rna_scene.c
@@ -1901,13 +1901,13 @@ static PointerRNA rna_RenderEngineSettings_active_get(PointerRNA *ptr)
static void rna_RenderEngineSettings_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr)
{
Scene *sce = (Scene *)ptr->id.data;
- void *runtime;
+ void **runtime;
- DRW_render_settings_get(sce, sce->r.engine, &runtime);
+ DRW_render_settings_get(sce, sce->r.engine, (void ***)&runtime);
- if (runtime) {
- MEM_freeN(runtime);
- runtime = NULL;
+ if (*runtime) {
+ MEM_freeN(*runtime);
+ *runtime = NULL;
}
WM_main_add_notifier(NC_SPACE | ND_SPACE_VIEW3D, NULL);
More information about the Bf-blender-cvs
mailing list