# 145 — Capture Surface Material Parameter Collection (`MPC_CaptureSurface`) ## Purpose Global Material Parameter Collection with 10 scalar parameters that control all capture surface material effects at runtime. Pushed each frame by `UBPC_PlanarCapture::PushMPCParameters()`. ## Dependencies - **Requires:** None (standalone MPC asset) - **Required By:** `M_CaptureSurface_Master` (144), all capture surface actors (139-143) - **Engine/Plugin Requirements:** None ## Class Info | Property | Value | |----------|-------| | **Asset Type** | MaterialParameterCollection | | **Asset Path** | `Content/Framework/Capture/MPC_CaptureSurface.uasset` | | **C++ Status** | N/A (content asset) | | **Asset to Create** | MPC in UE5 editor | ## 1. Scalar Parameters | Parameter Name | Default Value | Range | Description | |---------------|---------------|-------|-------------| | `SteamIntensity` | 0.0 | 0.0–1.0 | Steam/fog opacity on mirror surface | | `DirtOpacity` | 0.0 | 0.0–1.0 | Dirt/scratch layer opacity | | `CondensationFlow` | 0.0 | 0.0–2.0 | Condensation normal map panning speed | | `DistortionAmplitude` | 0.0 | 0.0–1.0 | UV distortion magnitude (breathing mirror) | | `MirrorDarkness` | 0.0 | 0.0–1.0 | Mirror darkening (0=normal, 1=black) | | `WrongReflectionBlend` | 0.0 | 0.0–1.0 | Wrong reflection crossfade (horror mode) | | `TextRevealProgress` | 0.0 | 0.0–1.0 | Steam text reveal wipe progress | | `SteamEmissiveIntensity` | 0.0 | 0.0–5.0 | Backlit fog emissive brightness | | `DelayedReflectionBlend` | 0.0 | 0.0–1.0 | Delayed frame ring buffer blend | | `SurfaceAge` | 0.0 | 0.0–1.0 | Oxidation / yellowing tint amount | ## 2. Vector Parameters (Optional — Legendary Tier) | Parameter Name | Default Value | Description | |---------------|---------------|-------------| | `SurfaceTintColor` | (1.0, 1.0, 1.0, 1.0) | Oxidation/aging color tint | | `SteamColor` | (0.8, 0.85, 0.9, 1.0) | Steam emissive color | ## 3. Runtime Control All parameters are driven by C++ via `UBPC_PlanarCapture::PushMPCParameters()`. Blueprint actors call `SetSurfaceMPCParameter(Name, Value)` on the parent `BP_PlanarCaptureActor` to override specific values for that surface. ### Per-Surface Override Pattern ``` BP_HorrorMirror → SetSurfaceMPCParameter("WrongReflectionBlend", 1.0) └─ This sets the scalar on the surface's MID, which overrides the MPC value (MID overrides take priority over MPC in UE5 material system) ``` ### Global Override Pattern ``` SS_PlanarCaptureManager → all surfaces get MPC pushed each frame └─ A gameplay system changes MPC global → affects ALL mirrors/potals/monitors ``` ## 4. Manual Implementation Guide 1. Create Material Parameter Collection: Name = `MPC_CaptureSurface` 2. Add all 10 scalar parameters with names and default values from Section 1 3. Add 2 optional vector parameters if using color tinting 4. Assign this MPC to every capture surface actor's `SurfaceMPC` variable 5. In `M_CaptureSurface_Master`, link all `Collection Parameter` nodes to this MPC ## 5. Build Checklist - [ ] Create MPC_CaptureSurface in editor - [ ] Add all 10 scalar parameters - [ ] Add 2 vector parameters (optional) - [ ] Assign to all BP_* capture actors' SurfaceMPC variable - [ ] Verify material compiles with MPC references - [ ] Test: change SteamIntensity in MPC, verify all mirrors fog