- Introduced `test_scenery_brick_preview.gd` to validate focused placement and CPU draw-cost for large brick walls. - Added `test_scenery_surface_cache.gd` to assess texture budget, visual equivalence, and cache invalidation. - Created `test_scenery_surface_preview.gd` to evaluate adaptive preview selection and placement behavior. - Implemented various helper functions to measure drawing performance and validate expected behaviors during tests. - Added unique identifiers for new test files to ensure proper tracking and management.
40 lines
3.6 KiB
XML
40 lines
3.6 KiB
XML
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1200" height="630" viewBox="0 0 1200 630" role="img" aria-labelledby="title desc">
|
||
<title id="title">Zoom uses smaller copies already stored in the material texture</title>
|
||
<desc id="desc">The brick material starts at 1600 by 608 bitmap pixels. Its mip chain includes 800 by 304, 400 by 152 and 200 by 76, continuing down to one pixel. These copies are prepared once. Brick world dimensions stay fixed.</desc>
|
||
<defs>
|
||
<pattern id="brick" width="100" height="38" patternUnits="userSpaceOnUse"><rect width="100" height="38" fill="#d2cbaf"/><rect x="2" y="2" width="46" height="15" fill="#26b8df"/><rect x="52" y="2" width="46" height="15" fill="#39c7ee"/><rect x="-23" y="21" width="46" height="15" fill="#32c2e8"/><rect x="27" y="21" width="46" height="15" fill="#21b4da"/><rect x="77" y="21" width="46" height="15" fill="#32c2e8"/></pattern>
|
||
<pattern id="half" xlink:href="#brick" patternTransform="scale(.5)"/>
|
||
<pattern id="quarter" xlink:href="#brick" patternTransform="scale(.25)"/>
|
||
<pattern id="eighth" xlink:href="#brick" patternTransform="scale(.125)"/>
|
||
<marker id="arrow" markerWidth="10" markerHeight="10" refX="8" refY="5" orient="auto"><path d="M0 0L10 5L0 10Z" fill="#7c3aed"/></marker>
|
||
<style>text{font-family:Segoe UI,Arial,sans-serif;fill:#172033}.title{font-size:30px;font-weight:700}.heading{font-size:22px;font-weight:700}.body{font-size:18px}.small{font-size:16px}.arrow{fill:none;stroke:#7c3aed;stroke-width:3;marker-end:url(#arrow)}</style>
|
||
</defs>
|
||
<rect width="1200" height="630" rx="16" fill="#f8fafc"/>
|
||
<text x="40" y="53" class="title">Zoom samples ready-made sizes of the same image.</text>
|
||
<text x="40" y="86" class="body">Mipmaps are generated once with the material. The GPU selects and blends them during rendering.</text>
|
||
|
||
<rect x="60" y="150" width="400" height="152" fill="url(#brick)" stroke="#94a3b8"/>
|
||
<path d="M471 228H508" class="arrow"/>
|
||
<rect x="530" y="188" width="200" height="76" fill="url(#half)" stroke="#94a3b8"/>
|
||
<path d="M741 228H778" class="arrow"/>
|
||
<rect x="800" y="207" width="100" height="38" fill="url(#quarter)" stroke="#94a3b8"/>
|
||
<path d="M911 228H948" class="arrow"/>
|
||
<rect x="970" y="217" width="50" height="19" fill="url(#eighth)" stroke="#94a3b8"/>
|
||
<text x="1043" y="234" class="heading">…</text>
|
||
|
||
<text x="260" y="342" class="heading" text-anchor="middle">1600 × 608</text>
|
||
<text x="260" y="373" class="small" text-anchor="middle">Base image: 2 pixels / world unit</text>
|
||
<text x="630" y="342" class="heading" text-anchor="middle">800 × 304</text>
|
||
<text x="630" y="373" class="small" text-anchor="middle">Half size</text>
|
||
<text x="850" y="342" class="heading" text-anchor="middle">400 × 152</text>
|
||
<text x="850" y="373" class="small" text-anchor="middle">Quarter size</text>
|
||
<text x="1000" y="342" class="heading" text-anchor="middle">200 × 76</text>
|
||
<text x="1000" y="373" class="small" text-anchor="middle">Eighth size</text>
|
||
<text x="60" y="414" class="small">The actual chain continues down to 1 × 1. Diagram sizes are scaled for illustration.</text>
|
||
|
||
<rect x="40" y="450" width="1120" height="143" rx="12" fill="#ecfdf5" stroke="#0f766e" stroke-width="2"/>
|
||
<text x="62" y="486" class="heading">World size, image size and screen size are different things.</text>
|
||
<text x="62" y="521" class="body">A brick stays 100 world units wide. At 40% zoom, it covers about 40 screen pixels.</text>
|
||
<text x="62" y="556" class="body">Camera zoom changes sampling detail; it does not bake another image or resize the brick geometry.</text>
|
||
</svg>
|