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

XFEEDToolBox

【WinUI】XFE精英危险工具箱

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

Original Galaxy HDR output

All native addresses below are RVAs in the pinned4.4.2.0 image, SHA256 6891f70a021fa9f3a0e00458c284f48d1226e68ae7fc02ad48081aed47857e93. This is offline source evidence, not a live read of the current client's options.

Shared scene scaling

Extract-GalaxyHdrReflection.py independently ties GalaxyGlow's CameraPos reflection offset4672 to original PS register cb1[275].xyz. The same shared data range begins at272, so HDRScalingWrite1716 and HDRScalingRead1720 are cb1[90].y/z. Actual native publisher27F6EB0→28783B0 reads the view's 36CC/36D0 fields; constructor27FBE00 writes1/256 and256. Another mode has a separate pair with the same defaults. Per-view runtime overrides remain unknown.

GalaxyGlow's original PS emits colour * sqrt(Read) * Write, alpha1. With the controlled SourceColor/One blend, its squared RGB is stored with a factor1/256; the final HDR Read256 cancels that factor. Using only Write1/256 without the final read is incorrect. DistantMilkyWay's PS has only Write, so it must not be given the same blend/scaling conclusion without its actual compiled state.

Actual final shader library

The final HDR programs are embedded in the PE, separate from Effects.arc. HDR node351F8E0, vtable54C7468, renders at3526320. Its shadow is created by 3527600→351F450, which invokes program initializer3521E90.

Extract-GalaxyHdrPrograms.py verifies the pinned image, actual platform/blob descriptors, compressed sizes, inflated sizes, every shader SHA and reflection. It reads no game process and makes no game calls.

Role Descriptor RVA Blob RVA Inflated bytes
Final HDR 54C4548 53980C0 28284792
Auto exposure 54C6248 54C4568 95472
Luminance downscale 54C6920 54C6268 5408

Final HDR inflated SHA256 is c9cbe6ed3816ef95b426682d8958ea8340d72a56e79f9f9ff8185877baaecb18. The xfxd3f first frozen object's pass table is at388, count9, stride70hex.

Pass Original name
0 LuminanceFilter
1 LuminanceDownsampleInitial
2 LuminanceDownsample
3 ApplyToneMapping_LinearColor
4 ApplyToneMapping_LinearColorRGBM
5 ApplyToneMapping_FilmicU2_ManExposure
6 ApplyToneMapping_FilmicU2_Log2LumExposure
7 ApplyToneMapping_FilmicACES_ManExposure
8 ApplyToneMapping_FilmicACES_Log2LumExposure

Node124 constructor default2 copies to shadow6C4; node120 default0 copies to shadow6C8. The tail of35225B0 selects pass5 for that pair. These defaults do not prove that another setting/configuration writer never overrides them.

Shadow handle7F0 is c_bloomBlendWeight, not a tone-map method. Its source shadow6C0 must not be used to infer the selected curve. Handle7F8 is the actual c_hdrBufferScalingRead, dereferenced from the shadow40 pointer. The extractor exports the complete native handle/name table to avoid guessed names.

Default U2 parameters and exact GPU layout

351F8E0 first writes standard Hable values, then overwrites them at351FBC1..351FC04. The overwritten values are the ones used by the offline default helper.

Parameter Exact float bits
Shoulder strength A 3EFB645A
Linear strength B 3F34FDF4
Linear angle C 3F343958
Toe strength D 3F97AE14
Toe numerator E 3FB04189
Toe denominator F 3FFCED91
Linear white W 40A7BE77

The curve is ((A*x+B*C)*x+D*E)/((A*x+B)*x+D*F)-E/F, divided by its value at W. Constructor defaults EV0, gamma2.2, brightness/contrast/saturation1.35225B0 enables colour adjustment and supplies reciprocal gamma and the contrast pivot. The actual original neutral-U2-with-colour-adjust PS has SHA256 425b3ddca23b606d0501a9cde6047278c3ff0f5153853d12ae1e32e0fb3300da. Its option6 is c_colourAdjustEnable, established by the original16B option records, rather than inferred from filename order.

The second frozen object has77 variable descriptors. Native4FC6E0 decodes their u16 at+A: offset=(packed>>1)&7FFC, bank=packed&3. CB2 data starts at80, cross-checked independently with read112→cb2[2].x, shoulder128→cb2[3].x, reciprocal gamma232→cb2[9].z. The helper exports11 float4s in this exact layout.

Validation and limits

research/GalaxyHdrShaderProbe uses WARP and R32 output to compare the translated PS with the actual original DXBC. Five RGB input groups, from black through 10000 linear intensity, have maximum difference0. Three authored Core views render to R16 float with explicit original default Write/Read, then both final PS paths produce identical full R32 images (difference0, no NaNs).

The generated sol/centre/above PNGs have been viewed. They preserve grey/purple and warm Core variation; the controlled centre mean RGB is .343, rather than the raw SDR white clipping seen in the application. This is a controlled shader comparison, not proof that the complete application visually matches the game.

The probe additionally links the production MilkyWay partial, waits for15824 original source cloud instances, and tests each of the three views with/without clouds on the same floating point target. All six final images match the actual original final PS with difference0 and no nonfinite values. A separate production MW Write1 versus Write1/256 test compares425178 nontrivial RGB values after Read256: mean difference2.79e-5, maximum.0004883 from R16 quantisation. It verifies the actual production parameter reaches the GPU, rather than testing a fixture that silently ignores Write. The three cloud images have been viewed individually.

The new HDR partial is deliberately separate: Begin binds R16 float, End runs the default U2 pass. Each source pass must supply its own proven HDR inputs and blend state. Bloom, LUT, auto exposure, runtime settings and other render layers are not restored by this change. FullRestored remains false.