MCPcopy Create free account
hub / github.com/OpenStarbound/OpenStarbound / render

Method render

source/client/StarClientApplication.cpp:387–449  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

385}
386
387void ClientApplication::render() {
388 m_framesSkipped = 0;
389 auto config = m_root->configuration();
390 auto assets = m_root->assets();
391 auto& renderer = Application::renderer();
392
393 renderer->setMultiSampling(config->get("antiAliasing").optBool().value(false) ? 4 : 0);
394 renderer->switchEffectConfig("interface");
395
396 if (auto interfaceScale = config->get("interfaceScale").optUInt().value())
397 m_guiContext->setInterfaceScale(interfaceScale);
398 else if (m_guiContext->windowWidth() >= m_crossoverRes[0] && m_guiContext->windowHeight() >= m_crossoverRes[1])
399 m_guiContext->setInterfaceScale(m_maxInterfaceScale);
400 else
401 m_guiContext->setInterfaceScale(m_minInterfaceScale);
402
403 if (m_state == MainAppState::Mods || m_state == MainAppState::Splash) {
404 m_cinematicOverlay->render();
405
406 } else if (m_state == MainAppState::Title) {
407 m_titleScreen->render();
408 m_cinematicOverlay->render();
409
410 } else if (m_state > MainAppState::Title) {
411 WorldClientPtr worldClient = m_universeClient->worldClient();
412 if (worldClient) {
413 auto totalStart = Time::monotonicMicroseconds();
414 renderer->switchEffectConfig("world");
415 auto clientStart = totalStart;
416 worldClient->render(m_renderData, TilePainter::BorderTileSize);
417 LogMap::set("client_render_world_client", strf(u8"{:05d}\u00b5s", Time::monotonicMicroseconds() - clientStart));
418
419 auto paintStart = Time::monotonicMicroseconds();
420 m_worldPainter->render(m_renderData, [&]() -> bool {
421 return worldClient->waitForLighting(&m_renderData);
422 });
423 LogMap::set("client_render_world_painter", strf(u8"{:05d}\u00b5s", Time::monotonicMicroseconds() - paintStart));
424 LogMap::set("client_render_world_total", strf(u8"{:05d}\u00b5s", Time::monotonicMicroseconds() - totalStart));
425
426 auto size = Vec2F(renderer->screenSize());
427 auto quad = renderFlatRect(RectF::withSize(size / -2, size), Vec4B::filled(0), 0.0f);
428 for (auto& layer : m_postProcessLayers) {
429 if (layer.group ? layer.group->enabled : true) {
430 for (unsigned i = 0; i < layer.passes; i++) {
431 for (auto& effect : layer.effects) {
432 renderer->switchEffectConfig(effect);
433 renderer->render(quad);
434 }
435 }
436 }
437 }
438 }
439 renderer->switchEffectConfig("interface");
440 auto start = Time::monotonicMicroseconds();
441 m_mainInterface->renderInWorldElements();
442 m_mainInterface->render();
443 m_cinematicOverlay->render();
444 LogMap::set("client_render_interface", strf(u8"{:05d}\u00b5s", Time::monotonicMicroseconds() - start));

Callers

nothing calls this directly

Calls 15

strfFunction · 0.85
renderFlatRectFunction · 0.85
configurationMethod · 0.80
assetsMethod · 0.80
setMultiSamplingMethod · 0.80
optBoolMethod · 0.80
switchEffectConfigMethod · 0.80
optUIntMethod · 0.80
setInterfaceScaleMethod · 0.80
worldClientMethod · 0.80
waitForLightingMethod · 0.80
renderInWorldElementsMethod · 0.80

Tested by

no test coverage detected