public void Apply(CommonShaderStage stage) { standardSamplers.Apply(stage); stage.SetConstantBuffer(ShaderSlots.EnvironmentParameters, constantBufferManager.Buffer); stage.SetShaderResource(ShaderSlots.DiffuseEnvironmentCube, diffuseEnvironmentCube); stage.SetShaderResource(ShaderSlots.GlossyEnvironmentCube, glossyEnvironmentCube); }
internal void SetSrv(int slot, ISrvBindable srvBind) { ShaderResourceView srv = null; if (srvBind != null) { srv = srvBind.Srv; } if (srv == m_srvs[slot]) { return; } m_srvs[slot] = srv; m_shaderStage.SetShaderResource(slot, srv); m_statistics.SetSrvs++; }
/// <summary> /// Sets and gets shader resources bound to given shader stage. /// </summary> /// <param name="index"></param> /// <returns></returns> public ShaderResource this[int index] { set { resources[index] = value; stage.SetShaderResource(index, (value == null) ? null : value.SRV); } get { return(resources[index]); } }
private void SetTexture(CommonShaderStage stage, ShaderStageCache cache, int slot, ShaderResourceView view) { if (cache.Views[slot] != view) { // um Ressourcen Hazards zu vermeiden (Read und Write gleichzeitig) werden die RTs schon beim Setzen von Texturen neu gesetzt ApplyRenderTargets(); stage.SetShaderResource(slot, view); cache.Views[slot] = view; } }