Some debug features for color corrections and glow strength fix.

This commit is contained in:
Tleety
2016-01-27 17:21:00 +01:00
parent a63ecb8133
commit 97cbc55223
5 changed files with 92 additions and 73 deletions
@@ -7,6 +7,7 @@
#include "ShaderProgram.h" #include "ShaderProgram.h"
//#include "Util/UnorderedMapVec2.h" //#include "Util/UnorderedMapVec2.h"
#include "Texture.h" #include "Texture.h"
#include "imgui/imgui.h"
class DrawColorCorrectionPass class DrawColorCorrectionPass
{ {
@@ -23,7 +24,8 @@ private:
ShaderProgram* m_ColorCorrectionProgram; ShaderProgram* m_ColorCorrectionProgram;
Model* m_ScreenQuad; Model* m_ScreenQuad;
GLfloat m_Exposure; GLfloat m_Exposure = 1;
GLfloat m_Gamma = 2.2;
}; };
#endif #endif
+81 -68
View File
@@ -43,7 +43,7 @@
</c:RaptorCopter> </c:RaptorCopter>
<c:Transform> <c:Transform>
<Position X="2.1529963" Y="6.59221172" Z="0.169116676"/> <Position X="2.1529963" Y="6.59221172" Z="0.169116676"/>
<Orientation X="4.16300011" Y="1422.89319" Z="0"/> <Orientation X="4.16300011" Y="1885.31665" Z="0"/>
</c:Transform> </c:Transform>
</Components> </Components>
<Children/> <Children/>
@@ -85,7 +85,7 @@
<Components> <Components>
<c:Animation> <c:Animation>
<Name>Run</Name> <Name>Run</Name>
<Time>0.62051775215976157</Time> <Time>0.33637802883706303</Time>
<Speed>1</Speed> <Speed>1</Speed>
</c:Animation> </c:Animation>
<c:Model> <c:Model>
@@ -101,7 +101,7 @@
<Components> <Components>
<c:Animation> <c:Animation>
<Name>Walk</Name> <Name>Walk</Name>
<Time>0.28779680073140668</Time> <Time>0.0036570774087083535</Time>
<Speed>1</Speed> <Speed>1</Speed>
</c:Animation> </c:Animation>
<c:Model> <c:Model>
@@ -147,70 +147,6 @@
</c:Transform> </c:Transform>
</Components> </Components>
<Children> <Children>
<Entity name="NormalSphere">
<Components>
<c:Model>
<Resource>Models/NormalMapSphere.mesh</Resource>
</c:Model>
<c:Transform>
<Position X="1.82700014" Y="0" Z="-0.166000009"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="SpecularSphere">
<Components>
<c:Model>
<Resource>Models/SpecularMapSphere.mesh</Resource>
</c:Model>
<c:Transform>
<Position X="-1.06487739" Y="0" Z="1.52336037"/>
</c:Transform>
</Components>
<Children>
<Entity name="Rotationpoint">
<Components>
<c:RaptorCopter>
<Speed>1</Speed>
<Axis X="0.699999988" Y="1" Z="0.300000012"/>
</c:RaptorCopter>
<c:Transform>
<Orientation X="404.200684" Y="577.428955" Z="173.228897"/>
</c:Transform>
</Components>
<Children>
<Entity name="PointLight">
<Components>
<c:Model>
<Resource>Models/Core/UnitSphere.mesh</Resource>
<Color A="1" B="0" G="3.92156863" R="3.92156863"/>
</c:Model>
<c:PointLight>
<Radius>3</Radius>
<Intensity>1.1399998664855957</Intensity>
</c:PointLight>
<c:Transform>
<Position X="0.600000024" Y="0.5" Z="0"/>
<Scale X="0.100000001" Y="0.100000001" Z="0.100000001"/>
</c:Transform>
</Components>
<Children/>
</Entity>
</Children>
</Entity>
</Children>
</Entity>
<Entity name="GlowMap">
<Components>
<c:Model>
<Resource>Models/IncandescenceMapSphere.mesh</Resource>
</c:Model>
<c:Transform>
<Position X="-1.10000002" Y="0" Z="-1.80000007"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="CombinedSpheres"> <Entity name="CombinedSpheres">
<Components> <Components>
<c:Model> <c:Model>
@@ -227,7 +163,7 @@
<Axis X="1" Y="1" Z="1"/> <Axis X="1" Y="1" Z="1"/>
</c:RaptorCopter> </c:RaptorCopter>
<c:Transform> <c:Transform>
<Orientation X="53.9495354" Y="53.9495354" Z="53.9495354"/> <Orientation X="494.357269" Y="494.357269" Z="494.357269"/>
</c:Transform> </c:Transform>
</Components> </Components>
<Children> <Children>
@@ -284,6 +220,83 @@
</Entity> </Entity>
</Children> </Children>
</Entity> </Entity>
<Entity name="SphereRotationOrigin">
<Components>
<c:RaptorCopter>
<Speed>1</Speed>
<Axis X="0" Y="1" Z="0"/>
</c:RaptorCopter>
<c:Transform>
<Orientation X="0" Y="290.653473" Z="0"/>
</c:Transform>
</Components>
<Children>
<Entity name="NormalSphere">
<Components>
<c:Model>
<Resource>Models/NormalMapSphere.mesh</Resource>
</c:Model>
<c:Transform>
<Position X="1.82700014" Y="0" Z="-0.166000009"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="SpecularSphere">
<Components>
<c:Model>
<Resource>Models/SpecularMapSphere.mesh</Resource>
</c:Model>
<c:Transform>
<Position X="-1.06487739" Y="0" Z="1.52336037"/>
</c:Transform>
</Components>
<Children>
<Entity name="Rotationpoint">
<Components>
<c:RaptorCopter>
<Speed>1</Speed>
<Axis X="0.699999988" Y="1" Z="0.300000012"/>
</c:RaptorCopter>
<c:Transform>
<Orientation X="712.485046" Y="1017.83423" Z="305.350739"/>
</c:Transform>
</Components>
<Children>
<Entity name="PointLight">
<Components>
<c:Model>
<Resource>Models/Core/UnitSphere.mesh</Resource>
<Color A="1" B="0" G="3.92156863" R="3.92156863"/>
</c:Model>
<c:PointLight>
<Radius>3</Radius>
<Intensity>1.1399998664855957</Intensity>
</c:PointLight>
<c:Transform>
<Position X="0.600000024" Y="0.5" Z="0"/>
<Scale X="0.100000001" Y="0.100000001" Z="0.100000001"/>
</c:Transform>
</Components>
<Children/>
</Entity>
</Children>
</Entity>
</Children>
</Entity>
<Entity name="GlowMap">
<Components>
<c:Model>
<Resource>Models/IncandescenceMapSphere.mesh</Resource>
</c:Model>
<c:Transform>
<Position X="-1.10000002" Y="0" Z="-1.80000007"/>
</c:Transform>
</Components>
<Children/>
</Entity>
</Children>
</Entity>
</Children> </Children>
</Entity> </Entity>
</Children> </Children>
@@ -3,6 +3,7 @@
layout (binding = 0) uniform sampler2D SceneTexture; layout (binding = 0) uniform sampler2D SceneTexture;
layout (binding = 1) uniform sampler2D BloomTexture; layout (binding = 1) uniform sampler2D BloomTexture;
uniform float Exposure; uniform float Exposure;
uniform float Gamma;
in VertexData{ in VertexData{
vec2 TextureCoordinate; vec2 TextureCoordinate;
@@ -12,7 +13,6 @@ out vec4 fragmentColor;
void main() void main()
{ {
const float gamma = 2.2;
vec4 hdrColor = texture(SceneTexture, Input.TextureCoordinate); vec4 hdrColor = texture(SceneTexture, Input.TextureCoordinate);
vec4 bloomColor = texture(BloomTexture, Input.TextureCoordinate); vec4 bloomColor = texture(BloomTexture, Input.TextureCoordinate);
hdrColor += bloomColor; hdrColor += bloomColor;
@@ -21,7 +21,7 @@ void main()
vec3 result = vec3(1.0) - exp(-hdrColor.rgb * Exposure); vec3 result = vec3(1.0) - exp(-hdrColor.rgb * Exposure);
//gamme correction //gamme correction
result = pow(result, vec3(1.0 / gamma)); result = pow(result, vec3(1.0 / Gamma));
fragmentColor = vec4(result, 1.0); fragmentColor = vec4(result, 1.0);
//fragmentColor = hdrColor; //fragmentColor = hdrColor;
+1 -1
View File
@@ -160,7 +160,7 @@ void main()
color_result += FillColor; color_result += FillColor;
} }
sceneColor = vec4(color_result.xyz, clamp(color_result.a, 0, 1)); sceneColor = vec4(color_result.xyz, clamp(color_result.a, 0, 1));
color_result += glowTexel; color_result += glowTexel*3;
bloomColor = vec4(clamp(color_result.xyz - 1.0, 0, 100), 1.0); bloomColor = vec4(clamp(color_result.xyz - 1.0, 0, 100), 1.0);
@@ -5,7 +5,8 @@ DrawColorCorrectionPass::DrawColorCorrectionPass(IRenderer* renderer)
m_Renderer = renderer; m_Renderer = renderer;
m_ScreenQuad = ResourceManager::Load<Model>("Models/Core/ScreenQuad.mesh"); m_ScreenQuad = ResourceManager::Load<Model>("Models/Core/ScreenQuad.mesh");
m_Exposure = 0.4; //TODO: Renderer: Fixa så att denna går att ändra på genom komponent eller setting.
//m_Exposure = 0.4; //TODO: Renderer: Fixa så att denna går att ändra på genom komponent eller setting.
InitializeShaderPrograms(); InitializeShaderPrograms();
} }
@@ -21,6 +22,8 @@ void DrawColorCorrectionPass::InitializeShaderPrograms()
void DrawColorCorrectionPass::Draw(GLuint sceneTexture, GLuint bloomTexture) void DrawColorCorrectionPass::Draw(GLuint sceneTexture, GLuint bloomTexture)
{ {
ImGui::DragFloat("Exposure", &m_Exposure, 0.01f, 0.f, 10.f, "%.2f", 1.f);
ImGui::DragFloat("Gamma", &m_Gamma, 0.01f, 0.f, 50.f, "%.2f", 1.f);
//glBindFramebuffer(GL_FRAMEBUFFER, 0); //glBindFramebuffer(GL_FRAMEBUFFER, 0);
GLERROR("DrawScreenQuadPass::Draw: Pre"); GLERROR("DrawScreenQuadPass::Draw: Pre");
@@ -28,6 +31,7 @@ void DrawColorCorrectionPass::Draw(GLuint sceneTexture, GLuint bloomTexture)
m_ColorCorrectionProgram->Bind(); m_ColorCorrectionProgram->Bind();
glClear(GL_COLOR_BUFFER_BIT); glClear(GL_COLOR_BUFFER_BIT);
glUniform1f(glGetUniformLocation(m_ColorCorrectionProgram->GetHandle(), "Exposure"), m_Exposure); glUniform1f(glGetUniformLocation(m_ColorCorrectionProgram->GetHandle(), "Exposure"), m_Exposure);
glUniform1f(glGetUniformLocation(m_ColorCorrectionProgram->GetHandle(), "Gamma"), m_Gamma);
glActiveTexture(GL_TEXTURE0); glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, sceneTexture); glBindTexture(GL_TEXTURE_2D, sceneTexture);