# Original material blend application and RGB-only HDR source output This is offline evidence against the pinned `6891f70a021fa9f3a0e00458c284f48d1226e68ae7fc02ad48081aed47857e93` client and independently hashed local Effects archives. No game process is opened, no game code executes, and no original setting/network request is issued. `Trace-OriginalGalaxyBlendApplication.py` parses all 976 effect metadata records in the two original archives and replays the actual kind-5 state programs for all 26 recovered Galaxy FGMs. It records every source bank/offset/name, material override, output descriptor, packed flags and actual RGB/alpha D3D11 enum conversion. Results are in `artifacts/galaxy-query-research/power-outer-sources/material-slots/original-blend-application.json`. A render-layer number alone is never used to infer blend. ## Actual raw-to-runtime path The original `4FA720` xfxd3f loader reads the two PtrMov objects. The second frozen object holds three data-bank descriptors: bank1 data at `+18`, total bytes at `+20`, scalar bytes at `+28`. It passes those exact fields to `4FA280`. That bridge creates/obtains the thread-zero bank1 handle at `*(effect+A0)+38`, then calls `4FD1C0` with scalar bytes, total bytes and the serialized data. `4FD1C0` stores the scalar size at data-object `+10`, allocates its data pointer at `+8`, clears the allocation, and at `4FD230` calls `489CA90` to copy exactly the serialized total byte count into that pointer. Thus literal bank1 values are copied, rather than inferred from a material label. `4F8F90` loops the actual effect state records at `+38/+40`. For kind5 it copies the complete 48-byte default descriptor from `5E737D0`, executes `4FBEC0`, and passes its result to `516980`. The interpreter consumes four-byte instructions. Actual selected Galaxy blend programs use skip, raw DWORD copy and DWORD-to-byte copy; the replay refuses unsupported conversions/versioned storage. An encoded location selects `bank = u16 & 3`, `byteOffset = (u16 >> 1) & 7FFC`; bit2 selects versioned storage, exactly matching `4FC6E0` and `4FBEC0`. `516980` packs RGB operation at bit9, source at12, destination at16; alpha operation at20, source at23, destination at27. It retains all eight RT enables/write masks, caches the descriptor, and calls `513D70`. The latter constructs the real 264-byte D3D11 blend description and invokes the device's actual CreateBlendState slotA0. Its `4E2E460` table uses separate RGB/alpha D3D11 mappings: original enum2 is RGB SourceColor but alpha SourceAlpha. Original operation0 maps to Add. The complete loader C is `power-outer-sources/background/effect-loader/solo-4fa720.c`; the 121/78-instruction raw-bank bridge/copy evidence is `current-trade/assembly/asm-full-4fa280.txt` and `asm-full-4fd1c0.txt`. Interpreter, material consumer and cache C are in `account-sources/decompiled/{4fbec0,4f8f90,516980}.c`. The proof JSON binds their hashes to the pinned image. ## Recovered Galaxy state results | Actual source | RGB state | Alpha state | Binding | | --- | --- | --- | --- | | RouteInstances / RouteHotspotInstances | SourceAlpha / One / Add | SourceAlpha / One / Add | Literal bank1 enable1, source4, destination1; not inferred from layer18 | | StarMapLine, including original SectorLine grid material | SourceAlpha / One / Add | SourceAlpha / One / Add | Same actual literal source/destination values | | BackgroundStars / classified and physical source sprites | SourceAlpha / One / Add | SourceAlpha / One / Add | Source/destination read actual named bank0 slots18/10; recovered FGM values4/1; operation retains original default0 | | GalaxyGlow core | SourceColor / One / Add | SourceAlpha / One / Add | Actual program reads named slots68/60/50 = material values2/1/0 | | DistantMilkyWay / Dust cloud | SourceAlpha / One / Add | SourceAlpha / One / Add | Actual program reads named slots18/10/0 = material values4/1/0 | | Reduced-size MilkyWay dummy | SourceColor / One / Add | SourceAlpha / One / Add | Actual FGM2/1/0, separately retained from cloud material | | GalaxyMapSimpleBillboard | One / InverseSourceAlpha / Add | One / InverseSourceAlpha / Add | Actual Effects2 literal bank1 source1/destination5; source PS emits alpha0, preserving destination while adding RGB | Grid/constellation publisher constructors `3A09210/3A09F20` register their named integers4/1/0 through `3AAC040 -> 4342040`. The actual selected StarMapLine effect is already literal-bound to those values; no absent `pSrcBlend` variable is invented in its descriptor. BackgroundStars and GalaxyGlow do expose the named slots, and the replay records their precise alias to the copy instructions. ## Source RGB and HDR storage `Trace-GalaxySourceHdrOutput.py` checks original DXBC membership in the hashed archive, original shared-variable descriptors and the independent `gCameraPos`/GPU-slot anchor. All five checked source PSs multiply RGB by `cb1[90].y = gHDRScalingWrite`; alpha remains independent. * BackgroundStars computes original atlas/internal-glow RGB, clamps it to0..100, multiplies HDR Write, and emits unchanged instance alpha. The former tool premultiplied/coverage adapter is bypassed by production source mode. * StarMapLine emits `instanceRGB * Write`; sampled pattern alpha, instance alpha and distance fade stay in alpha. Constellations share the source line primitive/style and source output contract. * Route and Hotspot multiply their original texture samples and instance RGB, then Write; they emit instance alpha. Write is supplied through the existing `tradeProjection.y`, default1 only in source probes. * SimpleBillboard emits sampled red times instance alpha times linear colour times Write, with output alpha0. The material disables the original emissive-rescale branch; the corresponding simple original permutation gives the same direct output. The production `b8` contract is `float4(Write, originalSourceEnabled, 0, 0)`. `BindOriginalSourceOutput(write, applySourceAlphaBlend)` sets that buffer; source probes explicitly use1, while the default recovered scene storage Write is1/256. Only RGB is scaled. Root's main renderer owns the shared floating scene target and final default U2 composition. Tool nebula, zone and overview composites receive explicit RGB-only scene-storage adapters; their calculations are not claimed to be original shader recovery. ## Independent source GPU results The current `GalaxyStellarShaderProbe` runs actual original PS bytecode against production unassociated source output at Write1 and Write1/256. Each uses four samples containing alpha0/.35/1 and HDR red100. Both groups have maximum RGB vector difference0 and unchanged source alpha. It no longer multiplies the oracle's RGB by alpha to compensate for the former SDR adapter. The current `GalaxyGridShaderProbe` uses the actual SourceAlpha/One/Add state on both paths. Its three source-image views and constellation group remain inside the frozen comparison tolerances. A separate floating target checks Write scaling: RGB error0, alpha error0, maximum original-DXBC float difference `9.079045e-5`, with72000 visible channels. This is source-space rasterization evidence, not a final full-screen game comparison. `current-trade/source-hdr-output.json` binds the current production sources and GPU report hashes. Previous visual/research cuts remain separate; the old premultiplied/source-over adapters are not silently relabelled as current original-source comparisons. ## Remaining limits The exact source blend and RGB storage path do not establish every runtime pass/permutation, later overrides, live frame/cell fade, runtime exposure, bloom, LUT or the entire final graphics pipeline. `FullRestored` remains false. Trade retains its explicit unclosed normal decode constants and local animation epoch. Territory frame fade and Activities outer styling remain separate source tasks. Current source math and default output must still be checked in the hidden application captures and, where needed, against the actual running game.