forked from bartvdbraak/blender
Fix T40843: Cycles does not support viewport render override
This commit is contained in:
parent
006b550f6f
commit
6ff6883f99
@ -316,6 +316,8 @@ void BlenderSync::sync_render_layers(BL::SpaceView3D b_v3d, const char *layer)
|
||||
BL::RenderSettings::layers_iterator b_rlay;
|
||||
int use_layer_samples = RNA_enum_get(&cscene, "use_layer_samples");
|
||||
bool first_layer = true;
|
||||
uint layer_override = get_layer(b_engine.layer_override());
|
||||
uint scene_layers = layer_override ? layer_override : get_layer(b_scene.layers());
|
||||
|
||||
for(r.layers.begin(b_rlay); b_rlay != r.layers.end(); ++b_rlay) {
|
||||
if((!layer && first_layer) || (layer && b_rlay->name() == layer)) {
|
||||
@ -324,7 +326,7 @@ void BlenderSync::sync_render_layers(BL::SpaceView3D b_v3d, const char *layer)
|
||||
render_layer.holdout_layer = get_layer(b_rlay->layers_zmask());
|
||||
render_layer.exclude_layer = get_layer(b_rlay->layers_exclude());
|
||||
|
||||
render_layer.scene_layer = get_layer(b_scene.layers()) & ~render_layer.exclude_layer;
|
||||
render_layer.scene_layer = scene_layers & ~render_layer.exclude_layer;
|
||||
render_layer.scene_layer |= render_layer.exclude_layer & render_layer.holdout_layer;
|
||||
|
||||
render_layer.layer = get_layer(b_rlay->layers());
|
||||
|
@ -544,6 +544,10 @@ static void rna_def_render_engine(BlenderRNA *brna)
|
||||
RNA_def_property_pointer_sdna(prop, NULL, "camera_override");
|
||||
RNA_def_property_struct_type(prop, "Object");
|
||||
|
||||
prop = RNA_def_property(srna, "layer_override", PROP_BOOLEAN, PROP_LAYER_MEMBER);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "layer_override", 1);
|
||||
RNA_def_property_array(prop, 20);
|
||||
|
||||
prop = RNA_def_property(srna, "tile_x", PROP_INT, PROP_UNSIGNED);
|
||||
RNA_def_property_int_sdna(prop, NULL, "tile_x");
|
||||
prop = RNA_def_property(srna, "tile_y", PROP_INT, PROP_UNSIGNED);
|
||||
|
@ -104,6 +104,7 @@ typedef struct RenderEngine {
|
||||
|
||||
int flag;
|
||||
struct Object *camera_override;
|
||||
unsigned int layer_override;
|
||||
|
||||
int tile_x;
|
||||
int tile_y;
|
||||
|
@ -192,7 +192,7 @@ struct Render
|
||||
RenderData r;
|
||||
World wrld;
|
||||
struct Object *camera_override;
|
||||
unsigned int lay;
|
||||
unsigned int lay, layer_override;
|
||||
|
||||
ListBase parts;
|
||||
|
||||
|
@ -624,6 +624,7 @@ int RE_engine_render(Render *re, int do_all)
|
||||
if (re->r.scemode & R_BUTS_PREVIEW)
|
||||
engine->flag |= RE_ENGINE_PREVIEW;
|
||||
engine->camera_override = re->camera_override;
|
||||
engine->layer_override = re->layer_override;
|
||||
|
||||
engine->resolution_x = re->winx;
|
||||
engine->resolution_y = re->winy;
|
||||
|
@ -2700,6 +2700,7 @@ static int render_initialize_from_main(Render *re, RenderData *rd, Main *bmain,
|
||||
re->scene_color_manage = BKE_scene_check_color_management_enabled(scene);
|
||||
re->camera_override = camera_override;
|
||||
re->lay = lay_override ? lay_override : scene->lay;
|
||||
re->layer_override = lay_override;
|
||||
re->i.localview = (re->lay & 0xFF000000) != 0;
|
||||
|
||||
/* not too nice, but it survives anim-border render */
|
||||
|
Loading…
Reference in New Issue
Block a user