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 | |
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.
20 files changed, 33 insertions, 66 deletions
diff --git a/intern/cycles/blender/blender_sync.cpp b/intern/cycles/blender/blender_sync.cpp index be2fadcc574..c5d203070db 100644 --- a/intern/cycles/blender/blender_sync.cpp +++ b/intern/cycles/blender/blender_sync.cpp @@ -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; diff --git a/intern/cycles/blender/blender_sync.h b/intern/cycles/blender/blender_sync.h index 57405b74ecc..79c0b006f9f 100644 --- a/intern/cycles/blender/blender_sync.h +++ b/intern/cycles/blender/blender_sync.h @@ -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. */ 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); |