Ejemplo n.º 1
0
            public void Update(VeldridRenderState state)
            {
                var factory = state.Factory;
                var cmd     = state.Commands;
                var window  = state.Window;

                UpdateViewMatrix();
                UpdatePerspectiveMatrix(window.Width, window.Height);

                state.Viewport.ProjectionMatrix = ProjectionMatrix;
                state.Viewport.ViewMatrix       = ViewMatrix;

                factory.CreateIfNullBuffer(ref state.Viewport.ProjectionBuffer, new BufferDescription(64, BufferUsage.UniformBuffer));
                factory.CreateIfNullBuffer(ref state.Viewport.ViewBuffer, new BufferDescription(64, BufferUsage.UniformBuffer));

                cmd.UpdateBuffer(state.Viewport.ProjectionBuffer, 0, state.Viewport.ProjectionMatrix);
                cmd.UpdateBuffer(state.Viewport.ViewBuffer, 0, state.Viewport.ViewMatrix);
            }
Ejemplo n.º 2
0
        public void Execute(SceneSnapshot snapshot)
        {
            IEntityManager emanager = snapshot.ContextState.GetEntityManager();

            using (var _cl = factory.CreateCommandList()) {
                _cl.Begin();

                var state = new VeldridRenderState()
                {
                    Factory  = factory,
                    GrDevice = gd,
                    Window   = window,
                    Commands = _cl,
                    Ticks    = (float)snapshot.FrameRateTime.TotalMilliseconds
                };

                var renderables = new List <IRenderableComponent>();

                _cl.SetFramebuffer(gd.SwapchainFramebuffer);
                _cl.SetFullViewports();
                _cl.ClearColorTarget(0, RgbaFloat.Black);
                _cl.ClearDepthStencil(1f);

                foreach (var entity in emanager.GetEntities().OrderBy(x => x.GetOrderIndex <VeldridRenderSystem>()))
                {
                    foreach (var com in entity.GetComponents <IRenderableComponent>())
                    {
                        com.Update(state);
                        renderables.Add(com);
                    }
                }

                foreach (var renderable in renderables)
                {
                    renderable.Render(state);
                }

                _cl.End();
                gd.SubmitCommands(_cl);
                gd.SwapBuffers();
            }
        }
Ejemplo n.º 3
0
        public void Render(VeldridRenderState state)
        {
            var cmd       = state.Commands;
            var factory   = state.Factory;
            var gd        = state.GrDevice;
            var _pipeline = factory.CreateGraphicsPipeline(new GraphicsPipelineDescription(
                                                               BlendStateDescription.SingleOverrideBlend,
                                                               DepthStencilStateDescription.Disabled,
                                                               RasterizerStateDescription.CullNone,
                                                               PrimitiveTopology.LineList,
                                                               Shader.passes.First().Description,
                                                               new[] { Resources.Layout },
                                                               gd.SwapchainFramebuffer.OutputDescription));

            cmd.SetPipeline(_pipeline);
            cmd.SetGraphicsResourceSet(0, Resources.Set);
            cmd.SetVertexBuffer(0, Bufferes.Vertex);
            cmd.SetIndexBuffer(Bufferes.Index, IndexFormat.UInt16);
            cmd.DrawIndexed((uint)Geometry.Indices.Count, 1, 0, 0, 0);
        }
Ejemplo n.º 4
0
        public void Update(VeldridRenderState state)
        {
            var cmd      = state.Commands;
            var factory  = state.Factory;
            var viewport = state.Viewport;

            Bufferes.Update(factory, cmd);
            Resources.Update(factory, cmd);

            Shader.UpdateShaders(factory);

            Bufferes.UpdateWorld();
            Bufferes.UpdateVertex(geometry);
            Bufferes.UpdateIndex(geometry);

            Resources.UpdateResourceLayout();
            Resources.UpdateResourceSet(new ResourceSetDescription(
                                            Resources.Layout,
                                            viewport.ProjectionBuffer,
                                            viewport.ViewBuffer,
                                            Bufferes.World));
        }
Ejemplo n.º 5
0
 public void Render(VeldridRenderState state)
 {
 }