From e02d223574b19f4f8af86f6d2639da7df6f07095 Mon Sep 17 00:00:00 2001 From: Faerbit Date: Sat, 7 Mar 2015 18:25:14 +0100 Subject: [PATCH] Reintroduced night texture. Throw a bunch of stuff out. --- data/shader/skydome.fsh | 27 ++------------------------ graphics.cc | 42 ++++------------------------------------- graphics.hh | 4 ---- 3 files changed, 6 insertions(+), 67 deletions(-) diff --git a/data/shader/skydome.fsh b/data/shader/skydome.fsh index 9d4ff71..3ea54ca 100644 --- a/data/shader/skydome.fsh +++ b/data/shader/skydome.fsh @@ -7,44 +7,21 @@ in vec4 sunPosition; out vec4 oColor; uniform sampler2D uTexture; +uniform sampler2D nightTexture; uniform float farPlane; uniform vec4 fogColor; uniform vec3 cameraCenter; uniform vec3 sunColor; uniform vec3 directionalVector; -uniform float skydomeSize; const float sunSize = 20.0; -const float starSize = 1.0; -const vec4 starColor = vec4(1.0, 1.0, 0.9, 1.0); - -const int starCount = 2; -vec3 starPositions[starCount] = vec3[]( - vec3(-0.3102524288591748, 0.9505037096381865, -0.016915328877346533), - vec3(-0.14085574439428544, 0.9519584459035886, -0.27190950065041153) -); - -float starSizes[starCount] = float[] ( - float(0.5), - float(1.2) -); void main() { vec4 textureColor = vec4(0.0, 0.0, 0.0, 1.0); float sunAngle = -dot(normalize(directionalVector), vec3(0.0, 1.0, 0.0)); vec4 dayColor = texture(uTexture, vTexCoord); if (sunAngle >= 0.0) { - vec4 nightColor = vec4(0.0, 0.0, 0.0, 1.0); - for(int i = 0; igetAttributeLocations()).create(); - flameColorShader = ShaderProgramCreator("flame_color") - .attributeLocations(fullscreen_quad->getAttributeLocations()).create(); - flamePostShader = ShaderProgramCreator("flame_post") .attributeLocations(fullscreen_quad->getAttributeLocations()).create(); - mergeShader = ShaderProgramCreator("merge") - .attributeLocations(fullscreen_quad->getAttributeLocations()).create(); - glGetIntegerv(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, &number_of_texture_units); printf("Your graphics card supports %d texture units.\n", number_of_texture_units); // Exit if we need more texture units - if (number_of_texture_units < 18) { - printf("You need at least 18 texture units to run this application. Exiting\n"); + if (number_of_texture_units < 16) { + printf("You need at least 16 texture units to run this application. Exiting\n"); exit(-1); } @@ -173,23 +167,8 @@ void Graphics::init(Level* level) { flamePostShader->setUniform("windowSizeX", int(windowSize.x)); flamePostShader->setUniform("windowSizeY", int(windowSize.y)); - flame_fbo_color_texture = SharedTexture2D(new Texture2D(windowSize, GL_RGBA8)); - flame_fbo_color_texture->setMinFilter(GL_NEAREST); - flame_fbo_color_texture->setMagFilter(GL_NEAREST); - flame_fbo_color_texture->setWrapS(GL_CLAMP_TO_BORDER); - flame_fbo_color_texture->setWrapT(GL_CLAMP_TO_BORDER); - framebuffer_flame = SharedFrameBufferObject(new FrameBufferObject()); - framebuffer_flame->attachColorTexture("oColor", flame_fbo_color_texture); - framebuffer_flame->setDepthTexture(light_fbo_depth_texture); - framebuffer_flame->setClearColor(glm::vec4(0.0f, 0.0f, 0.0f, 0.0f)); - framebuffer_flame->validate(); - - mergeShader->use(); - mergeShader->setTexture("flame_fbo", flame_fbo_color_texture, 15); - mergeShader->setTexture("light_fbo", light_fbo_color_texture, 16); - - flameColorShader->use(); - flameColorShader->setTexture("flame_fbo", flame_fbo_color_texture, 17); + skydomeShader->use(); + skydomeShader->setTexture("nightTexture", level->getSkydome()->getNightTexture()->getReference(), 15); updateClosestLights(); } @@ -322,8 +301,6 @@ void Graphics::render(double time) // draw flames on top flameShader->use(); - framebuffer_flame->bind(); - glClear(GL_COLOR_BUFFER_BIT); // cull faces to get consistent color while using alpha glEnable(GL_CULL_FACE); glCullFace(GL_BACK); @@ -345,17 +322,6 @@ void Graphics::render(double time) flame_positions->render(); glDisable(GL_CULL_FACE); - glDepthMask(GL_FALSE); - flameColorShader->use(); - fullscreen_quad->render(); - - framebuffer_light->bind(); - mergeShader->use(); - glDisable(GL_DEPTH_TEST); - fullscreen_quad->render(); - glEnable(GL_DEPTH_TEST); - - // draw slightly larger only for stencil buffer to blur edges flameShader->use(); glEnable(GL_STENCIL_TEST); diff --git a/graphics.hh b/graphics.hh index 2e63246..3e5358a 100644 --- a/graphics.hh +++ b/graphics.hh @@ -35,16 +35,12 @@ class Graphics { SharedShaderProgram depthCubeShader; SharedShaderProgram depthShader; SharedShaderProgram flameShader; - SharedShaderProgram flameColorShader; SharedShaderProgram flamePostShader; - SharedShaderProgram mergeShader; std::vector depth_directionalMaps; std::vector framebuffer_directional; std::vector depth_cubeMaps; SharedFrameBufferObject framebuffer_cube; SharedFrameBufferObject framebuffer_light; - SharedFrameBufferObject framebuffer_flame; - SharedTexture2D flame_fbo_color_texture; SharedTexture2D light_fbo_color_texture; SharedTexture2D light_fbo_depth_texture; SharedVertexArrayObject flame_positions;