Live cdb read on the PDB-paired retail client (owner's AMD GPU): m_caps.bCanDoSinglePassDetailing = 1, trysinglepass = 1, MaxSimultaneousTextures = 8, bTexOpDotProduct3 = 1, LandscapeDetailTextures = 0, EnvironmentDetailTextures = 1, landscape/object detail surfaces null, building/environment non-null, tiling 4 everywhere. So retail's detail combine on modern hardware is the texture-stage path in D3DPolyRender::SetSurface (stage0 alpha PREMODULATE, stage1 colour BLENDCURRENTALPHA): lerp(base*diffuse, detail.rgb, detail.a*diffuse.a) - a mild DARKENING (~-10% mid-tones with 0x06006D58), not the DSTCOLOR+INVSRCALPHA brightening that Campaign AR ported and that the 2026-08-21 findings doc + AR review both analysed. Those described the fallback for adapters without D3DTEXOPCAPS_PREMODULATE; the reviewer's guess that consumer drivers rarely advertised it was wrong. VM1 now carries the re-port (SRCALPHA+INVSRCALPHA, detail.rgb / detail.a*diffuseAlpha, neutral at a==0) together with the fade removal. No distance fade exists on either path. Scripts are read-only attaches with no breakpoints. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
43 lines
2.1 KiB
Text
43 lines
2.1 KiB
Text
* Campaign VM slice VM2 - which detail-texturing path does retail run on this GPU?
|
|
* Read-only: attach, dump the capability + detail state, detach. No breakpoints.
|
|
.logopen C:\Users\erikn\source\repos\acdream\.claude\worktrees\peaceful-blackburn-5333f0\artifacts\vm2\vm2-detail-caps.log
|
|
.sympath C:\Users\erikn\source\repos\acdream\refs
|
|
.symopt+ 0x40
|
|
.reload /f acclient.exe
|
|
.echo === module / pdb identity ===
|
|
lmv m acclient
|
|
.echo === symbol resolution ===
|
|
x acclient!RenderDevice::render_device
|
|
x acclient!Render::*detail*
|
|
x acclient!Render::m_RenderPrefs
|
|
x acclient!trysinglepass
|
|
.echo === THE ANSWER: single-pass detailing capability ===
|
|
?? acclient!RenderDevice::render_device->m_caps.bCanDoSinglePassDetailing
|
|
?? acclient!RenderDevice::render_device->m_caps.bTexOpDotProduct3
|
|
?? acclient!RenderDevice::render_device->m_caps.bTexOpBumpEnvMap
|
|
?? acclient!RenderDevice::render_device->m_caps.MaxSimultaneousTextures
|
|
?? acclient!RenderDevice::render_device->m_caps.MaxTextureBlendStages
|
|
.echo === raw D3D caps (TextureOpCaps: 0x8000 = BLENDCURRENTALPHA, 0x10000 = PREMODULATE, 0x4000 = DOTPRODUCT3) ===
|
|
?? acclient!RenderDevice::render_device->m_D3DCaps.TextureOpCaps
|
|
?? acclient!RenderDevice::render_device->m_D3DCaps.MaxSimultaneousTextures
|
|
?? acclient!RenderDevice::render_device->m_D3DCaps.MaxTextureBlendStages
|
|
?? acclient!RenderDevice::render_device->m_D3DCaps.PixelShaderVersion
|
|
.echo === full m_caps dump ===
|
|
dt acclient!RenderDevice poi(acclient!RenderDevice::render_device) m_caps.
|
|
.echo === trysinglepass global ===
|
|
dd acclient!trysinglepass L1
|
|
.echo === detail category state (null = category off) ===
|
|
?? acclient!Render::landscape_detail_surface
|
|
?? acclient!Render::building_detail_surface
|
|
?? acclient!Render::environment_detail_surface
|
|
?? acclient!Render::object_detail_surface
|
|
?? acclient!Render::landscape_detail_tiling
|
|
?? acclient!Render::building_detail_tiling
|
|
?? acclient!Render::environment_detail_tiling
|
|
?? acclient!Render::object_detail_tiling
|
|
?? acclient!Render::curr_detail_src_blend
|
|
?? acclient!Render::curr_detail_dst_blend
|
|
?? acclient!Render::m_RenderPrefs.EnvironmentDetailTextures
|
|
.echo === done, detaching ===
|
|
.logclose
|
|
qd
|