SceneRenderLayer > SceneLayer: Convert Lay
There are parts of the old (Blender Internal) rendering pipeline that is still using lay, e.g., in shi->lay. Honestly it will be easier to purge the entire Blender Internal code away instead of taking things from it bit by bit.
This commit is contained in:
@@ -404,7 +404,7 @@ void BlenderSync::sync_render_layers(BL::SpaceView3D& b_v3d, const char *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());
|
||||
render_layer.layer = (1 << 20) - 1;
|
||||
render_layer.layer |= render_layer.holdout_layer;
|
||||
|
||||
render_layer.material_override = PointerRNA_NULL;
|
||||
|
||||
@@ -199,7 +199,7 @@ private:
|
||||
|
||||
string name;
|
||||
uint scene_layer;
|
||||
uint layer;
|
||||
uint layer; /* This can be safely removed from Cycles. */
|
||||
uint holdout_layer; /* This can be safely removed from Cycles. */
|
||||
uint exclude_layer; /* This can be safely removed from Cycles. */
|
||||
BL::Material material_override; /* This can be safely removed from Cycles. */
|
||||
|
||||
@@ -1632,7 +1632,6 @@ SceneRenderLayer *BKE_scene_add_render_layer(Scene *sce, const char *name)
|
||||
BLI_addtail(&sce->r.layers, srl);
|
||||
|
||||
/* note, this is also in render, pipeline.c, to make layer when scenedata doesnt have it */
|
||||
srl->lay = (1 << 20) - 1;
|
||||
srl->layflag = 0x7FFF; /* solid ztra halo edge strand */
|
||||
srl->passflag = SCE_PASS_COMBINED | SCE_PASS_Z;
|
||||
srl->pass_alpha_threshold = 0.5f;
|
||||
|
||||
@@ -346,6 +346,14 @@ void do_versions_after_linking_280(Main *main)
|
||||
true);
|
||||
}
|
||||
|
||||
if ((srl->lay & (1 << layer)) == 0) {
|
||||
BKE_override_layer_collection_boolean_add(
|
||||
layer_collection_parent,
|
||||
ID_OB,
|
||||
"cycles_visibility.camera",
|
||||
false);
|
||||
}
|
||||
|
||||
LayerCollection *layer_collection_child;
|
||||
layer_collection_child = layer_collection_parent->layer_collections.first;
|
||||
|
||||
|
||||
@@ -793,13 +793,13 @@ static void view3d_draw_background_none(void)
|
||||
glClear(GL_COLOR_BUFFER_BIT);
|
||||
}
|
||||
|
||||
static void view3d_draw_background_world(Scene *scene, View3D *v3d, RegionView3D *rv3d)
|
||||
static void view3d_draw_background_world(Scene *scene, RegionView3D *rv3d)
|
||||
{
|
||||
if (scene->world) {
|
||||
GPUMaterial *gpumat = GPU_material_world(scene, scene->world);
|
||||
|
||||
/* calculate full shader for background */
|
||||
GPU_material_bind(gpumat, 1, 1, 1.0f, false, rv3d->viewmat, rv3d->viewinv, rv3d->viewcamtexcofac, (v3d->scenelock != 0));
|
||||
GPU_material_bind(gpumat, 1, 1, 1.0f, false, rv3d->viewmat, rv3d->viewinv, rv3d->viewcamtexcofac);
|
||||
|
||||
if (GPU_material_bound(gpumat)) {
|
||||
/* TODO viewport (dfelinto): GPU_material_bind relies on immediate mode,
|
||||
@@ -1949,7 +1949,7 @@ static void view3d_main_region_clear(Scene *scene, View3D *v3d, ARegion *ar)
|
||||
glClear(GL_DEPTH_BUFFER_BIT);
|
||||
|
||||
if (scene->world && (v3d->flag3 & V3D_SHOW_WORLD)) {
|
||||
VP_view3d_draw_background_world(scene, v3d, ar->regiondata);
|
||||
VP_view3d_draw_background_world(scene, ar->regiondata);
|
||||
}
|
||||
else {
|
||||
VP_view3d_draw_background_none();
|
||||
@@ -2394,9 +2394,9 @@ void VP_view3d_draw_background_none(void)
|
||||
}
|
||||
}
|
||||
|
||||
void VP_view3d_draw_background_world(Scene *scene, View3D *v3d, RegionView3D *rv3d)
|
||||
void VP_view3d_draw_background_world(Scene *scene, RegionView3D *rv3d)
|
||||
{
|
||||
view3d_draw_background_world(scene, v3d, rv3d);
|
||||
view3d_draw_background_world(scene, rv3d);
|
||||
}
|
||||
|
||||
void VP_view3d_main_region_clear(Scene *scene, View3D *v3d, ARegion *ar)
|
||||
|
||||
@@ -1338,7 +1338,7 @@ typedef struct View3DShadow {
|
||||
static void gpu_render_lamp_update(Scene *scene, View3D *v3d,
|
||||
Object *ob, Object *par,
|
||||
float obmat[4][4], unsigned int lay,
|
||||
ListBase *shadows, SceneRenderLayer *srl)
|
||||
ListBase *shadows)
|
||||
{
|
||||
GPULamp *lamp = GPU_lamp_from_blender(scene, ob, par);
|
||||
|
||||
@@ -1349,8 +1349,6 @@ static void gpu_render_lamp_update(Scene *scene, View3D *v3d,
|
||||
GPU_lamp_update_colors(lamp, la->r, la->g, la->b, la->energy);
|
||||
|
||||
unsigned int layers = lay & v3d->lay;
|
||||
if (srl)
|
||||
layers &= srl->lay;
|
||||
|
||||
if (layers &&
|
||||
GPU_lamp_has_shadow_buffer(lamp) &&
|
||||
@@ -1370,7 +1368,6 @@ static void gpu_update_lamps_shadows_world(const EvaluationContext *eval_ctx, Sc
|
||||
Scene *sce_iter;
|
||||
Base *base;
|
||||
World *world = scene->world;
|
||||
SceneRenderLayer *srl = v3d->scenelock ? BLI_findlink(&scene->r.layers, scene->r.actlay) : NULL;
|
||||
|
||||
BLI_listbase_clear(&shadows);
|
||||
|
||||
@@ -1379,7 +1376,7 @@ static void gpu_update_lamps_shadows_world(const EvaluationContext *eval_ctx, Sc
|
||||
Object *ob = base->object;
|
||||
|
||||
if (ob->type == OB_LAMP)
|
||||
gpu_render_lamp_update(scene, v3d, ob, NULL, ob->obmat, ob->lay, &shadows, srl);
|
||||
gpu_render_lamp_update(scene, v3d, ob, NULL, ob->obmat, ob->lay, &shadows);
|
||||
|
||||
if (ob->transflag & OB_DUPLI) {
|
||||
DupliObject *dob;
|
||||
@@ -1387,7 +1384,7 @@ static void gpu_update_lamps_shadows_world(const EvaluationContext *eval_ctx, Sc
|
||||
|
||||
for (dob = lb->first; dob; dob = dob->next)
|
||||
if (dob->ob->type == OB_LAMP)
|
||||
gpu_render_lamp_update(scene, v3d, dob->ob, ob, dob->mat, ob->lay, &shadows, srl);
|
||||
gpu_render_lamp_update(scene, v3d, dob->ob, ob, dob->mat, ob->lay, &shadows);
|
||||
|
||||
free_object_duplilist(lb);
|
||||
}
|
||||
|
||||
@@ -376,7 +376,7 @@ bool VP_legacy_use_depth(Scene *scene, View3D *v3d);
|
||||
void VP_drawviewborder(Scene *scene, ARegion *ar, View3D *v3d);
|
||||
void VP_drawrenderborder(ARegion *ar, View3D *v3d);
|
||||
void VP_view3d_draw_background_none(void);
|
||||
void VP_view3d_draw_background_world(Scene *scene, View3D *v3d, RegionView3D *rv3d);
|
||||
void VP_view3d_draw_background_world(Scene *scene, RegionView3D *rv3d);
|
||||
void VP_view3d_main_region_clear(Scene *scene, View3D *v3d, ARegion *ar);
|
||||
|
||||
/* temporary legacy calls, only when there is a switch between new/old draw calls */
|
||||
|
||||
@@ -254,7 +254,7 @@ void GPU_materials_free(void);
|
||||
|
||||
void GPU_material_bind(
|
||||
GPUMaterial *material, int oblay, int viewlay, double time, int mipmap,
|
||||
float viewmat[4][4], float viewinv[4][4], float cameraborder[4], bool scenelock);
|
||||
float viewmat[4][4], float viewinv[4][4], float cameraborder[4]);
|
||||
void GPU_material_bind_uniforms(
|
||||
GPUMaterial *material, float obmat[4][4], float viewmat[4][4], float obcol[4],
|
||||
float autobumpscale, GPUParticleInfo *pi, float object_info[3]);
|
||||
|
||||
@@ -1463,7 +1463,6 @@ static struct GPUMaterialState {
|
||||
DupliObject *dob;
|
||||
Scene *gscene;
|
||||
int glay;
|
||||
bool gscenelock;
|
||||
float (*gviewmat)[4];
|
||||
float (*gviewinv)[4];
|
||||
float (*gviewcamtexcofac);
|
||||
@@ -1621,7 +1620,6 @@ void GPU_begin_object_materials(
|
||||
GMS.is_opensubdiv = use_opensubdiv;
|
||||
GMS.totmat = use_matcap ? 1 : ob->totcol + 1; /* materials start from 1, default material is 0 */
|
||||
GMS.glay = (v3d->localvd) ? v3d->localvd->lay : v3d->lay; /* keep lamps visible in local view */
|
||||
GMS.gscenelock = (v3d->scenelock != 0);
|
||||
GMS.gviewmat = rv3d->viewmat;
|
||||
GMS.gviewinv = rv3d->viewinv;
|
||||
GMS.gviewcamtexcofac = rv3d->viewcamtexcofac;
|
||||
@@ -1837,7 +1835,7 @@ int GPU_object_material_bind(int nr, void *attribs)
|
||||
|
||||
GPU_material_bind(
|
||||
gpumat, GMS.gob->lay, GMS.glay, 1.0, !(GMS.gob->mode & OB_MODE_TEXTURE_PAINT),
|
||||
GMS.gviewmat, GMS.gviewinv, GMS.gviewcamtexcofac, GMS.gscenelock);
|
||||
GMS.gviewmat, GMS.gviewinv, GMS.gviewcamtexcofac);
|
||||
|
||||
auto_bump_scale = GMS.gob->derivedFinal != NULL ? GMS.gob->derivedFinal->auto_bump_scale : 1.0f;
|
||||
GPU_material_bind_uniforms(gpumat, GMS.gob->obmat, GMS.gviewmat, GMS.gob->col, auto_bump_scale, &partile_info, object_info);
|
||||
|
||||
@@ -295,14 +295,10 @@ void GPU_material_free(ListBase *gpumaterial)
|
||||
|
||||
void GPU_material_bind(
|
||||
GPUMaterial *material, int oblay, int viewlay, double time, int mipmap,
|
||||
float viewmat[4][4], float viewinv[4][4], float camerafactors[4], bool scenelock)
|
||||
float viewmat[4][4], float viewinv[4][4], float camerafactors[4])
|
||||
{
|
||||
if (material->pass) {
|
||||
GPUShader *shader = GPU_pass_shader(material->pass);
|
||||
SceneRenderLayer *srl = scenelock ? BLI_findlink(&material->scene->r.layers, material->scene->r.actlay) : NULL;
|
||||
|
||||
if (srl)
|
||||
viewlay &= srl->lay;
|
||||
|
||||
/* handle layer lamps */
|
||||
if (material->type == GPU_MATERIAL_TYPE_MESH) {
|
||||
|
||||
@@ -176,7 +176,7 @@ typedef struct SceneRenderLayer {
|
||||
|
||||
struct Material *mat_override DNA_DEPRECATED; /* Converted to SceneLayer override. */
|
||||
|
||||
unsigned int lay; /* scene->lay itself has priority over this */
|
||||
unsigned int lay DNA_DEPRECATED; /* Converted to LayerCollection cycles camera visibility override. */
|
||||
unsigned int lay_zmask DNA_DEPRECATED; /* Converted to LayerCollection cycles holdout override. */
|
||||
unsigned int lay_exclude DNA_DEPRECATED;
|
||||
int layflag;
|
||||
|
||||
@@ -1522,12 +1522,6 @@ static char *rna_SceneRenderView_path(PointerRNA *ptr)
|
||||
return BLI_sprintfN("render.views[\"%s\"]", srv->name);
|
||||
}
|
||||
|
||||
static void rna_SceneRenderLayer_layer_set(PointerRNA *ptr, const int *values)
|
||||
{
|
||||
SceneRenderLayer *rl = (SceneRenderLayer *)ptr->data;
|
||||
rl->lay = ED_view3d_scene_layer_set(rl->lay, values, NULL);
|
||||
}
|
||||
|
||||
static void rna_SceneRenderLayer_pass_update(Main *bmain, Scene *activescene, PointerRNA *ptr)
|
||||
{
|
||||
Scene *scene = (Scene *)ptr->id.data;
|
||||
@@ -3281,18 +3275,6 @@ void rna_def_render_layer_common(StructRNA *srna, int scene)
|
||||
if (scene) RNA_def_property_update(prop, NC_SCENE | ND_RENDER_OPTIONS, NULL);
|
||||
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);
|
||||
RNA_def_property_array(prop, 20);
|
||||
RNA_def_property_ui_text(prop, "Visible Layers", "Scene layers included in this render layer");
|
||||
if (scene) RNA_def_property_boolean_funcs(prop, NULL, "rna_SceneRenderLayer_layer_set");
|
||||
else RNA_def_property_boolean_funcs(prop, NULL, "rna_RenderLayer_layer_set");
|
||||
if (scene) RNA_def_property_update(prop, NC_SCENE | ND_RENDER_OPTIONS, "rna_Scene_glsl_update");
|
||||
else RNA_def_property_clear_flag(prop, PROP_EDITABLE);
|
||||
/* this seems to be too much trouble with depsgraph updates/etc. currently (20140423) */
|
||||
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
|
||||
|
||||
if (scene) {
|
||||
prop = RNA_def_property(srna, "pass_alpha_threshold", PROP_FLOAT, PROP_FACTOR);
|
||||
RNA_def_property_ui_text(prop, "Alpha Threshold",
|
||||
@@ -6447,7 +6429,6 @@ static void rna_def_scene_render_data(BlenderRNA *brna)
|
||||
RNA_def_property_ui_text(prop, "Render Layers", "");
|
||||
rna_def_render_layers(brna, prop);
|
||||
|
||||
|
||||
prop = RNA_def_property(srna, "use_single_layer", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "scemode", R_SINGLE_LAYER);
|
||||
RNA_def_property_ui_text(prop, "Single Layer", "Only render the active layer");
|
||||
|
||||
@@ -108,7 +108,6 @@ typedef struct RenderLayer {
|
||||
|
||||
/* copy of RenderData */
|
||||
char name[RE_MAXNAME];
|
||||
unsigned int lay;
|
||||
int layflag, passflag, pass_xor;
|
||||
|
||||
/* MULTIVIEW_TODO: acolrect and scolrect are not supported by multiview at the moment.
|
||||
|
||||
@@ -4939,16 +4939,9 @@ static void dupli_render_particle_set(Render *re, Object *ob, int timeoffset, in
|
||||
dupli_render_particle_set(re, go->ob, timeoffset, level+1, enable);
|
||||
}
|
||||
|
||||
static int get_vector_renderlayers(Scene *sce)
|
||||
static int get_vector_renderlayers(Scene *UNUSED(sce))
|
||||
{
|
||||
SceneRenderLayer *srl;
|
||||
unsigned int lay= 0;
|
||||
|
||||
for (srl= sce->r.layers.first; srl; srl= srl->next)
|
||||
if (srl->passflag & SCE_PASS_VECTOR)
|
||||
lay |= srl->lay;
|
||||
|
||||
return lay;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void add_group_render_dupli_obs(Render *re, Group *group, int nolamps, int onlyselected, Object *actob, int timeoffset, int level)
|
||||
|
||||
@@ -4143,7 +4143,6 @@ RenderPass *RE_create_gp_pass(RenderResult *rr, const char *layername, const cha
|
||||
rl = MEM_callocN(sizeof(RenderLayer), layername);
|
||||
BLI_addtail(&rr->layers, rl);
|
||||
BLI_strncpy(rl->name, layername, sizeof(rl->name));
|
||||
rl->lay = 0;
|
||||
rl->layflag = SCE_LAY_SOLID;
|
||||
rl->passflag = SCE_PASS_COMBINED;
|
||||
rl->rectx = rr->rectx;
|
||||
|
||||
@@ -313,8 +313,6 @@ RenderResult *render_result_new(Render *re, rcti *partrct, int crop, int savebuf
|
||||
BLI_addtail(&rr->layers, rl);
|
||||
|
||||
BLI_strncpy(rl->name, srl->name, sizeof(rl->name));
|
||||
rl->lay = srl->lay;
|
||||
rl->layflag = srl->layflag;
|
||||
rl->passflag = srl->passflag; /* for debugging: srl->passflag | SCE_PASS_RAYHITS; */
|
||||
rl->pass_xor = srl->pass_xor;
|
||||
rl->rectx = rectx;
|
||||
@@ -443,7 +441,6 @@ RenderResult *render_result_new(Render *re, rcti *partrct, int crop, int savebuf
|
||||
}
|
||||
|
||||
/* note, this has to be in sync with scene.c */
|
||||
rl->lay = (1 << 20) - 1;
|
||||
rl->layflag = 0x7FFF; /* solid ztra halo strand */
|
||||
rl->passflag = SCE_PASS_COMBINED;
|
||||
|
||||
|
||||
@@ -246,7 +246,7 @@ static void halo_tile(RenderPart *pa, RenderLayer *rl)
|
||||
intptr_t *rd= NULL;
|
||||
int a, *rz, zz, y, sample, totsample, od;
|
||||
short minx, maxx, miny, maxy, x;
|
||||
unsigned int lay= rl->lay;
|
||||
unsigned int lay= (1 << 20) - 1;
|
||||
|
||||
/* we don't render halos in the cropped area, gives errors in flare counter */
|
||||
if (pa->crop) {
|
||||
@@ -1651,7 +1651,7 @@ void zbufshade_sss_tile(RenderPart *pa)
|
||||
ssamp.tot= 1;
|
||||
|
||||
for (rl=rr->layers.first; rl; rl=rl->next) {
|
||||
ssamp.shi[0].lay |= rl->lay;
|
||||
ssamp.shi[0].lay |= (1 << 20) - 1;
|
||||
ssamp.shi[0].layflag |= rl->layflag;
|
||||
ssamp.shi[0].passflag |= rl->passflag;
|
||||
ssamp.shi[0].combinedflag |= ~rl->pass_xor;
|
||||
@@ -1976,7 +1976,7 @@ void add_halo_flare(Render *re)
|
||||
for (a=0; a<R.tothalo; a++) {
|
||||
har= R.sortedhalos[a];
|
||||
|
||||
if (har->flarec && (har->lay & rl->lay)) {
|
||||
if (har->flarec && (har->lay & ((1 << 20) - 1))) {
|
||||
do_draw = true;
|
||||
renderflare(rr, rect, har);
|
||||
}
|
||||
|
||||
@@ -1300,7 +1300,7 @@ void shade_input_initialize(ShadeInput *shi, RenderPart *pa, RenderLayer *rl, in
|
||||
shi->do_manage = BKE_scene_check_color_management_enabled(R.scene);
|
||||
shi->use_world_space_shading = BKE_scene_use_world_space_shading(R.scene);
|
||||
|
||||
shi->lay = rl->lay;
|
||||
shi->lay = (1 << 20) - 1;
|
||||
shi->layflag = rl->layflag;
|
||||
shi->passflag = rl->passflag;
|
||||
shi->combinedflag = ~rl->pass_xor;
|
||||
|
||||
@@ -2066,7 +2066,7 @@ void zbuffer_solid(RenderPart *pa, RenderLayer *rl, void(*fillfunc)(RenderPart *
|
||||
ObjectRen *obr;
|
||||
float obwinmat[4][4], winmat[4][4], bounds[4];
|
||||
float ho1[4], ho2[4], ho3[4], ho4[4]={0};
|
||||
unsigned int lay= rl->lay, lay_zmask= 0;
|
||||
unsigned int lay= (1 << 20) - 1, lay_zmask= 0;
|
||||
int i, v, zvlnr, zsample, samples, c1, c2, c3, c4=0;
|
||||
short nofill=0, env=0, wire=0, zmaskpass=0;
|
||||
const bool all_z = (rl->layflag & SCE_LAY_ALL_Z) && !(rl->layflag & SCE_LAY_ZMASK);
|
||||
@@ -3450,9 +3450,9 @@ static int zbuffer_abuf_render(RenderPart *pa, APixstr *APixbuf, APixstrand *APi
|
||||
zbuf_make_winmat(&R, winmat);
|
||||
|
||||
if (rl->layflag & SCE_LAY_ZTRA)
|
||||
doztra+= zbuffer_abuf(&R, pa, APixbuf, apsmbase, rl->lay, negzmask, winmat, R.winx, R.winy, samples, jit, R.clipcrop, 0);
|
||||
doztra+= zbuffer_abuf(&R, pa, APixbuf, apsmbase, (1 << 20) - 1, negzmask, winmat, R.winx, R.winy, samples, jit, R.clipcrop, 0);
|
||||
if ((rl->layflag & SCE_LAY_STRAND) && APixbufstrand)
|
||||
doztra+= zbuffer_strands_abuf(&R, pa, APixbufstrand, apsmbase, rl->lay, negzmask, winmat, R.winx, R.winy, samples, jit, R.clipcrop, 0, sscache);
|
||||
doztra+= zbuffer_strands_abuf(&R, pa, APixbufstrand, apsmbase, (1 << 20) - 1, negzmask, winmat, R.winx, R.winy, samples, jit, R.clipcrop, 0, sscache);
|
||||
|
||||
return doztra;
|
||||
}
|
||||
|
||||
@@ -77,7 +77,7 @@ void BL_BlenderShader::SetProg(bool enable, double time, RAS_IRasterizer* rasty)
|
||||
view.getValue(&viewmat[0][0]);
|
||||
viewinv.getValue(&viewinvmat[0][0]);
|
||||
|
||||
GPU_material_bind(mGPUMat, mLightLayer, mBlenderScene->lay, time, 1, viewmat, viewinvmat, NULL, false);
|
||||
GPU_material_bind(mGPUMat, mLightLayer, mBlenderScene->lay, time, 1, viewmat, viewinvmat, NULL);
|
||||
}
|
||||
else
|
||||
GPU_material_unbind(mGPUMat);
|
||||
|
||||
Reference in New Issue
Block a user