private void EnvLight() { EnvLightShader.Use(); EnvLightFramebuffer.Use(); SetUniformsShared(); EnableAdditiveBlending(); GL.CullFace(CullFaceMode.Front); GL.Enable(EnableCap.TextureCubeMapSeamless); for (int i = 0; i < CubeMaps.Count; i++) { if (i == Game.World.CurrentlyRenderedCubeMap) { continue; } Matrix4 mat = Matrix4.CreateScale(CubeMaps[i].FalloffScale) * Matrix4.CreateTranslation(CubeMaps[i].FalloffScale > 99999.0f ? Camera.MainDisplayCamera.GetPosition() : CubeMaps[i].Position); CubeMaps[i].Texture.Use(TextureUnit.Texture23); EnvLightShader.SetUniform("ModelMatrix", mat); EnvLightShader.SetUniform("MapPosition", CubeMaps[i].FalloffScale > 99999.0f ? Camera.MainDisplayCamera.GetPosition() : CubeMaps[i].Position); EnvLightShader.SetUniform("CubeCutOff", CubeMaps[i].FalloffScale); CubeMapSphere.Draw(); } GL.CullFace(CullFaceMode.Back); DisableBlending(); Game.CheckErrors("Environment light pass"); }
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(); }