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);