group2 0.1.0
CSE 125 Group 2
Loading...
Searching...
No Matches
HybridRenderer.hpp
Go to the documentation of this file.
1
10
11#pragma once
12
13#include "IRenderer.hpp"
14#include "Renderer.hpp"
16
18{
19public:
21
22 [[nodiscard]] bool supports(RendererFeature feature) const override;
23
24 bool init(SDL_Window* window) override;
25 void drawFrame(glm::vec3 eye, float yaw, float pitch, float roll) override;
26 void quit() override;
27
28 [[nodiscard]] SDL_GPUDevice* getDevice() const override;
29 [[nodiscard]] SDL_GPUShaderFormat getShaderFormat() const override;
30 [[nodiscard]] const Camera& getCamera() const override;
31
32 void setParticleSystem(ParticleSystem* ps) override;
33 int loadSceneModel(const char* filename, glm::vec3 pos, float scale, bool flipUVs = false) override;
34 int uploadSceneModel(const LoadedModel& model) override;
35 bool setVSync(bool enabled) override;
36 void
37 updateModelMeshVertices(int modelIndex, int meshIndex, const ModelVertex* vertices, Uint32 vertexCount) override;
38 void setEntityRenderList(std::vector<EntityRenderCmd> cmds) override;
39 void setPointLights(std::vector<PointLight> lights) override;
40 void setModelEmissive(int modelIndex, glm::vec4 emissiveFactor) override;
41 void setWeaponViewmodel(const WeaponViewmodel& vm) override;
42 void requestScreenshot(const std::string& path) override;
43 [[nodiscard]] int modelCount() const override;
44
47 [[nodiscard]] static constexpr SDL_GPUTextureFormat getHdrFormat() { return Renderer::getHdrFormat(); }
48
52 [[nodiscard]] Renderer& legacy() { return legacy_; }
53 [[nodiscard]] const Renderer& legacy() const { return legacy_; }
54
56 [[nodiscard]] NewRenderer& next() { return next_; }
57 [[nodiscard]] const NewRenderer& next() const { return next_; }
58
63 int& ssrMode;
65
66private:
67 Renderer legacy_;
68 NewRenderer next_;
69
72 bool legacyInitialised_ = false;
73 bool nextInitialised_ = false;
74 bool drawFrameLogged_ = false;
75};
Abstract renderer interface used by the hybrid dispatcher to route calls to either the legacy rendere...
RendererFeature
Stable identifiers for each dispatchable renderer method.
Definition IRenderer.hpp:31
Definition Camera.hpp:6
Definition HybridRenderer.hpp:18
int modelCount() const override
Definition HybridRenderer.cpp:263
NewRenderer & next()
Direct access to the new renderer instance (not normally needed).
Definition HybridRenderer.hpp:56
void updateModelMeshVertices(int modelIndex, int meshIndex, const ModelVertex *vertices, Uint32 vertexCount) override
Definition HybridRenderer.cpp:214
RenderToggles & toggles
Alias of legacy_.toggles.
Definition HybridRenderer.hpp:64
void requestScreenshot(const std::string &path) override
Definition HybridRenderer.cpp:255
void drawFrame(glm::vec3 eye, float yaw, float pitch, float roll) override
Definition HybridRenderer.cpp:132
bool setVSync(bool enabled) override
Definition HybridRenderer.cpp:207
const NewRenderer & next() const
Definition HybridRenderer.hpp:57
SDL_GPUDevice * getDevice() const override
Definition HybridRenderer.cpp:164
void setWeaponViewmodel(const WeaponViewmodel &vm) override
Definition HybridRenderer.cpp:247
static constexpr SDL_GPUTextureFormat getHdrFormat()
HDR render target format (RGBA16F).
Definition HybridRenderer.hpp:47
Renderer & legacy()
Direct access to the legacy renderer instance, needed by DebugUI::buildLightingUI / buildSkyboxUI whi...
Definition HybridRenderer.hpp:52
void setModelEmissive(int modelIndex, glm::vec4 emissiveFactor) override
Definition HybridRenderer.cpp:241
int & ssrMode
Convenience aliases for fields Game reaches into directly.
Definition HybridRenderer.hpp:63
void quit() override
Definition HybridRenderer.cpp:149
const Camera & getCamera() const override
Definition HybridRenderer.cpp:178
int uploadSceneModel(const LoadedModel &model) override
Definition HybridRenderer.cpp:200
void setPointLights(std::vector< PointLight > lights) override
Definition HybridRenderer.cpp:233
int loadSceneModel(const char *filename, glm::vec3 pos, float scale, bool flipUVs=false) override
Definition HybridRenderer.cpp:193
bool supports(RendererFeature feature) const override
Return true iff this renderer implements the given feature.
Definition HybridRenderer.cpp:77
const Renderer & legacy() const
Definition HybridRenderer.hpp:53
bool init(SDL_Window *window) override
Definition HybridRenderer.cpp:83
SDL_GPUShaderFormat getShaderFormat() const override
Definition HybridRenderer.cpp:171
void setParticleSystem(ParticleSystem *ps) override
Definition HybridRenderer.cpp:185
HybridRenderer()
Definition HybridRenderer.cpp:75
void setEntityRenderList(std::vector< EntityRenderCmd > cmds) override
Definition HybridRenderer.cpp:225
Abstract renderer contract.
Definition IRenderer.hpp:53
Graphics-team's work-in-progress SDL3 GPU renderer.
Definition Renderer.hpp:35
Top-level particle system orchestrator.
Definition ParticleSystem.hpp:35
Forward-declared to avoid circular includes.
Definition Renderer.hpp:35
static constexpr SDL_GPUTextureFormat getHdrFormat()
HDR render target format (RGBA16F). Particle pipelines must match this.
Definition Renderer.hpp:79
SDL3 GPU forward PBR renderer with HDR pipeline and post-processing.
Everything returned by loadModel().
Definition ModelLoader.hpp:76
One vertex in a loaded 3-D model (PBR-ready).
Definition ModelLoader.hpp:19
Live toggles for every render system – exposed to ImGui.
Definition RendererTypes.hpp:24
First-person weapon viewmodel descriptor sent per frame.
Definition RendererTypes.hpp:65