private void Combine() { CombinerShader.Use(); CombinerFramebuffer.Use(); DeferredFramebuffer.UseTexture(CombinerShader.getConstInt("deferredTexBinding")); EnvLightFramebuffer.UseTexture(8); BloomYPass.UseTexture(11); CubeMaps[0].Texture.Use(TextureUnit.Texture23); FogFramebuffer.UseTexture(13); AmbientOcclusionFramebuffer.UseTexture(14); DrawPPMesh(); Game.CheckErrors("Combine pass"); }
public void Resize(int initialWidth, int initialHeight) { VXGIFramebuffer.FreeGPU(); DeferredFramebuffer.FreeGPU(); BloomXPass.FreeGPU(); BloomYPass.FreeGPU(); EnvLightFramebuffer.FreeGPU(); AmbientOcclusionFramebuffer.FreeGPU(); ForwardPassFramebuffer.FreeGPU(); CombinerFramebuffer.FreeGPU(); HelperFramebuffer.FreeGPU(); FogFramebuffer.FreeGPU(); MRT.FreeGPU(); Width = initialWidth; Height = initialHeight; CreateBuffers(); }
private void Deferred() { var lights = Game.World.Scene.GetLights(); DisableBlending(); GL.CullFace(CullFaceMode.Back); for (int i = 0; i < lights.Count; i++) { var light = lights[i]; if (light.ShadowMappingEnabled) { light.UpdateShadowMap(); } } EnableAdditiveBlending(); GL.CullFace(CullFaceMode.Front); DeferredShader.Use(); DeferredFramebuffer.Use(); SetUniformsShared(); for (int i = 0; i < lights.Count; i++) { var light = lights[i]; Matrix4 mat = Matrix4.CreateScale(light.CutOffDistance) * Matrix4.CreateTranslation(light.Transformation.Position); if (light.ShadowMappingEnabled) { light.BindShadowMap(20, 21); } light.SetUniforms(); DeferredShader.SetUniform("ModelMatrix", mat); CubeMapSphere.Draw(); } GL.CullFace(CullFaceMode.Back); DisableBlending(); Game.CheckErrors("Deferred pass"); }