Aetheria/docs/original-game-rendering-spec.md
2026-07-17 11:54:00 +01:00

160 lines
6.7 KiB
Markdown

# Original Game Rendering And View Specification
Baselines: RTS `d12d7c5c^`; ARPG `origin/master` at `ab2c2944`.
## Projection Contexts
Aetheria does not have one universal camera. It has distinct products:
- pilot gameplay world through main plus follow/dock virtual cameras;
- auxiliary fog and field cameras writing named textures;
- tactical minimap cameras and map-scale icons;
- full zone-map projection;
- sector/galaxy topology projection;
- world effects, transparent passes, trails, and overlays.
`ZoneRenderer` currently coordinates many of these, but that Unity class is a
reference composition, not the target owner.
## Entity Presentation Graph
`EntityInstance` is a composite presentation root containing:
- hull renderers and collision presentation;
- tactical map icon;
- influence and ping subviews;
- shield subview;
- equipment, radiator, thruster, weapon, and articulation hardpoints;
- fade-capable and persistent material partitions;
- visibility/fade lifecycle.
`ShipInstance` adds thruster particles, Aether-drive effects, tractor beam, and
ship-specific composition. Weapon presentation adds muzzle, charge, projectile,
beam, impact, explosion, particle, and trail subviews.
One entity/one opaque prefab is insufficient as a portable contract. Eve needs
a typed entity-presentation graph with named subviews, attachment sockets,
activation predicates, render channels, and effect bindings.
## Semantic Render Channels
Required Aetheria channels include:
```text
world.geometry
world.celestial
world.transparent
world.shields
world.projectiles
world.trails
world.effects
field.fog-density
field.fog-displacement
field.gravity
field.influence
map.zone.objects
map.zone.gravity
map.minimap.objects
map.minimap.fields
map.sector.topology
overlay.targeting
```
Channel identity is semantic. Unity layer numbers are runtime-variant metadata.
The pilot view excludes minimap channels; map cameras include their map channels
without requiring pilot geometry. A channel may render to display or a named
texture consumed by another material/channel.
Each channel requires space, camera role, visibility set, ordering, output
target, update policy, clear policy, composition mode, and consumer bindings.
## Fields
Original products include fog density/tint, displacement and patches, sector
boundary fog, gravity wells/waves/terrain/depth, influence, slime/gravity
textures, and map/minimap overlays. Eve Fields is the portable numeric base,
but parity requires named outputs, per-product resolution, blend operation,
viewport, cadence, material consumer, and camera visibility.
## Asset And Material Contract
Provider assets own authored transforms, bounds, meshes, materials, sprites,
textures, sounds, and effect content. Semantic radius never rescales authored
art. Runtime variants map portable roles to native resources.
Required asset kinds include entity presentation, subview, mesh, material
profile, effect, projectile presentation, trail profile, field material, map
symbol, and audio. Entity presentations declare root asset, subviews,
attachments, material slots, visibility tags, map representations, and effect
bindings.
Material profiles describe intent such as opaque PBR, transparent, additive,
field, shield, and celestial. They expose typed parameters and texture slots;
they do not publish Unity shader names as portable authority.
The current native environment seed packages the pre-generated Radiance image
at `Assets/Textures/studio2.hdr` strictly as the reflection texture for
stellar-tinted ambient lighting. Gravity-fog raymarching fills the visible
frame; the studio image is not a skybox or an ambient-color authority. The HDR
source is 4096 by 2048 pixels with
SHA-256 `A2886F1024F67DCB082DA3C97741B4B0824A2E784A697807DBE5DCEB597F85E0`;
it entered the reference project in commit `b53e4aec` on 2021-02-26. The
repository contains no external license attribution for that file, so its
redistribution clearance remains unverified. Treat it as migration material,
not a provenance claim.
Texture generation is an offline authoring concern. Aetheria consumes packaged,
pre-generated textures today; the intended authoring path moves baking into
Blender. Neither the daemon nor generic Eve runtimes depend on Substance
archives or a Substance importer.
## Effects
Effects are semantic burst, loop, beam, trail, impact, shield-hit, destruction,
and screen-feedback lifecycles. Contracts declare source event, spawn space,
attachment socket, channel, lifetime, pooling class, parameters, and start/
update/stop bindings. Effect realization cannot mutate gameplay state.
The current tractor lowering uses provider-owned, pre-generated particle
textures and materials. `beam.presentation` carries source identity, provider
asset role, daemon power, activation threshold, authored radius/distance,
render channel, and an advertised activation action. EveUnity attaches and
modulates that prefab; it does not raycast, apply force, infer contact, or move
cargo. The provider build removes the fossil's embedded tractor object from
ship presentation prefabs, so the standalone `beam.presentation` effect is the
only live writer of tractor visuals. The daemon's post-motion XZ proximity pass
remains the only collection gate.
Projectile simulation and projectile presentation are separate. The daemon and
Ymir own identity/pose/contact; presentation owns visual asset, trail, impact,
and visibility tags.
## Maps
Minimap, zone map, and sector map are separate projections sharing stable world
identities. They are not merely alternate cameras over the pilot document.
- minimap: local contacts, icons, influence, gravity, independent zoom;
- zone map: viewport objects, fields, selection, and navigation;
- sector map: topology, links, discovery, factions, entrance/exit/boss/current.
## Runtime Ownership
Target ownership: EveUnity owns generic native lowering primitives once they
exist. Current implementation covers basic playable-world entities, provider
assets, input, camera following, command transport, receipts, and refresh.
Semantic render channels, entity presentation graphs, map products, material
profiles, effect lifecycles, pooling, and parity diagnostics remain incomplete
or unimplemented.
Aetheria publishes semantic state and provider asset variants. Eve owns
portable contracts and plugin ABIs. Native layer allocation, masks, render
textures, prefab assembly, materials, GPU buffers, particles, trails, pooling,
culling, and diagnostics are derived runtime state, never portable authority.
## Visual Parity Proofs
Capture and compare pilot world, shield hit, each projectile/beam/trail family,
fog/fields, minimap, zone map, and sector map. Diagnostics must identify source
projection, channel, camera, target texture, visibility set, active asset
variant, and provider event/state version.