160 lines
6.7 KiB
Markdown
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.
|