Beispiel #1
0
        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>();
Beispiel #2
0
        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);
            }
        }