Exemple #1
0
        public async System.Threading.Tasks.Task <bool> Init(Graphics.CGfxMaterialInstance material, float halfWidth = 0.1F)
        {
            var rc = CEngine.Instance.RenderContext;

            Material = material;
            GeomMesh = new Graphics.Mesh.CGfxMeshPrimitives();
            GeomMesh.Init(rc, null, 1);
            CDrawPrimitiveDesc dpDesc = new CDrawPrimitiveDesc();

            dpDesc.SetDefault();
            dpDesc.StartIndex = 0xFFFFFFFF;
            GeomMesh.PushAtomLOD(0, ref dpDesc);

            var Mesh = new Graphics.Mesh.CGfxMesh();

            Mesh.Init(rc, null, GeomMesh);
            var img = new Graphics.Mesh.CGfxImage2D();

            Mesh.Tag = img;

            UpdateGeomMesh(rc, halfWidth);

            GraphActor = GamePlay.Actor.GActor.NewMeshActorDirect(Mesh);
            var meshComp = GraphActor.GetComponent <GamePlay.Component.GMeshComponent>();
            await meshComp.SetMaterialInstanceAsync(rc, 0, material, null);

            //await meshComp.SetMaterial(rc, 0, material, CEngine.Instance.PrebuildPassData.Image2DShadingEnvs, false, true);
            return(true);
        }
        public override void BindResources(Graphics.Mesh.CGfxMesh mesh, CPass pass)
        {
            var TexBinder     = pass.ShaderResources;
            var SamplerBinder = pass.ShaderSamplerBinder;
            var Shader        = pass.Effect;

            if (Shader.CacheData.EnvMapBindPoint != UInt32.MaxValue)
            {
                TexBinder.PSBindTexture(Shader.CacheData.EnvMapBindPoint, mEnvMap);
            }

            if (Shader.CacheData.SampEnvMapBindPoint != UInt32.MaxValue)
            {
                SamplerBinder.PSBindSampler(Shader.CacheData.SampEnvMapBindPoint, SamplerStat);
            }

            if (Shader.CacheData.BindingSlot_ShadowMap != UInt32.MaxValue)
            {
                TexBinder.PSBindTexture(Shader.CacheData.BindingSlot_ShadowMap, mTex_ShadowMap);
            }
            if (Shader.CacheData.BindingSlot_ShadowMapSampler != UInt32.MaxValue)
            {
                SamplerBinder.PSBindSampler(Shader.CacheData.BindingSlot_ShadowMapSampler, mSampler_ShadowMap);
            }
        }
        public void BindScreenTexture2Mesh(Graphics.Mesh.CGfxMesh mesh, UInt32 atom, string shaderVar)
        {
            if (atom >= mesh.MtlMeshArray.Length)
            {
                return;
            }
            CTextureBindInfo txInfo = new CTextureBindInfo();

            for (int i = 0; i < mesh.MtlMeshArray[atom].PrebuildPassArray.Length; i++)
            {
                var pass = mesh.MtlMeshArray[atom].PrebuildPassArray[i];
                if (pass == null || pass.GpuProgram == null)
                {
                    continue;
                }
                var TexBinder     = pass.ShaderResources;
                var SamplerBinder = pass.ShaderSamplerBinder;
                var Shader        = pass.GpuProgram;

                if (Shader.FindTextureBindInfo(pass.MtlInst, shaderVar, ref txInfo))
                {
                    TexBinder.PSBindTexture(txInfo.PSBindPoint, OffScreenTexture);
                    TexBinder.SetUserControlTexture(txInfo.PSBindPoint, true);
                }
            }
        }
Exemple #4
0
 public void RegisterMesh(SceneDataManager scene, Graphics.Mesh.CGfxMesh mesh)
 {
     for (int i = 0; i < mesh.MtlMeshArray.Length; i++)
     {
         var materailId = scene.GetOrAddMaterialId(mesh.MtlMeshArray[i].MtlInst);
     }
 }
