3.9 KiB
OpenVistaPro
OpenVistaPro is an early-stage, open-source Rust project to build a modern landscape generator inspired by classic VistaPro.
The goal is not to redistribute or reuse proprietary VistaPro code/assets. The local reference/ directory is intentionally ignored by git and is used only for historical/product research.
Current status
This repository currently contains:
- A Rust binary crate scaffold.
- A first-pass knowledgebase under
docs/knowledgebase/. - An implementation roadmap under
docs/plans/. - Legal and reference-material hygiene notes under
docs/legal/anddocs/research/. - A clean-room terrain import boundary with project-owned
ovp-textfixtures and an SRTM/HGT byte importer behind thehgtCargo feature.
Development
cargo build
cargo test
cargo run -- info
cargo run -- scene export --output /tmp/openvistapro-default.ovp.toml
cargo run -- render --preset hill --width 256 --height 256 --output /tmp/openvistapro-hill.png
cargo run -- render --preset hill --scene /tmp/openvistapro-default.ovp.toml --width 256 --height 256 --output /tmp/openvistapro-hill-from-scene.png
cargo run -- render --preset hill --camera-demo --width 256 --height 192 --output /tmp/openvistapro-perspective.png
cargo run --features app --bin openvistapro_app
The optional app shell is gated behind the app feature so default CLI builds stay GPU-free.
It opens an eframe/egui window titled OpenVistaPro with scene controls and a CPU-rendered terrain preview.
Importer status:
ovp-text: project-owned plain-text heightfield fixture format used for tests.hgt: enabled by the optionalhgtCargo feature; parses SRTM HGT payloads as square grids of big-endian signed 16-bit metre samples. The implementation and tests use open specifications and synthetic/tiny fixtures only.
To verify the importer feature surface:
cargo test hgt
cargo test hgt --features hgt
cargo run --features hgt --bin openvistapro -- info
cargo test --no-default-features
The default render mode writes a deterministic top-down elevation preview.
Passing --camera-demo switches to the current CPU perspective renderer spike:
a simple pinhole-camera raymarcher with bilinear height sampling, fixed step
size, sky gradient, and distance haze. It is intended as a readable reference
renderer for architecture validation, not a performance target or final visual
model.
Scene files use the project-owned .ovp.toml format. Version 1 stores a
top-level schema = "openvistapro.scene", version = 1, and a serialized
Scene payload containing camera, light, water, tree-line, snow-line, and haze
settings. The format is intentionally human-readable while the data model is
still evolving.
Script language (MVP)
OpenVistaPro includes a small, line-oriented scripting language for driving
terrain and render jobs from a plain-text file (src/script.rs). The grammar
is clean-room and project-owned: it is not VistaPro-compatible and
deliberately does not mirror the legacy VistaPro scripting syntax.
Each line is a blank line, a # comment (also usable as a trailing comment),
or one command:
use preset hill # `hill` or `plane`
set thresholds water=0.18 tree=0.42 snow=0.77
import heightmap "data/demo-height.png"
render output "out/demo.png"
Design goals for the MVP: one command per line for readable diffs, deterministic parsing with no I/O, and parse errors that carry a 1-based line number. This slice only parses scripts into an AST; executing those commands is intentionally left for a later card.
Project principles
- Clean-room implementation: do not decompile, copy, or translate proprietary binaries.
- Use open data formats and openly licensed datasets.
- Preserve the spirit/workflow of VistaPro while designing a modern UX and renderer.
- Start with a small, testable terrain engine before building advanced rendering or UI.