Add DA_RenderPipelineProfile and Platform Render Profiles documentation
- Introduced DA_RenderPipelineProfile data asset to define rendering pipeline configurations for various platforms and quality tiers. - Documented enums, structs, variables, and default preset tables for render settings. - Created a comprehensive developer guide for setting up platform-specific render profiles, including file structure, profile creation, and integration with upscalers. - Included validation rules, console variable references, and testing matrices for ensuring compliance with platform requirements.
This commit is contained in:
@@ -52,6 +52,7 @@ The Modular Game Framework uses `UDataAsset` (and subclass `UPrimaryDataAsset` w
|
||||
| 12 | `DA_RoomMutation` | Adaptive | `BPC_AdaptiveEnvironmentDirector` |
|
||||
| 13 | `DA_BehaviourVariant` | AI | `BPC_BehaviourVariantSelector` |
|
||||
| 14 | `DA_HapticProfile` | Settings | `BPC_HapticsController` (148) |
|
||||
| 15 | `DA_RenderPipelineProfile` | Settings | `BPC_RenderPipelineManager` (149) |
|
||||
| 15 | `DA_AdaptationRule` | Adaptive | `BPC_DifficultyManager` |
|
||||
| 16 | `DA_EquipmentConfig` | Inventory | `BPC_EquipmentSlotSystem` |
|
||||
| 17 | `DA_PuzzleData` | Interaction | `BP_PuzzleDeviceActor` |
|
||||
|
||||
298
docs/blueprints/14-data-assets/DA_RenderPipelineProfile.md
Normal file
298
docs/blueprints/14-data-assets/DA_RenderPipelineProfile.md
Normal file
@@ -0,0 +1,298 @@
|
||||
# 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<ERenderPipelineMethod>` | Which GI methods this platform supports |
|
||||
| `SupportedUpscalers` | `TArray<EUpscalerMethod>` | 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<FString, FString>` | 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<FName, SRenderPipelineConfig>` | `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 <MB value>
|
||||
|
||||
[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.
|
||||
Reference in New Issue
Block a user