public ForwardPipeline(MasterRenderer renderer) : base(renderer) { GLError.Begin(); forwardShader = new WorldShader(); shadowShader = new ShadowShader(); shadowMap = new ShadowMap(GFXSettings.ShadowResolution, GFXSettings.ShadowResolution); shadowCamera = new ShadowCamera(); ppBuffer = new PostProcessBuffer(ScreenWidth, ScreenHeight); ppShader = new PostProcessShader(); skyRenderTarg = new TexRenderTarget(ScreenWidth, ScreenHeight); screenshotRenderTarg = new TexRenderTarget(1, 1); screenshotRenderTarg.Bind(); GL.ReadBuffer(ReadBufferMode.ColorAttachment0); screenshotRenderTarg.Unbind(); ErrorCode err = GLError.End(); if (err != ErrorCode.NoError) { throw new Exception(string.Format("Failed to initialize forward pipeline. OpenGL Error: {0}", err)); } }
public void DebugRenderShadowMap(ShadowMap shadowMap) { PrepareRender(depthDebugShader); depthDebugShader.LoadBool("linearize", false); //depthDebugShader.LoadFloat("nearPlane", 10); //depthDebugShader.LoadFloat("farPlane", 4000); // Bind the FBO texture GL.ActiveTexture(TextureUnit.Texture0); shadowMap.BindTex(); // Set transformation matrix depthDebugShader.LoadMatrix4("transformationMatrix", Maths.CreateTransformationMatrix(new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f))); // Draw GL.DrawArrays(BeginMode.TriangleStrip, 0, 4); // Ubind the FBO texture GL.BindTexture(TextureTarget.Texture2D, 0); EndRender(depthDebugShader); }