예제 #1
0
        void AddCompositors()
        {
            // HDR
            CompositorInstance instance = CompositorManager.Singleton.AddCompositor(viewport, "HDR", 0);

            CompositorManager.Singleton.SetCompositorEnabled(viewport, "HDR", false);
            HDRListener hdrListener = new HDRListener();

            hdrListener.NotifyViewportSize(viewport.ActualWidth, viewport.ActualHeight);
            hdrListener.NotifyCompositor(instance);

            // Glass
            instance = CompositorManager.Singleton.AddCompositor(viewport, "Glass");
            CompositorManager.Singleton.SetCompositorEnabled(viewport, "Glass", false);

            togglers = new CompositorToggler[]
            {
                new CompositorToggler("HDR", MOIS.KeyCode.KC_1, viewport),
                new CompositorToggler("Glass", MOIS.KeyCode.KC_2, viewport)
            };

            System.Text.StringBuilder sb = new System.Text.StringBuilder();
            foreach (CompositorToggler toggler in togglers)
            {
                sb.Append(toggler.keyCode.ToString().Substring(3));
                sb.Append('-');
                sb.Append(toggler.compositorName);
                sb.Append(", ");
            }
            sb.Length -= 2;

            mDebugText = sb.ToString();
        }
예제 #2
0
 public void _removeInstance(CompositorInstance i)
 {
     OgrePINVOKE.CompositorChain__removeInstance(swigCPtr, CompositorInstance.getCPtr(i));
     if (OgrePINVOKE.SWIGPendingException.Pending)
     {
         throw OgrePINVOKE.SWIGPendingException.Retrieve();
     }
 }
        private void InitializeFXAACompositor()
        {
            CompositorInstance instance = viewport.AddCompositor("FXAA");

            if (instance != null)
            {
                instance.Enabled = true;
            }
        }
예제 #4
0
        protected void updateDebugRTTWindow()
        {
            // Clear listbox
            mDebugRTTListbox.resetList();
            // Clear imagesets
            mDebugRTTStaticImage.setImage(null);
            foreach (CeguiDotNet.Imageset imgset in mDebugRTTImageSets)
            {
                CeguiDotNet.ImagesetManager.getSingleton().destroyImageset(imgset);
            }
            mDebugRTTImageSets.Clear();
            // Add an entry for each render texture for all active compositors
            Viewport        vp    = mRenderWindow.GetViewport(0);
            CompositorChain chain = CompositorManager.Instance.getCompositorChain(vp);

            OgreDotNet.CompositorInstancesIteratorWrap it = chain.getCompositors();
            while (it.hasMoreElements())
            {
                CompositorInstance inst = it.getNext();
                if (inst.getEnabled())
                {
                    CTTextureDefinitionsIterator texIt =
                        inst.getTechnique().GetTextureDefinitionIterator();
                    while (texIt.hasMoreElements())
                    {
                        CTTextureDefinition texDef = texIt.getNext();

                        // Get instance name of texture
                        string instName = inst.getTextureInstanceName(texDef.getName());
                        // Create CEGUI texture from name of OGRE texture
                        CeguiDotNet.Texture tex = mGuiRenderer.createTexture(new CeguiDotNet.String(instName));
                        // Create imageset
                        CeguiDotNet.Imageset imgSet =
                            ImagesetManager.getSingleton().createImageset(instName, tex);
                        mDebugRTTImageSets.Add(imgSet);
                        imgSet.defineImage("RttImage",
                                           new CEGUIVector2(0.0f, 0.0f),
                                           new CeguiDotNet.Size(tex.getWidth(), tex.getHeight()),
                                           new CEGUIVector2(0.0f, 0.0f));

                        CeguiDotNet.ListboxTextItem item = new ListboxTextItem(texDef.getName(), 0, Imageset.getCPtr(imgSet).Handle);
                        item.setSelectionBrushImage("TaharezLook", "ListboxSelectionBrush");
                        item.setSelectionColours(new CeguiDotNet.colour(0.0f, 0.0f, 1.0f));
                        //the is so we dont have to keep track of the ListboxTextItem
                        //if we loose the reference to the DotNet object CeguiDotNet.ListboxTextItem(leaving scope of the while statement),
                        //The swig generated code will delete the c++ object, we dont want this.
                        //So calling the static function RemoveOwnership will stop the swig generated
                        // code from deleteing the c++ object and the dotnet object can delete normaly.
                        ListboxTextItem.RemoveOwnership(item);
                        //make sure the c++ object will be deleted with its parent
                        item.setAutoDeleted(true);
                        mDebugRTTListbox.addItem(item);
                    }
                }
            }
        }
