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); } } } }