public override void Init() { //init FBO shadowMapFBO = GL.GenFramebuffer(); GL.BindFramebuffer(FramebufferTarget.Framebuffer, shadowMapFBO); //init shadowmap shadowMap = GL.GenTexture(); GL.BindTexture(TextureTarget.Texture2D, shadowMap); GL.TexImage2D(TextureTarget.Texture2D, 0, PixelInternalFormat.DepthComponent, shadowMapRes, shadowMapRes, 0, PixelFormat.DepthComponent, PixelType.Float, IntPtr.Zero); GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.Nearest); GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Nearest); GL.BindTexture(TextureTarget.Texture2D, 0); //bind texture to framebuffer GL.FramebufferTexture2D(FramebufferTarget.Framebuffer, FramebufferAttachment.DepthAttachment, TextureTarget.Texture2D, shadowMap, 0); GL.DrawBuffer(DrawBufferMode.None); GL.ReadBuffer(ReadBufferMode.None); GL.BindFramebuffer(FramebufferTarget.Framebuffer, 0); //init post processor postProcessor = new PostProcessor(); GL.DepthFunc(DepthFunction.Lequal); Logger.Log("Renderer initialized.", true); }
public override void Init() { shadowMapFramebuffer = new Framebuffer("shadowmap-fbo", shadowMapRes, shadowMapRes, new Attachment[] { new Attachment { Draw = false, PixelInternalFormat = PixelInternalFormat.DepthComponent, PixelFormat = PixelFormat.DepthComponent, PixelType = PixelType.Float, FramebufferAttachment = FramebufferAttachment.DepthAttachment, TextureParamsInt = new TextureParamInt[] { new TextureParamInt { ParamName = TextureParameterName.TextureMinFilter, Param = (int)TextureMinFilter.Nearest }, new TextureParamInt { ParamName = TextureParameterName.TextureMagFilter, Param = (int)TextureMagFilter.Nearest }, new TextureParamInt { ParamName = TextureParameterName.TextureWrapS, Param = (int)TextureWrapMode.ClampToBorder }, new TextureParamInt { ParamName = TextureParameterName.TextureWrapT, Param = (int)TextureWrapMode.ClampToBorder } }, TextureParamsFloatArr = new TextureParamFloatArr[] { new TextureParamFloatArr { ParamName = TextureParameterName.TextureBorderColor, Params = new float[] { 1.0f, 1.0f, 1.0f, 1.0f } } } } }); string postProcessPath = Path.Combine(AppContext.BaseDirectory, "EngineAssets/Shaders/PostProcess"); postProcessor = new PostProcessor(); postProcessor.Shaders.AddRange(new Shader[] { Shader.FromSourceFile("post-process", Path.Combine(postProcessPath, "post-process.vert"), Path.Combine(postProcessPath, "empty.frag")) }); Logger.Log("Renderer initialized.", true); }