예제 #5
0
        public void notifyCompositor(CompositorInstance instance)
        {
            // Get some RTT dimensions for later calculations
            CTTextureDefinitionsIterator defIter = instance.getTechnique().GetTextureDefinitionIterator();

            while (defIter.hasMoreElements())
            {
                CTTextureDefinition def = defIter.getNext();
                // store the sizes of downscaled textures (size can be tweaked in script)
                if (OgreDotNet.StringUtil.startsWith(def.getName(), "rt_lum", false))
                {
                    int idx = System.Convert.ToInt32(def.getName().Substring(6, 1));
                    mLumSize[idx] = (int)def.getWidth();                     // should be square
                }
                else if (def.getName() == "rt_bloom0")
                {
                    mBloomSize = (int)def.getWidth();                     // should be square
                    // Calculate gaussian texture offsets & weights
                    float deviation = 3.0f;
                    float texelSize = 1.0f / (float)mBloomSize;

                    // central sample, no offset
                    mBloomTexOffsetsHorz[0] = 0.0f;
                    mBloomTexOffsetsHorz[1] = 0.0f;
                    mBloomTexWeights[0]     = mBloomTexWeights[1] =
                        mBloomTexWeights[2] = OgreDotNet.OgreMath.gaussianDistribution(0, 0, deviation);
                    mBloomTexWeights[3]     = 1.0f;

                    // 'pre' samples
                    for (int i = 1; i < 8; ++i)
                    {
                        mBloomTexWeights[(i * 4) + 0]     = mBloomTexWeights[(i * 4) + 1] =
                            mBloomTexWeights[(i * 4) + 2] = 1.25f * OgreDotNet.OgreMath.gaussianDistribution(i, 0, deviation);
                        mBloomTexWeights[(i * 4) + 3]     = 1.0f;
                        mBloomTexOffsetsHorz[(i * 4) + 0] = (float)i * texelSize;
                        mBloomTexOffsetsHorz[(i * 4) + 1] = 0.0f;
                        mBloomTexOffsetsVert[(i * 4) + 0] = 0.0f;
                        mBloomTexOffsetsVert[(i * 4) + 1] = (float)i * texelSize;
                    }
                    // 'post' samples
                    for (int i = 8; i < 15; ++i)
                    {
                        mBloomTexWeights[(i * 4) + 0]     = mBloomTexWeights[(i * 4) + 1] =
                            mBloomTexWeights[(i * 4) + 2] = mBloomTexWeights[((i - 7) * 4) + 0];
                        mBloomTexWeights[(i * 4) + 3]     = 1.0f;

                        mBloomTexOffsetsHorz[(i * 4) + 0] = -mBloomTexOffsetsHorz[((i - 7) * 4) + 0];
                        mBloomTexOffsetsHorz[(i * 4) + 1] = 0.0f;
                        mBloomTexOffsetsVert[(i * 4) + 0] = 0.0f;
                        mBloomTexOffsetsVert[(i * 4) + 1] = -mBloomTexOffsetsVert[((i - 7) * 4) + 1];
                    }
                }
            }
        }
예제 #6
0
        public CompositorInstance _getOriginalSceneCompositor()
        {
            global::System.IntPtr cPtr = OgrePINVOKE.CompositorChain__getOriginalSceneCompositor(swigCPtr);
            CompositorInstance    ret  = (cPtr == global::System.IntPtr.Zero) ? null : new CompositorInstance(cPtr, false);

            if (OgrePINVOKE.SWIGPendingException.Pending)
            {
                throw OgrePINVOKE.SWIGPendingException.Retrieve();
            }
            return(ret);
        }
예제 #7
0
        public CompositorInstance addCompositor(Viewport vp, string compositor)
        {
            global::System.IntPtr cPtr = OgrePINVOKE.CompositorManager_addCompositor__SWIG_1(swigCPtr, Viewport.getCPtr(vp), compositor);
            CompositorInstance    ret  = (cPtr == global::System.IntPtr.Zero) ? null : new CompositorInstance(cPtr, false);

            if (OgrePINVOKE.SWIGPendingException.Pending)
            {
                throw OgrePINVOKE.SWIGPendingException.Retrieve();
            }
            return(ret);
        }
