diff --git a/SMCode/SM.Base/PostEffects/BloomEffect.cs b/SMCode/SM.Base/PostEffects/BloomEffect.cs index a68552a..fe2a865 100644 --- a/SMCode/SM.Base/PostEffects/BloomEffect.cs +++ b/SMCode/SM.Base/PostEffects/BloomEffect.cs @@ -15,44 +15,42 @@ namespace SM.Base.PostEffects { public class BloomEffect : PostProcessEffect { - private static BezierCurve _defaultCurve = new BezierCurve(Vector2.UnitY, new Vector2(0.32f, 1), new Vector2(0.432f, 0), new Vector2(1,0)); + private static BezierCurve _defaultCurve = new BezierCurve(Vector2.UnitY, Vector2.Zero, new Vector2(0.4f, 0), new Vector2(.5f,0)); + private static readonly PostProcessShader _mergeShader = new PostProcessShader( + AssemblyUtility.ReadAssemblyFile(SMRenderer.PostProcessPath + ".bloom_merge_vert.glsl"), + AssemblyUtility.ReadAssemblyFile(SMRenderer.PostProcessPath + ".bloom_merge.glsl")); + private static readonly PostProcessShader _shader = + new PostProcessShader(AssemblyUtility.ReadAssemblyFile(SMRenderer.PostProcessPath + ".bloom_blur.glsl")); private const float _defaultTextureScale = .75f; - private static readonly BezierCurve _defaultCurve = new BezierCurve(Vector2.UnitY, new Vector2(0.32f, 1), - new Vector2(0.432f, 0), new Vector2(1, 0)); + private Framebuffer _source; private Framebuffer _bloomBuffer1; private Framebuffer _bloomBuffer2; private readonly bool _hdr; - private readonly PostProcessShader _mergeShader = new PostProcessShader( - AssemblyUtility.ReadAssemblyFile(SMRenderer.PostProcessPath + ".bloom_merge_vert.glsl"), - AssemblyUtility.ReadAssemblyFile(SMRenderer.PostProcessPath + ".bloom_merge.glsl")); - - private readonly PostProcessShader _shader = - new PostProcessShader(AssemblyUtility.ReadAssemblyFile(SMRenderer.PostProcessPath + ".bloom_blur.glsl")); - - private Framebuffer _source; - private readonly float _textureScale = .75f; private BezierCurve _weightCurve; private float[] _weights; - public int Iterations = 1; + private ColorAttachment _xBuffer; + private ColorAttachment _yBuffer; + + public TextureBase AmountMap; + public TextureTransformation AmountTransform = new TextureTransformation(); + + public int Iterations = 8; public float Threshold = .8f; public float Power = 1; public bool Enable = true; - public int Iterations = 1; public float MaxAmount = 1; public float MinAmount = 0; - public float Power = 1; - public float Threshold = .8f; public int WeightCurvePickAmount = 4; diff --git a/SMCode/SM.Base/PostEffects/PostProcessFinals.cs b/SMCode/SM.Base/PostEffects/PostProcessUtility.cs similarity index 98% rename from SMCode/SM.Base/PostEffects/PostProcessFinals.cs rename to SMCode/SM.Base/PostEffects/PostProcessUtility.cs index 0cfd160..e8c7b31 100644 --- a/SMCode/SM.Base/PostEffects/PostProcessFinals.cs +++ b/SMCode/SM.Base/PostEffects/PostProcessUtility.cs @@ -12,7 +12,7 @@ namespace SM.Base.PostEffects /// /// This class has some utility for render pipelines /// - public static class PostProcessFinals + public static class PostProcessUtility { private static readonly PostProcessShader _hdrExposureShader = new PostProcessShader(AssemblyUtility.ReadAssemblyFile(SMRenderer.PostProcessPath + ".finalize_hdr.glsl")); diff --git a/SMCode/SM.Base/SM.Base.csproj b/SMCode/SM.Base/SM.Base.csproj index e804a2f..a94f33e 100644 --- a/SMCode/SM.Base/SM.Base.csproj +++ b/SMCode/SM.Base/SM.Base.csproj @@ -64,7 +64,7 @@ - + diff --git a/SMCode/SM.Base/Scene/GenericItemCollection.cs b/SMCode/SM.Base/Scene/GenericItemCollection.cs index 0b341aa..c3a3076 100644 --- a/SMCode/SM.Base/Scene/GenericItemCollection.cs +++ b/SMCode/SM.Base/Scene/GenericItemCollection.cs @@ -3,7 +3,8 @@ using System.Collections.Generic; using System.Collections.ObjectModel; using SM.Base.Drawing; -using SM.Base.Windows; +using SM.Base.Window; +using SM.Base.Window.Contexts; #endregion @@ -15,6 +16,7 @@ namespace SM.Base.Scene public abstract class GenericItemCollection : List, IShowItem, IShowCollection, IScriptable, IFixedScriptable { private List _scriptableObjects = new List(); + private List _fixedScriptables = new List(); /// /// Currently active script objects. diff --git a/SMCode/SM.Base/Scene/GenericScene.cs b/SMCode/SM.Base/Scene/GenericScene.cs index c88af9f..e93bae4 100644 --- a/SMCode/SM.Base/Scene/GenericScene.cs +++ b/SMCode/SM.Base/Scene/GenericScene.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; using SM.Base.Utility; using SM.Base.Window; +using SM.Base.Window.Contexts; #endregion diff --git a/SMCode/SM.Base/Window/GLWindow.cs b/SMCode/SM.Base/Window/GLWindow.cs index cb72eab..14a9f00 100644 --- a/SMCode/SM.Base/Window/GLWindow.cs +++ b/SMCode/SM.Base/Window/GLWindow.cs @@ -1,14 +1,17 @@ #region usings using System; +using System.ComponentModel; +using System.Diagnostics; +using System.Threading; using System.Windows.Forms; using OpenTK; using OpenTK.Graphics; using OpenTK.Input; using SM.Base.Scene; +using SM.Base.Utility; using SM.Base.Window.Contexts; using SM.OGL; -using SM.Utility; using Mouse = SM.Base.Controls.Mouse; #endregion @@ -54,41 +57,7 @@ namespace SM.Base.Window public GenericScene CurrentScene { get; private set; } public RenderPipeline CurrentRenderPipeline { get; private set; } - - public void Update(UpdateContext context) - { - } - - public void ApplySetup(ISetup setup) - { - AppliedSetup = setup; - setup.Applied(this); - } - - public void SetScene(GenericScene scene) - { - if (Loading) - { - Loaded += window => SetScene(scene); - return; - } - - WindowCode.PrepareScene(this, scene); - CurrentScene = scene; - } - - public void SetRenderPipeline(RenderPipeline renderPipeline) - { - if (Loading) - { - Loaded += window => SetRenderPipeline(renderPipeline); - return; - } - - WindowCode.PreparePipeline(this, renderPipeline); - CurrentRenderPipeline = renderPipeline; - } - + public void TriggerLoad() { Load?.Invoke(this); @@ -155,7 +124,7 @@ namespace SM.Base.Window protected override void OnClosing(CancelEventArgs e) { base.OnClosing(e); - _fixedUpdateThread.Abort(); + _fixedUpdateThread?.Abort(); } public void Update(UpdateContext context) diff --git a/SMCode/SM.OGL/Shaders/UniformCollection.cs b/SMCode/SM.OGL/Shaders/UniformCollection.cs index a0e231e..a4ab939 100644 --- a/SMCode/SM.OGL/Shaders/UniformCollection.cs +++ b/SMCode/SM.OGL/Shaders/UniformCollection.cs @@ -24,7 +24,7 @@ namespace SM.OGL.Shaders } catch (KeyNotFoundException) { - GLCustomActions.AtWarning?.Invoke("Uniform '" + KeyString + key + "' at '" + ParentShader.GetType().Name + "' was not found. Tried to recreate it."); + GLCustomActions.AtWarning?.Invoke("Uniform '" + KeyString + key + "' at '" + ParentShader.ToString() + "' was not found. Tried to recreate it."); var u = new Uniform(GL.GetUniformLocation(ParentShader, KeyString + key), this); Add(key, u); return u; diff --git a/SMCode/SM2D/Shader/ShaderFiles/basic.glsl b/SMCode/SM2D/Shader/ShaderFiles/basic.glsl index 95d50a5..075b00f 100644 --- a/SMCode/SM2D/Shader/ShaderFiles/basic.glsl +++ b/SMCode/SM2D/Shader/ShaderFiles/basic.glsl @@ -11,4 +11,5 @@ layout(location = 0) out vec4 color; void main() { color = v_Color * Tint; if (UseTexture) color *= texture(Texture, v_TexCoords); + color *= 1.2; } \ No newline at end of file diff --git a/SM_TEST/Program.cs b/SM_TEST/Program.cs index ecceac9..0ec8175 100644 --- a/SM_TEST/Program.cs +++ b/SM_TEST/Program.cs @@ -1,4 +1,5 @@ using OpenTK; +using OpenTK.Graphics; using OpenTK.Input; using SM.Base; using SM.Base.Window; @@ -56,7 +57,7 @@ namespace SM_TEST DrawText text = new DrawText(font, "Test Text"); text.Transform.Position.Set(50, 0); text.Transform.Size.Set(2); - scene.Objects.Add(text); + scene.HUD.Add(text); //particles.Trigger(); } diff --git a/SM_TEST/TestRenderPipeline.cs b/SM_TEST/TestRenderPipeline.cs index c2e5c5f..8c837f9 100644 --- a/SM_TEST/TestRenderPipeline.cs +++ b/SM_TEST/TestRenderPipeline.cs @@ -13,11 +13,11 @@ namespace SM_TEST public override void Initialization() { - MainFramebuffer = CreateWindowFramebuffer(2); + MainFramebuffer = CreateWindowFramebuffer(0); _postBuffer = CreateWindowFramebuffer(); Framebuffers.Add(_postBuffer); - _bloom = new BloomEffect(hdr: true) + _bloom = new BloomEffect(MainFramebuffer, hdr: true, .5f) { Threshold = .8f, }; @@ -33,9 +33,7 @@ namespace SM_TEST context.Scene.DrawBackground(context); context.Scene.DrawMainObjects(context); context.Scene.DrawHUD(context); - - PostProcessFinals.ResolveMultisampledBuffers(MainFramebuffer, _postBuffer); - + Framebuffer.Screen.Activate(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit); _bloom.Draw(context);