//glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
//glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glBindTexture(GL_TEXTURE_2D, 0);
// attach it to currently bound framebuffer object
<ClCompile Include="main2.cpp" />
</ItemGroup>
<ItemGroup>
+ <None Include="mapinfo.fs" />
<None Include="shaders\depth.fs" />
<None Include="shaders\depth.vs" />
<None Include="shaders\fullscreenbase.vs" />
<None Include="shaders\ss_comp_main.fs">
<Filter>OpenGL\Shader Files</Filter>
</None>
+ <None Include="mapinfo.fs">
+ <Filter>OpenGL\Shader Files</Filter>
+ </None>
</ItemGroup>
<ItemGroup>
<Image Include="fonts\dina-r.png">
FrameBuffer fb_tex_playspace = FrameBuffer(m_renderWidth, m_renderHeight);
FrameBuffer fb_tex_objectives = FrameBuffer(m_renderWidth, m_renderHeight);
- FrameBuffer fb_comp = FrameBuffer(m_renderWidth, m_renderHeight);
- FrameBuffer fb_comp_1 = FrameBuffer(m_renderWidth, m_renderHeight); //Reverse ordered frame buffer
+ FrameBuffer fb_comp = FrameBuffer(m_renderWidth * 2, m_renderHeight * 2);
+ FrameBuffer fb_comp_1 = FrameBuffer(m_renderWidth * 2, m_renderHeight * 2); //Reverse ordered frame buffer
+ FrameBuffer fb_final = FrameBuffer(m_renderWidth, m_renderHeight);
// Screenspace quad
std::cout << "Creating screenspace mesh\n";
// ======================================================== REGULAR ORDER ========================================================
+ glViewport(0, 0, m_renderWidth * 2, m_renderHeight * 2);
+
fb_comp.Bind(); //Bind framebuffer
glClearColor(0.00f, 0.00f, 0.00f, 1.00f);
// ========================================================== PRE-COMP ===========================================================
+ glViewport(0, 0, m_renderWidth, m_renderHeight);
+
// Apply diffusion
fb_tex_playspace.Bind();
#pragma region render_objectives
std::cout << "Rendering bombsites & buyzones space... ";
+ glViewport(0, 0, m_renderWidth * 2, m_renderHeight * 2);
+
fb_comp.Bind();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
}
// Apply diffusion
+ glViewport(0, 0, m_renderWidth, m_renderHeight);
+
fb_tex_objectives.Bind();
glClearColor(0.00f, 0.00f, 0.00f, 0.00f);
#pragma region compositing
std::cout << "Compositing... \n";
- fb_comp.Bind();
+ fb_final.Bind();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPolygonMode(GL_FRONT, GL_FILL);
--- /dev/null
+#version 330 core
+
+out vec3 gPos; // Geo buffer (RGB16F)
+out vec3 gNorm; // Normal buffer (RGB888)
+out vec4 gInfo; // Info buffer (RGBA8888)
+
+uniform vec3 color;
+
+uniform float HEIGHT_MIN;
+uniform float HEIGHT_MAX;
+uniform float write_playable;
+uniform float write_cover;
+
+in vec3 FragPos;
+in float Depth;
+
+// Simple remap from-to range.
+float remap(float value, float low1, float high1, float low2, float high2)
+{
+ return low2 + (value - low1) * (high2 - low2) / (high1 - low1);
+}
+
+void main()
+{
+ float height = pow(remap(FragPos.y, HEIGHT_MIN, HEIGHT_MAX, 0, 1), 2.2);
+
+ FragColor = vec4(write_playable, height, write_cover, 1);
+}
\ No newline at end of file