예제 #8
0
        public CompositorInstance getNextInstance(CompositorInstance curr)
        {
            global::System.IntPtr cPtr = OgrePINVOKE.CompositorChain_getNextInstance__SWIG_1(swigCPtr, CompositorInstance.getCPtr(curr));
            CompositorInstance    ret  = (cPtr == global::System.IntPtr.Zero) ? null : new CompositorInstance(cPtr, false);

            if (OgrePINVOKE.SWIGPendingException.Pending)
            {
                throw OgrePINVOKE.SWIGPendingException.Retrieve();
            }
            return(ret);
        }
예제 #9
0
        public CompositorInstance addCompositor(CompositorPtr filter)
        {
            global::System.IntPtr cPtr = OgrePINVOKE.CompositorChain_addCompositor__SWIG_2(swigCPtr, CompositorPtr.getCPtr(filter));
            CompositorInstance    ret  = (cPtr == global::System.IntPtr.Zero) ? null : new CompositorInstance(cPtr, false);

            if (OgrePINVOKE.SWIGPendingException.Pending)
            {
                throw OgrePINVOKE.SWIGPendingException.Retrieve();
            }
            return(ret);
        }
예제 #10
0
        public void NotifyCompositor(CompositorInstance instance)
        {
            instance.NotifyMaterialSetup += new CompositorInstance.Listener.NotifyMaterialSetupHandler(NotifyMaterialSetup);

            // Get some RTT dimensions for later calculations
            CompositionTechnique.TextureDefinitionIterator defIter =
                instance.Technique.GetTextureDefinitionIterator();

            foreach (CompositionTechnique.TextureDefinition_NativePtr def in defIter)
            {
                if (def.name == "rt_bloom0")
                {
                    mBloomSize = (int)def.width; // should be square
                    // Calculate gaussian texture offsets & weights
                    float deviation = 3.0f;
                    float texelSize = 1.0f / (float)mBloomSize;

                    // central sample, no offset
                    mBloomTexOffsetsHorz[0, 0] = 0.0f;
                    mBloomTexOffsetsHorz[0, 1] = 0.0f;
                    mBloomTexOffsetsVert[0, 0] = 0.0f;
                    mBloomTexOffsetsVert[0, 1] = 0.0f;
                    mBloomTexWeights[0, 0]     = mBloomTexWeights[0, 1] =
                        mBloomTexWeights[0, 2] = Math.GaussianDistribution(0, 0, deviation);
                    mBloomTexWeights[0, 3]     = 1.0f;

                    // 'pre' samples
                    for (int i = 1; i < 8; ++i)
                    {
                        mBloomTexWeights[i, 0]     = mBloomTexWeights[i, 1] =
                            mBloomTexWeights[i, 2] = 1.25f * Math.GaussianDistribution(i, 0, deviation);
                        mBloomTexWeights[i, 3]     = 1.0f;
                        mBloomTexOffsetsHorz[i, 0] = i * texelSize;
                        mBloomTexOffsetsHorz[i, 1] = 0.0f;
                        mBloomTexOffsetsVert[i, 0] = 0.0f;
                        mBloomTexOffsetsVert[i, 1] = i * texelSize;
                    }
                    // 'post' samples
                    for (int i = 8; i < 15; ++i)
                    {
                        mBloomTexWeights[i, 0]     = mBloomTexWeights[i, 1] =
                            mBloomTexWeights[i, 2] = mBloomTexWeights[i - 7, 0];
                        mBloomTexWeights[i, 3]     = 1.0f;

                        mBloomTexOffsetsHorz[i, 0] = -mBloomTexOffsetsHorz[i - 7, 0];
                        mBloomTexOffsetsHorz[i, 1] = 0.0f;
                        mBloomTexOffsetsVert[i, 0] = 0.0f;
                        mBloomTexOffsetsVert[i, 1] = -mBloomTexOffsetsVert[i - 7, 1];
                    }
                }
            }
        }
