9#include <SDL3/SDL_gpu.h>
39 bool init(SDL_Window* window)
override;
40 bool init(SDL_Window* window, SDL_GPUDevice* sharedDevice);
41 void drawFrame(glm::vec3 eye,
float yaw,
float pitch,
float roll)
override;
47 [[nodiscard]] SDL_GPUDevice*
getDevice()
const override {
return device_; }
48 [[nodiscard]] SDL_GPUShaderFormat
getShaderFormat()
const override {
return shaderFormat_; }
49 [[nodiscard]]
const Camera&
getCamera()
const override {
return legacyCameraStub_; }
57 bool setVSync(
bool )
override {
return false; }
68 [[nodiscard]]
int modelCount()
const override {
return 0; }
71 SDL_Window* window_ =
nullptr;
72 SDL_GPUDevice* device_ =
nullptr;
73 SDL_GPUShaderFormat shaderFormat_ = SDL_GPU_SHADERFORMAT_INVALID;
75 bool ownsDevice_ =
false;
76 bool ownsWindowClaim_ =
false;
78 SDL_GPUGraphicsPipeline* geometryPipeline_ =
nullptr;
79 SDL_GPUTexture* depthTexture_ =
nullptr;
82 SDL_GPUTexture* texture_ =
nullptr;
83 SDL_GPUSampler* sampler_ =
nullptr;
85 Uint32 depthWidth_ = 0;
86 Uint32 depthHeight_ = 0;
89 Camera legacyCameraStub_{};
92 bool createGeometryPipeline();
93 bool loadSceneAssets();
94 bool ensureDepthTexture(Uint32 width, Uint32 height);
97 void drawMesh(SDL_GPURenderPass* renderPass,
const Asset::Mesh& mesh)
const;
uint32_t MeshIdInt
Definition Asset.hpp:14
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
Abstract renderer contract.
Definition IRenderer.hpp:53
Graphics-team's work-in-progress SDL3 GPU renderer.
Definition Renderer.hpp:35
void setModelEmissive(int, glm::vec4) override
Definition Renderer.hpp:65
void setEntityRenderList(std::vector< EntityRenderCmd >) override
Definition Renderer.hpp:63
int modelCount() const override
Definition Renderer.hpp:68
bool init(SDL_Window *window) override
Definition Renderer.cpp:26
void requestScreenshot(const std::string &) override
Definition Renderer.hpp:67
bool setVSync(bool) override
Definition Renderer.hpp:57
void quit() override
Definition Renderer.cpp:263
int loadSceneModel(const char *, glm::vec3, float, bool) override
Definition Renderer.hpp:52
void drawFrame(glm::vec3 eye, float yaw, float pitch, float roll) override
Definition Renderer.cpp:166
void setPointLights(std::vector< PointLight >) override
Definition Renderer.hpp:64
int uploadSceneModel(const LoadedModel &) override
Definition Renderer.hpp:56
bool supports(RendererFeature feature) const override
Return true iff this renderer implements the given feature.
Definition Renderer.cpp:14
SDL_GPUDevice * getDevice() const override
Definition Renderer.hpp:47
void setWeaponViewmodel(const WeaponViewmodel &) override
Definition Renderer.hpp:66
SDL_GPUShaderFormat getShaderFormat() const override
Definition Renderer.hpp:48
void updateModelMeshVertices(int, int, const ModelVertex *, Uint32) override
Definition Renderer.hpp:58
const Camera & getCamera() const override
Definition Renderer.hpp:49
void setParticleSystem(ParticleSystem *) override
Definition Renderer.hpp:51
Top-level particle system orchestrator.
Definition ParticleSystem.hpp:35
Everything returned by loadModel().
Definition ModelLoader.hpp:76
One vertex in a loaded 3-D model (PBR-ready).
Definition ModelLoader.hpp:19
Definition Renderer.hpp:16
glm::vec3 position
Definition Renderer.hpp:17
glm::vec3 normal
Definition Renderer.hpp:18
glm::vec2 texUV
Definition Renderer.hpp:19
First-person weapon viewmodel descriptor sent per frame.
Definition RendererTypes.hpp:65