public virtual void Init() { Program.Settings.GetLightRange(out float near, out float far); Program.Window.GetSize(out int windowWidth, out int windowHeight); Program.Window.OnButton += OnButton; Program.Window.OnMouseButton += OnMouseButton; DefaultShader = ShaderRepository.GetShader("Default/default"); DefaultShader.SetFloat("material.shininess", 32.0f); DefaultShader.SetFloat("lightNearPlane", near); DefaultShader.SetFloat("lightFarPlane", far); _lightingShaderOrtho = ShaderRepository.GetShader("Lighting/lightingShader", "Lighting/lightingShaderOrtho"); _lightingShaderPersp = ShaderRepository.GetShader("Lighting/lightingShader", "Lighting/lightingShaderPersp"); _lightingShaderPersp.SetFloat("farPlane", far); _lightingShaderOrtho.LightingShader = true; _lightingShaderPersp.LightingShader = true; _lightingFrameBuffer = new FrameBuffer(); _lightingFrameBuffer.Use(); Gl.DrawBuffer(DrawBufferMode.None); Gl.ReadBuffer(ReadBufferMode.None); FrameBuffer.UseDefault(); CurrentCamera = new Camera(); Entities.Add(CurrentCamera); UI = new UILayer(); }
public void RenderPipeline() { FrameBuffer buffer = RenderFrameBuffer; buffer.Use(); GL.GetApi().ClearFramebuffer(); for (int i = 0; i < Pipeline.Count; i++) { buffer = Pipeline[i].Render(buffer); } buffer.BoundTexture.BindToUnit(0); FrameBuffer.UseDefault(); Util.GLClear(); _finalShader.SetInt("screen", 0); QuadMesh.ScreenQuad.Draw(_finalShader); }