예제 #11
0
        protected void registerCompositors()
        {
            Viewport vp = mRenderWindow.GetViewport(0);

            mhvListener  = new HeatVisionListener();
            mhdrListener = new HDRListener();

            mCompositorSelectorViewManager = new ItemSelectorViewManager("CompositorSelectorWin");
            // tell view manager to notify us when an item changes selection state
            mCompositorSelectorViewManager.EventItemStateChanged += new ISVMItemStateChanged(ItemStateChanged);
            //iterate through Compositor Managers resources and add name keys ast Item selectors to Compositor selector view manager
            OgreDotNet.ResourceMapIteratorWrap resourceIterator =
                CompositorManager.Instance.GetAsResourceManager().getResourceIterator();

            // add all compositor resources to the view container
            while (resourceIterator.hasMoreElements())
            {
                ResourcePtr resource       = resourceIterator.getNext();
                string      compositorName = resource.GetName();
                // Don't add base Ogre/Scene compositor to view
                if (compositorName == "Ogre/Scene")
                {
                    continue;
                }

                mCompositorSelectorViewManager.addItemSelector(compositorName);
                int addPosition = -1;
                if (compositorName == "HDR")
                {
                    // HDR must be first in the chain
                    addPosition = 0;
                }
                CompositorInstance instance = CompositorManager.Instance.addCompositor(vp, compositorName, addPosition);
                CompositorManager.Instance.setCompositorEnabled(vp, compositorName, false);
                // special handling for Heat Vision which uses a listener
                if ((instance != null) && (compositorName == "Heat Vision"))
                {
                    instance.AddListener(mhvListener);
                }
                else if ((instance != null) && (compositorName == "HDR"))
                {
                    instance.AddListener(mhdrListener);
                    mhdrListener.notifyViewportSize(vp.GetActualWidth(), vp.GetActualHeight());
                    mhdrListener.notifyCompositor(instance);
                }
            }
        }
예제 #12
0
 private void SceneBoxFullScreenEffect_Click(Button sender)
 {
     if (sceneBox.Viewport != null)
     {
         string effectName = "OldTV";
         if (sceneBox.Viewport.GetCompositorInstance(effectName) == null)
         {
             CompositorInstance instance = sceneBox.Viewport.AddCompositor(effectName);
             if (instance != null)
             {
                 instance.Enabled = true;
             }
         }
         else
         {
             sceneBox.Viewport.RemoveCompositor(effectName);
         }
     }
 }
        protected override void OnCreateTexture(string definitionName, ref Vec2I size, ref PixelFormat format)
        {
            base.OnCreateTexture(definitionName, ref size, ref format);

            //change format of rt_scene and rt_final textures if HDR compositor is enabled.
            if (definitionName == "rt_scene" || definitionName == "rt_final")
            {
                CompositorInstance hdrInstance = Owner.GetCompositorInstance("HDR");
                if (hdrInstance != null && hdrInstance.Enabled)
                {
                    format = PixelFormat.Float16RGB;
                }
                else
                {
                    format = PixelFormat.R8G8B8;
                }
            }

            if (definitionName == "rt_depth" || definitionName == "rt_occlusion")
            {
                float divisor = downsampling;
                if (divisor < 1)
                {
                    divisor = 1;
                }
                Vec2 sizeFloat = Owner.DimensionsInPixels.Size.ToVec2() / divisor;
                size = new Vec2I((int)sizeFloat.X, (int)sizeFloat.Y);
                if (size.X < 1)
                {
                    size.X = 1;
                }
                if (size.Y < 1)
                {
                    size.Y = 1;
                }

                downscaleTextureSize = size;
            }
        }
