12eca8a5c1
The cloud mesh radius came from the render distance, the far plane was capped at max(4 x render distance, 1024) and the cloud fog end was a constant 2048, so lowering the render distance cut the clouds short. Vanilla ties all three to options.cloudRange: CloudRenderer.prepare builds ceil(range * 16 / 12) cells, Camera.depthFar is max(4 x render distance, range * 16) (also the hand projection, the frustum and the world border), and AtmosphericFogEnvironment ends cloud fog at min(range * 16, visual/cloud_fog_end_distance). The cloud render harness now checks the radius for Cloud Distance 2..128 against the shipped mesh builder, and the environment harness covers visual/cloud_fog_end_distance. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
36 lines
1.3 KiB
Python
36 lines
1.3 KiB
Python
#!/usr/bin/env python3
|
|
"""Compare fancy cloud exterior/interior faces, nearest-first mesh traversal and the
|
|
cell radius of the Cloud Distance option (independent of the render distance) with 26.3."""
|
|
try:
|
|
from . import lab, oracle_harness as harness
|
|
except ImportError:
|
|
import lab, oracle_harness as harness
|
|
|
|
|
|
def make_input(build):
|
|
cases = []
|
|
for x in (-130, -2, -1, 0, 1, 2, 130):
|
|
for z in (-130, -2, -1, 0, 1, 2, 130):
|
|
for bottom in (-5, -4, 0, 1):
|
|
for empty in range(16):
|
|
cases.append(f"0 {x} {z} {bottom} {empty}\n")
|
|
for radius in range(11):
|
|
for bottom in (-5, -4, 0, 1):
|
|
cases.append(f"1 {radius} 0 {bottom} 0\n")
|
|
# CloudRenderer.prepare: radius from options.cloudRange (2..128 chunks).
|
|
for cloud_range in (2, 3, 4, 7, 8, 12, 32, 64, 127, 128):
|
|
cases.append(f"2 {cloud_range} 0 -5 0\n")
|
|
inputs = build / "inputs.txt"
|
|
inputs.write_text("".join(cases))
|
|
return inputs, len(cases)
|
|
|
|
|
|
def main():
|
|
harness.differential("cloud-render-parity", "VanillaCloudRenderOracle", "cloud_fixture", make_input,
|
|
"Fancy cloud face culling, interior winding flags and mesh traversal; not full framebuffer parity.",
|
|
sources=[lab.ROOT / "crates/horizon-client/src/clouds.rs"])
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|