Exemple #5
0
 public override void TickLogic(CRenderContext rc, Graphics.Mesh.CGfxMesh mesh, Int64 time)
 {
     if (ParticleSys.Effector != null)
     {
         UpdateTime();
         ParticleSys.Effector.Get(false).Tick(rc.ImmCommandList, ParticleSys, CEngine.Instance.EngineElapseTimeSecond * Speed);
         if (mPass != null)
         {
             mPass.SetInstanceNumber(ParticleSys.ParticleNumber);
         }
     }
 }
        public ActorProxy QueryActor(Graphics.Mesh.CGfxMesh mesh)
        {
            if (ValidActorPool.Count == 0)
            {
                for (int i = 0; i < 100; i++)
                {
                    var ap = new ActorProxy();
                    ap.InitProxy(this);
                    ValidActorPool.Enqueue(ap);
                }
            }
            var result = ValidActorPool.Dequeue();

            result.SetShowMesh(CEngine.Instance.RenderContext.ImmCommandList, mesh);
            result.Checked = true;
            return(result);
        }
Exemple #7
0
        public override void BindResources(Graphics.Mesh.CGfxMesh mesh, CPass pass)
        //, CConstantBuffer cbPerInstance, CShaderResources TexBinder, CShaderSamplers SamplerBinder, CShaderProgram Shader)
        {
            var TexBinder     = pass.ShaderResources;
            var SamplerBinder = pass.ShaderSamplerBinder;
            var Shader        = pass.Effect;

            if (Shader.CacheData.EnvMapBindPoint != UInt32.MaxValue)
            {
                TexBinder.PSBindTexture(Shader.CacheData.EnvMapBindPoint, mEnvMap);
            }

            if (Shader.CacheData.SampEnvMapBindPoint != UInt32.MaxValue)
            {
                SamplerBinder.PSBindSampler(Shader.CacheData.SampEnvMapBindPoint, SamplerStat);
            }
        }
Exemple #8
0
        public override void BindResources(Graphics.Mesh.CGfxMesh mesh, CPass pass)
        //, CConstantBuffer cbPerInstance, CShaderResources TexBinder, CShaderSamplers SamplerBinder, CShaderProgram Shader)
        {
            var TexBinder     = pass.ShaderResources;
            var SamplerBinder = pass.ShaderSamplerBinder;
            var Shader        = pass.GpuProgram;
            //up
            {
                if (Shader.FindTextureBindInfo(null, "gSrcTexUp", ref mTexBindInfo_SrcTexUp))
                {
                    TexBinder.PSBindTexture(mTexBindInfo_SrcTexUp.PSBindPoint, mSrcTexUp);
                }

                if (Shader.FindSamplerBindInfo(null, "Samp_gSrcTexUp", ref mSamplerBindInfo_SrcTexUp) == true)
                {
                    mSamplerStateDesc_SrcTexUp.SetDefault();
                    mSamplerStateDesc_SrcTexUp.Filter   = ESamplerFilter.SPF_MIN_MAG_MIP_LINEAR;
                    mSamplerStateDesc_SrcTexUp.AddressU = EAddressMode.ADM_CLAMP;
                    mSamplerStateDesc_SrcTexUp.AddressV = EAddressMode.ADM_CLAMP;

                    var SamplerStat = CEngine.Instance.SamplerStateManager.GetSamplerState(CEngine.Instance.RenderContext, mSamplerStateDesc_SrcTexUp);

                    SamplerBinder.PSBindSampler(mSamplerBindInfo_SrcTexUp.PSBindPoint, SamplerStat);
                }
            }

            //down
            {
                if (Shader.FindTextureBindInfo(null, "gSrcTexDown", ref mTexBindInfo_SrcTexDown))
                {
                    TexBinder.PSBindTexture(mTexBindInfo_SrcTexDown.PSBindPoint, mSrcTexDown);
                }

                if (Shader.FindSamplerBindInfo(null, "Samp_gSrcTexDown", ref mSamplerBindInfo_SrcTexDown) == true)
                {
                    mSamplerStateDesc_SrcTexDown.SetDefault();
                    mSamplerStateDesc_SrcTexDown.Filter   = ESamplerFilter.SPF_MIN_MAG_MIP_LINEAR;
                    mSamplerStateDesc_SrcTexDown.AddressU = EAddressMode.ADM_CLAMP;
                    mSamplerStateDesc_SrcTexDown.AddressV = EAddressMode.ADM_CLAMP;

                    var SamplerStat = CEngine.Instance.SamplerStateManager.GetSamplerState(CEngine.Instance.RenderContext, mSamplerStateDesc_SrcTexDown);

                    SamplerBinder.PSBindSampler(mSamplerBindInfo_SrcTexDown.PSBindPoint, SamplerStat);
                }
            }
        }
        public override void BindResources(Graphics.Mesh.CGfxMesh mesh, CPass pass)
        {
            //CTextureBindInfo info = new CTextureBindInfo(); //this is a struct,so you can use new as convenient;
            //if (Shader.FindTextureBindInfo(null, "gEnvMap", ref info))
            //{
            //    TexBinder.PSBindTexture(info.PSBindPoint, mEnvMap);
            //}

            //var SamplerBindInfo = new CSamplerBindInfo();
            //if (Shader.FindSamplerBindInfo(null, "Samp_gEnvMap", ref SamplerBindInfo) == true)
            //{
            //    var SamplerStatDesc = new CSamplerStateDesc();
            //    SamplerStatDesc.SetDefault();
            //    SamplerStatDesc.Filter = ESamplerFilter.SPF_MIN_MAG_MIP_LINEAR;
            //    var SamplerStat = CEngine.Instance.SamplerStateManager.GetSamplerState(CEngine.Instance.RenderContext, SamplerStatDesc);

            //    SamplerBinder.PSBindSampler(SamplerBindInfo.PSBindPoint, SamplerStat);
            //}
        }
