fixed shadows, fixed bad viewport when using shadows
This commit is contained in:
parent
73d8c4a0e6
commit
7cafed3e67
@ -16,12 +16,11 @@ void main()
|
|||||||
if(texture(alphaMask, varTexCoord).r < 0.5)
|
if(texture(alphaMask, varTexCoord).r < 0.5)
|
||||||
discard;
|
discard;
|
||||||
#endif
|
#endif
|
||||||
/*
|
|
||||||
#ifdef POINT_LIGHT
|
#ifdef POINT_LIGHT
|
||||||
//gl_FragDepth = float(fcolor_idx)/6;
|
//gl_FragDepth = float(fcolor_idx)/6;
|
||||||
gl_FragDepth = length(fragPos.xyz)/far_plane;
|
gl_FragDepth = length(fragPos.xyz)/far_plane;
|
||||||
#else
|
#else
|
||||||
gl_FragDepth = gl_FragCoord.z;
|
gl_FragDepth = gl_FragCoord.z;
|
||||||
#endif*/
|
#endif
|
||||||
gl_FragDepth = 0.5;
|
|
||||||
}
|
}
|
||||||
|
@ -105,6 +105,8 @@ void DeferredPipeline::renderGL(Scene *scene)
|
|||||||
if(m_renderTarget == NULL)
|
if(m_renderTarget == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
glViewport(0, 0, m_width, m_height);
|
||||||
|
|
||||||
// GEOMETRY PASS
|
// GEOMETRY PASS
|
||||||
std::vector<GeometryNode*> mesh2D;
|
std::vector<GeometryNode*> mesh2D;
|
||||||
m_gBuffer->bindFBO();
|
m_gBuffer->bindFBO();
|
||||||
|
@ -108,11 +108,14 @@ void DirectionnalLight::initShadowMap(int resolution, bool isCascaded)
|
|||||||
unsigned int flag = 1 << DIRECTIONNAL_FLAG;
|
unsigned int flag = 1 << DIRECTIONNAL_FLAG;
|
||||||
m_shaders[0] = source.compile(Mesh::MESH_3D, flag);
|
m_shaders[0] = source.compile(Mesh::MESH_3D, flag);
|
||||||
m_shaders[1] = source.compile(Mesh::MESH_3D & Mesh::MATERIAL_ALPHA_MASK, 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);
|
source.setSource(shaderMap["shaders/shadow.geom.glsl"], ShaderSource::GEOMETRY);
|
||||||
flag |= 1 << CASCADED_FLAG;
|
flag |= 1 << CASCADED_FLAG;
|
||||||
m_shaders[2] = source.compile(Mesh::MESH_3D, flag);
|
m_shaders[2] = source.compile(Mesh::MESH_3D, flag);
|
||||||
m_shaders[3] = source.compile(Mesh::MESH_3D & Mesh::MATERIAL_ALPHA_MASK, flag);
|
m_shaders[3] = source.compile(Mesh::MESH_3D & Mesh::MATERIAL_ALPHA_MASK, flag);
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
if(!m_shadowCaster)
|
if(!m_shadowCaster)
|
||||||
++m_shaderRefCounter;
|
++m_shaderRefCounter;
|
||||||
@ -157,7 +160,7 @@ void DirectionnalLight::destroyShadowMap()
|
|||||||
--m_shaderRefCounter;
|
--m_shaderRefCounter;
|
||||||
if(m_shaderRefCounter == 0)
|
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];
|
delete m_shaders[i];
|
||||||
}
|
}
|
||||||
if(m_shadowMap != NULL)
|
if(m_shadowMap != NULL)
|
||||||
|
@ -69,13 +69,14 @@ public:
|
|||||||
virtual LightType getType() { return DIRECTIONNAL; }
|
virtual LightType getType() { return DIRECTIONNAL; }
|
||||||
virtual void bindAttributes(Shader *shader, Camera *camera);
|
virtual void bindAttributes(Shader *shader, Camera *camera);
|
||||||
virtual unsigned int getFlags();
|
virtual unsigned int getFlags();
|
||||||
|
virtual bool isShadowCaster() { return m_shadowCaster; }
|
||||||
|
|
||||||
void initShadowMap(int resolution, bool isCascaded = false);
|
void initShadowMap(int resolution, bool isCascaded = false);
|
||||||
void destroyShadowMap();
|
void destroyShadowMap();
|
||||||
void setShadowView(glm::vec3 dim = glm::vec3(1), glm::vec3 center = glm::vec3(0));
|
void setShadowView(glm::vec3 dim = glm::vec3(1), glm::vec3 center = glm::vec3(0));
|
||||||
void setCascadedShadowView(Camera *camera);
|
void setCascadedShadowView(Camera *camera);
|
||||||
void updateShadowMap(Scene* scene);
|
void updateShadowMap(Scene* scene);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
glm::vec3 m_direction;
|
glm::vec3 m_direction;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user