High-End Rendering

High-End Rendering

Nanite + Lumen + Substrate in production scenes

This section covers practical rendering boundaries for cinematics and gameplay maps with dense geometry.

Продвинутый рендеринг

Nanite + Lumen + Substrate в production-сценах

Раздел описывает практические ограничения рендеринга для кинематографичных и геймплейных карт с плотной геометрией.

Video Walkthrough

Видеообзор

Shared UE5 explainer video for this section.

Общее объясняющее видео по UE5 для этого раздела.

Nanite Geometry

Use Nanite for static or predictably deforming meshes. Keep fallback meshes clean for non-Nanite paths.

Применяйте Nanite для статичных или предсказуемо деформируемых мешей. Поддерживайте чистые fallback-меши для non-Nanite путей.

Lumen Lighting

Lumen GI and reflections require careful roughness and emissive balancing to avoid temporal instability.

Lumen GI и отражения требуют аккуратной настройки roughness и emissive, чтобы избежать temporal-нестабильности.

Renderer focus areas

Virtual Shadow Maps for crisp contact shadows in macro-detail scenes.
Substrate for layered BRDF behavior in hero materials.
Temporal Super Resolution budget allocation for motion-heavy sequences.

Note

Substrate material graphs can increase shader compile time significantly. Cache DDC in CI.

Графы материалов Substrate заметно увеличивают время компиляции шейдеров. Кэшируйте DDC в CI.

Warning

Mixing too many translucent layers with Lumen reflections can create severe performance spikes.

Сочетание большого количества translucent-слоев с Lumen reflections может вызывать резкие просадки производительности.

Tip

Profile with `stat GPU` and `r.ProfileGPU.ShowUI 1` after every major material revision.

Профилируйте через `stat GPU` и `r.ProfileGPU.ShowUI 1` после каждого крупного изменения материалов.

Source/RenderTuning/RenderTuningSubsystem.cpp
void URenderTuningSubsystem::ApplyCinematicPreset()
{
  IConsoleManager::Get().FindConsoleVariable(TEXT("r.Lumen.Reflections.HardwareRayTracing"))
    ->Set(1, ECVF_SetByCode);

  IConsoleManager::Get().FindConsoleVariable(TEXT("r.Shadow.Virtual.ResolutionLodBiasDirectional"))
    ->Set(-1, ECVF_SetByCode);

  IConsoleManager::Get().FindConsoleVariable(TEXT("r.Nanite.MaxPixelsPerEdge"))
    ->Set(1, ECVF_SetByCode);
}