Exemple #10
0
        public override void BindResources(Graphics.Mesh.CGfxMesh mesh, CPass pass)
        //, CConstantBuffer cbPerInstance, CShaderResources TexBinder, CShaderSamplers SamplerBinder, CShaderProgram Shader)
        {
            var TexBinder     = pass.ShaderResources;
            var SamplerBinder = pass.ShaderSamplerBinder;
            var Shader        = pass.GpuProgram;

            //base scene view;
            if (Shader.FindTextureBindInfo(null, "gBaseSceneView", ref mTexBindInfo_BaseSceneView))
            {
                TexBinder.PSBindTexture(mTexBindInfo_BaseSceneView.PSBindPoint, mBaseSceneView);
            }

            if (Shader.FindSamplerBindInfo(null, "Samp_gBaseSceneView", ref mSamplerBindInfo_BaseSceneView) == true)
            {
                mSamplerStateDesc_BaseSceneView.SetDefault();
                mSamplerStateDesc_BaseSceneView.Filter   = ESamplerFilter.SPF_MIN_MAG_MIP_LINEAR;
                mSamplerStateDesc_BaseSceneView.AddressU = EAddressMode.ADM_CLAMP;
                mSamplerStateDesc_BaseSceneView.AddressV = EAddressMode.ADM_CLAMP;

                var SamplerStat = CEngine.Instance.SamplerStateManager.GetSamplerState(CEngine.Instance.RenderContext, mSamplerStateDesc_BaseSceneView);

                SamplerBinder.PSBindSampler(mSamplerBindInfo_BaseSceneView.PSBindPoint, SamplerStat);
            }

            //bloom;
            if (Shader.FindTextureBindInfo(null, "gBloomTex", ref mTexBindInfo_BloomTex))
            {
                TexBinder.PSBindTexture(mTexBindInfo_BloomTex.PSBindPoint, mBloomTex);
            }

            if (Shader.FindSamplerBindInfo(null, "Samp_gBloomTex", ref mSamplerBindInfo_BloomTex) == true)
            {
                mSamplerStateDesc_BloomTex.SetDefault();
                mSamplerStateDesc_BloomTex.Filter   = ESamplerFilter.SPF_MIN_MAG_MIP_LINEAR;
                mSamplerStateDesc_BloomTex.AddressU = EAddressMode.ADM_CLAMP;
                mSamplerStateDesc_BloomTex.AddressV = EAddressMode.ADM_CLAMP;

                var SamplerStat = CEngine.Instance.SamplerStateManager.GetSamplerState(CEngine.Instance.RenderContext, mSamplerStateDesc_BloomTex);

                SamplerBinder.PSBindSampler(mSamplerBindInfo_BloomTex.PSBindPoint, SamplerStat);
            }
        }
        public override void BindResources(Graphics.Mesh.CGfxMesh mesh, CPass pass)
        //, CConstantBuffer cbPerInstance, CShaderResources TexBinder, CShaderSamplers SamplerBinder, CShaderProgram Shader)
        {
            var TexBinder     = pass.ShaderResources;
            var SamplerBinder = pass.ShaderSamplerBinder;
            var effect        = pass.Effect;

            //env map;

            if (effect.CacheData.EnvMapBindPoint != UInt32.MaxValue)
            {
                TexBinder.PSBindTexture(effect.CacheData.EnvMapBindPoint, mEnvMap);
            }

            if (effect.CacheData.SampEnvMapBindPoint != UInt32.MaxValue)
            {
                SamplerBinder.PSBindSampler(effect.CacheData.SampEnvMapBindPoint, SamplerStat);
            }

            //eye env map;
            if (effect.CacheData.EyeEnvMapBindPoint != UInt32.MaxValue)
            {
                TexBinder.PSBindTexture(effect.CacheData.EyeEnvMapBindPoint, mEyeEnvMap);
            }

            if (effect.CacheData.SampEyeEnvMapBindPoint != UInt32.MaxValue)
            {
                SamplerBinder.PSBindSampler(effect.CacheData.SampEyeEnvMapBindPoint, SamplerStat);
            }

            //shadow map binding;
            if (effect.CacheData.BindingSlot_ShadowMap != UInt32.MaxValue)
            {
                TexBinder.PSBindTexture(effect.CacheData.BindingSlot_ShadowMap, mTex_ShadowMap);
            }

            if (effect.CacheData.BindingSlot_ShadowMapSampler != UInt32.MaxValue)
            {
                SamplerBinder.PSBindSampler(effect.CacheData.BindingSlot_ShadowMapSampler, mSampler_ShadowMap);
            }
        }
