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(); }
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; } }
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); } } } }
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]; } } } }
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); }
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); }
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); }
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); }
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]; } } } }
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); } } }
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; } }
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; } } }
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]; } } } }
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); }
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); }
// 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; }; } }