Files

4.2 KiB

LatLong 2.1 validation

Tested on Windows 11, NVIDIA RTX A6000 (48 GiB VRAM), approximately 256 GiB system RAM.

Automated checks

  • 24 Python regression tests pass on the portable ComfyUI runtime (Torch 2.12.0+cu130, NumPy 2.4.6, OpenCV 4.13.0), including CPU/CUDA geometry parity.
  • The same 24 tests pass with Python 3.11.14, Torch 2.0.0+cpu, NumPy 1.24.0, SciPy 1.10.0, OpenCV 4.8.0.74, Pillow 9.5.0.
  • The original smoke suite passes in both environments.
  • Five JavaScript lifecycle tests pass: stale loads, decode locking, queued seeking, disposal, comparison partial failure, and single-frame indexing.
  • A wheel builds successfully. An isolated installation imports all 34 nodes and contains the viewer, Three.js core/module, and third-party license.
  • Real ComfyUI ModelPatcher tests pass with ordinary Conv2d and ComfyUI manual-cast Conv2d: clone isolation, applying padding, changing axes, restoring the original behavior, and copying the VAE patcher.

Live ComfyUI and browser

A temporary ComfyUI instance on localhost:8191 loaded this extension with other custom nodes disabled. A real prompt completed GPU rotation, extraction/reinsertion, HDR preview, diagnostics, cubemap presets, animated preview, comparison, and perspective/2D outpaint stitching.

Browser checks with the installed frontend:

  • Both comparison textures load and render under the same camera.
  • Twenty comparison reloads retain a steady four renderer textures (source textures plus Three.js background textures).
  • Video playback advances; pause and seeking work. End seeks to frame 4/4, with two renderer textures.
  • The final live prompt completed with four synchronized before/after frames. The browser rendered both sequences with a shared frame index and four renderer textures.
  • Browser screenshots are in output/playwright/ (local generated evidence, not shipped).
  • Startup logged missing optional user CSS/templates in the isolated user directory and a frontend graph-initialization warning; no LatLong module/texture errors were observed.

The first isolated startup triggered ComfyUI's legacy-database migration despite a separate user directory. The original legacy database was restored from the backup created by ComfyUI. Subsequent validation explicitly used an in-memory database.

Memory and timing

Single RGB float32 image, yaw=23°, pitch=12°, roll=5°. CPU uses Lanczos; GPU uses bilinear, so these timings are not filter-equivalent comparisons. Source is constant gray to make output integrity independently checkable. Geometry still evaluates the full nontrivial rotation.

Resolution CPU seconds CPU process peak RSS GPU seconds GPU peak allocated memory
4096×2048 2.81 0.77 GiB 0.169 0.383 GiB
16384×8192 74.51 3.59 GiB 0.624 6.008 GiB

CPU RSS includes the Python/runtime baseline and is sampled every 10 ms. GPU timing excludes initial source upload/allocation and synchronizes around processing. GPU peak is PyTorch allocated memory, not total device usage. These are processor-level measurements, not full ComfyUI graph timings or batch-memory guarantees. GPU testing uses bounded 262144-pixel working bands.

Reducing the CPU source tile from 1024 to 256 improved the measured 16K run from 183.98 s to 74.51 s. The CPU input/output tensors alone occupy 3 GiB at 16K. A slim 32768-pixel-wide source is covered by a regression test; a full 32K panorama was not benchmarked.

Remaining boundaries

  • CI is configured but has not been run on GitHub in this task.
  • Registry publication requires the maintainer's real publisher ID and token. No registry publication was attempted.
  • Full diffusion sampling and VAE decoding across model families are not qualified by these tests. Conv2d padding is tested through the real patcher, not inferred from a smoke import.
  • Cubemap filtering clamps within each face. Cross-face filter footprints remain a possible quality improvement.
  • Long video batches retain encoded frame payloads; decoded textures are bounded. This is a preview, not a video encoder or guaranteed real-time player.
  • CPU and GPU bilinear sampling differ slightly because OpenCV quantizes interpolation fractions; direction-fixture parity is tested with a 0.001 tolerance.