Exemple #12
0
        public override void BindResources(Graphics.Mesh.CGfxMesh mesh, CPass pass)
        {
            var TexBinder     = pass.ShaderResources;
            var SamplerBinder = pass.ShaderSamplerBinder;
            var Shader        = pass.GpuProgram;

            if (Shader.FindTextureBindInfo(null, "gPickedSetUpTex", ref mTBI_PickedSetUp))
            {
                TexBinder.PSBindTexture(mTBI_PickedSetUp.PSBindPoint, mSRV_PickedSetUp);
            }

            if (Shader.FindSamplerBindInfo(null, "Samp_gPickedSetUp", ref mSBI_PickedSetUp) == true)
            {
                mSSD_PickedSetUp.SetDefault();
                mSSD_PickedSetUp.Filter   = ESamplerFilter.SPF_MIN_MAG_MIP_POINT;
                mSSD_PickedSetUp.AddressU = EAddressMode.ADM_CLAMP;
                mSSD_PickedSetUp.AddressV = EAddressMode.ADM_CLAMP;

                var SamplerStat = CEngine.Instance.SamplerStateManager.GetSamplerState(CEngine.Instance.RenderContext, mSSD_PickedSetUp);

                SamplerBinder.PSBindSampler(mSBI_PickedSetUp.PSBindPoint, SamplerStat);
            }

            //
            if (Shader.FindTextureBindInfo(null, "gPickedBlurTex", ref mTBI_PickedBlur))
            {
                TexBinder.PSBindTexture(mTBI_PickedBlur.PSBindPoint, mSRV_PickedBlur);
            }

            if (Shader.FindSamplerBindInfo(null, "Samp_gPickedBlur", ref mSBI_PickedBlur) == true)
            {
                mSSD_PickedBlur.SetDefault();
                mSSD_PickedBlur.Filter   = ESamplerFilter.SPF_MIN_MAG_MIP_POINT;
                mSSD_PickedBlur.AddressU = EAddressMode.ADM_CLAMP;
                mSSD_PickedBlur.AddressV = EAddressMode.ADM_CLAMP;

                var SamplerStat = CEngine.Instance.SamplerStateManager.GetSamplerState(CEngine.Instance.RenderContext, mSSD_PickedBlur);

                SamplerBinder.PSBindSampler(mSBI_PickedBlur.PSBindPoint, SamplerStat);
            }
        }
Exemple #13
0
        public override void BindResources(Graphics.Mesh.CGfxMesh mesh, CPass pass)
        {
            var fmesh = mesh.Tag as CFontMesh;

            if (fmesh != null)
            {
                if (fmesh.CBuffer == null)
                {
                    fmesh.CBuffer = CEngine.Instance.RenderContext.CreateConstantBuffer(pass.Effect.ShaderProgram, pass.Effect.CacheData.CBID_ShadingEnv);
                    int TextMatrixId  = fmesh.CBuffer.FindVar("RenderMatrix");
                    int TextOpacityId = fmesh.CBuffer.FindVar("TextOpacity");
                    int TextColorId   = fmesh.CBuffer.FindVar("TextColor");

                    fmesh.CBuffer.SetValue(TextMatrixId, fmesh.RenderMatrix, 0);
                    fmesh.CBuffer.SetValue(TextOpacityId, fmesh.TextOpacity, 0);
                    fmesh.CBuffer.SetValue(TextColorId, fmesh.TextColor, 0);
                }

                pass.BindCBuffer(pass.GpuProgram, pass.Effect.CacheData.CBID_ShadingEnv, fmesh.CBuffer);
            }
        }
Exemple #14
0
        public void AddMeshInstance(CRenderContext rc, Graphics.Mesh.CGfxMesh mesh, RName clusterName, GamePlay.Component.GPlacementComponent placement)
        {
            var  worldMatrix = placement.WorldMatrix;
            uint instStart   = (uint)mGpuInstanceDatas.Count;

            for (int i = 0; i < mesh.MtlMeshArray.Length; i++)
            {
                var data = new GpuMeshInstanceData();
                data.VTMaterialId.x = 1;//(uint)GetOrAddMaterialId(mesh.MtlMeshArray[i].MtlInst);
                data.Matrix         = worldMatrix;
                Matrix.Invert(ref data.Matrix, out data.InvMatrix);
                data.Matrix.Transpose();
                data.InvMatrix.Transpose();

                mGpuInstanceDatas.Add(data);

                //var module = CEngine.Instance.GetCurrentModule();
                //module.World.AddActor();
            }

            uint indexOffset;

            Cluster.ClusteredMesh cluster = GetClusteredMesh(rc, clusterName, out indexOffset);
            for (int i = 0; i < cluster.ClusterDatas.Count; i++)
            {
                Cluster.GpuCluster gpuCluster = cluster.ClusterDatas[i];
                gpuCluster.InstanceId     += instStart;
                gpuCluster.StartFaceIndex += indexOffset / 3;

                BoundingBox tmpBox = new BoundingBox(gpuCluster.BoundCenter - gpuCluster.BoundExtent, gpuCluster.BoundCenter + gpuCluster.BoundExtent);
                tmpBox = BoundingBox.Transform(ref tmpBox, ref worldMatrix);

                gpuCluster.BoundCenter = tmpBox.GetCenter();
                gpuCluster.BoundExtent = tmpBox.GetSize() * 0.5f;

                mGpuClusters.Add(gpuCluster);
            }
        }
Exemple #15
0
        public override void BindResources(Graphics.Mesh.CGfxMesh mesh, CPass pass)
        {
            var TexBinder     = pass.ShaderResources;
            var SamplerBinder = pass.ShaderSamplerBinder;
            var Shader        = pass.GpuProgram;

            if (Shader.FindTextureBindInfo(null, "gSrcTex", ref mTexBindInfo_Src))
            {
                TexBinder.PSBindTexture(mTexBindInfo_Src.PSBindPoint, mSRV_Src);
            }

            if (Shader.FindSamplerBindInfo(null, "Samp_gSrcTex", ref mSampBindInfo_Src) == true)
            {
                mSampStateDesc_Src.SetDefault();
                mSampStateDesc_Src.Filter   = ESamplerFilter.SPF_MIN_MAG_LINEAR_MIP_POINT;
                mSampStateDesc_Src.AddressU = EAddressMode.ADM_CLAMP;
                mSampStateDesc_Src.AddressV = EAddressMode.ADM_CLAMP;
                mSampStateDesc_Src.AddressW = EAddressMode.ADM_CLAMP;

                var SamplerStat = CEngine.Instance.SamplerStateManager.GetSamplerState(CEngine.Instance.RenderContext, mSampStateDesc_Src);
                SamplerBinder.PSBindSampler(mSampBindInfo_Src.PSBindPoint, SamplerStat);
            }
        }
Exemple #16
0
 public virtual void BindResources(Graphics.Mesh.CGfxMesh mesh, CPass pass)
 {
     //每个shadingenv根据自己的shader代码,在这里绑定纹理,设置cbPerInstance变量
     //正常情况ShadingEnv不应该给cbPerInstance设置变量,特殊需求在这个函数特殊写
     //shadingEnv的变量,应该主要在非cbPerInstance里面
 }
Exemple #17
0
 public override void BindResources(Graphics.Mesh.CGfxMesh mesh, CPass pass)
 {
 }
Exemple #18
0
        public override void BindResources(Graphics.Mesh.CGfxMesh mesh, CPass pass)
        {
            var TexBinder     = pass.ShaderResources;
            var SamplerBinder = pass.ShaderSamplerBinder;
            var Shader        = pass.GpuProgram;

            //base scene view;
            if (Shader.FindTextureBindInfo(null, "gBaseSceneView", ref mTexBindInfo_BaseSceneView))
            {
                TexBinder.PSBindTexture(mTexBindInfo_BaseSceneView.PSBindPoint, mBaseSceneView);
            }

            if (Shader.FindSamplerBindInfo(null, "Samp_gBaseSceneView", ref mSamplerBindInfo_BaseSceneView) == true)
            {
                mSamplerStateDesc_BaseSceneView.SetDefault();
                mSamplerStateDesc_BaseSceneView.Filter   = ESamplerFilter.SPF_MIN_MAG_LINEAR_MIP_POINT;
                mSamplerStateDesc_BaseSceneView.AddressU = EAddressMode.ADM_CLAMP;
                mSamplerStateDesc_BaseSceneView.AddressV = EAddressMode.ADM_CLAMP;
                mSamplerStateDesc_BaseSceneView.AddressW = EAddressMode.ADM_CLAMP;

                var SamplerStat = CEngine.Instance.SamplerStateManager.GetSamplerState(CEngine.Instance.RenderContext, mSamplerStateDesc_BaseSceneView);
                SamplerBinder.PSBindSampler(mSamplerBindInfo_BaseSceneView.PSBindPoint, SamplerStat);
            }

            //bloom;
            if (Shader.FindTextureBindInfo(null, "gBloomTex", ref mTexBindInfo_BloomTex))
            {
                TexBinder.PSBindTexture(mTexBindInfo_BloomTex.PSBindPoint, mBloomTex);
            }

            if (Shader.FindSamplerBindInfo(null, "Samp_gBloomTex", ref mSamplerBindInfo_BloomTex) == true)
            {
                mSamplerStateDesc_BloomTex.SetDefault();
                mSamplerStateDesc_BloomTex.Filter   = ESamplerFilter.SPF_MIN_MAG_LINEAR_MIP_POINT;
                mSamplerStateDesc_BloomTex.AddressU = EAddressMode.ADM_CLAMP;
                mSamplerStateDesc_BloomTex.AddressV = EAddressMode.ADM_CLAMP;
                mSamplerStateDesc_BloomTex.AddressW = EAddressMode.ADM_CLAMP;

                var SamplerStat = CEngine.Instance.SamplerStateManager.GetSamplerState(CEngine.Instance.RenderContext, mSamplerStateDesc_BloomTex);
                SamplerBinder.PSBindSampler(mSamplerBindInfo_BloomTex.PSBindPoint, SamplerStat);
            }

            //vignette;
            if (Shader.FindTextureBindInfo(null, "gVignette", ref mTexBindInfo_Vignette))
            {
                TexBinder.PSBindTexture(mTexBindInfo_Vignette.PSBindPoint, mVignetteTex);
            }

            if (Shader.FindSamplerBindInfo(null, "Samp_gVignette", ref mSamplerBindInfo_Vignette) == true)
            {
                mSamplerStateDesc_Vignette.SetDefault();
                mSamplerStateDesc_Vignette.Filter   = ESamplerFilter.SPF_MIN_MAG_LINEAR_MIP_POINT;
                mSamplerStateDesc_Vignette.AddressU = EAddressMode.ADM_CLAMP;
                mSamplerStateDesc_Vignette.AddressV = EAddressMode.ADM_CLAMP;
                mSamplerStateDesc_Vignette.AddressW = EAddressMode.ADM_CLAMP;
                var SamplerStat = CEngine.Instance.SamplerStateManager.GetSamplerState(CEngine.Instance.RenderContext, mSamplerStateDesc_Vignette);
                SamplerBinder.PSBindSampler(mSamplerBindInfo_Vignette.PSBindPoint, SamplerStat);
            }

            //sun shaft;
            if (Shader.FindTextureBindInfo(null, "gSunShaft", ref mTexBindInfo_SunShaft))
            {
                TexBinder.PSBindTexture(mTexBindInfo_SunShaft.PSBindPoint, mSunShaftTex);
            }

            if (Shader.FindSamplerBindInfo(null, "Samp_gSunShaft", ref mSamplerBindInfo_SunShaft) == true)
            {
                mSamplerStateDesc_SunShaft.SetDefault();
                mSamplerStateDesc_SunShaft.Filter   = ESamplerFilter.SPF_MIN_MAG_LINEAR_MIP_POINT;
                mSamplerStateDesc_SunShaft.AddressU = EAddressMode.ADM_CLAMP;
                mSamplerStateDesc_SunShaft.AddressV = EAddressMode.ADM_CLAMP;
                mSamplerStateDesc_SunShaft.AddressW = EAddressMode.ADM_CLAMP;
                var SamplerStat = CEngine.Instance.SamplerStateManager.GetSamplerState(CEngine.Instance.RenderContext, mSamplerStateDesc_SunShaft);
                SamplerBinder.PSBindSampler(mSamplerBindInfo_SunShaft.PSBindPoint, SamplerStat);
            }

            //mobile ao srv binding;
            if (Shader.FindTextureBindInfo(null, "gMobileAoTex", ref mTBI_MobileAo))
            {
                TexBinder.PSBindTexture(mTBI_MobileAo.PSBindPoint, mSRV_MobileAo);
            }

            if (Shader.FindSamplerBindInfo(null, "Samp_gMobileAoTex", ref mSBI_MobileAo) == true)
            {
                SamplerBinder.PSBindSampler(mSBI_MobileAo.PSBindPoint, mSampStat_MobileAo);
            }
        }
Exemple #19
0
 public void AddMeshInstance(SceneDataManager scene, Graphics.Mesh.CGfxMesh mesh, GamePlay.Component.GPlacementComponent placement)
 {
 }
            public void SetShowMesh(CCommandList cmd, Graphics.Mesh.CGfxMesh mesh)
            {
                var meshComp = Actor.GetComponent <Component.GMeshComponent>();

                meshComp.SetSceneMesh(cmd, mesh);
            }
        //实测,在android上,性能分析工具调用本身开心就很大
        //public static Profiler.TimeScope ScopeFind = Profiler.TimeScopeManager.GetTimeScope(typeof(GInstancingManager), "PushInstance.Find", Profiler.TimeScope.EProfileFlag.Windows);
        //public static Profiler.TimeScope ScopePush = Profiler.TimeScopeManager.GetTimeScope(typeof(GInstancingManager), "PushInstance.Push", Profiler.TimeScope.EProfileFlag.Windows);
        public void PushInstance(GInstancingComponent inst, int lightNum, ref UInt32_4 lightIndices, Graphics.Mesh.CGfxMesh oriMesh, EPoolType poolType)
        {
            var meshComp = inst.HostContainer as GMeshComponent;

            if (meshComp == null)
            {
                return;
            }
            //ScopeFind.Begin();
            if (oriMesh.mInstancePool == null || oriMesh.mShadowInstancePool == null)
            {
                oriMesh.mInstancePool = new GInstancing();
                Meshes[oriMesh.Name]  = oriMesh.mInstancePool;

                var task = oriMesh.mInstancePool.Init(oriMesh.Name, false);

                oriMesh.mShadowInstancePool = new GInstancing();
                ShadowMeshes[oriMesh.Name]  = oriMesh.mShadowInstancePool;

                var task1 = oriMesh.mShadowInstancePool.Init(oriMesh.Name, true);
            }
            GInstancing instType = null;

            switch (poolType)
            {
            case EPoolType.Normal:
                instType = oriMesh.mInstancePool;
                break;

            case EPoolType.Shadow:
                instType = oriMesh.mShadowInstancePool;
                break;
            }
            //ScopeFind.End();

            //ScopePush.Begin();
            instType.PushInstance(ref meshComp.Placement.mDrawPosition,
                                  ref meshComp.Placement.mDrawScale,
                                  ref meshComp.Placement.mDrawRotation,
                                  ref lightIndices,
                                  lightNum);
            //ScopePush.End();
        }