12#include <SDL3/SDL_gpu.h>
42 bool init(SDL_Window* window)
override;
43 bool init(SDL_Window* window, SDL_GPUDevice* sharedDevice);
44 void drawFrame(glm::vec3 eye,
float yaw,
float pitch,
float roll)
override;
59 const std::string& =
"")
override;
61 bool setVSync(
bool )
override {
return false; }
73 [[nodiscard]]
int modelCount()
const override {
return 0; }
GPU asset types and global registries for the new renderer.
uint32_t MeshIdInt
Definition Asset.hpp:18
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
First-person camera managing view and projection matrices.
Definition Camera.hpp:10
Abstract renderer contract.
Definition IRenderer.hpp:54
Camera for the new renderer, combining view and projection into one matrix.
Definition Camera.hpp:10
Graphics-team's work-in-progress SDL3 GPU renderer.
Definition NewRenderer.hpp:38
SDL_GPUTexture * texture_
Definition NewRenderer.hpp:88
void setModelEmissive(int, glm::vec4) override
Definition NewRenderer.hpp:69
NewCamera camera_
Definition NewRenderer.hpp:94
void setEntityRenderList(std::vector< EntityRenderCmd >) override
Definition NewRenderer.hpp:67
int modelCount() const override
Definition NewRenderer.hpp:73
Uint32 depthHeight_
Definition NewRenderer.hpp:92
SDL_Window * window_
Definition NewRenderer.hpp:77
void drawMesh(SDL_GPURenderPass *renderPass, const Asset::Mesh &mesh) const
Bind a mesh's buffers and issue an indexed draw call.
Definition NewRenderer.cpp:259
bool ownsWindowClaim_
Definition NewRenderer.hpp:82
bool ensureDepthTexture(Uint32 width, Uint32 height)
(Re-)create the depth texture if the viewport size changed.
Definition NewRenderer.cpp:275
SDL_GPUSampler * sampler_
Definition NewRenderer.hpp:89
bool init(SDL_Window *window) override
Definition NewRenderer.cpp:31
void requestScreenshot(const std::string &) override
Definition NewRenderer.hpp:72
bool setVSync(bool) override
Definition NewRenderer.hpp:61
void createLegacyMeshBuffers(MeshIdInt meshId)
Definition NewRenderer.cpp:343
void quit() override
Definition NewRenderer.cpp:294
bool initCommon()
Shared initialisation called by both init() overloads.
Definition NewRenderer.cpp:77
int loadSceneModel(const char *, glm::vec3, float, bool, const std::string &="") override
Load a model and return its index in the renderer's models list.
Definition NewRenderer.cpp:359
void setHudTexture(SDL_GPUTexture *) override
Set the HUD overlay texture to blit after tone mapping.
Definition NewRenderer.hpp:74
void drawFrame(glm::vec3 eye, float yaw, float pitch, float roll) override
Definition NewRenderer.cpp:180
void setPointLights(std::vector< PointLight >) override
Definition NewRenderer.hpp:68
int uploadSceneModel(const LoadedModel &) override
Definition NewRenderer.hpp:60
bool supports(RendererFeature feature) const override
Return true iff this renderer implements the given feature.
Definition NewRenderer.cpp:18
SDL_GPUDevice * getDevice() const override
Definition NewRenderer.hpp:50
void setWeaponViewmodel(const WeaponViewmodel &) override
Definition NewRenderer.hpp:71
SDL_GPUGraphicsPipeline * geometryPipeline_
Definition NewRenderer.hpp:84
SDL_GPUShaderFormat getShaderFormat() const override
Definition NewRenderer.hpp:51
Uint32 depthWidth_
Definition NewRenderer.hpp:91
bool loadSceneAssets()
Load models via AssetLoader and upload their mesh buffers to the GPU.
Definition NewRenderer.cpp:135
bool ownsDevice_
Definition NewRenderer.hpp:81
void updateModelMeshVertices(int, int, const ModelVertex *, Uint32) override
Definition NewRenderer.hpp:62
void createMeshBuffers(MeshIdInt meshId)
Allocate GPU vertex and index buffers for the given mesh.
Definition NewRenderer.cpp:164
bool createGeometryPipeline()
Build the geometry graphics pipeline from vertex/fragment shaders.
Definition NewRenderer.cpp:109
const Camera & getCamera() const override
Definition NewRenderer.hpp:52
void setParticleSystem(ParticleSystem *) override
Definition NewRenderer.hpp:54
SDL_GPUTexture * depthTexture_
Definition NewRenderer.hpp:85
Camera legacyCameraStub_
Definition NewRenderer.hpp:95
void setModelScenePass(int, bool) override
Override whether a model is drawn during the scene pass (static world geometry) or only via EntityRen...
Definition NewRenderer.hpp:70
SDL_GPUDevice * device_
Definition NewRenderer.hpp:78
SDL_GPUShaderFormat shaderFormat_
Definition NewRenderer.hpp:79
Top-level particle system orchestrator.
Definition ParticleSystem.hpp:35
Camera class for the new renderer with combined view-projection matrix.
First-person camera with perspective projection and Vulkan-convention matrices.
A single mesh: CPU-side vertex/index data plus GPU buffer info.
Definition Asset.hpp:44
Everything returned by loadModel().
Definition ModelLoader.hpp:76
One vertex in a loaded 3-D model (PBR-ready).
Definition ModelLoader.hpp:19
Definition NewRenderer.hpp:19
glm::vec3 position
Definition NewRenderer.hpp:20
glm::vec3 normal
Definition NewRenderer.hpp:21
glm::vec2 texUV
Definition NewRenderer.hpp:22
First-person weapon viewmodel descriptor sent per frame.
Definition RendererTypes.hpp:64