SceneRenderLayer > SceneLayer: Remove light_override

This commit is contained in:
Dalai Felinto
2017-11-14 16:32:13 -02:00
parent 9ce2370ce4
commit f15c63b0c2
19 changed files with 4 additions and 56 deletions

View File

@@ -428,9 +428,6 @@ void BKE_library_foreach_ID_link(Main *bmain, ID *id, LibraryIDLinkCallback call
if (srl->mat_override) {
CALLBACK_INVOKE(srl->mat_override, IDWALK_CB_USER);
}
if (srl->light_override) {
CALLBACK_INVOKE(srl->light_override, IDWALK_CB_USER);
}
for (fmc = srl->freestyleConfig.modules.first; fmc; fmc = fmc->next) {
if (fmc->script) {
CALLBACK_INVOKE(fmc->script, IDWALK_CB_NOP);

View File

@@ -5916,7 +5916,6 @@ static void lib_link_scene(FileData *fd, Main *main)
for (SceneRenderLayer *srl = sce->r.layers.first; srl; srl = srl->next) {
srl->mat_override = newlibadr_us(fd, sce->id.lib, srl->mat_override);
srl->light_override = newlibadr_us(fd, sce->id.lib, srl->light_override);
for (FreestyleModuleConfig *fmc = srl->freestyleConfig.modules.first; fmc; fmc = fmc->next) {
fmc->script = newlibadr(fd, sce->id.lib, fmc->script);
}
@@ -9801,7 +9800,6 @@ static void expand_scene(FileData *fd, Main *mainvar, Scene *sce)
for (srl = sce->r.layers.first; srl; srl = srl->next) {
expand_doit(fd, mainvar, srl->mat_override);
expand_doit(fd, mainvar, srl->light_override);
for (module = srl->freestyleConfig.modules.first; module; module = module->next) {
if (module->script)
expand_doit(fd, mainvar, module->script);

View File

@@ -310,11 +310,6 @@ void do_versions_after_linking_280(Main *main)
BKE_collection_override_datablock_add((LayerCollection *)scene_layer->layer_collections.first, "material", (ID *)srl->mat_override);
}
if (srl->light_override && BKE_scene_uses_blender_internal(scene)) {
/* not sure how we handle this, pending until we design the override system */
TODO_LAYER_OVERRIDE;
}
if (srl->lay != scene->lay) {
/* unlink master collection */
BKE_collection_unlink(scene_layer, scene_layer->layer_collections.first);

View File

@@ -369,8 +369,6 @@ static void outliner_add_scene_contents(SpaceOops *soops, ListBase *lb, Scene *s
tenlay->name = srl->name;
tenlay->directdata = &srl->layflag;
if (srl->light_override)
outliner_add_element(soops, &tenlay->subtree, srl->light_override, tenlay, TSE_LINKED_LAMP, 0);
if (srl->mat_override)
outliner_add_element(soops, &tenlay->subtree, srl->mat_override, tenlay, TSE_LINKED_MAT, 0);

View File

@@ -1355,7 +1355,7 @@ static void gpu_render_lamp_update(Scene *scene, View3D *v3d,
if (layers &&
GPU_lamp_has_shadow_buffer(lamp) &&
/* keep last, may do string lookup */
GPU_lamp_visible(lamp, srl, NULL))
GPU_lamp_visible(lamp, NULL))
{
View3DShadow *shadow = MEM_callocN(sizeof(View3DShadow), "View3DShadow");
shadow->lamp = lamp;

View File

@@ -54,7 +54,7 @@ GPULamp *GPU_lamp_from_blender(struct Scene *scene, struct Object *ob, struct Ob
void GPU_lamp_free(struct Object *ob);
void GPU_lamp_engine_data_free(LampEngineData *led);
bool GPU_lamp_visible(GPULamp *lamp, struct SceneRenderLayer *srl, struct Material *ma);
bool GPU_lamp_visible(GPULamp *lamp, struct Material *ma);
bool GPU_lamp_has_shadow_buffer(GPULamp *lamp);
void GPU_lamp_update_buffer_mats(GPULamp *lamp);
void GPU_lamp_shadow_buffer_bind(GPULamp *lamp, float viewmat[4][4], int *winsize, float winmat[4][4]);

View File

@@ -52,12 +52,10 @@
#include "gpu_lamp_private.h"
bool GPU_lamp_visible(GPULamp *lamp, SceneRenderLayer *srl, Material *ma)
bool GPU_lamp_visible(GPULamp *lamp, Material *ma)
{
if (lamp->hide)
return false;
else if (srl && srl->light_override)
return BKE_group_object_exists(srl->light_override, lamp->ob);
else if (ma && ma->group)
return BKE_group_object_exists(ma->group, lamp->ob);
else

View File

@@ -310,7 +310,7 @@ void GPU_material_bind(
GPULamp *lamp = nlink->data;
if ((lamp->lay & viewlay) && (!(lamp->mode & LA_LAYER) || (lamp->lay & oblay)) &&
GPU_lamp_visible(lamp, srl, material->ma))
GPU_lamp_visible(lamp, material->ma))
{
lamp->dynenergy = lamp->energy;
copy_v3_v3(lamp->dyncol, lamp->col);

View File

@@ -175,7 +175,6 @@ typedef struct SceneRenderLayer {
char name[64]; /* MAX_NAME */
struct Material *mat_override;
struct Group *light_override;
unsigned int lay; /* scene->lay itself has priority over this */
unsigned int lay_zmask; /* has to be after lay, this is for Z-masking */

View File

@@ -3290,14 +3290,6 @@ void rna_def_render_layer_common(StructRNA *srna, int scene)
if (scene) RNA_def_property_update(prop, NC_SCENE | ND_RENDER_OPTIONS, "rna_SceneRenderLayer_pass_update");
else RNA_def_property_clear_flag(prop, PROP_EDITABLE);
prop = RNA_def_property(srna, "light_override", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "light_override");
RNA_def_property_struct_type(prop, "Group");
RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Light Override", "Group to override all other lights in this render layer");
if (scene) RNA_def_property_update(prop, NC_SCENE | ND_RENDER_OPTIONS, "rna_SceneRenderLayer_pass_update");
else RNA_def_property_clear_flag(prop, PROP_EDITABLE);
/* layers */
prop = RNA_def_property(srna, "layers", PROP_BOOLEAN, PROP_LAYER_MEMBER);
RNA_def_property_boolean_sdna(prop, NULL, "lay", 1);

View File

@@ -112,7 +112,6 @@ typedef struct RenderLayer {
int layflag, passflag, pass_xor;
struct Material *mat_override;
struct Group *light_override;
/* MULTIVIEW_TODO: acolrect and scolrect are not supported by multiview at the moment.
* If they are really required they should be in RenderView instead */

View File

@@ -179,7 +179,6 @@ typedef struct ShadeInput {
unsigned int lay;
int layflag, passflag, combinedflag;
short object_pass_index;
struct Group *light_override;
struct Material *mat_override;
#ifdef RE_RAYCOUNTER

View File

@@ -4030,16 +4030,6 @@ static void set_material_lightgroups(Render *re)
}
}
static void set_renderlayer_lightgroups(Render *re, Scene *sce)
{
SceneRenderLayer *srl;
for (srl= sce->r.layers.first; srl; srl= srl->next) {
if (srl->light_override)
add_lightgroup(re, srl->light_override, 0);
}
}
/* ------------------------------------------------------------------------- */
/* World */
/* ------------------------------------------------------------------------- */
@@ -5184,7 +5174,6 @@ static void database_init_objects(Render *re, unsigned int UNUSED(renderlay), in
/* used to be 'rotate scene' */
void RE_Database_FromScene(Render *re, Main *bmain, Scene *scene, unsigned int lay, int use_camera_view)
{
Scene *sce;
Object *camera;
float mat[4][4];
float amb[3];
@@ -5261,8 +5250,6 @@ void RE_Database_FromScene(Render *re, Main *bmain, Scene *scene, unsigned int l
if (!re->test_break(re->tbh)) {
set_material_lightgroups(re);
for (sce= re->scene; sce; sce= sce->set)
set_renderlayer_lightgroups(re, sce);
/* for now some clumsy copying still */
re->i.totvert= re->totvert;

View File

@@ -742,7 +742,6 @@ static void traceray(ShadeInput *origshi, ShadeResult *origshr, short depth, con
shi.passflag= SCE_PASS_COMBINED; /* result of tracing needs no pass info */
shi.combinedflag= 0xFFFFFF; /* ray trace does all options */
//shi.do_preview = false; // memset above, so don't need this
shi.light_override= origshi->light_override;
shi.mat_override= origshi->mat_override;
shade_ray(&isec, &shi, &shr);

View File

@@ -318,7 +318,6 @@ RenderResult *render_result_new(Render *re, rcti *partrct, int crop, int savebuf
rl->layflag = srl->layflag;
rl->passflag = srl->passflag; /* for debugging: srl->passflag | SCE_PASS_RAYHITS; */
rl->pass_xor = srl->pass_xor;
rl->light_override = srl->light_override;
rl->mat_override = srl->mat_override;
rl->rectx = rectx;
rl->recty = recty;

View File

@@ -1661,7 +1661,6 @@ void zbufshade_sss_tile(RenderPart *pa)
ssamp.shi[0].passflag |= SCE_PASS_RGBA|SCE_PASS_COMBINED;
ssamp.shi[0].combinedflag &= ~(SCE_PASS_SPEC);
ssamp.shi[0].mat_override= NULL;
ssamp.shi[0].light_override= NULL;
lay= ssamp.shi[0].lay;
/* create the pixelstrs to be used later */

View File

@@ -1305,7 +1305,6 @@ void shade_input_initialize(ShadeInput *shi, RenderPart *pa, RenderLayer *rl, in
shi->passflag = rl->passflag;
shi->combinedflag = ~rl->pass_xor;
shi->mat_override = rl->mat_override;
shi->light_override = rl->light_override;
// shi->rl= rl;
/* note shi.depth==0 means first hit, not raytracing */

View File

@@ -73,8 +73,6 @@ ListBase *get_lights(ShadeInput *shi)
if (R.r.scemode & R_BUTS_PREVIEW)
return &R.lights;
if (shi->light_override)
return &shi->light_override->gobject;
if (shi->mat && shi->mat->group)
return &shi->mat->group->gobject;
@@ -2090,13 +2088,6 @@ float RE_lamp_get_data(ShadeInput *shi, Object *lamp_obj, float col[4], float lv
return 0.0f;
}
if (shi->light_override) {
for (go = shi->light_override->gobject.first; go; go = go->next) {
if (go->ob == lamp_obj)
return lamp_get_data_internal(shi, go, col, lv, dist, shadow);
}
}
if (shi->mat && shi->mat->group) {
for (go = shi->mat->group->gobject.first; go; go = go->next) {
if (go->ob == lamp_obj)

View File

@@ -172,7 +172,6 @@ static void shade_intersection(ShadeInput *shi, float col_r[4], Isect *is)
shi_new.lay = shi->lay;
shi_new.passflag = SCE_PASS_COMBINED; /* result of tracing needs no pass info */
shi_new.combinedflag = 0xFFFFFF; /* ray trace does all options */
shi_new.light_override = shi->light_override;
shi_new.mat_override = shi->mat_override;
copy_v3_v3(shi_new.camera_co, is->start);