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
22enum class AAMode : int
23{
24 Off = 0,
25 SMAA_1x = 1,
27};
28
35{
36 // Geometry passes
37 bool pbrModels = true;
38 bool entityModels = true;
39 bool weaponViewmodel = true;
40 bool skybox = true;
41
42 // Shadow
43 bool shadows = true;
44
45 // Post-processing
46 bool ssao = true;
47 bool bloom = true;
48 bool ssr = true;
49 bool volumetrics = true;
50 bool tonemap = true;
51
52 // Effects
53 bool particles = true;
54 bool sdfText = true;
55
56 // Skinned characters
57 bool skinnedCharacters = true;
58};
59
66{
67 int32_t modelIndex = -1;
68 glm::mat4 worldTransform{1.0f};
69 glm::vec4 tint{1.0f};
70};
71
78{
79 glm::vec3 position{0.0f};
80 glm::vec3 color{1.0f};
81 float intensity = 1.0f;
82 float range = 500.0f;
83};
84
90{
91 int32_t modelIndex = -1;
92 glm::mat4 transform{1.0f};
93 bool visible = false;
94};
95
96// ─── Skinned-character types (NEW) ───────────────────────────────────────────
97//
98// These three types form the interface between the animation system and the
99// renderer's skinned-character pipeline. See `NewRenderer::setSkinnedRig`
100// and `NewRenderer::setSkinnedFrame` for usage.
101//
102// Pipeline:
103// 1. Once at startup, Game.cpp builds `vector<RigMeshSource>` from
104// `CharacterRig::meshes()` (one entry per skinned mesh) and calls
105// `setSkinnedRig(meshes, numJoints)`.
106// 2. Every frame, Game.cpp walks visible animated entities, builds two
107// parallel vectors (bone palette + per-instance metadata) and calls
108// `setSkinnedFrame(palette, instances)`.
109
121{
122 int boneIndices[4] = {0, 0, 0, 0};
123 float boneWeights[4] = {0.0f, 0.0f, 0.0f, 0.0f};
124};
125
136{
137 glm::mat4 worldTransform{1.0f};
138 uint32_t paletteBase = 0;
139 uint32_t materialId = 0;
140 uint32_t _pad0 = 0;
141 uint32_t _pad1 = 0;
142 glm::vec4 tint{1.0f, 1.0f, 1.0f, 0.0f};
143};
144
159{
160 std::vector<ModelVertex> bindPoseVertices;
161 std::vector<BoneInfluence> boneInfluences;
162 std::vector<uint32_t> indices;
163};
AAMode
Anti-aliasing mode selection — exposed to ImGui.
Definition RendererTypes.hpp:23
@ SMAA_1x
Spatial SMAA only, zero ghosting.
Definition RendererTypes.hpp:25
@ Off
No anti-aliasing.
Definition RendererTypes.hpp:24
@ SMAA_T2x
2-sample temporal + spatial SMAA (recommended).
Definition RendererTypes.hpp:26
Bind-pose vertex layout used by the CPU skinning pipeline.
Per-vertex bone-influence record — 4 bones per vertex, weighted.
Definition RendererTypes.hpp:121
float boneWeights[4]
Skinning weights (should sum to ~1.0).
Definition RendererTypes.hpp:123
int boneIndices[4]
Joint indices into the bone palette.
Definition RendererTypes.hpp:122
Per-entity render command — built by Game, consumed by Renderer::drawFrame.
Definition RendererTypes.hpp:66
glm::vec4 tint
RGB multiplier into baseColorFactor (alpha unused). Default = no tint.
Definition RendererTypes.hpp:69
int32_t modelIndex
Renderer-side model handle (returned by loadSceneModel / uploadSceneModel).
Definition RendererTypes.hpp:67
glm::mat4 worldTransform
Full world transform (position × rotation × scale).
Definition RendererTypes.hpp:68
Dynamic point light — built by Game, injected into the PBR light array.
Definition RendererTypes.hpp:78
glm::vec3 position
World-space position.
Definition RendererTypes.hpp:79
glm::vec3 color
Light colour (linear RGB).
Definition RendererTypes.hpp:80
float range
Attenuation range (world units); falloff = 1 - (d²/r²).
Definition RendererTypes.hpp:82
float intensity
Brightness multiplier.
Definition RendererTypes.hpp:81
Live toggles for every render system — exposed to ImGui.
Definition RendererTypes.hpp:35
bool ssao
Screen-space ambient occlusion.
Definition RendererTypes.hpp:46
bool particles
GPU particle system.
Definition RendererTypes.hpp:53
bool bloom
Bloom downsample + upsample chain.
Definition RendererTypes.hpp:47
bool weaponViewmodel
First-person weapon.
Definition RendererTypes.hpp:39
bool tonemap
HDR → LDR tone mapping (disabling = raw HDR blit).
Definition RendererTypes.hpp:50
bool volumetrics
Volumetric lighting / god rays.
Definition RendererTypes.hpp:49
bool skinnedCharacters
Instanced GPU skinning pass for player meshes.
Definition RendererTypes.hpp:57
bool sdfText
SDF text rendering (HUD + world).
Definition RendererTypes.hpp:54
bool pbrModels
Loaded scene models (opaque + transparent).
Definition RendererTypes.hpp:37
bool entityModels
ECS-driven entity models (Renderable component).
Definition RendererTypes.hpp:38
bool ssr
Screen-space reflections.
Definition RendererTypes.hpp:48
bool shadows
Shadow map pass + shadow sampling in PBR.
Definition RendererTypes.hpp:43
bool skybox
Procedural / cubemap skybox.
Definition RendererTypes.hpp:40
Source data for one mesh of a skinned character rig.
Definition RendererTypes.hpp:159
std::vector< ModelVertex > bindPoseVertices
Bind-pose vertices (never deformed CPU-side).
Definition RendererTypes.hpp:160
std::vector< BoneInfluence > boneInfluences
Parallel to bindPoseVertices. Must be same size.
Definition RendererTypes.hpp:161
std::vector< uint32_t > indices
Triangle list (3 indices per triangle).
Definition RendererTypes.hpp:162
Per-frame instance entry — one per visible animated character.
Definition RendererTypes.hpp:136
uint32_t _pad0
Definition RendererTypes.hpp:140
glm::vec4 tint
rgb = per-player color, a = blend factor (0 = no tint).
Definition RendererTypes.hpp:142
glm::mat4 worldTransform
Rig-local → world. Composed CPU-side as T * R * S.
Definition RendererTypes.hpp:137
uint32_t materialId
Reserved; ignore for now (will index a material table later).
Definition RendererTypes.hpp:139
uint32_t _pad1
Definition RendererTypes.hpp:141
uint32_t paletteBase
First joint slot in the palette = instanceIndex * numJoints.
Definition RendererTypes.hpp:138
First-person weapon viewmodel descriptor sent per frame.
Definition RendererTypes.hpp:90
bool visible
False = skip drawing this frame (e.g. weapon hidden).
Definition RendererTypes.hpp:93
int32_t modelIndex
Renderer-side model handle.
Definition RendererTypes.hpp:91
glm::mat4 transform
Transform in viewmodel space (relative to camera).
Definition RendererTypes.hpp:92