Exemple #1
0
        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);
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        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);
        }