[Bf-blender-cvs] [095df1ac217] master: Python API: allow external render engines to use Eevee for LookDev shading

Brecht Van Lommel noreply at git.blender.org
Thu Jun 6 15:08:18 CEST 2019


Commit: 095df1ac217f3e43667f94ab189a67175bcd7af5
Author: Brecht Van Lommel
Date:   Thu Jun 6 14:36:40 2019 +0200
Branches: master
https://developer.blender.org/rB095df1ac217f3e43667f94ab189a67175bcd7af5

Python API: allow external render engines to use Eevee for LookDev shading

This is enabled with bl_use_eevee_viewport = True. It allows external engines
to generate an Cycles/Eevee shader node setup to emulate their materials in
the realtime viewport, or to leave it to users to do manually.

Removed bl_use_exclude_layers and bl_use_shading_nodes that did nothing
anymore. This should not break API compatibility, any scripts setting those
should continue to work the same as before.

Also adds descriptions for some RenderEngine settings.

===================================================================

M	intern/cycles/blender/addon/__init__.py
M	source/blender/draw/engines/eevee/eevee_engine.c
M	source/blender/editors/space_view3d/view3d_draw.c
M	source/blender/makesrna/intern/rna_render.c
M	source/blender/makesrna/intern/rna_space.c
M	source/blender/render/extern/include/RE_engine.h

===================================================================