예제 #14
0
        void UpdateCurrentPostEffect()
        {
            string name = GetListCompositorItemName(listBox.SelectedItem.ToString());

            bool enabled = checkBoxEnabled.Checked;
            CompositorInstance instance = viewport.GetCompositorInstance(name);

            if (enabled)
            {
                //Enable
                instance = viewport.AddCompositor(name);
                if (instance != null)
                {
                    instance.Enabled = true;
                }
            }
            else
            {
                //Disable
                if (name == "MotionBlur")
                {
                    //MotionBlur game specific. No remove compositor. only disable.
                    if (instance != null)
                    {
                        instance.Enabled = false;
                    }
                }
                else
                {
                    viewport.RemoveCompositor(name);
                }
            }

            if (enabled)
            {
                //MotionBlur specific
                if (name == "MotionBlur")
                {
                    //Update post effect parameters
                    MotionBlurCompositorInstance.Blur = scrollBarFloatParameters[0].Value;
                }

                //Blur specific
                if (name == "Blur")
                {
                    //Update post effect parameters
                    BlurCompositorInstance.Fuzziness = scrollBarFloatParameters[0].Value;
                }

                //RadialBlur specific
                if (name == "RadialBlur")
                {
                    //Update post effect parameters
                    RadialBlurCompositorInstance.BlurFactor = scrollBarFloatParameters[0].Value;
                }

                //HDR specific
                if (name == "HDR")
                {
                    //Update post effect parameters
                    HDRCompositorInstance.Adaptation                 = checkBoxBoolParameters[0].Checked;
                    HDRCompositorInstance.AdaptationVelocity         = scrollBarFloatParameters[1].Value;
                    HDRCompositorInstance.AdaptationMiddleBrightness = scrollBarFloatParameters[2].Value;
                    HDRCompositorInstance.AdaptationMinimum          = scrollBarFloatParameters[3].Value;
                    HDRCompositorInstance.AdaptationMaximum          = scrollBarFloatParameters[4].Value;
                    HDRCompositorInstance.BloomBrightThreshold       = scrollBarFloatParameters[5].Value;
                    HDRCompositorInstance.BloomScale                 = scrollBarFloatParameters[6].Value;

                    //Update controls
                    for (int n = 1; n <= 4; n++)
                    {
                        scrollBarFloatParameters[n].Enable = HDRCompositorInstance.Adaptation;
                    }
                }

                //LDRBloom specific
                if (name == "LDRBloom")
                {
                    //Update post effect parameters
                    LDRBloomCompositorInstance.BloomBrightThreshold = scrollBarFloatParameters[0].Value;
                    LDRBloomCompositorInstance.BloomScale           = scrollBarFloatParameters[1].Value;
                }
            }
        }
예제 #15
0
        public void NotifyCompositor(CompositorInstance instance)
        {
            instance.NotifyMaterialSetup += new CompositorInstance.Listener.NotifyMaterialSetupHandler(NotifyMaterialSetup);

            // Get some RTT dimensions for later calculations
            CompositionTechnique.TextureDefinitionIterator defIter =
                instance.Technique.GetTextureDefinitionIterator();

            foreach (CompositionTechnique.TextureDefinition_NativePtr def in defIter)
            {
                if (def.name == "rt_bloom0")
                {
                    mBloomSize = (int)def.width; // should be square
                    // Calculate gaussian texture offsets & weights
                    float deviation = 3.0f;
                    float texelSize = 1.0f / (float)mBloomSize;

                    // central sample, no offset
                    mBloomTexOffsetsHorz[0, 0] = 0.0f;
                    mBloomTexOffsetsHorz[0, 1] = 0.0f;
                    mBloomTexOffsetsVert[0, 0] = 0.0f;
                    mBloomTexOffsetsVert[0, 1] = 0.0f;
                    mBloomTexWeights[0, 0] = mBloomTexWeights[0, 1] =
                        mBloomTexWeights[0, 2] = Math.GaussianDistribution(0, 0, deviation);
                    mBloomTexWeights[0, 3] = 1.0f;

                    // 'pre' samples
                    for (int i = 1; i < 8; ++i)
                    {
                        mBloomTexWeights[i, 0] = mBloomTexWeights[i, 1] =
                            mBloomTexWeights[i, 2] = 1.25f * Math.GaussianDistribution(i, 0, deviation);
                        mBloomTexWeights[i, 3] = 1.0f;
                        mBloomTexOffsetsHorz[i, 0] = i * texelSize;
                        mBloomTexOffsetsHorz[i, 1] = 0.0f;
                        mBloomTexOffsetsVert[i, 0] = 0.0f;
                        mBloomTexOffsetsVert[i, 1] = i * texelSize;
                    }
                    // 'post' samples
                    for (int i = 8; i < 15; ++i)
                    {
                        mBloomTexWeights[i, 0] = mBloomTexWeights[i, 1] =
                            mBloomTexWeights[i, 2] = mBloomTexWeights[i - 7, 0];
                        mBloomTexWeights[i, 3] = 1.0f;

                        mBloomTexOffsetsHorz[i, 0] = -mBloomTexOffsetsHorz[i - 7, 0];
                        mBloomTexOffsetsHorz[i, 1] = 0.0f;
                        mBloomTexOffsetsVert[i, 0] = 0.0f;
                        mBloomTexOffsetsVert[i, 1] = -mBloomTexOffsetsVert[i - 7, 1];
                    }

                }
            }
        }
예제 #16
0
 internal static global::System.Runtime.InteropServices.HandleRef getCPtr(CompositorInstance obj)
 {
     return((obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr);
 }
예제 #17
0
        public TexturePtr getPooledTexture(string name, string localName, uint w, uint h, PixelFormat f, uint aa, string aaHint, bool srgb, SWIGTYPE_p_std__setT_Ogre__Texture_p_t texturesAlreadyAssigned, CompositorInstance inst, CompositionTechnique.TextureScope scope)
        {
            TexturePtr ret = new TexturePtr(OgrePINVOKE.CompositorManager_getPooledTexture(swigCPtr, name, localName, w, h, (int)f, aa, aaHint, srgb, SWIGTYPE_p_std__setT_Ogre__Texture_p_t.getCPtr(texturesAlreadyAssigned), CompositorInstance.getCPtr(inst), (int)scope), true);

            if (OgrePINVOKE.SWIGPendingException.Pending)
            {
                throw OgrePINVOKE.SWIGPendingException.Retrieve();
            }
            return(ret);
        }
예제 #18
0
        //

        protected override void OnAttach()
        {
            base.OnAttach();

            instance = this;

            viewport = RendererWorld.Instance.DefaultViewport;

            window = ControlDeclarationManager.Instance.CreateControl(
                "Gui\\PostEffectsWindow.gui");
            Controls.Add(window);

            for (int n = 0; n < scrollBarFloatParameters.Length; n++)
            {
                scrollBarFloatParameters[n] = (EScrollBar)window.Controls[
                    "FloatParameter" + n.ToString()];
                scrollBarFloatParameters[n].ValueChange += floatParameter_ValueChange;
            }
            for (int n = 0; n < checkBoxBoolParameters.Length; n++)
            {
                checkBoxBoolParameters[n] = (ECheckBox)window.Controls["BoolParameter" + n.ToString()];
                checkBoxBoolParameters[n].CheckedChange += boolParameter_CheckedChange;
            }

            listBox = (EListBox)window.Controls["List"];
            listBox.Items.Add("HDR");
            listBox.Items.Add("LDRBloom");
            listBox.Items.Add("Glass");
            listBox.Items.Add("OldTV");
            listBox.Items.Add("HeatVision");
            listBox.Items.Add("MotionBlur");
            listBox.Items.Add("RadialBlur");
            listBox.Items.Add("Blur");
            listBox.Items.Add("Grayscale");
            listBox.Items.Add("Invert");
            listBox.Items.Add("Tiling");

            listBox.SelectedIndexChange += listBox_SelectedIndexChange;

            checkBoxEnabled        = (ECheckBox)window.Controls["Enabled"];
            checkBoxEnabled.Click += checkBoxEnabled_Click;

            for (int n = 0; n < listBox.Items.Count; n++)
            {
                EButton   itemButton = listBox.ItemButtons[n];
                ECheckBox checkBox   = (ECheckBox)itemButton.Controls["CheckBox"];

                string name = GetListCompositorItemName((string)listBox.Items[n]);

                CompositorInstance compositorInstance = viewport.GetCompositorInstance(name);
                if (compositorInstance != null && compositorInstance.Enabled)
                {
                    checkBox.Checked = true;
                }

                if (itemButton.Text == "HDR")
                {
                    checkBox.Enable = false;
                }

                checkBox.Click += listBoxCheckBox_Click;
            }

            listBox.SelectedIndex = 0;

            ((EButton)window.Controls["Close"]).Click += delegate(EButton sender)
            {
                SetShouldDetach();
            };

            //ApplyToTheScreenGUI
            {
                ECheckBox checkBox = (ECheckBox)window.Controls["ApplyToTheScreenGUI"];
                checkBox.Checked = EngineApp.Instance.ScreenGuiRenderer.ApplyPostEffectsToScreenRenderer;
                checkBox.Click  += delegate(ECheckBox sender)
                {
                    EngineApp.Instance.ScreenGuiRenderer.ApplyPostEffectsToScreenRenderer = sender.Checked;
                };
            }
        }