//------------------------------------------------------
        // Auto Focus
        //------------------------------------------------------
        private void autoFocus(Texture depth_texture)
        {
            _pAutoFocus.bind();

            _ssboAutoFocus.bind(0);
            depth_texture.bind(_pAutoFocus.getSamplerUniform(0), 0);

            GL.DispatchCompute(1, 1, 1);
            GL.MemoryBarrier(MemoryBarrierFlags.ShaderStorageBarrierBit);
        }
Exemple #2
0
        protected override void load_Buffers()
        {
            _ssboExposure = new ShaderStorageBuffer(new EngineHelper.size[]
            {
                EngineHelper.size.vec2
            });
            _ssboExposure.bind();
            Vector2 default_luminosity = new Vector2(1000.0f, 0.0f);

            GL.BufferData(BufferTarget.ShaderStorageBuffer, (int)EngineHelper.size.vec2, ref default_luminosity, BufferUsageHint.DynamicCopy);
            _ssboExposure.unbind();

            _tLuminosity = new Texture(TextureTarget.Texture2D,
                                       _resolution.W, _resolution.H,
                                       0, true, false,
                                       PixelInternalFormat.R16f, PixelFormat.Red, PixelType.Float,
                                       TextureMinFilter.LinearMipmapLinear, TextureMagFilter.Linear, TextureWrapMode.Clamp);
            _tLuminosity.load();

            _tTempScene = new Texture(TextureTarget.Texture2D,
                                      _resolution.W, _resolution.H,
                                      0, false, false,
                                      PixelInternalFormat.Rgba16f, PixelFormat.Rgba, PixelType.Float,
                                      TextureMinFilter.Linear, TextureMagFilter.Linear, TextureWrapMode.Clamp);
            _tTempScene.load();
        }
Exemple #3
0
        private void autoExposure()
        {
            _pAutoExposure.bind();

            // Pass lowest LOD based on log2(max(dimension))
            GL.Uniform1(_pAutoExposure.getUniform("luminosity_lod"), _tLuminosity.getMaxMipMap());

            // Bind SSBO for storing luminosity
            _ssboExposure.bind(0);

            // Bind Scene Texture
            _tLuminosity.bind(_pAutoExposure.getSamplerUniform(0), 0);


            GL.DispatchCompute(1, 1, 1);
            GL.MemoryBarrier(MemoryBarrierFlags.ShaderStorageBarrierBit);

            _ssboExposure.unbind();
        }