# 147 — Capture Surface Material Instances (`MI_Mirror_*`, `MI_Portal_*`, `MI_Monitor_*`, `MI_FakeWindow_*`) ## Purpose Pre-configured Material Instance Constants (MICs) for common capture surface states. These are children of `M_CaptureSurface_Master` (144) with static switches and default parameters pre-set for each use case. ## Dependencies - **Requires:** `M_CaptureSurface_Master` (144), `MPC_CaptureSurface` (145) - **Required By:** All capture surface actors (139-143) - **Engine/Plugin Requirements:** None ## Class Info | Property | Value | |----------|-------| | **Asset Type** | MaterialInstanceConstant | | **Parent Material** | `M_CaptureSurface_Master` | | **Asset Path** | `Content/Framework/Capture/Materials/` | | **C++ Status** | N/A | | **Assets to Create** | 7 material instances | ## 1. Material Instance Catalog ### MI_Mirror_Clean | Static Switch | Value | |---------------|-------| | `bIsMirror` | `true` | | `bEnableHorrorLayers` | `false` | | Scalar Override | Value | Note | |-----------------|-------|------| | `SteamIntensity` | 0.0 | No fog | | `DirtOpacity` | 0.0 | Clean | | `SurfaceAge` | 0.0 | No oxidation | ### MI_Mirror_Dirty | Static Switch | Value | |---------------|-------| | `bIsMirror` | `true` | | `bEnableHorrorLayers` | `false` | | Scalar Override | Value | Note | |-----------------|-------|------| | `DirtOpacity` | 0.4 | Moderate dirt | | `SurfaceAge` | 0.3 | Slight yellowing | ### MI_Mirror_Steam | Static Switch | Value | |---------------|-------| | `bIsMirror` | `true` | | `bEnableHorrorLayers` | `false` | | Scalar Override | Value | Note | |-----------------|-------|------| | `SteamIntensity` | 0.6 | Visible fog | | `CondensationFlow` | 0.5 | Slow rivulet drift | | `DistortionAmplitude` | 0.2 | Slight warp | | `SteamEmissiveIntensity` | 0.3 | Subtle glow | ### MI_Mirror_Horror | Static Switch | Value | |---------------|-------| | `bIsMirror` | `true` | | `bEnableHorrorLayers` | `true` | | Scalar Override | Value | Note | |-----------------|-------|------| | `WrongReflectionBlend` | 0.0 | Starts off (driven by MPC at runtime) | | `MirrorDarkness` | 0.0 | Starts normal | | `TextRevealProgress` | 0.0 | Hidden until scare | | `DistortionAmplitude` | 0.0 | Normal until scare | ### MI_Portal_Standard | Static Switch | Value | |---------------|-------| | `bIsMirror` | `false` | | `bEnableHorrorLayers` | `false` | | Texture Override | Value | Note | |------------------|-------|------| | `CaptureTexture` | (set at runtime by component) | RT assigned dynamically | ### MI_Monitor_Security | Static Switch | Value | |---------------|-------| | `bIsMirror` | `false` | | `bEnableHorrorLayers` | `false` | | Scalar Override | Value | Note | |-----------------|-------|------| | `ScanlineIntensity` | 0.3 | CRT scanline overlay (add as custom parameter) | ### MI_FakeWindow_Interior | Static Switch | Value | |---------------|-------| | `bIsMirror` | `false` | | `bEnableHorrorLayers` | `false` | | Scalar Override | Value | Note | |-----------------|-------|------| | `RainIntensity` | 0.0 | Weather overlay off (add as custom parameter) | | `FrostIntensity` | 0.0 | Weather overlay off (add as custom parameter) | ## 2. Usage Assignment | Actor | Default MI | Swap Options | |-------|-----------|--------------| | `BP_Mirror` | MI_Mirror_Clean | MI_Mirror_Dirty, MI_Mirror_Steam | | `BP_Portal` | MI_Portal_Standard | — | | `BP_Monitor` | MI_Monitor_Security | PoweredOffMaterial (custom) | | `BP_HorrorMirror` | MI_Mirror_Horror | MI_Mirror_Clean (pre-scare), MI_Mirror_Steam | | `BP_FakeWindow` | MI_FakeWindow_Interior | — | ## 3. Manual Implementation Guide 1. Create all 7 Material Instance Constants 2. Parent: `M_CaptureSurface_Master` 3. For each, set Static Switch Parameters as listed above 4. Set Scalar Parameter Overrides where non-zero 5. Assign to corresponding Blueprint actor defaults 6. Test: place mirror with MI_Mirror_Steam, verify fogged appearance ## 4. Build Checklist - [ ] Create MI_Mirror_Clean (bIsMirror=true, all scalars=0) - [ ] Create MI_Mirror_Dirty (DirtOpacity=0.4) - [ ] Create MI_Mirror_Steam (SteamIntensity=0.6) - [ ] Create MI_Mirror_Horror (bEnableHorrorLayers=true) - [ ] Create MI_Portal_Standard (bIsMirror=false) - [ ] Create MI_Monitor_Security (bIsMirror=false) - [ ] Create MI_FakeWindow_Interior (bIsMirror=false) - [ ] Assign defaults to each BP child's SurfaceMesh - [ ] Verify all compile without material errors