void Render(GraphicsDevice gd, CommandList cl, SceneContext sc, RenderPasses pass, IDictionary <Type, IRenderer> renderers, IEnumerable <IRenderable> renderableList) { foreach (IRenderable renderable in renderableList) { if (renderable is IScreenSpaceRenderable) { sc.UpdateModelTransform(cl, renderable.Transform); } else { sc.UpdateModelTransform(cl, Camera.ViewMatrix * renderable.Transform); } var renderer = renderers[renderable.Renderer]; if ((renderer.RenderPasses & pass) != 0) { renderer.Render(gd, cl, sc, pass, renderable); } } }
private void CollectVisibleObjects( ref BoundingFrustum frustum, RenderPasses renderPass, List <CullRenderable> renderables) { _octree.GetContainedObjects(frustum, renderables, GetFilter(renderPass)); }
public void Render( RenderContext rc, SceneContext sc, RenderPasses pass, BoundingFrustum frustum, Comparer <RenderItemIndex> comparer = null) { _renderQueue.Clear(); _cullableStage.Clear(); CollectVisibleObjects(ref frustum, pass, _cullableStage); _renderQueue.AddRange(_cullableStage, _camera.Position); _renderableStage.Clear(); CollectFreeObjects(pass, _renderableStage); _renderQueue.AddRange(_renderableStage, _camera.Position); if (comparer == null) { _renderQueue.Sort(); } else { _renderQueue.Sort(comparer); } foreach (Renderable renderable in _renderQueue) { renderable.Render(rc, sc, pass); } }
public void Render(IRendererContext context, RenderPasses renderPass, IRenderable renderable) { if (context == null) { throw new ArgumentNullException(nameof(context)); } if (renderable == null) { throw new ArgumentNullException(nameof(renderable)); } var c = (VeldridRendererContext)context; var cl = c.CommandList; var dom = Resolve <IDeviceObjectManager>(); var overlay = (InfoOverlay)renderable; cl.PushDebugGroup(overlay.Name); var resourceSet = dom.GetDeviceObject <ResourceSet>((overlay, overlay, "ResourceSet")); cl.SetPipeline(_pipeline); cl.SetGraphicsResourceSet(0, resourceSet); cl.SetGraphicsResourceSet(1, c.SceneContext.CommonResourceSet); cl.SetVertexBuffer(0, _vertexBuffer); cl.SetIndexBuffer(_indexBuffer, IndexFormat.UInt16); cl.DrawIndexed((uint)Indices.Length); cl.PopDebugGroup(); }
public void Render( GraphicsDevice gd, CommandList rc, SceneContext sc, RenderPasses pass, BoundingFrustum frustum, Vector3 viewPosition, RenderQueue renderQueue, List <IRenderable> renderableList, Comparer <RenderItemIndex> comparer, bool threaded) { renderQueue.Clear(); renderableList.Clear(); CollectFreeObjects(pass, renderableList); renderQueue.AddRange(renderableList, viewPosition); if (comparer == null) { renderQueue.Sort(); } else { renderQueue.Sort(comparer); } foreach (var renderable in renderQueue) { renderable.Render(gd, rc, sc, pass); } }
public RenderContext(GraphicsDevice gd, CommandList cl, SceneContext sc, RenderPasses renderPass) { GraphicsDevice = gd; CommandList = cl; SceneContext = sc; RenderPass = renderPass; }
public void Render(IRendererContext context, RenderPasses renderPass, IRenderable renderable) { var c = (VeldridRendererContext)context; var cl = c.CommandList; var sc = c.SceneContext; ITextureManager textureManager = Resolve <ITextureManager>(); IDeviceObjectManager dom = Resolve <IDeviceObjectManager>(); EngineFlags engineFlags = Resolve <IEngineSettings>().Flags; // float depth = gd.IsDepthRangeZeroToOne ? 0 : 1; var sprite = (MultiSprite)renderable; var shaderKey = new SpriteShaderKey(sprite, engineFlags); sprite.PipelineId = shaderKey.GetHashCode(); //if (!shaderKey.UseArrayTexture) // return; cl.PushDebugGroup(sprite.Name); if (sc.PaletteView == null) { return; } TextureView textureView = (TextureView)textureManager?.GetTexture(sprite.Key.Texture); var resourceSet = dom.Get <ResourceSet>((sprite, textureView)); var instanceBuffer = dom.Get <DeviceBuffer>((sprite, sprite)); var uniformInfo = new SpriteUniformInfo { Flags = sprite.Key.Flags, TextureWidth = textureView?.Target.Width ?? 1, TextureHeight = textureView?.Target.Height ?? 1 }; if (sprite.Key.ScissorRegion.HasValue) { IWindowManager wm = Resolve <IWindowManager>(); var screenCoordinates = wm.UiToPixel(sprite.Key.ScissorRegion.Value); cl.SetScissorRect(0, (uint)screenCoordinates.X, (uint)screenCoordinates.Y, (uint)screenCoordinates.Width, (uint)screenCoordinates.Height); } cl.UpdateBuffer(_uniformBuffer, 0, uniformInfo); cl.SetPipeline(_pipelines[shaderKey]); cl.SetGraphicsResourceSet(0, resourceSet); cl.SetGraphicsResourceSet(1, sc.CommonResourceSet); cl.SetVertexBuffer(0, _vertexBuffer); cl.SetIndexBuffer(_indexBuffer, IndexFormat.UInt16); cl.SetVertexBuffer(1, instanceBuffer); //cl.SetViewport(0, new Viewport(0, 0, sc.MainSceneColorTexture.Width, sc.MainSceneColorTexture.Height, depth, depth)); cl.DrawIndexed((uint)Indices.Length, (uint)sprite.ActiveInstances, 0, 0, 0); //cl.SetViewport(0, new Viewport(0, 0, sc.MainSceneColorTexture.Width, sc.MainSceneColorTexture.Height, 0, 1)); if (sprite.Key.ScissorRegion.HasValue) { cl.SetFullScissorRect(0); } cl.PopDebugGroup(); }
public void Render( GraphicsDevice gd, CommandList rc, SceneContext sc, RenderPasses pass, BoundingFrustum frustum, RenderQueue renderQueue, List <CullRenderable> cullRenderableList, List <Renderable> renderableList, Comparer <RenderItemIndex> comparer, bool threaded) { renderQueue.Clear(); cullRenderableList.Clear(); CollectVisibleObjects(ref frustum, pass, cullRenderableList); renderQueue.AddRange(cullRenderableList, _camera.Position); renderableList.Clear(); CollectFreeObjects(pass, renderableList); renderQueue.AddRange(renderableList, _camera.Position); if (comparer == null) { renderQueue.Sort(); } else { renderQueue.Sort(comparer); } foreach (Renderable renderable in renderQueue) { renderable.Render(gd, rc, sc, pass); } if (threaded) { foreach (CullRenderable thing in cullRenderableList) { _allPerFrameRenderablesConcurrentBag.Add(thing); } foreach (Renderable thing in renderableList) { _allPerFrameRenderablesConcurrentBag.Add(thing); } } else { foreach (CullRenderable thing in cullRenderableList) { _allPerFrameRenderablesSet.Add(thing); } foreach (Renderable thing in renderableList) { _allPerFrameRenderablesSet.Add(thing); } } }
public void Render(GraphicsDevice gd, CommandList cl, GraphicsSystem sc, RenderPasses renderPass) { cl.SetPipeline(_pipeline); cl.SetGraphicsResourceSet(0, UseTintedTexture ? sc.DuplicatorTargetSet1 : sc.DuplicatorTargetSet0); cl.SetVertexBuffer(0, _vb); cl.SetIndexBuffer(_ib, IndexFormat.UInt16); cl.DrawIndexed(6, 1, 0, 0, 0); }
public void Render(IRendererContext context, RenderPasses renderPass, IRenderable r) { var c = (VeldridRendererContext)context; ApiUtil.Assert(renderPass == RenderPasses.Standard); _imguiRenderer.Render(c.GraphicsDevice, c.CommandList); c.CommandList.SetFullScissorRects(); }
public void Render(GraphicsDevice gd, CommandList cl, SceneContext sc, RenderPasses renderPass) { Debug.Assert(renderPass == RenderPasses.Overlay); ImGuiInterface.Draw(); _imguiRenderer.Render(gd, cl); }
public void Render(GraphicsDevice gd, CommandList cl, GraphicsSystem sc, RenderPasses renderPass) { cl.SetPipeline(_pipeline); cl.SetGraphicsResourceSet(0, sc.MainSceneViewResourceSet); cl.SetVertexBuffer(0, _vb); cl.SetIndexBuffer(_ib, IndexFormat.UInt16); cl.DrawIndexed(6, 1, 0, 0, 0); }
public void Render(GraphicsDevice gd, CommandList cl, SceneContext sc, RenderPasses renderPass, IRenderable r) { cl.SetPipeline(_pipeline); cl.SetGraphicsResourceSet(0, sc.DuplicatorTargetSet0); cl.SetVertexBuffer(0, _vb); cl.SetIndexBuffer(_ib, IndexFormat.UInt16); cl.DrawIndexed(6, 1, 0, 0, 0); }
public void Render(GraphicsDevice gd, CommandList cl, SceneContext sc, RenderPasses renderPass) { cl.SetVertexBuffer(0, _vb); cl.SetIndexBuffer(_ib, IndexFormat.UInt16); cl.SetPipeline(_pipeline); cl.SetGraphicsResourceSet(0, _resourceSet); cl.DrawIndexed((uint)s_indices.Length, 1, 0, 0, 0); }
public void Render(IRendererContext context, RenderPasses renderPass, IRenderable renderable) { if (context == null) { throw new ArgumentNullException(nameof(context)); } if (renderable == null) { throw new ArgumentNullException(nameof(renderable)); } var c = (VeldridRendererContext)context; var cl = c.CommandList; var dom = Resolve <IDeviceObjectManager>(); var engineFlags = Resolve <IEngineSettings>().Flags; var textureManager = Resolve <ITextureManager>(); var sprite = (MultiSprite)renderable; var shaderKey = new SpriteShaderKey(sprite, engineFlags); sprite.PipelineId = shaderKey.GetHashCode(); //if (!shaderKey.UseArrayTexture) // return; cl.PushDebugGroup(sprite.Name); if (c.SceneContext.PaletteView == null) { return; } TextureView textureView = (TextureView)textureManager?.GetTexture(sprite.Key.Texture); var resourceSet = dom.GetDeviceObject <ResourceSet>((sprite, textureView, "ResourceSet")); var instanceBuffer = dom.GetDeviceObject <DeviceBuffer>((sprite, sprite, "InstanceBuffer")); if (sprite.Key.ScissorRegion.HasValue) { IWindowManager wm = Resolve <IWindowManager>(); var screenCoordinates = wm.UiToPixel(sprite.Key.ScissorRegion.Value); cl.SetScissorRect(0, (uint)screenCoordinates.X, (uint)screenCoordinates.Y, (uint)screenCoordinates.Width, (uint)screenCoordinates.Height); } cl.SetPipeline(_pipelines[shaderKey]); cl.SetGraphicsResourceSet(0, resourceSet); cl.SetGraphicsResourceSet(1, c.SceneContext.CommonResourceSet); cl.SetVertexBuffer(0, _vertexBuffer); cl.SetIndexBuffer(_indexBuffer, IndexFormat.UInt16); cl.SetVertexBuffer(1, instanceBuffer); cl.DrawIndexed((uint)Indices.Length, (uint)sprite.ActiveInstances, 0, 0, 0); if (sprite.Key.ScissorRegion.HasValue) { cl.SetFullScissorRect(0); } cl.PopDebugGroup(); }
private void CollectFreeObjects(RenderPasses renderPass, List <Renderable> renderables) { foreach (Renderable r in _freeRenderables) { if ((r.RenderPasses & renderPass) != 0) { renderables.Add(r); } } }
private Func <CullRenderable, bool> GetFilter(RenderPasses renderPass) { if (!_filters.TryGetValue(renderPass, out Func <CullRenderable, bool> filter)) { filter = cr => (cr.RenderPasses & renderPass) != 0; _filters.Add(renderPass, filter); } return(filter); }
public void Render(IRendererContext context, RenderPasses renderPass, IRenderable renderable) { if (context == null) { throw new ArgumentNullException(nameof(context)); } if (renderable == null) { throw new ArgumentNullException(nameof(renderable)); } var c = (VeldridRendererContext)context; var cl = c.CommandList; var gd = c.GraphicsDevice; var sc = c.SceneContext; ITextureManager textureManager = Resolve <ITextureManager>(); if (!(renderable is TileMapWindow window)) { return; } var tilemap = window.TileMap; cl.PushDebugGroup($"Tiles3D:{tilemap.Name}:{tilemap.RenderOrder}"); TextureView floors = (TextureView)textureManager.GetTexture(tilemap.Floors); TextureView walls = (TextureView)textureManager.GetTexture(tilemap.Walls); var miscUniformData = new MiscUniformData { TileSize = tilemap.TileSize, Unused1 = 0 }; cl.UpdateBuffer(_miscUniformBuffer, 0, miscUniformData); var resourceSet = gd.ResourceFactory.CreateResourceSet(new ResourceSetDescription(_layout, _miscUniformBuffer, gd.PointSampler, _textureSampler, floors, walls)); resourceSet.Name = $"RS_TileMap:{tilemap.Name}"; _resourceSets.Add(resourceSet); cl.SetPipeline(_pipeline); cl.SetGraphicsResourceSet(0, resourceSet); cl.SetGraphicsResourceSet(1, sc.CommonResourceSet); cl.SetVertexBuffer(0, _vb); cl.SetVertexBuffer(1, _instanceBuffers[window.InstanceBufferId]); cl.SetIndexBuffer(_ib, IndexFormat.UInt16); cl.DrawIndexed((uint)Indices.Length, (uint)window.Length, 0, 0, 0); cl.PopDebugGroup(); }
public void Render(GraphicsDevice gd, CommandList cl, SceneContext sc, RenderPasses renderPass) { cl.SetVertexBuffer(0, _vb); cl.SetIndexBuffer(_ib, IndexFormat.UInt16); cl.SetPipeline(_pipeline); cl.SetGraphicsResourceSet(0, _resourceSet); float depth = gd.IsDepthRangeZeroToOne ? 0 : 1; cl.SetViewport(0, new Viewport(0, 0, sc.MainSceneColorTexture.Width, sc.MainSceneColorTexture.Height, depth, depth)); cl.DrawIndexed((uint)s_indices.Length, 1, 0, 0, 0); }
public void Render(IRendererContext context, RenderPasses renderPass, IRenderable r) { var c = (VeldridRendererContext)context; var cl = c.CommandList; var sc = c.SceneContext; cl.SetPipeline(_pipeline); cl.SetGraphicsResourceSet(0, sc.DuplicatorTargetSet0); cl.SetVertexBuffer(0, _vb); cl.SetIndexBuffer(_ib, IndexFormat.UInt16); cl.DrawIndexed(6, 1, 0, 0, 0); }
public void Render(IRendererContext context, RenderPasses renderPass, IRenderable renderable) { if (context == null) { throw new ArgumentNullException(nameof(context)); } if (renderable == null) { throw new ArgumentNullException(nameof(renderable)); } var c = (VeldridRendererContext)context; var cl = c.CommandList; var sc = c.SceneContext; ITextureManager textureManager = Resolve <ITextureManager>(); IDeviceObjectManager dom = Resolve <IDeviceObjectManager>(); var config = Resolve <CoreConfig>().Visual.Skybox; if (!(Resolve <ICamera>() is PerspectiveCamera camera)) { return; } var skybox = (SkyboxRenderable)renderable; cl.PushDebugGroup(skybox.Name); var uniformInfo = new SkyboxUniformInfo { uYaw = camera.Yaw, uPitch = camera.Pitch, uVisibleProportion = config.VisibleProportion }; cl.UpdateBuffer(_uniformBuffer, 0, uniformInfo); if (sc.PaletteView == null) { return; } TextureView textureView = (TextureView)textureManager?.GetTexture(skybox.Texture); var resourceSet = dom.GetDeviceObject <ResourceSet>((skybox, textureView, null)); cl.SetPipeline(_pipeline); cl.SetGraphicsResourceSet(0, resourceSet); cl.SetGraphicsResourceSet(1, sc.CommonResourceSet); cl.SetVertexBuffer(0, _vertexBuffer); cl.SetIndexBuffer(_indexBuffer, IndexFormat.UInt16); cl.DrawIndexed((uint)Indices.Length, 1, 0, 0, 0); cl.PopDebugGroup(); }
public void Render(GraphicsDevice gd, CommandList cl, SceneContext sc, RenderPasses renderPass) { _active = true; _renderContext = new RenderContext { GraphicsDevice = gd, CommandList = cl, SceneContext = sc, RenderPass = renderPass }; _renderModels(this, sc.ViewState); _renderContext = new RenderContext(); _active = false; }
public void Render(IRendererContext context, RenderPasses renderPass, IRenderable r) { if (context == null) { throw new ArgumentNullException(nameof(context)); } if (r == null) { throw new ArgumentNullException(nameof(r)); } var c = (VeldridRendererContext)context; ApiUtil.Assert(renderPass == RenderPasses.Standard); _imguiRenderer.Render(c.GraphicsDevice, c.CommandList); c.CommandList.SetFullScissorRects(); }
public override void Render(RenderContext rc, SceneContext sc, RenderPasses renderPass) { rc.VertexBuffer = _vb; rc.IndexBuffer = _ib; rc.ShaderSet = _shaderSet; rc.ShaderResourceBindingSlots = _resourceSlots; rc.SetConstantBuffer(0, sc.ProjectionMatrixBuffer); Matrix4x4 viewMat = Utilities.ConvertToMatrix3x3(sc.Camera.ViewMatrix); _viewMatrixBuffer.SetData(ref viewMat); rc.SetConstantBuffer(1, _viewMatrixBuffer); RasterizerState previousRasterState = rc.RasterizerState; rc.SetRasterizerState(_rasterizerState); rc.SetTexture(2, _cubemapBinding); rc.DrawIndexedPrimitives(s_indices.Length, 0); rc.SetRasterizerState(previousRasterState); }
public void Render(GraphicsDevice gd, CommandList cl, SceneContext sc, RenderPasses renderPass, IRenderable renderable) { ITextureManager textureManager = Resolve <ITextureManager>(); // float depth = gd.IsDepthRangeZeroToOne ? 0 : 1; var sprite = (MultiSprite)renderable; var shaderKey = new SpriteShaderKey( sprite.Key.Texture.ArrayLayers > 1, !sprite.Flags.HasFlag(SpriteFlags.NoDepthTest)); //if (!shaderKey.UseArrayTexture) // return; cl.PushDebugGroup($"Sprite:{sprite.Key.Texture.Name}:{sprite.Key.RenderOrder}"); TextureView textureView = textureManager?.GetTexture(sprite.Key.Texture); if (sc.PaletteView == null) { return; } var resourceSet = gd.ResourceFactory.CreateResourceSet(new ResourceSetDescription( _perSpriteResourceLayout, sc.ProjectionMatrixBuffer, sc.ModelViewMatrixBuffer, gd.PointSampler, textureView, sc.PaletteView )); resourceSet.Name = $"RS_Sprite:{sprite.Key.Texture.Name}"; _resourceSets.Add(resourceSet); cl.SetPipeline(_pipelines[shaderKey]); cl.SetGraphicsResourceSet(0, resourceSet); cl.SetGraphicsResourceSet(1, sc.CommonResourceSet); cl.SetVertexBuffer(0, _vertexBuffer); cl.SetIndexBuffer(_indexBuffer, IndexFormat.UInt16); cl.SetVertexBuffer(1, _instanceBuffers[sprite.BufferId]); //cl.SetViewport(0, new Viewport(0, 0, sc.MainSceneColorTexture.Width, sc.MainSceneColorTexture.Height, depth, depth)); cl.DrawIndexed((uint)Indices.Length, (uint)sprite.Instances.Length, 0, 0, 0); //cl.SetViewport(0, new Viewport(0, 0, sc.MainSceneColorTexture.Width, sc.MainSceneColorTexture.Height, 0, 1)); cl.PopDebugGroup(); }
public void Render(GraphicsDevice gd, CommandList cl, SceneContext sc, RenderPasses renderPass, IRenderable renderable) { ITextureManager textureManager = Resolve <ITextureManager>(); var window = renderable as TileMapWindow; if (window == null) { return; } var tilemap = window.TileMap; cl.PushDebugGroup($"Tiles3D:{tilemap.Name}:{tilemap.RenderOrder}"); TextureView floors = textureManager.GetTexture(tilemap.Floors); TextureView walls = textureManager.GetTexture(tilemap.Walls); var miscUniformData = new MiscUniformData { Position = tilemap.Position, TileSize = tilemap.TileSize, Unused1 = 0, Unused2 = 0 }; cl.UpdateBuffer(_miscUniformBuffer, 0, miscUniformData); var resourceSet = gd.ResourceFactory.CreateResourceSet(new ResourceSetDescription(_layout, sc.ProjectionMatrixBuffer, sc.ModelViewMatrixBuffer, _miscUniformBuffer, gd.PointSampler, sc.PaletteView, _textureSampler, floors, walls)); _resourceSets.Add(resourceSet); cl.SetPipeline(_pipeline); cl.SetGraphicsResourceSet(0, resourceSet); cl.SetGraphicsResourceSet(1, sc.CommonResourceSet); cl.SetVertexBuffer(0, _vb); cl.SetVertexBuffer(1, _instanceBuffers[window.InstanceBufferId]); cl.SetIndexBuffer(_ib, IndexFormat.UInt16); cl.DrawIndexed((uint)Indices.Length, (uint)window.Length, 0, 0, 0); cl.PopDebugGroup(); }
public void Render(GraphicsDevice gd, CommandList cl, SceneContext sc, RenderPasses renderPass, IRenderable renderable) { ITextureManager textureManager = Resolve <ITextureManager>(); IDeviceObjectManager dom = Resolve <IDeviceObjectManager>(); // float depth = gd.IsDepthRangeZeroToOne ? 0 : 1; var sprite = (MultiSprite)renderable; var shaderKey = new SpriteShaderKey(sprite); sprite.PipelineId = shaderKey.GetHashCode(); //if (!shaderKey.UseArrayTexture) // return; cl.PushDebugGroup($"Sprite:{sprite.Key.Texture.Name}:{sprite.Key.RenderOrder}"); var uniformInfo = new SpriteUniformInfo { Flags = sprite.Key.Flags }; cl.UpdateBuffer(_uniformBuffer, 0, uniformInfo); if (sc.PaletteView == null) { return; } TextureView textureView = textureManager?.GetTexture(sprite.Key.Texture); var resourceSet = dom.Get <ResourceSet>((sprite, textureView)); var instanceBuffer = dom.Get <DeviceBuffer>((sprite, sprite)); cl.SetPipeline(_pipelines[shaderKey]); cl.SetGraphicsResourceSet(0, resourceSet); cl.SetGraphicsResourceSet(1, sc.CommonResourceSet); cl.SetVertexBuffer(0, _vertexBuffer); cl.SetIndexBuffer(_indexBuffer, IndexFormat.UInt16); cl.SetVertexBuffer(1, instanceBuffer); //cl.SetViewport(0, new Viewport(0, 0, sc.MainSceneColorTexture.Width, sc.MainSceneColorTexture.Height, depth, depth)); cl.DrawIndexed((uint)Indices.Length, (uint)sprite.ActiveInstances, 0, 0, 0); //cl.SetViewport(0, new Viewport(0, 0, sc.MainSceneColorTexture.Width, sc.MainSceneColorTexture.Height, 0, 1)); cl.PopDebugGroup(); }
public override void Render(RenderContext rc, SceneContext sc, RenderPasses renderPass) { rc.ShaderSet = _shaderSet; rc.ShaderResourceBindingSlots = _resourceBindings; rc.SetConstantBuffer(0, sc.ProjectionMatrixBuffer); rc.SetConstantBuffer(1, sc.ViewMatrixBuffer); rc.SetTexture(2, _textureBinding); rc.SetSamplerState(3, rc.PointSampler); rc.VertexBuffer = _vb; rc.IndexBuffer = _ib; BlendState previousBlend = rc.BlendState; rc.BlendState = rc.AlphaBlend; RasterizerState previousRS = rc.RasterizerState; rc.RasterizerState = _rasterizerState; rc.DrawIndexedPrimitives(6); rc.BlendState = previousBlend; rc.RasterizerState = previousRS; }
public void Render(GraphicsDevice gd, CommandList cl, GraphicsSystem sc, RenderPasses renderPass) { if (_materialPropsOwned) { _materialProps.FlushChanges(cl); } if ((renderPass & Glitch.Graphics.RenderPasses.AllShadowMap) != 0) { int shadowMapIndex = renderPass == Glitch.Graphics.RenderPasses.ShadowMapNear ? 0 : renderPass == Glitch.Graphics.RenderPasses.ShadowMapMid ? 1 : 2; RenderShadowMap(cl, sc, shadowMapIndex); } else if (renderPass == Glitch.Graphics.RenderPasses.Standard || renderPass == Glitch.Graphics.RenderPasses.AlphaBlend) { RenderStandard(cl, sc, false); } else if (renderPass == Glitch.Graphics.RenderPasses.ReflectionMap) { RenderStandard(cl, sc, true); } }
public void Render(GraphicsDevice gd, CommandList cl, SceneContext sc, RenderPasses renderPass) { var renderContext = new RenderContext(gd, cl, sc, renderPass); foreach (var renderable in _renderables) { renderable.Render(this, renderContext); } //TODO: render all entities known to the renderer //_renderModels(this, sc.ViewState); /* * //TODO: let game render world? * if (sc.Scene.WorldModel != null) * { * var data = new BrushModelRenderData * { * Shared = new SharedModelRenderData * { * Index = 0, * * Origin = Vector3.Zero, * Angles = Vector3.Zero, * Scale = Vector3.One, * * Effects = EffectsFlags.None, * * RenderMode = RenderMode.Normal, * RenderAmount = 0, * RenderColor = Vector3.Zero, * RenderFX = RenderFX.None, * }, * Model = sc.Scene.WorldModel * }; * * RenderBrushModel(ref data); * } */ }