vkmEngine 1.0.0
A C++ game engine · vkmengine.com
Loading...
Searching...
No Matches
Vkm::Engine::RenderView Struct Reference

The backend-agnostic view of the frame handed to RenderBackend::render. More...

#include <render_view.h>

Public Member Functions

void build (const Scene &scene, const Visibility &visibility, const UIDrawData *ui, const SplashFrame *splash, const PoseBuffer *poses, const LiveParticles *particles)
 Refill the view for the current frame.

Public Attributes

uint32_t viewportX = 0
 Viewport rect within the backbuffer, top-left origin (surfaceHeight flips it).
uint32_t surfaceWidth = 0
 Full backbuffer width.
uint32_t surfaceHeight = 0
 Full backbuffer height.
bool hasCamera = false
 Whether a camera resolved this frame.
const RenderObjects * objects = nullptr
 Every object the frame can draw, and the lists naming which each reader draws.
std::vector< ParticleData > particlesAdditive
 Order-independent.
std::vector< ParticleData > particlesAlpha
 Unsorted; the backend orders them.
IrradianceVolumeData irradianceVolume {}
 The scene's baked-GI volume, meaningful while hasIrradianceVolume.
const std::vector< glm::mat4 > * skinMatrices = nullptr
 The frame's bone palettes: PoseBuffer::palette(), borrowed whole.
const UIDrawData * ui = nullptr
 Borrowed; null when the UISystem has not run.
uint64_t worldEpoch = 0
 Scene::epoch() at build time: which world these items came from.

Detailed Description

The backend-agnostic view of the frame handed to RenderBackend::render.

The whole engine -> backend contract besides the asset graph. build() refills it each frame: what it gathers from the scene it owns; other systems' products it borrows by pointer, valid until the next build().

Member Function Documentation

◆ build()

void Vkm::Engine::RenderView::build ( const Scene & scene,
const Visibility & visibility,
const UIDrawData * ui,
const SplashFrame * splash,
const PoseBuffer * poses,
const LiveParticles * particles )

Refill the view for the current frame.

With no active camera the 3D half is emitted empty (cleared, not stale); ui and splash still pass through.

Parameters
sceneScene the lights, probes, decals, emitters and volume are gathered from.
visibilityThis frame's cull: its camera, and the borrowed objects.
uiThe UISystem's draw list, or null.
splashThe SplashSystem's product, or null once the sequence is over.
posesThis frame's pose, or null (or empty) when nothing posed: objects then draw bind poses.
particlesParticleSystem's live particles, or null if it has not run.

Member Data Documentation

◆ hasCamera

bool Vkm::Engine::RenderView::hasCamera = false

Whether a camera resolved this frame.

Without one the scene lists are left empty and say nothing about the scene, so a backend keeps its per-probe or per-volume captures.

◆ objects

const RenderObjects* Vkm::Engine::RenderView::objects = nullptr

Every object the frame can draw, and the lists naming which each reader draws.

Borrowed from the cull's Visibility. Never null once build() has run.

◆ irradianceVolume

IrradianceVolumeData Vkm::Engine::RenderView::irradianceVolume {}

The scene's baked-GI volume, meaningful while hasIrradianceVolume.

One only (see GLIrradianceVolume); chosen by findIrradianceVolume.

◆ skinMatrices

const std::vector<glm::mat4>* Vkm::Engine::RenderView::skinMatrices = nullptr

The frame's bone palettes: PoseBuffer::palette(), borrowed whole.

One flat buffer; an object finds its bones through skinFirst. Null on a frame that posed nothing, so a backend can skip all skinned work.

◆ worldEpoch

uint64_t Vkm::Engine::RenderView::worldEpoch = 0

Scene::epoch() at build time: which world these items came from.

A replaced world reuses entity slots and poses, so a backend's baked captures need this to tell they belong to a scene that is gone.


The documentation for this struct was generated from the following file: