public CShaderSamplers GetSamplerBinder_PickedEditor(CRenderContext RHICtx, CShaderProgram shader)
        {
            if (shader == null)
            {
                return(null);
            }

            if (mSamplerBinder_PickedEditor == null)
            {
                mSamplerBinder_PickedEditor = new CShaderSamplers();
                using (var it = MtlInst.Material.GetSamplerStateDescs().GetEnumerator())
                {
                    while (it.MoveNext())
                    {
                        var name              = it.Current.Key;
                        var samplerDesc       = it.Current.Value;
                        CSamplerBindInfo info = new CSamplerBindInfo();
                        if (shader.FindSamplerBindInfoByShaderName(MtlInst, name, ref info))
                        {
                            CSamplerState SamplerState = CEngine.Instance.SamplerStateManager.GetSamplerState(RHICtx, samplerDesc);
                            mSamplerBinder_PickedEditor.PSBindSampler(info.PSBindPoint, SamplerState);
                        }
                        else
                        {
                            var defaultSamplerDesc = new CSamplerStateDesc();
                            defaultSamplerDesc.SetDefault();
                            CSamplerState SamplerState = CEngine.Instance.SamplerStateManager.GetSamplerState(RHICtx, defaultSamplerDesc);
                            mSamplerBinder_PickedEditor.PSBindSampler(info.PSBindPoint, SamplerState);
                        }
                    }
                }
            }
            return(mSamplerBinder_PickedEditor);
        }
        public CShaderSamplers GetSamplerBinder_Shadow(CRenderContext RHICtx, CShaderProgram shader)
        {
            if (shader == null)
            {
                return(null);
            }

            if (mSamplerBinder_Shadow == null)
            {
                mSamplerBinder_Shadow = new CShaderSamplers();
                //var SamplerDesc = new CSamplerStateDesc();
                //SamplerDesc.SetDefault();
                //for (UInt32 i = 0; i < shader.SamplerNumber; i++)
                //{
                //    CSamplerBindInfo info = new CSamplerBindInfo();
                //    shader.GetSamplerBindInfo(i, ref info);
                //    MtlInst.GetSamplerStateDesc(i, ref SamplerDesc);
                //    CSamplerState SamplerState = CEngine.Instance.SamplerStateManager.GetSamplerState(RHICtx, SamplerDesc);
                //    mSamplerBinder_Shadow.PSBindSampler(info.PSBindPoint, SamplerState);
                //}
                using (var it = MtlInst.Material.GetSamplerStateDescs().GetEnumerator())
                {
                    while (it.MoveNext())
                    {
                        var name              = it.Current.Key;
                        var samplerDesc       = it.Current.Value;
                        CSamplerBindInfo info = new CSamplerBindInfo();
                        if (shader.FindSamplerBindInfoByShaderName(MtlInst, name, ref info))
                        {
                            CSamplerState SamplerState = CEngine.Instance.SamplerStateManager.GetSamplerState(RHICtx, samplerDesc);
                            mSamplerBinder_Shadow.PSBindSampler(info.PSBindPoint, SamplerState);
                        }
                        else
                        {
                            var defaultSamplerDesc = new CSamplerStateDesc();
                            defaultSamplerDesc.SetDefault();
                            CSamplerState SamplerState = CEngine.Instance.SamplerStateManager.GetSamplerState(RHICtx, defaultSamplerDesc);
                            mSamplerBinder_Shadow.PSBindSampler(info.PSBindPoint, SamplerState);
                        }
                    }
                }
            }

            return(mSamplerBinder_Shadow);
        }
 public void GetSamplerBinder(CRenderContext RHICtx, CShaderProgram shader, CShaderSamplers sampler)
 {
     if (shader == null || MtlInst.Material.GetSamplerStateDescs().Count <= 0)
     {
         return;
     }
     using (var it = MtlInst.Material.GetSamplerStateDescs().GetEnumerator())
     {
         while (it.MoveNext())
         {
             var name              = it.Current.Key;
             var samplerDesc       = it.Current.Value;
             CSamplerBindInfo info = new CSamplerBindInfo();
             if (shader.FindSamplerBindInfoByShaderName(MtlInst, name, ref info))
             {
                 CSamplerState SamplerState = CEngine.Instance.SamplerStateManager.GetSamplerState(RHICtx, samplerDesc);
                 sampler.PSBindSampler(info.PSBindPoint, SamplerState);
             }
         }
     }
 }