From 7203aa24f99830ef022cf78874d59e4322b231a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Fri, 3 Feb 2017 14:38:11 +0100 Subject: New CMake flag for Clay Engine --- CMakeLists.txt | 4 ++++ source/blender/draw/CMakeLists.txt | 4 ++++ source/blender/draw/engines/clay/clay.c | 3 ++- source/blender/draw/intern/draw_manager.c | 18 ++++++++++++++---- source/blender/makesrna/intern/CMakeLists.txt | 4 ++++ source/blender/makesrna/intern/rna_material.c | 4 ++-- source/blender/makesrna/intern/rna_scene.c | 7 ++++++- 7 files changed, 36 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index de01be1d299..b1a9d6fcf3f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -165,6 +165,7 @@ option_defaults_init( _init_FFTW3 _init_GAMEENGINE _init_OPENSUBDIV + _init_CLAY_ENGINE ) # customize... @@ -186,6 +187,7 @@ elseif(WIN32) elseif(APPLE) set(_init_JACK OFF) set(_init_OPENSUBDIV OFF) + set(_init_CLAY_ENGINE OFF) endif() @@ -242,6 +244,8 @@ endif() option(WITH_PLAYER "Build Player" OFF) option(WITH_OPENCOLORIO "Enable OpenColorIO color management" ${_init_OPENCOLORIO}) +option(WITH_CLAY_ENGINE "Enable New Clay engine (Breaks Mac and Intel compatibility)" _init_CLAY_ENGINE) + # Compositor option(WITH_COMPOSITOR "Enable the tile based nodal compositor" ON) diff --git a/source/blender/draw/CMakeLists.txt b/source/blender/draw/CMakeLists.txt index 6cf358e8c11..d5b54e8a746 100644 --- a/source/blender/draw/CMakeLists.txt +++ b/source/blender/draw/CMakeLists.txt @@ -63,6 +63,10 @@ set(SRC ./DRW_engine.h ) +if(WITH_CLAY_ENGINE) + add_definitions(-DWITH_CLAY_ENGINE) +endif() + data_to_c_simple(engines/clay/shaders/clay_frag.glsl SRC) data_to_c_simple(engines/clay/shaders/clay_vert.glsl SRC) data_to_c_simple(engines/clay/shaders/ssao_alchemy.glsl SRC) diff --git a/source/blender/draw/engines/clay/clay.c b/source/blender/draw/engines/clay/clay.c index 3bdd48d319e..f443606f11d 100644 --- a/source/blender/draw/engines/clay/clay.c +++ b/source/blender/draw/engines/clay/clay.c @@ -34,7 +34,7 @@ #include "UI_interface_icons.h" #include "clay.h" - +#ifdef WITH_CLAY_ENGINE /* Shaders */ extern char datatoc_clay_frag_glsl[]; @@ -719,3 +719,4 @@ RenderEngineType viewport_clay_type = { NULL, NULL, NULL, NULL, &CLAY_view_draw, NULL, &CLAY_collection_settings_create, {NULL, NULL, NULL} }; +#endif \ No newline at end of file diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c index ed626d10802..729d9d19ce8 100644 --- a/source/blender/draw/intern/draw_manager.c +++ b/source/blender/draw/intern/draw_manager.c @@ -617,7 +617,7 @@ void DRW_draw_background(void) glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); } } - +#ifdef WITH_CLAY_ENGINE /* Only alter the state (does not reset it like set_state() ) */ static void shgroup_set_state(DRWShadingGroup *shgroup) { @@ -928,15 +928,15 @@ void DRW_state_reset(void) state |= DRW_STATE_DEPTH_LESS; set_state(state); } - +#endif /* ****************************************** Settings ******************************************/ - void *DRW_material_settings_get(Material *ma, const char *engine_name) { MaterialEngineSettings *ms = NULL; ms = BLI_findstring(&ma->engines_settings, engine_name, offsetof(MaterialEngineSettings, name)); +#ifdef WITH_CLAY_ENGINE /* If the settings does not exists yet, create it */ if (ms == NULL) { ms = MEM_callocN(sizeof(RenderEngineSettings), "RenderEngineSettings"); @@ -954,6 +954,9 @@ void *DRW_material_settings_get(Material *ma, const char *engine_name) BLI_addtail(&ma->engines_settings, ms); } +#else + return NULL; +#endif return ms->data; } @@ -968,6 +971,7 @@ void *DRW_render_settings_get(Scene *scene, const char *engine_name) rs = BLI_findstring(&scene->engines_settings, engine_name, offsetof(RenderEngineSettings, name)); +#ifdef WITH_CLAY_ENGINE /* If the settings does not exists yet, create it */ if (rs == NULL) { rs = MEM_callocN(sizeof(RenderEngineSettings), "RenderEngineSettings"); @@ -985,10 +989,12 @@ void *DRW_render_settings_get(Scene *scene, const char *engine_name) BLI_addtail(&scene->engines_settings, rs); } +#else + return NULL; +#endif return rs->data; } - /* ****************************************** Framebuffers ******************************************/ void DRW_framebuffer_init(struct GPUFrameBuffer **fb, int width, int height, DRWFboTexture textures[MAX_FBO_TEX], @@ -1119,14 +1125,18 @@ bool DRW_viewport_cache_is_dirty(void) void DRW_engines_init(void) { +#ifdef WITH_CLAY_ENGINE RE_engines_register(NULL, &viewport_clay_type); +#endif } void DRW_engines_free(void) { +#ifdef WITH_CLAY_ENGINE clay_engine_free(); DRW_shape_cache_free(); BLI_remlink(&R_engines, &viewport_clay_type); +#endif } \ No newline at end of file diff --git a/source/blender/makesrna/intern/CMakeLists.txt b/source/blender/makesrna/intern/CMakeLists.txt index 608d4781e60..0bf2bbb6109 100644 --- a/source/blender/makesrna/intern/CMakeLists.txt +++ b/source/blender/makesrna/intern/CMakeLists.txt @@ -192,6 +192,10 @@ if(WITH_GAMEENGINE) add_definitions(-DWITH_GAMEENGINE) endif() +if(WITH_CLAY_ENGINE) + add_definitions(-DWITH_CLAY_ENGINE) +endif() + if(WITH_IMAGE_OPENEXR) add_definitions(-DWITH_OPENEXR) endif() diff --git a/source/blender/makesrna/intern/rna_material.c b/source/blender/makesrna/intern/rna_material.c index 3df4164cb6a..fd934fe4683 100644 --- a/source/blender/makesrna/intern/rna_material.c +++ b/source/blender/makesrna/intern/rna_material.c @@ -316,11 +316,11 @@ static void rna_MaterialTextureSlot_use_set(PointerRNA *ptr, int value) static StructRNA *rna_MaterialEngineSettings_refine(PointerRNA *ptr) { MaterialEngineSettings *mes = (MaterialEngineSettings *)ptr->data; - +#ifdef WITH_CLAY_ENGINE if (STREQ(mes->name, RE_engine_id_BLENDER_CLAY)) { return &RNA_MaterialEngineSettingsClay; } - +#endif return &RNA_MaterialEngineSettings; } diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c index 11290f3c1d0..39d93648a60 100644 --- a/source/blender/makesrna/intern/rna_scene.c +++ b/source/blender/makesrna/intern/rna_scene.c @@ -1880,10 +1880,11 @@ static StructRNA *rna_RenderEngineSettings_refine(PointerRNA *ptr) { RenderEngineSettings *res = (RenderEngineSettings *)ptr->data; +#ifdef WITH_CLAY_ENGINE if (STREQ(res->name, RE_engine_id_BLENDER_CLAY)) { return &RNA_RenderEngineSettingsClay; } - +#endif return &RNA_RenderEngineSettings; } @@ -6848,6 +6849,7 @@ static void rna_def_scene_quicktime_settings(BlenderRNA *brna) } #endif +#ifdef WITH_CLAY_ENGINE static void rna_def_render_engine_settings_clay(BlenderRNA *brna) { StructRNA *srna; @@ -6940,6 +6942,7 @@ static void rna_def_render_engine_settings_clay(BlenderRNA *brna) RNA_def_property_range(prop, 1, 500); RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL); } +#endif static void rna_def_scene_render_engine(BlenderRNA *brna) { @@ -6950,7 +6953,9 @@ static void rna_def_scene_render_engine(BlenderRNA *brna) RNA_def_struct_sdna(srna, "RenderEngineSettings"); RNA_def_struct_refine_func(srna, "rna_RenderEngineSettings_refine"); +#ifdef WITH_CLAY_ENGINE rna_def_render_engine_settings_clay(brna); +#endif } static void rna_def_scene_render_data(BlenderRNA *brna) -- cgit v1.2.3