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