fbo.attach(DEPTH_ATTACHMENT, depth_buf, 0);
set_darkness(1.0f);
- for(unsigned i=0; i<4; ++i)
+ for(unsigned i=0; i<6; ++i)
{
string base = format("shadows[%d]", i);
shdata.uniform(base+".type", 0);
{
float distance = (sqrt(2.0f/3.0f)-sqrt(3.0f/8.0f))*2.0f;
float bias = depth_bias*2.0f/(distance*l.region.width);
- shdata.uniform(base+".bias", -1001.0f/999.0f, 1.0f-bias);
+ shdata.uniform(base+".bias", views[l.view_index].camera.get_projection_matrix()(2, 2), 1.0f-bias);
}
}
v.camera.set_depth_clip(radius/1000.0f, radius);
}
- Matrix to_texcoord = Matrix().translate(Vector3(0.5f, 0.5f, 0.5f)).scale(0.5f);
+ Matrix to_texcoord = Matrix().translate(Vector3(0.5f, 0.5f, 0.0f)).scale(Vector3(0.5f, 0.5f, 1.0f));
shadow_matrices.push_back(to_texcoord*v.camera.get_projection_matrix()*v.camera.get_view_matrix());
}
throw invalid_operation("ShadowMap::Template::create");
}
+ create_base(*shadow_map);
+
return shadow_map.release();
}