60 virtual bool init(SDL_Window* window) = 0;
61 virtual void drawFrame(glm::vec3 eye,
float yaw,
float pitch,
float roll) = 0;
64 [[nodiscard]]
virtual SDL_GPUDevice*
getDevice()
const = 0;
69 virtual int loadSceneModel(
const char* filename, glm::vec3 pos,
float scale,
bool flipUVs) = 0;
RendererFeature
Stable identifiers for each dispatchable renderer method.
Definition IRenderer.hpp:31
@ UpdateModelMeshVertices
Assimp-based model loading and CPU-side mesh/texture data types.
Shared data types used across renderer implementations.
Abstract renderer contract.
Definition IRenderer.hpp:53
virtual SDL_GPUDevice * getDevice() const =0
virtual int uploadSceneModel(const LoadedModel &model)=0
virtual void drawFrame(glm::vec3 eye, float yaw, float pitch, float roll)=0
virtual SDL_GPUShaderFormat getShaderFormat() const =0
virtual void setParticleSystem(ParticleSystem *ps)=0
virtual const Camera & getCamera() const =0
virtual bool init(SDL_Window *window)=0
virtual int modelCount() const =0
virtual void requestScreenshot(const std::string &path)=0
virtual void setPointLights(std::vector< PointLight > lights)=0
virtual void setWeaponViewmodel(const WeaponViewmodel &vm)=0
virtual void updateModelMeshVertices(int modelIndex, int meshIndex, const ModelVertex *vertices, Uint32 vertexCount)=0
virtual ~IRenderer()=default
virtual void setEntityRenderList(std::vector< EntityRenderCmd > cmds)=0
virtual int loadSceneModel(const char *filename, glm::vec3 pos, float scale, bool flipUVs)=0
virtual void setModelEmissive(int modelIndex, glm::vec4 emissiveFactor)=0
virtual bool setVSync(bool enabled)=0
virtual bool supports(RendererFeature feature) const =0
Return true iff this renderer implements the given feature.
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
First-person weapon viewmodel descriptor sent per frame.
Definition RendererTypes.hpp:65