port: D397 — D397SHM input-mapping probe; H1 LERP-factor variant ruled out

New env-gated D397SHM probe in gfx_generate_cc dumps which G_CCMUX
inputs a combine feeds as vInput1..N. For the gun-barrow row-strip
shader (id0=0000000010001218): vInput1=PRIMITIVE, vInput2=ENV_ALPHA,
so the front.c LERP renders out = PRIM + (TEXEL-PRIM)*(envA/255).

The PD ground-truth port feeds the identical env_color.a/255 factor for
the same ENV_ALPHA LERP input, so the LERP factor is not a port-side
scaling bug (H1's 1/255-vs-1/32 variant refuted). A uniform factor
cannot produce the *periodic* comb, which points to H2 (row-strip
geometry / 256-tri vertex-ring wrap). Next: Q3 gfx_flush() probe +
Q5 native FBO capture. Findings §D397 + handoff updated.
This commit is contained in:
James Dansereau committed 2026-09-27 22:15:17 -04:00
1 parent 65875ad45b
commit 2a60b8a912
2 files changed
+25

No files matched your search

+18
View File
@@ -550,6 +550,24 @@ static void gfx_generate_cc(struct ColorCombiner* comb, const ColorCombinerKey&
comb->used_textures[1] = used_textures[1];
// comb->prg = gfx_lookup_or_create_shader_program(shader_id0, shader_id1);
memcpy(comb->shader_input_mapping, shader_input_mapping, sizeof(shader_input_mapping));
#ifdef PORT
/* D397 TEMP probe (env-gated, remove before merge): dump which runtime
* G_CCMUX inputs this combine feeds as vInput1..N so the file-select
* LERP factor source can be settled against the measured census. */
if (getenv("GE_D397SH")) {
fprintf(stderr,
"D397SHM: id0=%016llx cmode=0x%016llx map0=[%u %u %u %u %u %u %u] map1=[%u %u %u %u %u %u %u]\n",
(unsigned long long)comb->shader_id0, (unsigned long long)key.combine_mode,
(unsigned)comb->shader_input_mapping[0][0], (unsigned)comb->shader_input_mapping[0][1],
(unsigned)comb->shader_input_mapping[0][2], (unsigned)comb->shader_input_mapping[0][3],
(unsigned)comb->shader_input_mapping[0][4], (unsigned)comb->shader_input_mapping[0][5],
(unsigned)comb->shader_input_mapping[0][6],
(unsigned)comb->shader_input_mapping[1][0], (unsigned)comb->shader_input_mapping[1][1],
(unsigned)comb->shader_input_mapping[1][2], (unsigned)comb->shader_input_mapping[1][3],
(unsigned)comb->shader_input_mapping[1][4], (unsigned)comb->shader_input_mapping[1][5],
(unsigned)comb->shader_input_mapping[1][6]);
}
#endif
}
static struct ColorCombiner* gfx_lookup_or_create_color_combiner(const ColorCombinerKey& key) {