public void SetPipelineState(EffectPipelineStateHandle pipelineStateHandle) { if (_pipelineStateHandle == pipelineStateHandle) { return; } _pipelineStateHandle = pipelineStateHandle; _pipelineState = GetPipelineState(pipelineStateHandle); _dirtyFlags |= EffectDirtyFlags.PipelineState; }
public EffectPipelineState( RasterizerStateDescription rasterizerState, DepthStencilStateDescription depthStencilState, BlendStateDescription blendState) { RasterizerState = rasterizerState; DepthStencilState = depthStencilState; BlendState = blendState; // TODO: This is a bit ugly. _handle = null; _handle = EffectPipelineStateFactory.GetHandle(ref this); }
public EffectPipelineState( RasterizerStateDescription rasterizerState, DepthStencilStateDescription depthStencilState, BlendStateDescription blendState, OutputDescription outputDescription) { RasterizerState = rasterizerState; DepthStencilState = depthStencilState; BlendState = blendState; OutputDescription = outputDescription; Handle = null; Handle = EffectPipelineStateFactory.GetHandle(this); }
private Pipeline GetPipelineState(EffectPipelineStateHandle pipelineStateHandle) { if (!_cachedPipelineStates.TryGetValue(pipelineStateHandle, out var result)) { var description = new GraphicsPipelineDescription( pipelineStateHandle.EffectPipelineState.BlendState, pipelineStateHandle.EffectPipelineState.DepthStencilState, pipelineStateHandle.EffectPipelineState.RasterizerState, PrimitiveTopology.TriangleList, new ShaderSetDescription( _vertexDescriptors, new[] { _vertexShader, _pixelShader }), _resourceLayouts, pipelineStateHandle.EffectPipelineState.OutputDescription); _cachedPipelineStates[pipelineStateHandle] = result = AddDisposable(GraphicsDevice.ResourceFactory.CreateGraphicsPipeline(ref description)); } return(result); }
private PipelineState GetPipelineState(EffectPipelineStateHandle pipelineStateHandle) { if (!_cachedPipelineStates.TryGetValue(pipelineStateHandle, out var result)) { var description = PipelineStateDescription.Default; description.RenderTargetFormat = _graphicsDevice.BackBufferFormat; description.VertexDescriptor = _vertexDescriptor; description.VertexShader = _vertexShader; description.PixelShader = _pixelShader; description.RasterizerState = pipelineStateHandle.EffectPipelineState.RasterizerState; description.DepthStencilState = pipelineStateHandle.EffectPipelineState.DepthStencilState; description.BlendState = pipelineStateHandle.EffectPipelineState.BlendState; _cachedPipelineStates[pipelineStateHandle] = result = AddDisposable(new PipelineState(_graphicsDevice, description)); } return(result); }