public void PushVisibleMesh2ShadowLayer(CFrustum cam_frustum) { for (int Idx_VisibleShadowMesh = 0; Idx_VisibleShadowMesh < mVisibleSceneMeshArray_Shadow.Count; Idx_VisibleShadowMesh++) { if (cam_frustum.WhichContainType(ref mVisibleSceneMeshArray_Shadow[Idx_VisibleShadowMesh].HostActor.Placement.ActorAABB, false) == CFrustum.CONTAIN_TYPE.CONTAIN_TEST_OUTER) { continue; } for (UInt32 Idx_MtlMesh = 0; Idx_MtlMesh < mVisibleSceneMeshArray_Shadow[Idx_VisibleShadowMesh].MtlMeshArray.Length; Idx_MtlMesh++) { var MtlMesh = this.mVisibleSceneMeshArray_Shadow[Idx_VisibleShadowMesh].MtlMeshArray[Idx_MtlMesh]; if (MtlMesh == null || MtlMesh.Visible == false) { continue; } if (MtlMesh.MtlInst.mRenderLayer == ERenderLayer.RL_Opaque || MtlMesh.MtlInst.mRenderLayer == ERenderLayer.RL_CustomOpaque /*|| * MtlMesh.MtlInst.mRenderLayer == ERenderLayer.RL_CustomTranslucent*/) { this.mSceneRenderLayer[(int)ERenderLayer.RL_Shadow].AddRenderLayerAtom(MtlMesh); } } } }