コード例 #1
0
        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);
                    }
                }
            }
        }