# DA_RenderPipelineProfile — Data Asset **Parent Class:** `UPrimaryDataAsset` **Dependencies:** [`BPC_RenderPipelineManager`](../12-settings/149_BPC_RenderPipelineManager.md) **Purpose:** Defines a complete rendering pipeline configuration for a specific quality tier on a specific platform family. Each profile maps quality presets (Low/Medium/High/Ultra/Cinematic) to concrete UE5 render settings: global illumination method, shadow method, reflection method, anti-aliasing, upscaling, Nanite/LOD strategy, and post-process presets. Designers configure these per-platform so PS4 gets baked light + CSM shadows while PS5 gets Lumen + Virtual Shadow Maps. --- ## Design Rationale UE5's rendering pipeline is **not runtime-switchable** for certain features (Lumen ON/OFF, Nanite ON/OFF). These must be configured before the engine initializes or before a level loads. This Data Asset serves as the single source of truth for the render pipeline configuration. `BPC_RenderPipelineManager` reads the appropriate profile based on the player's quality selection and platform, then applies console variables through UE5's `IConsoleManager` or `UGameUserSettings` scalability API. --- ## 1. Enums ### `ERenderPipelineMethod` | Value | Description | |-------|-------------| | `Lumen_GI = 0` | Lumen Global Illumination + Reflection | | `Baked_Lightmass = 1` | Static baked lightmaps + reflection captures | | `SSGI = 2` | Screen-space global illumination (mid-range fallback) | | `None = 3` | No GI — unlit or emissive-only | ### `EShadowMethod` | Value | Description | |-------|-------------| | `VirtualShadowMaps = 0` | UE5 Virtual Shadow Maps (Nanite-compatible) | | `CascadedShadowMaps = 1` | Traditional CSM (low-end compatible) | | `DistanceFieldShadows = 2` | Ray-traced distance field shadows | | `None = 3` | No dynamic shadows | ### `EReflectionMethod` | Value | Description | |-------|-------------| | `Lumen_Reflections = 0` | Lumen reflection system | | `ScreenSpace = 1` | Screen-space reflections (SSR) | | `ReflectionCaptures = 2` | Static sphere/box reflection captures (baked) | | `None = 3` | No reflections | ### `EUpscalerMethod` | Value | Description | |-------|-------------| | `TSR = 0` | Temporal Super Resolution (UE5 built-in) | | `DLSS = 1` | NVIDIA DLSS 3 (requires plugin + RTX GPU) | | `FSR = 2` | AMD FidelityFX Super Resolution 2/3 | | `PSSR = 3` | PlayStation Spectral Super Resolution (PS5 Pro only) | | `XeSS = 4` | Intel Xe Super Sampling | | `NIS = 5` | NVIDIA Image Scaling (vendor-agnostic) | | `None = 6` | Native resolution — no upscaling | | `TAAU = 7` | Temporal Anti-Aliasing Upsample (legacy) | ### `EMeshStrategy` | Value | Description | |-------|-------------| | `Nanite = 0` | Nanite virtualized geometry (UE5 only) | | `Traditional_LOD = 1` | Standard static mesh LODs | | `ProxyGeometry = 2` | HLOD/proxy geometry for distant objects | ### `EPlatformFamily` | Value | Description | Default Render Method | |-------|-------------|----------------------| | `PC_High = 0` | PC with RTX 2000+ / RX 6000+ | Lumen + Nanite | | `PC_Low = 1` | PC with GTX 900–1600 / iGPU | Baked + CSM | | `PS5 = 2` | PlayStation 5 | Lumen + Nanite | | `PS5_Pro = 3` | PlayStation 5 Pro (PSSR support) | Lumen + Nanite + PSSR | | `PS4 = 4` | PlayStation 4 / PS4 Pro | Baked + CSM + TAAU | | `Xbox_Series = 5` | Xbox Series X\|S | Lumen + Nanite | | `Xbox_One = 6` | Xbox One / One X | Baked + CSM + TAAU | | `Switch_2 = 7` | Nintendo Switch 2 (when available) | Baked + CSM + FSR | | `Switch = 8` | Nintendo Switch | Baked + ProxyGeometry + NIS | | `SteamDeck = 9` | Steam Deck / handheld PC | Baked/SSGI + CSM + FSR | --- ## 2. Structs ### `SRenderPipelineConfig` | Field | Type | Description | |-------|------|-------------| | `QualityPresetName` | `FName` | Identifier ("Low", "Medium", "High", "Ultra", "Cinematic") | | `GIMethod` | `ERenderPipelineMethod` | Global illumination method | | `ShadowMethod` | `EShadowMethod` | Shadow rendering method | | `ReflectionMethod` | `EReflectionMethod` | Reflection rendering method | | `Upscaler` | `EUpscalerMethod` | Upscaling method | | `UpscalerQuality` | `int32` | Upscaler quality tier (0=Performance, 1=Balanced, 2=Quality, 3=UltraQuality) | | `MeshStrategy` | `EMeshStrategy` | Geometry rendering strategy | | `ResolutionScale` | `float` | Screen percentage (0.5–1.0) | | `DynamicResolutionTarget` | `float` | Target ms for dynamic resolution (0=disabled) | | `ShadowQuality` | `int32` | Shadow resolution/distance tier (0=NONE, 1=LOW, 2=MED, 3=HIGH, 4=EPIC) | | `TextureQuality` | `int32` | Texture streaming pool tier (0–3) | | `PostProcessQuality` | `int32` | Post-process complexity (0–3) | | `ViewDistanceQuality` | `int32` | View distance tier (0–3) | | `FoliageQuality` | `int32` | Foliage density tier (0–3) | | `AntiAliasingQuality` | `int32` | AA quality tier (0–3) | | `bEnableMotionBlur` | `bool` | Motion blur toggle | | `bEnableDepthOfField` | `bool` | Depth of field toggle | | `bEnableVolumetricClouds` | `bool` | Volumetric cloud rendering | | `bEnableVirtualTextures` | `bool` | Runtime virtual textures | | `bEnableHWRT` | `bool` | Hardware ray tracing (requires RT-capable GPU) | | `bRequiresLevelReload` | `bool` | TRUE if this setting requires a level reload to take effect | | `TargetFPS` | `int32` | Frame rate target (0=unlimited) | | `bEnableVSync` | `bool` | Vertical sync | | `Description` | `FText` | Human-readable description for settings UI | ### `SPlatformRenderDefaults` | Field | Type | Description | |-------|------|-------------| | `Platform` | `EPlatformFamily` | Target platform | | `DefaultQualityPreset` | `FName` | Preset to use on first launch ("Medium" for most) | | `SupportedPipelines` | `TArray` | Which GI methods this platform supports | | `SupportedUpscalers` | `TArray` | Which upscalers this platform supports | | `MaxResolutionScale` | `float` | Maximum resolution scale (e.g., 1.0 for PS5, 0.7 for Switch) | | `MaxFPS` | `int32` | Maximum recommended FPS target | | `VRAMBudget_MB` | `int32` | Typical VRAM budget for this platform | | `bSupportsNanite` | `bool` | Platform supports Nanite | | `bSupportsLumen` | `bool` | Platform supports Lumen | | `bSupportsHWRT` | `bool` | Platform supports hardware ray tracing | | `ConsoleVariables` | `TMap` | Additional platform-specific CVar overrides | --- ## 3. Variables ### Configuration (Instance Editable) | Variable | Type | Default | Category | Description | |----------|------|---------|----------|-------------| | `PlatformFamily` | `EPlatformFamily` | `PC_High` | `Config` | Which platform this profile targets | | `PlatformDefaults` | `SPlatformRenderDefaults` | — | `Config` | Platform-specific capabilities and defaults | | `QualityPresets` | `TMap` | `Empty` | `Config` | Maps quality preset names to render configs | | `bAllowDynamicPresetSwitch` | `bool` | `true` | `Config` | Whether quality can change without level reload | | `bAutoDetectPlatform` | `bool` | `true` | `Config` | Auto-detect platform at startup | --- ## 4. Default Preset Tables (Per-Platform) ### PS5 (EPlatformFamily::PS5) — Target: 60 FPS | Preset | Resolution % | GI | Shadows | Reflections | Upscaler | Mesh | FPS | |--------|------------|-----|---------|-------------|----------|------|-----| | Low | 70% | Baked | CSM | Captures | TSR Perf | LOD | 60 | | Medium | 85% | Lumen Low | VSM Low | Lumen Low | TSR Balanced | Nanite | 60 | | High | 100% | Lumen High | VSM High | Lumen High | TSR Quality | Nanite | 60 | | Ultra | 100% | Lumen Ultra | VSM Ultra | Lumen Ultra | PSSR | Nanite | 60 | | Cinematic | 100% | Lumen + HWRT | VSM + RT | Lumen + RT | PSSR | Nanite | 30 | ### PS4 (EPlatformFamily::PS4) — Target: 30 FPS | Preset | Resolution % | GI | Shadows | Reflections | Upscaler | Mesh | FPS | |--------|------------|-----|---------|-------------|----------|------|-----| | Low | 60% | None | CSM Low | None | TAAU | Proxy | 30 | | Medium | 75% | Baked | CSM Medium | Captures | TAAU | LOD | 30 | | High | 90% | Baked | CSM High | Captures + SSR | TAAU | LOD | 30 | ### PC_High (RTX 3080+) — Target: 120 FPS | Preset | Resolution % | GI | Shadows | Reflections | Upscaler | Mesh | FPS | |--------|------------|-----|---------|-------------|----------|------|-----| | Low | 70% | SSGI | CSM | SSR | DLSS Perf | LOD | 120 | | Medium | 85% | Lumen Low | VSM | Lumen Low | DLSS Balanced | Nanite | 120 | | High | 100% | Lumen High | VSM | Lumen High | DLSS Quality | Nanite | 120 | | Ultra | 100% | Lumen Ultra | VSM Ultra | Lumen Ultra | DLSS Quality | Nanite | 120 | | Cinematic | 120% | Lumen + HWRT | VSM + RT | Lumen + RT | DLSS UltraQ | Nanite | 60 | ### PC_Low (GTX 1060 / integrated) — Target: 30 FPS | Preset | Resolution % | GI | Shadows | Reflections | Upscaler | Mesh | FPS | |--------|------------|-----|---------|-------------|----------|------|-----| | Low | 50% | None | CSM Low | None | FSR Perf | Proxy | 30 | | Medium | 65% | Baked | CSM Medium | Captures | FSR Balanced | LOD | 30 | | High | 80% | SSGI | CSM High | SSR | FSR Quality | LOD | 30 | ### Switch (EPlatformFamily::Switch) — Target: 30 FPS | Preset | Resolution % | GI | Shadows | Reflections | Upscaler | Mesh | FPS | |--------|------------|-----|---------|-------------|----------|------|-----| | Low | 40% | None | CSM Low | None | NIS | Proxy | 30 | | Medium | 55% | Baked | CSM Med | Captures | NIS | LOD | 30 | | High | 70% | Baked | CSM High | Captures | FSR | LOD | 30 | ### Xbox_Series (EPlatformFamily::Xbox_Series) — Target: 60 FPS | Preset | Resolution % | GI | Shadows | Reflections | Upscaler | Mesh | FPS | |--------|------------|-----|---------|-------------|----------|------|-----| | Low | 70% | Baked | CSM | Captures | FSR Perf | LOD | 60 | | Medium | 85% | Lumen Low | VSM Low | Lumen Low | FSR Balanced | Nanite | 60 | | High | 100% | Lumen High | VSM High | Lumen High | FSR Quality | Nanite | 60 | | Ultra | 100% | Lumen Ultra | VSM Ultra | Lumen Ultra | FSR Quality | Nanite | 60 | --- ## 5. Functions *This Data Asset has no Blueprint functions. All data retrieval is performed by `BPC_RenderPipelineManager` reading the struct tables directly.* --- ## 6. Console Variable Reference (per setting) When `BPC_RenderPipelineManager` applies a `SRenderPipelineConfig`, it sets these UE5 console variables: ``` [Global Illumination] r.DynamicGlobalIlluminationMethod <0=None, 1=Lumen, 2=SSGI, 3=Plugin> r.Lumen.Reflections.Allow <0/1> r.Lumen.DiffuseIndirect.Allow <0/1> r.Lumen.TranslucencyVolume <0/1> [Shadows] r.Shadow.Virtual.Enable <0/1> r.Shadow.CSM.MaxCascades <0-4> sg.ShadowQuality <0-4> [Reflections] r.ReflectionMethod <0=None, 1=Lumen, 2=SSR> r.SSR.Quality <0-4> [Upscaling] r.TemporalAA.Upsampling <0/1> r.TSR.History.ScreenPercentage <50-200> r.NGX.DLSS.Enable <0/1> (DLSS plugin) r.FidelityFX.FSR2.Enabled <0/1> (FSR plugin) r.FidelityFX.FI.Enabled <0/1> [Mesh / Nanite] r.Nanite <0/1> r.Nanite.MaxPixelsPerEdge <1-4> r.StaticMeshLODDistanceScale <0.5-3.0> [Post Process] sg.PostProcessQuality <0-3> r.MotionBlurQuality <0-4> r.DepthOfFieldQuality <0-4> [Textures] sg.TextureQuality <0-3> r.Streaming.PoolSize [View Distance] sg.ViewDistanceQuality <0-3> r.ViewDistanceScale <0.5-3.0> foliage.LODDistanceScale <0.5-3.0> [Volumetrics] r.VolumetricCloud <0/1> r.VolumetricFog <0/1> [Hardware RT] r.RayTracing <0/1> r.RayTracing.Shadows <0/1> r.RayTracing.Reflections <0/1> ``` --- ## 7. Integration with Planar Capture System The Planar Capture System (`BPC_PlanarCapture`, system 136) uses `SceneCapture2D` components that capture the world from a separate camera. These captures respect the **world's current render state**, meaning: | Main Pipeline Setting | Effect on Planar Capture | |----------------------|-------------------------| | Lumen GI ON | Capture shows Lumen-lit scene (if `bEnableLumen` on capture profile) | | Baked Lightmass | Capture shows baked lighting — SceneCapture2D picks this up naturally | | Nanite ON | Captures render Nanite geometry (significant cost — bump down capture quality tier) | | Traditional LOD | Captures use standard LOD — lower cost | | VSM ON | Capture benefits from VSM (if capture profile enables shadows) | | CSM | Capture uses CSM — lower cost but lower quality | **Key rule:** When the main pipeline switches to **Baked Lightmass**, the Planar Capture System's quality tier profiles should also use `bEnableLumen = false` to prevent the capture from trying to enable Lumen on a world that doesn't use it. `BPC_RenderPipelineManager` broadcasts `OnRenderPipelineChanged` which `SS_PlanarCaptureManager` binds to, adjusting its `GlobalQualityCap` accordingly. See [`BPC_RenderPipelineManager`](../12-settings/149_BPC_RenderPipelineManager.md) for the full integration spec. --- ## 8. Validation Rules - At least one quality preset must be defined - All preset names must be unique - `bRequiresLevelReload` must be TRUE for profile changes that modify `GIMethod`, `ShadowMethod`, or `MeshStrategy` from the current value - Platform family must not be `Unknown` (use auto-detection as fallback) - ResolutionScale must be 0.25–2.0 - Upscaler must be in `SupportedUpscalers` for the target platform --- ## 9. Consumed By - [`BPC_RenderPipelineManager`](../12-settings/149_BPC_RenderPipelineManager.md) — reads profiles at init and on quality change - [`BPC_PerformanceScaler`](../10-adaptive/91_BPC_PerformanceScaler.md) — delegates quality-tier CVar application - [`SS_PlanarCaptureManager`](../17-capture/138_SS_PlanarCaptureManager.md) — adjusts capture quality cap on pipeline change ## 10. Reuse Notes - Platform profiles are Data Asset instances — designers create `DA_RPP_PS5`, `DA_RPP_PS4`, `DA_RPP_PC_High`, `DA_RPP_PC_Low`, etc. - The `bRequiresLevelReload` flag is critical — UI must display a "requires restart" warning when the player changes a pipeline-affecting setting (GI method, shadow method, Nanite toggle). - Upscaler plugins (DLSS, FSR, XeSS) must be enabled in `Project Settings → Plugins`. If a plugin is missing, the system falls back to the next available upscaler. - For console certification: each platform must have a `DA_RenderPipelineProfile` instance that meets Sony/Microsoft/Nintendo TRC requirements (minimum FPS target, resolution floor). - The `ConsoleVariables` override map on `SPlatformRenderDefaults` allows per-platform tweaks without modifying the quality preset structs.