feat(rendering): port retail one-pass detail material
Replace the building and EnvCell detail replay with retail's exact single-pass stage result, including authored surface opacity, squared detail alpha, final-alpha clipping, and the original subset pipeline/order. Arm the ordered walk command in place to close #471, delete the replay pipelines/shaders, and advance prepared content to recipe 9. Mutation witnesses (each restored before commit): - X=a*qA: RetailDetailTextureContractTests.BothShaderFamiliesUseTheSharedOnePassSourceAndDebugPrecedesDetailSample line 174, missing materialAlpha * detail.a * detail.a. - X*=base alpha: same test line 175, forbidden baseTexel.a found. - CLIP against base alpha: EnvCellAlphaDrawSourceTests.ClipShaders_UseGreaterEqualForThePerRangeReference line 260, final-X conditional missing. - second detail draw: EnvCellAlphaDrawSourceTests.DetailOn_EveryEnvCellFamilyDrawsOnceInPlaceWithAuthoredOpacity line 105, Assert.Single saw 2 MDI calls. - straight-alpha substitution: WalkStaticStreamPopulatorTests.ImmediateBuildingDetail_RetainsOriginalFramebufferFamily line 1244, Additive first failed (only wb-mesh-alpha-1x recorded; InvAlpha also failed). - omit ordered arm: OrderPreservingSubmitterTests.PrepareThenDraw_OrdinaryBuildingClipBuildingOrdinary_ArmsOnePassInPlace line 305, expected (77,3.5), got (0,0). - omit atmospheric combine: RetailDetailTextureContractTests.BothShaderFamiliesUseTheSharedOnePassSourceAndDebugPrecedesDetailSample line 173, atmospheric shared include missing. - drop serialized opacity: ObjectMeshDataSerializerTests.SurfaceOpacity_RoundTripsBitExactlyAndDeterministically line 288, first reported 0.5 bits 1056964608 vs 1065353216. - stale detail arm: ordered adjacency test line 307, expected following ordinary (0,0), got (77,3.5). - per-frame surface map: EnvCellAlphaDrawSourceTests.ProductionWholeLeaf_WarmedScanSubmitRhiAndFilteredReplayDoNotAllocate line 178, expected 0 B, got 147456 B. Verification before commit: shader compiler 23/23; focused App 213/213; Content 75/75; Core Wb 10/10; launcher migration 6/6; Release solution build 0 warnings / 0 errors; git diff --check clean.
This commit is contained in:
parent
13dbb79eeb
commit
75664805f8
61 changed files with 1003 additions and 1016 deletions
|
|
@ -102,7 +102,7 @@ public sealed class DirectionalShadowReceiverTests
|
|||
Assert.Contains("instanceIndoor[instanceIndex]", vertex, StringComparison.Ordinal);
|
||||
Assert.Contains("vSelectionLighting", fragment, StringComparison.Ordinal);
|
||||
Assert.Contains("vOpacityMultiplier", fragment, StringComparison.Ordinal);
|
||||
Assert.Contains("if (color.a < 0.05) discard", fragment, StringComparison.Ordinal);
|
||||
Assert.Contains("color.a < alphaCutoff", fragment, StringComparison.Ordinal);
|
||||
Assert.Contains("ACDREAM_SAMPLE_ARRAY", fragment, StringComparison.Ordinal);
|
||||
Assert.Contains("combineOverlays", terrain, StringComparison.Ordinal);
|
||||
Assert.Contains("combineRoad", terrain, StringComparison.Ordinal);
|
||||
|
|
@ -115,12 +115,13 @@ public sealed class DirectionalShadowReceiverTests
|
|||
Assert.Contains("radius = clamp(radius, 0, 2)", receiver, StringComparison.Ordinal);
|
||||
Assert.Contains("float softness = max(uShadowControl.y, 1.0)", receiver, StringComparison.Ordinal);
|
||||
|
||||
string detailVertex = File.ReadAllText(Path.Combine(
|
||||
shaderRoot,
|
||||
"mesh_detail.vert"));
|
||||
Assert.Contains("int instanceIndex = transformIndex - int(uTextureIndexB)", detailVertex, StringComparison.Ordinal);
|
||||
Assert.Contains("Instances[transformIndex].transform", detailVertex, StringComparison.Ordinal);
|
||||
Assert.Contains("instanceDetailCategory[instanceIndex]", detailVertex, StringComparison.Ordinal);
|
||||
foreach (string worldVertexName in new[] { "mesh_modern.vert", "mesh_atmospheric.vert" })
|
||||
{
|
||||
string worldVertex = File.ReadAllText(Path.Combine(shaderRoot, worldVertexName));
|
||||
Assert.Contains("Instances[", worldVertex, StringComparison.Ordinal);
|
||||
Assert.Contains("].transform", worldVertex, StringComparison.Ordinal);
|
||||
Assert.Contains("instanceDetailCategory[instanceIndex]", worldVertex, StringComparison.Ordinal);
|
||||
}
|
||||
}
|
||||
|
||||
private static string RepositoryRoot()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue