public void SetResourceUsage(GpuResourceUsage resourceUsage, int register, GpuShaderType target = GpuShaderType.All) { //set resource Direct3D instance to pipeline's shader //we use target shader to flag which shader the resource will set to //we can use "&" to make sure if we need set buffer to vertex shader if ((target & GpuShaderType.VertexShader) != GpuShaderType.None) { ImmediateContext.VertexShader.SetShaderResource(register, resourceUsage.ShaderResource); } //we can use "&" to make sure if we need set buffer to pixel shader if ((target & GpuShaderType.PixelShader) != GpuShaderType.None) { ImmediateContext.PixelShader.SetShaderResource(register, resourceUsage.ShaderResource); } }
public void SetSamplerState(GpuSamplerState samplerState, int register, GpuShaderType target = GpuShaderType.All) { //set sampler state Direct3D instance to pipeline's shader //we use target shader to flag which shader the resource will set to //we can use "&" to make sure if we need set sampler state to vertex shader if ((target & GpuShaderType.VertexShader) != GpuShaderType.None) { ImmediateContext.VertexShader.SetSampler(register, samplerState.SamplerState); } //we can use "&" to make sure if we need set sampler state to pixel shader if ((target & GpuShaderType.PixelShader) != GpuShaderType.None) { ImmediateContext.PixelShader.SetSampler(register, samplerState.SamplerState); } }
public void SetBuffer(GpuBuffer buffer, int register, GpuShaderType target = GpuShaderType.All) { //set buffer Direct3D instance to pipeline's shader //we use target shader to flag which shader the buffer will set to //test if the buffer can be set Debug.Assert(GpuConvert.HasBindUsage(buffer.ResourceInfo.BindUsage, GpuBindUsage.ConstantBuffer) == true); //we can use "&" to make sure if we need set buffer to vertex shader if ((target & GpuShaderType.VertexShader) != GpuShaderType.None) { ImmediateContext.VertexShader.SetConstantBuffer(register, buffer.Resource as SharpDX.Direct3D11.Buffer); } //we can use "&" to make sure if we need set buffer to pixel shader if ((target & GpuShaderType.PixelShader) != GpuShaderType.None) { ImmediateContext.PixelShader.SetConstantBuffer(register, buffer.Resource as SharpDX.Direct3D11.Buffer); } }