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/ and docs/research/.
  • A clean-room terrain import boundary with project-owned ovp-text fixtures and an SRTM/HGT byte importer behind the hgt Cargo 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 optional hgt Cargo 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.
S
Description
Modern open-source Rust terrain generator inspired by classic VistaPro.
Readme 1 MiB
Languages
Rust 100%