| 435 | } |
| 436 | |
| 437 | void OpenGLFrameBuffer::UpdateShadowMap() |
| 438 | { |
| 439 | if (mShadowMap.PerformUpdate()) |
| 440 | { |
| 441 | FGLDebug::PushGroup("ShadowMap"); |
| 442 | |
| 443 | FGLPostProcessState savedState; |
| 444 | |
| 445 | static_cast<GLDataBuffer*>(screen->mShadowMap.mLightList)->BindBase(); |
| 446 | static_cast<GLDataBuffer*>(screen->mShadowMap.mNodesBuffer)->BindBase(); |
| 447 | static_cast<GLDataBuffer*>(screen->mShadowMap.mLinesBuffer)->BindBase(); |
| 448 | |
| 449 | GLRenderer->mBuffers->BindShadowMapFB(); |
| 450 | |
| 451 | GLRenderer->mShadowMapShader->Bind(); |
| 452 | GLRenderer->mShadowMapShader->Uniforms->ShadowmapQuality = gl_shadowmap_quality; |
| 453 | GLRenderer->mShadowMapShader->Uniforms->NodesCount = screen->mShadowMap.NodesCount(); |
| 454 | GLRenderer->mShadowMapShader->Uniforms.SetData(); |
| 455 | static_cast<GLDataBuffer*>(GLRenderer->mShadowMapShader->Uniforms.GetBuffer())->BindBase(); |
| 456 | |
| 457 | glViewport(0, 0, gl_shadowmap_quality, 1024); |
| 458 | GLRenderer->RenderScreenQuad(); |
| 459 | |
| 460 | const auto& viewport = screen->mScreenViewport; |
| 461 | glViewport(viewport.left, viewport.top, viewport.width, viewport.height); |
| 462 | |
| 463 | GLRenderer->mBuffers->BindShadowMapTexture(16); |
| 464 | FGLDebug::PopGroup(); |
| 465 | screen->mShadowMap.FinishUpdate(); |
| 466 | } |
| 467 | } |
| 468 | |
| 469 | void OpenGLFrameBuffer::WaitForCommands(bool finish) |
| 470 | { |
nothing calls this directly
no test coverage detected