protected override void Update(RenderingContext context, ReadOnlySpan <Entity> entities) { var commandList = context.CommandList; var cameraTransform = context.CameraTransform; commandList.UpdateBuffer(ProjectionMatrixBuffer, 0, context.ProjectionMatrix); var viewMatrix = cameraTransform.GetViewMatrix(); commandList.UpdateBuffer(ViewMatrixBuffer, 0, viewMatrix); commandList.UpdateBuffer(CameraInputsBuffer, 0, new CameraInfo() { Position = cameraTransform.WorldPosition, ViewDistance = ViewDistance, BlurLength = BlurLength }); var frustrum = new BoundingFrustum(viewMatrix * context.ProjectionMatrix); var transparents = new List <(Material mat, MaterialTexture texture, ResizableBuffer <VertexPositionTextureNormal> vertices, ResizableBuffer <float> lighting, ResizableBuffer <ushort> indices, Transform transform)>(); var materialInputs = new MaterialInputs(); materialInputs.ResouceSets["SceneInputs"] = SceneInputsResourceSet; materialInputs.ResouceSets["CameraInputs"] = CameraInputsResourceSet; foreach (var entity in entities) { ref var material = ref entity.Get <Material>(); ref var texture = ref entity.Get <MaterialTexture>();
public void RunPipeline(CommandList commandList, MaterialInputs inputs, uint numIndices) { if (_pipeline != null) { for (uint i = 0; i < _vertexInputs.Length; i++) { commandList.SetVertexBuffer(i, inputs.VertexBuffers[_vertexInputs[i]]); } commandList.SetPipeline(_pipeline); for (uint i = 0; i < _resourceInputs.Length; i++) { commandList.SetGraphicsResourceSet(i, inputs.ResouceSets[_resourceInputs[i]]); } commandList.SetIndexBuffer(inputs.IndexBuffer, IndexFormat.UInt16); commandList.DrawIndexed(numIndices, 1, 0, 0, 0); } }