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); _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs