group2 0.1.0
CSE 125 Group 2
Loading...
Searching...
No Matches
SkinnedRenderer.hpp File Reference

Self-contained renderer subsystem for skinned (animated) characters. More...

#include "RendererTypes.hpp"
#include <SDL3/SDL.h>
#include <SDL3/SDL_gpu.h>
#include <glm/glm.hpp>
#include <vector>
Include dependency graph for SkinnedRenderer.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  SkinnedRenderer
 Instanced GPU-skinning subsystem. One per renderer. More...
struct  SkinnedRenderer::SkinnedMesh
 One mesh of the installed skinned rig. More...
struct  SkinnedRenderer::SsboInfo

Detailed Description

Self-contained renderer subsystem for skinned (animated) characters.

Owns every GPU resource and CPU staging buffer needed to draw animated players via instanced GPU linear-blend skinning. Decoupled from NewRenderer so the graphics team can iterate on the animation pipeline (rig install, palette upload, draw call, shaders) without touching the main renderer's plumbing.

Lifecycle, owned by NewRenderer:

  1. NewRenderer::init() → SkinnedRenderer::init(device)
  2. Game.cpp (once) → renderer.skinned().setRig(meshes, numJoints)
  3. Game.cpp (every frame) → renderer.skinned().setFrame(palette, instances)
  4. NewRenderer::drawFrame → SkinnedRenderer::uploadFrame(cmd, copyPass) [BEFORE render pass] SkinnedRenderer::draw(renderPass, cmd) [INSIDE render pass]
  5. NewRenderer::quit()SkinnedRenderer::shutdown()

GPU pipeline state owned here:

  • per-mesh vb (ModelVertex), boneVb (BoneInfluence), ib (uint32 indices)
  • palette SSBO (mat4[numInstances*numJoints])
  • instances SSBO (SkinnedInstance[numInstances])
  • paired transfer buffers for per-frame upload (grown on demand)
  • the skinned pipeline + shaders (graphics team adds these — currently null)

Search TODO(graphics) in the cpp to find every hook still awaiting work.