diff --git a/intern/cycles/blender/addon/__init__.py b/intern/cycles/blender/addon/__init__.py
index e05ed531a1f..4b838cce281 100644
--- a/intern/cycles/blender/addon/__init__.py
+++ b/intern/cycles/blender/addon/__init__.py
@@ -54,7 +54,7 @@ from . import (
 class CyclesRender(bpy.types.RenderEngine):
     bl_idname = 'CYCLES'
     bl_label = "Cycles"
-    bl_use_shading_nodes = True
+    bl_use_eevee_viewport = True
     bl_use_preview = True
     bl_use_exclude_layers = True
     bl_use_save_buffers = True
diff --git a/source/blender/draw/engines/eevee/eevee_engine.c b/source/blender/draw/engines/eevee/eevee_engine.c
index 22f7b786330..cb2b3763c74 100644
--- a/source/blender/draw/engines/eevee/eevee_engine.c
+++ b/source/blender/draw/engines/eevee/eevee_engine.c
@@ -476,7 +476,7 @@ RenderEngineType DRW_engine_viewport_eevee_type = {
     NULL,
     EEVEE_ENGINE,
     N_("Eevee"),
-    RE_INTERNAL | RE_USE_SHADING_NODES | RE_USE_PREVIEW,
+    RE_INTERNAL | RE_USE_PREVIEW,
     NULL,
     &DRW_render_to_image,
     NULL,
diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c
index 2ce67bfbe4c..5731da18511 100644
--- a/source/blender/editors/space_view3d/view3d_draw.c
+++ b/source/blender/editors/space_view3d/view3d_draw.c
@@ -1447,13 +1447,16 @@ RenderEngineType *ED_view3d_engine_type(Scene *scene, int drawtype)
 {
   /*
    * Temporary viewport draw modes until we have a proper system.
-   * all modes are done in the draw manager, except
-   * cycles material as it is an external render engine.
+   * all modes are done in the draw manager, except external render
+   * engines like Cycles.
    */
-  if (strcmp(scene->r.engine, RE_engine_id_CYCLES) == 0 && drawtype == OB_MATERIAL) {
+  RenderEngineType *type = RE_engines_find(scene->r.engine);
+  if (drawtype == OB_MATERIAL && (type->flag & RE_USE_EEVEE_VIEWPORT)) {
     return RE_engines_find(RE_engine_id_BLENDER_EEVEE);
   }
-  return RE_engines_find(scene->r.engine);
+  else {
+    return type;
+  }
 }
 
 void view3d_main_region_draw(const bContext *C, ARegion *ar)
diff --git a/source/blender/makesrna/intern/rna_render.c b/source/blender/makesrna/intern/rna_render.c
index 6c2cff96715..90c60c09181 100644
--- a/source/blender/makesrna/intern/rna_render.c
+++ b/source/blender/makesrna/intern/rna_render.c
@@ -844,31 +844,41 @@ static void rna_def_render_engine(BlenderRNA *brna)
   prop = RNA_def_property(srna, "bl_use_preview", PROP_BOOLEAN, PROP_NONE);
   RNA_def_property_boolean_sdna(prop, NULL, "type->flag", RE_USE_PREVIEW);
   RNA_def_property_flag(prop, PROP_REGISTER_OPTIONAL);
+  RNA_def_property_ui_text(
+      prop,
+      "Use Preview Render",
+      "Render engine supports being used for rendering previews of materials, lights and worlds");
 
   prop = RNA_def_property(srna, "bl_use_postprocess", PROP_BOOLEAN, PROP_NONE);
   RNA_def_property_boolean_negative_sdna(prop, NULL, "type->flag", RE_USE_POSTPROCESS);
   RNA_def_property_flag(prop, PROP_REGISTER_OPTIONAL);
+  RNA_def_property_ui_text(prop, "Use Post Processing", "Apply compositing on render results");
 
-  prop = RNA_def_property(srna, "bl_use_shading_nodes", PROP_BOOLEAN, PROP_NONE);
-  RNA_def_property_boolean_sdna(prop, NULL, "type->flag", RE_USE_SHADING_NODES);
+  prop = RNA_def_property(srna, "bl_use_eevee_viewport", PROP_BOOLEAN, PROP_NONE);
+  RNA_def_property_boolean_sdna(prop, NULL, "type->flag", RE_USE_EEVEE_VIEWPORT);
   RNA_def_property_flag(prop, PROP_REGISTER_OPTIONAL);
+  RNA_def_property_ui_text(
+      prop, "Use Eevee Viewport", "Uses Eevee for viewport shading in LookDev shading mode");
 
   prop = RNA_def_property(srna, "bl_use_shading_nodes_custom", PROP_BOOLEAN, PROP_NONE);
   RNA_def_property_boolean_sdna(prop, NULL, "type->flag", RE_USE_SHADING_NODES_CUSTOM);
   RNA_def_property_boolean_default(prop, true);
   RNA_def_property_flag(prop, PROP_REGISTER_OPTIONAL);
-
-  prop = RNA_def_property(srna, "bl_use_exclude_layers", PROP_BOOLEAN, PROP_NONE);
-  RNA_def_property_boolean_sdna(prop, NULL, "type->flag", RE_USE_EXCLUDE_LAYERS);
-  RNA_def_property_flag(prop, PROP_REGISTER_OPTIONAL);
+  RNA_def_property_ui_text(prop,
+                           "Use Custom Shading Nodes",
+                           "Don't expose Cycles and Eevee shading nodes in the node editor user "
+                           "interface, so own nodes can be used instead");
 
   prop = RNA_def_property(srna, "bl_use_save_buffers", PROP_BOOLEAN, PROP_NONE);
   RNA_def_property_boolean_sdna(prop, NULL, "type->flag", RE_USE_SAVE_BUFFERS);
   RNA_def_property_flag(prop, PROP_REGISTER_OPTIONAL);
+  RNA_def_property_ui_text(
+      prop, "Use Save Buffers", "Support render to an on disk buffer during rendering");
 
   prop = RNA_def_property(srna, "bl_use_spherical_stereo", PROP_BOOLEAN, PROP_NONE);
   RNA_def_property_boolean_sdna(prop, NULL, "type->flag", RE_USE_SPHERICAL_STEREO);
   RNA_def_property_flag(prop, PROP_REGISTER_OPTIONAL);
+  RNA_def_property_ui_text(prop, "Use Spherical Stereo", "Support spherical stereo camera models");
 
   RNA_define_verify_sdna(1);
 }
diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c
index 098384e8d51..12f5535dcc3 100644
--- a/source/blender/makesrna/intern/rna_space.c
+++ b/source/blender/makesrna/intern/rna_space.c
@@ -936,8 +936,7 @@ static void rna_3DViewShading_type_update(Main *bmain, Scene *scene, PointerRNA
 
   View3DShading *shading = ptr->data;
   if (shading->type == OB_MATERIAL ||
-      (shading->type == OB_RENDER &&
-       STR_ELEM(scene->r.engine, RE_engine_id_BLENDER_EEVEE, RE_engine_id_CYCLES))) {
+      (shading->type == OB_RENDER && !STREQ(scene->r.engine, RE_engine_id_BLENDER_WORKBENCH))) {
     /* When switching from workbench to render or material mode the geometry of any
      * active sculpt session needs to be recalculated. */
     for (Object *ob = bmain->objects.first; ob; ob = ob->id.next) {
diff --git a/source/blender/render/extern/include/RE_engine.h b/source/blender/render/extern/include/RE_engine.h
index 4f51f9874f8..dee8dbfaa24 100644
--- a/source/blender/render/extern/include/RE_engine.h
+++ b/source/blender/render/extern/include/RE_engine.h
@@ -55,11 +55,10 @@ struct bNodeTree;
 /* #define RE_FLAG_DEPRECATED   2 */
 #define RE_USE_PREVIEW 4
 #define RE_USE_POSTPROCESS 8
-#define RE_USE_SHADING_NODES 16
-#define RE_USE_EXCLUDE_LAYERS 32
-#define RE_USE_SAVE_BUFFERS 64
-#define RE_USE_SHADING_NODES_CUSTOM 256
-#define RE_USE_SPHERICAL_STEREO 512
+#define RE_USE_EEVEE_VIEWPORT 16
+#define RE_USE_SAVE_BUFFERS 32
+#define RE_USE_SHADING_NODES_CUSTOM 64
+#define RE_USE_SPHERICAL_STEREO 128
 
 /* RenderEngine.flag */
 #define RE_ENGINE_ANIMATION 1



More information about the Bf-blender-cvs mailing list