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); }
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(); } }
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); }
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)); }
public void Render(VeldridRenderState state) { }