XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFEEDToolBox

【WinUI】XFE精英危险工具箱

公开
关注 0 Fork 0 Star 0
UTF-8

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.