void GLSparseShadowMapRenderer::Render() { SPADES_MARK_FUNCTION(); IGLDevice::Integer lastFb = device->GetInteger(IGLDevice::FramebufferBinding); //client::SceneDefinition def = GetRenderer()->GetSceneDef(); float nearDist = 0.f; float farDist = 150.f; BuildMatrix(nearDist, farDist); device->BindFramebuffer(IGLDevice::Framebuffer, framebuffer); device->Viewport(0, 0, textureSize, textureSize); device->ClearDepth(1.f); device->Clear(IGLDevice::DepthBufferBit); RenderShadowMapPass(); device->BindFramebuffer(IGLDevice::Framebuffer, lastFb); device->Viewport(0, 0, device->ScreenWidth(), device->ScreenHeight()); }
void GLBasicShadowMapRenderer::Render() { SPADES_MARK_FUNCTION(); IGLDevice::Integer lastFb = device->GetInteger(IGLDevice::FramebufferBinding); // client::SceneDefinition def = GetRenderer()->GetSceneDef(); float nearDist = 0.f; for (int i = 0; i < NumSlices; i++) { GLProfiler::Context profiler(GetRenderer()->GetGLProfiler(), "Slice %d / %d", i + 1, (int)NumSlices); float farDist = 0.0; // TODO: variable far distance according to the scene definition // (note that this needs uniform shader variable) switch (i) { case 0: farDist = 12.f; break; case 1: farDist = 40.f; break; case 2: farDist = 150.f; break; } BuildMatrix(nearDist, farDist); matrices[i] = matrix; /* printf("m[%d]=\n[%f,%f,%f,%f]\n[%f,%f,%f,%f]\n[%f,%f,%f,%f]\n[%f,%f,%f,%f]\n", i, matrix.m[0], matrix.m[4], matrix.m[8], matrix.m[12], matrix.m[1], matrix.m[5], matrix.m[9], matrix.m[13], matrix.m[2], matrix.m[6], matrix.m[10], matrix.m[14], matrix.m[3], matrix.m[7], matrix.m[11], matrix.m[15]);*/ /* matrix = Matrix4::Identity(); matrix = Matrix4::Scale(1.f / 16.f); matrix = matrix * Matrix4::Rotate(MakeVector3(1, 0, 0), M_PI / 4.f); matrix = matrix * Matrix4::Translate(-def.viewOrigin); matrix = Matrix4::Scale(1,1,16.f / 70.f) * matrix;*/ device->BindFramebuffer(IGLDevice::Framebuffer, framebuffer[i]); device->Viewport(0, 0, textureSize, textureSize); device->ClearDepth(1.f); device->Clear(IGLDevice::DepthBufferBit); RenderShadowMapPass(); nearDist = farDist; } device->BindFramebuffer(IGLDevice::Framebuffer, lastFb); device->Viewport(0, 0, device->ScreenWidth(), device->ScreenHeight()); }