private void Render(Camera camera) { GL.ClearColor(_skyColor.X, _skyColor.Y, _skyColor.Z, 1f); GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit); worldMatrix &= camera.WorldToCamera.RemoveTranslation(); _skyboxShader.DrawElements(PrimitiveType.Triangles, _vertices, _indices); }
private void Render(Camera camera) { foreach (var mesh in camera.NodesInView <Mesh <MaterialVertex> > ()) { transforms.UpdateModelViewAndNormalMatrices(camera.WorldToCamera * mesh.Transform); _materialShader.DrawElements(PrimitiveType.Triangles, mesh.VertexBuffer, mesh.IndexBuffer); //_materialShader.DrawNormals (mesh.NormalBuffer); } }
private void Render(Camera camera, CascadedShadowUniforms shadowSource) { lighting.UpdateDirectionalLight(camera); shadows.viewLightMatrices &= !shadowSource.viewLightMatrices; //shadows.lightSpaceMatrix &= !shadowSource.lightSpaceMatrix; foreach (var mesh in camera.NodesInView <Mesh <EntityVertex> > ()) { Sampler.Bind(!samplers, mesh.Textures); transforms.UpdateModelViewAndNormalMatrices(camera.WorldToCamera * mesh.Transform); _entityShader.DrawElements(PrimitiveType.Triangles, mesh.VertexBuffer, mesh.IndexBuffer); Sampler.Unbind(!samplers, mesh.Textures); } }
private void Render(Vec2i viewportSize) { transform.perspectiveMatrix &= new Mat4(1f); var renderedPanels = from p in _scene.Root.Traverse().OfType <Panel <TexturedVertex> > () where p.Renderer == PanelRenderer.Standard select p; foreach (var panel in renderedPanels) { (!texture.textureMap).Bind(panel.Texture); transform.modelViewMatrix &= panel.GetModelViewMatrix(viewportSize); _panelShader.DrawElements(PrimitiveType.Triangles, panel.VertexBuffer, panel.IndexBuffer); (!texture.textureMap).Unbind(panel.Texture); } }
private void Render(Vec2i viewportSize) { Transform.perspectiveMatrix &= new Mat4(1f); var renderedPanels = from p in _scene.Root.Traverse().OfType <MaterialPanel <TexturedVertex> > () where p.Texture != null select p; foreach (var panel in renderedPanels) { (!Texture.textureMap).Bind(panel.Texture); Transform.modelViewMatrix &= panel.GetModelViewMatrix(viewportSize); ColorOutput &= panel.Texture.PixelFormat == PixelFormat.Rgba ? 1 : 0; _panelShader.DrawElements(PrimitiveType.Triangles, panel.VertexBuffer, panel.IndexBuffer); (!Texture.textureMap).Unbind(panel.Texture); } }
private void Render(Camera camera, CascadedShadowUniforms shadowSource) { var worldToCamera = camera.WorldToCamera; lighting.UpdateDirectionalLight(camera); shadows.viewLightMatrices &= !shadowSource.viewLightMatrices; //shadows.lightSpaceMatrix &= !shadowSource.lightSpaceMatrix; foreach (var mesh in camera.NodesInView <TerrainMesh <TerrainVertex> > ()) { if (mesh.VertexBuffer != null && mesh.IndexBuffers != null) { transforms.UpdateModelViewAndNormalMatrices(worldToCamera * mesh.Transform); var distance = -(worldToCamera * mesh.BoundingBox).Front; var lod = distance < 100 ? 0 : distance < 200 ? 1 : 2; _terrainShader.DrawElements(PrimitiveType.TriangleStrip, mesh.VertexBuffer, mesh.IndexBuffers[lod]); } } }
private void Render(Camera camera) { GL.Clear(ClearBufferMask.DepthBufferBit | ClearBufferMask.ColorBufferBit); var light = camera.Graph.Root.Traverse().OfType <DirectionalLight> ().First(); var worlToCamera = camera.WorldToCamera; if (_cascaded) { csmUniforms.UpdateLightSpaceMatrices(camera, light); } else { shadowUniforms.UpdateLightSpaceMatrix(camera, light); } foreach (var mesh in camera.NodesInView <Mesh <EntityVertex> > ()) { modelViewMatrix &= worlToCamera * mesh.Transform; _shadowShader.DrawElements(PrimitiveType.Triangles, mesh.VertexBuffer, mesh.IndexBuffer); } }