fix(render): re-land near plane 0.1m (retail Render::znear) — #110 resolved, closes the §4 corner see-through; close #105/#110
The137b4f2payload, re-landed now that #110 is resolved: the missing-indoor- textures correlation was the pre-existing #105 staged-texture-flush drop (fixed inc787201), not a near-plane mechanism. znear=0.1 merely raised #105's trigger probability — a closer near plane makes close-up geometry newly visible, inflating per-frame prepare/upload pressure indoors and growing the never-flushed tail. Exactly the handoff's only-credible-link hypothesis, verified instead of assumed. Retail: Render::SetFOVRad sets znear=0.1 flat (decomp :342173, initializer :1101867). 0.1 < the 0.3m camera-collision sphere, so a wall the collided eye presses against no longer falls inside the near plane — the §4 corner see-through-wall closes. Verification on the 0.1 arm (the arm that struck 2-of-3 on 2026-06-10): nearplane-reland-1.log — [tex-flush] after=0 on all 45 lines, 68,291 [shell] lines with zero zh>0 batches, all four dat tripwires silent, no [wb-error]. ISSUES.md: #105 + #110 moved to Recently closed with root cause + evidence. Pending user re-gate: corner press (wall stays solid) + distance scan for z-shimmer (none expected; retail ships 0.1 with D24). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
c78720127a
commit
d4b5c71e66
5 changed files with 66 additions and 82 deletions
|
|
@ -59,9 +59,9 @@ public sealed class ChaseCamera : ICamera
|
|||
public Matrix4x4 View =>
|
||||
Matrix4x4.CreateLookAt(Position, _lookAt, Vector3.UnitZ);
|
||||
|
||||
// Near plane: retail is 0.1 m, parked pending #110 (see RetailChaseCamera.Projection).
|
||||
// Near plane 0.1 m = retail Render::znear (see RetailChaseCamera.Projection).
|
||||
public Matrix4x4 Projection =>
|
||||
Matrix4x4.CreatePerspectiveFieldOfView(FovY, Aspect, 1f, 5000f);
|
||||
Matrix4x4.CreatePerspectiveFieldOfView(FovY, Aspect, 0.1f, 5000f);
|
||||
|
||||
/// <summary>
|
||||
/// Update the camera position to follow the player. <paramref name="isOnGround"/>
|
||||
|
|
|
|||
|
|
@ -32,9 +32,9 @@ public sealed class FlyCamera : ICamera
|
|||
}
|
||||
}
|
||||
|
||||
// Near plane: retail is 0.1 m, parked pending #110 (see RetailChaseCamera.Projection).
|
||||
// Near plane 0.1 m = retail Render::znear (see RetailChaseCamera.Projection).
|
||||
public Matrix4x4 Projection
|
||||
=> Matrix4x4.CreatePerspectiveFieldOfView(FovY, Aspect, 1f, 5000f);
|
||||
=> Matrix4x4.CreatePerspectiveFieldOfView(FovY, Aspect, 0.1f, 5000f);
|
||||
|
||||
/// <summary>
|
||||
/// Integrate position for one frame based on WASD + vertical keys.
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ public sealed class OrbitCamera : ICamera
|
|||
}
|
||||
}
|
||||
|
||||
// Near plane: retail is 0.1 m, parked pending #110 (see RetailChaseCamera.Projection).
|
||||
// Near plane 0.1 m = retail Render::znear (see RetailChaseCamera.Projection).
|
||||
public Matrix4x4 Projection
|
||||
=> Matrix4x4.CreatePerspectiveFieldOfView(FovY, Aspect, 1f, 5000f);
|
||||
=> Matrix4x4.CreatePerspectiveFieldOfView(FovY, Aspect, 0.1f, 5000f);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -38,16 +38,18 @@ public sealed class RetailChaseCamera : ICamera
|
|||
public float Aspect { get; set; } = 16f / 9f;
|
||||
public float FovY { get; set; } = MathF.PI / 3f;
|
||||
public Matrix4x4 View { get; private set; } = Matrix4x4.Identity;
|
||||
// ⚠️ Near plane SHOULD be retail Render::znear = 0.1 m (decomp :342173/:1101867), and
|
||||
// must eventually be smaller than the 0.3 m camera-collision sphere — at 1.0 m a wall
|
||||
// the collided eye sits 0.3 m from falls INSIDE the near plane and is clipped away
|
||||
// (the §4 corner see-through, user-gated 2026-06-10). The 0.1 change was landed
|
||||
// (137b4f2) and REVERTED the same day: two consecutive runs lost indoor textures on
|
||||
// 0.1 and recovered on the 1.0 bisect run. Mechanism not yet understood (a near-plane
|
||||
// change shouldn't touch texturing; the intermittent #105 may have coincided). Issue
|
||||
// #110 tracks the investigation — do not re-land 0.1 without it.
|
||||
// Near plane = retail Render::znear = 0.1 m (decomp :342130/:342173/:1101867 —
|
||||
// Render::SetFOVRad sets 0.1 flat; the legacy set_vdst variant is max(0.1, vdst·0.25)).
|
||||
// MUST be smaller than the 0.3 m camera-collision sphere (PhysicsCameraCollisionProbe.
|
||||
// ViewerSphereRadius): with a 1.0 m near, a wall the collided eye sits 0.3 m from
|
||||
// falls INSIDE the near plane and is clipped away — pressing the camera into a corner
|
||||
// let you see straight through the wall (§4 corner residual). History: 0.1 landed
|
||||
// (137b4f2), was reverted (8bd3492) after correlating with missing indoor textures,
|
||||
// and re-landed once #110 resolved: the textures were the pre-existing #105
|
||||
// staged-texture-flush drop (WbMeshAdapter.Tick), and 0.1 merely raised its trigger
|
||||
// probability by making more close-up geometry visible (more uploads in flight).
|
||||
public Matrix4x4 Projection =>
|
||||
Matrix4x4.CreatePerspectiveFieldOfView(FovY, Aspect, 1f, 5000f);
|
||||
Matrix4x4.CreatePerspectiveFieldOfView(FovY, Aspect, 0.1f, 5000f);
|
||||
|
||||
// ── Public tunables (per-instance) ──────────────────────────────
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue