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)
|
||||
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
|
||||
}
|
||||
|
@ -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<GeometryNode*> mesh2D;
|
||||
m_gBuffer->bindFBO();
|
||||
|
@ -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)
|
||||
|
@ -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;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user