Esempio n. 1
0
        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");
        }
Esempio n. 2
0
        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();
        }
Esempio n. 3
0
        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");
        }