group2 0.1.0
CSE 125 Group 2
Loading...
Searching...
No Matches
RendererTypes.hpp
Go to the documentation of this file.
1
10
11#pragma once
12
13#include "../animation/SkinVertex.hpp" // ModelVertex (48-byte bind-pose vertex)
14
15#include <cstdint>
16#include <glm/glm.hpp>
17#include <vector>
18
19// ─── Existing types ──────────────────────────────────────────────────────────
20
27{
28 // Geometry passes
29 bool pbrModels = true;
30 bool entityModels = true;
31 bool weaponViewmodel = true;
32 bool skybox = true;
33 bool normalTextures = false;
34 bool roughnessTextures = true;
35 bool metallicTextures = true;
36
37 // Shadow
38 bool shadows = true;
39
40 // Post-processing
41 bool ssao = true;
42 bool bloom = true;
43 bool ssr = true;
44 bool volumetrics = true;
45
46 // Effects
47 bool particles = true;
48 bool sdfText = true;
49
50 // Skinned characters
51 bool skinnedCharacters = true;
52};
53
60{
61 int32_t modelIndex = -1;
62 glm::mat4 worldTransform{1.0f};
63 glm::vec4 tint{1.0f};
64 bool occludedSilhouette = false;
65};
66
73{
74 glm::vec3 position{0.0f};
75 float intensity = 1.0f;
76 glm::vec3 color{1.0f};
77 float range = 5000.0f;
78};
79
82{
83 int32_t modelIndex = -1;
84 glm::mat4 transform{1.0f};
85 bool visible = false;
86};
87
94
100{
101 int32_t modelIndex = -1;
102 glm::mat4 transform{1.0f};
105 bool visible = false;
106};
107
108// ─── Skinned-character types (NEW) ───────────────────────────────────────────
109//
110// These three types form the interface between the animation system and the
111// renderer's skinned-character pipeline. See `NewRenderer::setSkinnedRig`
112// and `NewRenderer::setSkinnedFrame` for usage.
113//
114// Pipeline:
115// 1. Once at startup, Game.cpp builds `vector<RigMeshSource>` from
116// `CharacterRig::meshes()` (one entry per skinned mesh) and calls
117// `setSkinnedRig(meshes, numJoints)`.
118// 2. Every frame, Game.cpp walks visible animated entities, builds two
119// parallel vectors (bone palette + per-instance metadata) and calls
120// `setSkinnedFrame(palette, instances)`.
121
133{
134 int boneIndices[4] = {0, 0, 0, 0};
135 float boneWeights[4] = {0.0f, 0.0f, 0.0f, 0.0f};
136};
137
148{
149 glm::mat4 worldTransform{1.0f};
150 uint32_t paletteBase = 0;
151 uint32_t materialId = 0;
152 uint32_t _pad0 = 0;
153 uint32_t _pad1 = 0;
154 glm::vec4 tint{1.0f, 1.0f, 1.0f, 0.0f};
155};
156
171{
172 std::vector<ModelVertex> bindPoseVertices;
173 std::vector<BoneInfluence> boneInfluences;
174 std::vector<uint32_t> indices;
175 uint32_t materialIndex = 0;
176};
Bind-pose vertex layout used by the CPU skinning pipeline.
Per-vertex bone-influence record — 4 bones per vertex, weighted.
Definition RendererTypes.hpp:133
float boneWeights[4]
Skinning weights (should sum to ~1.0).
Definition RendererTypes.hpp:135
int boneIndices[4]
Joint indices into the bone palette.
Definition RendererTypes.hpp:134
Per-entity render command — built by Game, consumed by Renderer::drawFrame.
Definition RendererTypes.hpp:60
glm::vec4 tint
RGB multiplier into baseColorFactor (alpha unused). Default = no tint.
Definition RendererTypes.hpp:63
int32_t modelIndex
Renderer-side model handle (returned by loadSceneModel / uploadSceneModel).
Definition RendererTypes.hpp:61
bool occludedSilhouette
True = draw an extra flat silhouette only where hidden behind scene depth.
Definition RendererTypes.hpp:64
glm::mat4 worldTransform
Full world transform (position × rotation × scale).
Definition RendererTypes.hpp:62
Dynamic point light — built by Game, injected into the PBR light array.
Definition RendererTypes.hpp:73
glm::vec3 position
World-space position.
Definition RendererTypes.hpp:74
glm::vec3 color
Light colour (linear RGB).
Definition RendererTypes.hpp:76
float range
Attenuation range (world units); falloff = 1 - (d²/r²).
Definition RendererTypes.hpp:77
float intensity
Brightness multiplier.
Definition RendererTypes.hpp:75
Live toggles for every render system — exposed to ImGui.
Definition RendererTypes.hpp:27
bool roughnessTextures
Sample material roughness maps when present.
Definition RendererTypes.hpp:34
bool ssao
Screen-space ambient occlusion.
Definition RendererTypes.hpp:41
bool normalTextures
Sample material normal maps when present.
Definition RendererTypes.hpp:33
bool particles
GPU particle system.
Definition RendererTypes.hpp:47
bool bloom
Bloom downsample + upsample chain.
Definition RendererTypes.hpp:42
bool weaponViewmodel
First-person weapon.
Definition RendererTypes.hpp:31
bool volumetrics
Volumetric lighting / god rays.
Definition RendererTypes.hpp:44
bool skinnedCharacters
Instanced GPU skinning pass for player meshes.
Definition RendererTypes.hpp:51
bool sdfText
SDF text rendering (HUD + world).
Definition RendererTypes.hpp:48
bool pbrModels
Loaded scene models (opaque + transparent).
Definition RendererTypes.hpp:29
bool entityModels
ECS-driven entity models (Renderable component).
Definition RendererTypes.hpp:30
bool ssr
Screen-space reflections.
Definition RendererTypes.hpp:43
bool metallicTextures
Sample material metallic maps when present.
Definition RendererTypes.hpp:35
bool shadows
Shadow map pass + shadow sampling in PBR.
Definition RendererTypes.hpp:38
bool skybox
Procedural / cubemap skybox.
Definition RendererTypes.hpp:32
Source data for one mesh of a skinned character rig.
Definition RendererTypes.hpp:171
std::vector< ModelVertex > bindPoseVertices
Bind-pose vertices (never deformed CPU-side).
Definition RendererTypes.hpp:172
std::vector< BoneInfluence > boneInfluences
Parallel to bindPoseVertices. Must be same size.
Definition RendererTypes.hpp:173
uint32_t materialIndex
Source material index — picks this mesh's per-mesh diffuse texture.
Definition RendererTypes.hpp:175
std::vector< uint32_t > indices
Triangle list (3 indices per triangle).
Definition RendererTypes.hpp:174
Per-frame instance entry — one per visible animated character.
Definition RendererTypes.hpp:148
uint32_t _pad0
Definition RendererTypes.hpp:152
glm::vec4 tint
rgb = per-player color, a = blend factor (0 = no tint).
Definition RendererTypes.hpp:154
glm::mat4 worldTransform
Rig-local → world. Composed CPU-side as T * R * S.
Definition RendererTypes.hpp:149
uint32_t materialId
0=normal, 1=killcam highlight, 2=wallhack chams.
Definition RendererTypes.hpp:151
uint32_t _pad1
Definition RendererTypes.hpp:153
uint32_t paletteBase
First joint slot in the palette = instanceIndex * numJoints.
Definition RendererTypes.hpp:150
Extra first-person models drawn in the weapon pass, after the gun.
Definition RendererTypes.hpp:82
glm::mat4 transform
World transform, already camera/viewmodel-relative.
Definition RendererTypes.hpp:84
bool visible
False = skip drawing this attachment.
Definition RendererTypes.hpp:85
int32_t modelIndex
Renderer-side model handle.
Definition RendererTypes.hpp:83
First-person hand attachments driven by weapon-authored mount points.
Definition RendererTypes.hpp:90
ViewmodelAttachment right
Definition RendererTypes.hpp:92
ViewmodelAttachment left
Definition RendererTypes.hpp:91
First-person weapon viewmodel descriptor sent per frame.
Definition RendererTypes.hpp:100
ViewmodelAttachment debugPoint
Optional red debug marker for live mount tweaking.
Definition RendererTypes.hpp:104
ViewmodelHands hands
Optional first-person hands attached to weapon grip mounts.
Definition RendererTypes.hpp:103
bool visible
False = skip drawing this frame (e.g. weapon hidden).
Definition RendererTypes.hpp:105
int32_t modelIndex
Renderer-side model handle.
Definition RendererTypes.hpp:101
glm::mat4 transform
Transform in viewmodel space (relative to camera).
Definition RendererTypes.hpp:102