Example #1
0
        public void DispatchToRenderStage(IMeshRenderStageModel stage, CommandList cl, RenderCommandQueueItem command)
        {
            var surface = _surfaceManager.RetrieveSurface(command.Surface, new GpuSurfaceType[] { GpuSurfaceType.Texture, GpuSurfaceType.Internal });
            var source  = _surfaceManager.RetrieveSurface(command.Texture0, new GpuSurfaceType[] { GpuSurfaceType.SwapChainOutput, GpuSurfaceType.Internal });
            var camera  = _cameraManager.RetrieveCameraModel3D(command.Camera);

            _meshRenderer.Render(cl, stage, source, surface, camera);
        }
Example #2
0
        public void Render(CommandList cl, IMeshRenderStageModel stage, GpuSurface source, GpuSurface surface, ICameraModel3D camera)
        {
            if (cl == null || stage == null || source == null || surface == null || camera == null)
            {
                _frameworkMessenger.Report("Warning: you are feeding the Mesh Stage Renderer null inputs, aborting");
                return;
            }

            cl.SetFramebuffer(surface.Framebuffer);
            _viewportManager.ConfigureViewportForActiveFramebuffer(cl);
            cl.ClearDepthStencil(1.0f);
            cl.SetPipeline(_pipeline);
            cl.SetGraphicsResourceSet(0, camera.WvpResource);
            cl.SetGraphicsResourceSet(1, camera.PositionResource);
            cl.SetGraphicsResourceSet(2, source.ResourceSet_TexWrap);
            cl.SetGraphicsResourceSet(3, stage.LightPropertiesResource);
            cl.SetGraphicsResourceSet(4, stage.LightsResource);
            cl.SetVertexBuffer(0, stage.MeshVertexBuffer);
            cl.Draw(stage.MeshNumberVertices);
        }
Example #3
0
 public void CacheStageModel(IMeshRenderStageModel model) => CachedMeshRenderStageModel       = model;