Cycles: Override World per View Layer #117920
|
@ -927,6 +927,7 @@ class CYCLES_RENDER_PT_override(CyclesButtonsPanel, Panel):
|
|||
view_layer = context.view_layer
|
||||
|
||||
layout.prop(view_layer, "material_override")
|
||||
layout.prop(view_layer, "world_override")
|
||||
layout.prop(view_layer, "samples")
|
||||
|
||||
|
||||
|
|
|
@ -166,7 +166,7 @@ void BlenderSync::sync_light(BL::Object &b_parent,
|
|||
|
||||
void BlenderSync::sync_background_light(BL::SpaceView3D &b_v3d, bool use_portal)
|
||||
{
|
||||
BL::World b_world = b_scene.world();
|
||||
BL::World b_world = view_layer.world_override ? view_layer.world_override : b_scene.world();
|
||||
|
||||
if (b_world) {
|
||||
PointerRNA cworld = RNA_pointer_get(&b_world.ptr, "cycles");
|
||||
|
|
|
@ -1592,7 +1592,7 @@ void BlenderSync::sync_world(BL::Depsgraph &b_depsgraph, BL::SpaceView3D &b_v3d,
|
|||
Integrator *integrator = scene->integrator;
|
||||
PointerRNA cscene = RNA_pointer_get(&b_scene.ptr, "cycles");
|
||||
|
||||
BL::World b_world = b_scene.world();
|
||||
BL::World b_world = view_layer.world_override ? view_layer.world_override : b_scene.world();
|
||||
|
||||
BlenderViewportParameters new_viewport_parameters(b_v3d, use_developer_ui);
|
||||
|
||||
|
|
|
@ -555,6 +555,8 @@ void BlenderSync::sync_view_layer(BL::ViewLayer &b_view_layer)
|
|||
|
||||
/* Material override. */
|
||||
view_layer.material_override = b_view_layer.material_override();
|
||||
/* World override. */
|
||||
view_layer.world_override = b_view_layer.world_override();
|
||||
|
||||
/* Sample override. */
|
||||
PointerRNA cscene = RNA_pointer_get(&b_scene.ptr, "cycles");
|
||||
|
|
|
@ -249,6 +249,7 @@ class BlenderSync {
|
|||
struct RenderLayerInfo {
|
||||
RenderLayerInfo()
|
||||
: material_override(PointerRNA_NULL),
|
||||
world_override(PointerRNA_NULL),
|
||||
use_background_shader(true),
|
||||
use_surfaces(true),
|
||||
use_hair(true),
|
||||
|
@ -261,6 +262,7 @@ class BlenderSync {
|
|||
|
||||
string name;
|
||||
BL::Material material_override;
|
||||
BL::World world_override;
|
||||
bool use_background_shader;
|
||||
bool use_surfaces;
|
||||
bool use_hair;
|
||||
|
|
|
@ -901,6 +901,7 @@ static void scene_foreach_id(ID *id, LibraryForeachIDData *data)
|
|||
|
||||
LISTBASE_FOREACH (ViewLayer *, view_layer, &scene->view_layers) {
|
||||
BKE_LIB_FOREACHID_PROCESS_IDSUPER(data, view_layer->mat_override, IDWALK_CB_USER);
|
||||
BKE_LIB_FOREACHID_PROCESS_IDSUPER(data, view_layer->world_override, IDWALK_CB_USER);
|
||||
BKE_LIB_FOREACHID_PROCESS_FUNCTION_CALL(
|
||||
data,
|
||||
IDP_foreach_property(view_layer->id_properties,
|
||||
|
|
|
@ -330,6 +330,7 @@ static void do_version_layers_to_collections(Main *bmain, Scene *scene)
|
|||
view_layer->pass_alpha_threshold = srl->pass_alpha_threshold;
|
||||
view_layer->samples = srl->samples;
|
||||
view_layer->mat_override = srl->mat_override;
|
||||
view_layer->world_override = srl->world_override;
|
||||
|
||||
BKE_freestyle_config_free(&view_layer->freestyle_config, true);
|
||||
view_layer->freestyle_config = srl->freestyleConfig;
|
||||
|
|
|
@ -143,6 +143,10 @@ void DepsgraphNodeBuilder::build_view_layer(Scene *scene,
|
|||
if (view_layer->mat_override != nullptr) {
|
||||
build_material(view_layer->mat_override);
|
||||
}
|
||||
/* World override */
|
||||
if (view_layer->world_override != nullptr) {
|
||||
build_world(view_layer->world_override);
|
||||
}
|
||||
/* Freestyle linesets. */
|
||||
LISTBASE_FOREACH (FreestyleLineSet *, fls, &view_layer->freestyle_config.linesets) {
|
||||
build_freestyle_lineset(fls);
|
||||
|
|
|
@ -144,6 +144,10 @@ void DepsgraphRelationBuilder::build_view_layer(Scene *scene,
|
|||
if (view_layer->mat_override != nullptr) {
|
||||
build_material(view_layer->mat_override);
|
||||
}
|
||||
/* World override */
|
||||
if (view_layer->world_override != nullptr) {
|
||||
build_world(view_layer->world_override);
|
||||
}
|
||||
/* Freestyle linesets. */
|
||||
LISTBASE_FOREACH (FreestyleLineSet *, fls, &view_layer->freestyle_config.linesets) {
|
||||
build_freestyle_lineset(fls);
|
||||
|
|
|
@ -178,6 +178,7 @@ typedef struct ViewLayer {
|
|||
int samples;
|
||||
|
||||
struct Material *mat_override;
|
||||
struct World *world_override;
|
||||
/** Equivalent to datablocks ID properties. */
|
||||
struct IDProperty *id_properties;
|
||||
|
||||
|
|
|
@ -199,6 +199,7 @@ typedef struct SceneRenderLayer {
|
|||
|
||||
/** Converted to ViewLayer setting. */
|
||||
struct Material *mat_override DNA_DEPRECATED;
|
||||
struct World *world_override DNA_DEPRECATED;
|
||||
|
||||
/** Converted to LayerCollection cycles camera visibility override. */
|
||||
unsigned int lay DNA_DEPRECATED;
|
||||
|
|
|
@ -347,7 +347,7 @@ void rna_Scene_use_view_map_cache_update(Main *bmain, Scene *scene, PointerRNA *
|
|||
void rna_Scene_render_update(Main *bmain, Scene *scene, PointerRNA *ptr);
|
||||
void rna_Scene_freestyle_update(Main *bmain, Scene *scene, PointerRNA *ptr);
|
||||
void rna_ViewLayer_name_set(PointerRNA *ptr, const char *value);
|
||||
void rna_ViewLayer_material_override_update(Main *bmain, Scene *activescene, PointerRNA *ptr);
|
||||
void rna_ViewLayer_override_update(Main *bmain, Scene *activescene, PointerRNA *ptr);
|
||||
void rna_ViewLayer_pass_update(Main *bmain, Scene *activescene, PointerRNA *ptr);
|
||||
void rna_ViewLayer_active_aov_index_range(
|
||||
PointerRNA *ptr, int *min, int *max, int *softmin, int *softmax);
|
||||
|
|
|
@ -1870,7 +1870,7 @@ static void rna_SceneRenderView_name_set(PointerRNA *ptr, const char *value)
|
|||
sizeof(rv->name));
|
||||
}
|
||||
|
||||
void rna_ViewLayer_material_override_update(Main *bmain, Scene * /*scene*/, PointerRNA *ptr)
|
||||
void rna_ViewLayer_override_update(Main *bmain, Scene * /*scene*/, PointerRNA *ptr)
|
||||
{
|
||||
Scene *scene = (Scene *)ptr->owner_id;
|
||||
JonasDichelle marked this conversation as resolved
Outdated
|
||||
rna_Scene_render_update(bmain, scene, ptr);
|
||||
|
@ -4734,8 +4734,15 @@ void rna_def_view_layer_common(BlenderRNA *brna, StructRNA *srna, const bool sce
|
|||
RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_LIBRARY);
|
||||
RNA_def_property_ui_text(
|
||||
prop, "Material Override", "Material to override all other materials in this view layer");
|
||||
RNA_def_property_update(
|
||||
prop, NC_SCENE | ND_RENDER_OPTIONS, "rna_ViewLayer_material_override_update");
|
||||
RNA_def_property_update(prop, NC_SCENE | ND_RENDER_OPTIONS, "rna_ViewLayer_override_update");
|
||||
|
||||
prop = RNA_def_property(srna, "world_override", PROP_POINTER, PROP_NONE);
|
||||
RNA_def_property_pointer_sdna(prop, nullptr, "world_override");
|
||||
RNA_def_property_struct_type(prop, "World");
|
||||
RNA_def_property_flag(prop, PROP_EDITABLE);
|
||||
RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_LIBRARY);
|
||||
RNA_def_property_ui_text(prop, "World Override", "Override world in this view layer");
|
||||
RNA_def_property_update(prop, NC_SCENE | ND_RENDER_OPTIONS, "rna_ViewLayer_override_update");
|
||||
|
||||
prop = RNA_def_property(srna, "samples", PROP_INT, PROP_UNSIGNED);
|
||||
RNA_def_property_ui_text(prop,
|
||||
|
|
Loading…
Reference in New Issue
Don't change scene to screen, it's actually a scene.
I had coppied that from
rna_Scene_world_update
while testing.Do you think it's a typo there?