diff --git a/shaders/shadow.frag.glsl b/shaders/shadow.frag.glsl index c0352e9..4882e85 100644 --- a/shaders/shadow.frag.glsl +++ b/shaders/shadow.frag.glsl @@ -16,12 +16,11 @@ void main() if(texture(alphaMask, varTexCoord).r < 0.5) discard; #endif - /* + #ifdef POINT_LIGHT //gl_FragDepth = float(fcolor_idx)/6; gl_FragDepth = length(fragPos.xyz)/far_plane; #else gl_FragDepth = gl_FragCoord.z; -#endif*/ - gl_FragDepth = 0.5; +#endif } diff --git a/src/deferredpipeline.cpp b/src/deferredpipeline.cpp index c011f24..fe6fb93 100644 --- a/src/deferredpipeline.cpp +++ b/src/deferredpipeline.cpp @@ -105,6 +105,8 @@ void DeferredPipeline::renderGL(Scene *scene) if(m_renderTarget == NULL) return; + glViewport(0, 0, m_width, m_height); + // GEOMETRY PASS std::vector mesh2D; m_gBuffer->bindFBO(); diff --git a/src/light.cpp b/src/light.cpp index 5db5283..d37c7c6 100644 --- a/src/light.cpp +++ b/src/light.cpp @@ -108,11 +108,14 @@ void DirectionnalLight::initShadowMap(int resolution, bool isCascaded) unsigned int flag = 1 << DIRECTIONNAL_FLAG; m_shaders[0] = source.compile(Mesh::MESH_3D, flag); m_shaders[1] = source.compile(Mesh::MESH_3D & Mesh::MATERIAL_ALPHA_MASK, flag); - + + // not ready yet + /* source.setSource(shaderMap["shaders/shadow.geom.glsl"], ShaderSource::GEOMETRY); flag |= 1 << CASCADED_FLAG; m_shaders[2] = source.compile(Mesh::MESH_3D, flag); m_shaders[3] = source.compile(Mesh::MESH_3D & Mesh::MATERIAL_ALPHA_MASK, flag); + */ } if(!m_shadowCaster) ++m_shaderRefCounter; @@ -157,7 +160,7 @@ void DirectionnalLight::destroyShadowMap() --m_shaderRefCounter; if(m_shaderRefCounter == 0) { - for(int i=0; i<4; ++i) + for(int i=0; i<2; ++i) // TODO replace 2 by 4 when cascaded shadowmaps shaders are ready delete m_shaders[i]; } if(m_shadowMap != NULL) diff --git a/src/light.h b/src/light.h index bbcbb65..8d8c3b7 100644 --- a/src/light.h +++ b/src/light.h @@ -69,13 +69,14 @@ public: virtual LightType getType() { return DIRECTIONNAL; } virtual void bindAttributes(Shader *shader, Camera *camera); virtual unsigned int getFlags(); + virtual bool isShadowCaster() { return m_shadowCaster; } void initShadowMap(int resolution, bool isCascaded = false); void destroyShadowMap(); void setShadowView(glm::vec3 dim = glm::vec3(1), glm::vec3 center = glm::vec3(0)); void setCascadedShadowView(Camera *camera); void updateShadowMap(Scene* scene); - + private: glm::vec3 m_direction;