diff options
author | Dalai Felinto <dfelinto@gmail.com> | 2017-11-15 20:01:57 +0300 |
---|---|---|
committer | Dalai Felinto <dfelinto@gmail.com> | 2017-11-22 12:13:33 +0300 |
commit | 8ba6103e66b0e8bcbe70e6ed8f91500fdc7df3ee (patch) | |
tree | 024497bcfb48a42b969471fcb96119f2dcc0e442 /source | |
parent | 0a6df6b173c5af2a38d2b808634adb2c6432ce3e (diff) |
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.
Diffstat (limited to 'source')
18 files changed, 31 insertions, 64 deletions
diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c index b1cbf24f715..383b55ab1ad 100644 --- a/source/blender/blenkernel/intern/scene.c +++ b/source/blender/blenkernel/intern/scene.c @@ -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; diff --git a/source/blender/blenloader/intern/versioning_280.c b/source/blender/blenloader/intern/versioning_280.c index 32aa908fe86..fa48abaf61e 100644 --- a/source/blender/blenloader/intern/versioning_280.c +++ b/source/blender/blenloader/intern/versioning_280.c @@ -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; diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c index eeca75b7308..475e9cd07bf 100644 --- a/source/blender/editors/space_view3d/view3d_draw.c +++ b/source/blender/editors/space_view3d/view3d_draw.c @@ -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) diff --git a/source/blender/editors/space_view3d/view3d_draw_legacy.c b/source/blender/editors/space_view3d/view3d_draw_legacy.c index 5695508a9f5..9f1c27a09e7 100644 --- a/source/blender/editors/space_view3d/view3d_draw_legacy.c +++ b/source/blender/editors/space_view3d/view3d_draw_legacy.c @@ -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); } diff --git a/source/blender/editors/space_view3d/view3d_intern.h b/source/blender/editors/space_view3d/view3d_intern.h index e42a1e7f286..189e22a04d7 100644 --- a/source/blender/editors/space_view3d/view3d_intern.h +++ b/source/blender/editors/space_view3d/view3d_intern.h @@ -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 */ diff --git a/source/blender/gpu/GPU_material.h b/source/blender/gpu/GPU_material.h index 71bf6c897e7..e1b20cefe99 100644 --- a/source/blender/gpu/GPU_material.h +++ b/source/blender/gpu/GPU_material.h @@ -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]); diff --git a/source/blender/gpu/intern/gpu_draw.c b/source/blender/gpu/intern/gpu_draw.c index 3d50d3840fb..4e2a492367a 100644 --- a/source/blender/gpu/intern/gpu_draw.c +++ b/source/blender/gpu/intern/gpu_draw.c @@ -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); diff --git a/source/blender/gpu/intern/gpu_material.c b/source/blender/gpu/intern/gpu_material.c index 4668ea2998d..0a8ef9dffc5 100644 --- a/source/blender/gpu/intern/gpu_material.c +++ b/source/blender/gpu/intern/gpu_material.c @@ -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) { diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h index 2f9487bb17e..7ac0e74ae59 100644 --- a/source/blender/makesdna/DNA_scene_types.h +++ b/source/blender/makesdna/DNA_scene_types.h @@ -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; diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c index 93b970482f6..71a62a2bc63 100644 --- a/source/blender/makesrna/intern/rna_scene.c +++ b/source/blender/makesrna/intern/rna_scene.c @@ -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"); diff --git a/source/blender/render/extern/include/RE_pipeline.h b/source/blender/render/extern/include/RE_pipeline.h index 2e9ab10f1c0..9d2fbcc6d04 100644 --- a/source/blender/render/extern/include/RE_pipeline.h +++ b/source/blender/render/extern/include/RE_pipeline.h @@ -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. diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c index 6e0251c60cb..8b91b970845 100644 --- a/source/blender/render/intern/source/convertblender.c +++ b/source/blender/render/intern/source/convertblender.c @@ -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) diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c index 080e68d813e..951a66cadeb 100644 --- a/source/blender/render/intern/source/pipeline.c +++ b/source/blender/render/intern/source/pipeline.c @@ -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; diff --git a/source/blender/render/intern/source/render_result.c b/source/blender/render/intern/source/render_result.c index d1a434841e4..f5f36b88c1d 100644 --- a/source/blender/render/intern/source/render_result.c +++ b/source/blender/render/intern/source/render_result.c @@ -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; diff --git a/source/blender/render/intern/source/rendercore.c b/source/blender/render/intern/source/rendercore.c index 4e8e1b9a5e8..71d233e7d70 100644 --- a/source/blender/render/intern/source/rendercore.c +++ b/source/blender/render/intern/source/rendercore.c @@ -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); } diff --git a/source/blender/render/intern/source/shadeinput.c b/source/blender/render/intern/source/shadeinput.c index 067e7861b51..6cad37c3e78 100644 --- a/source/blender/render/intern/source/shadeinput.c +++ b/source/blender/render/intern/source/shadeinput.c @@ -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; diff --git a/source/blender/render/intern/source/zbuf.c b/source/blender/render/intern/source/zbuf.c index 55f2335f9e8..f39936dc01f 100644 --- a/source/blender/render/intern/source/zbuf.c +++ b/source/blender/render/intern/source/zbuf.c @@ -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; } diff --git a/source/gameengine/Ketsji/BL_BlenderShader.cpp b/source/gameengine/Ketsji/BL_BlenderShader.cpp index 9cbd61590b6..572218e691d 100644 --- a/source/gameengine/Ketsji/BL_BlenderShader.cpp +++ b/source/gameengine/Ketsji/BL_BlenderShader.cpp @@ -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); |