1 // Copyright © 2008-2021 Pioneer Developers. See AUTHORS.txt for details
2 // Licensed under the terms of the GPL v3. See licenses/GPL-3.txt
3 
4 #pragma once
5 
6 #ifndef _RENDERER_DUMMY_H
7 #define _RENDERER_DUMMY_H
8 
9 #include "graphics/Renderer.h"
10 #include "graphics/dummy/MaterialDummy.h"
11 #include "graphics/dummy/RenderStateDummy.h"
12 #include "graphics/dummy/RenderTargetDummy.h"
13 #include "graphics/dummy/TextureDummy.h"
14 #include "graphics/dummy/VertexBufferDummy.h"
15 
16 namespace Graphics {
17 
18 	class RendererDummy : public Renderer {
19 	public:
20 		static void RegisterRenderer();
21 
RendererDummy()22 		RendererDummy() :
23 			Renderer(0, 0, 0),
24 			m_identity(matrix4x4f::Identity())
25 		{}
26 
GetName()27 		virtual const char *GetName() const override final { return "Dummy"; }
GetRendererType()28 		virtual RendererType GetRendererType() const override final { return RENDERER_DUMMY; }
SupportsInstancing()29 		virtual bool SupportsInstancing() override final { return false; }
GetMaximumNumberAASamples()30 		virtual int GetMaximumNumberAASamples() const override final { return 0; }
GetNearFarRange(float & near_,float & far_)31 		virtual bool GetNearFarRange(float &near_, float &far_) const override final { return true; }
32 
BeginFrame()33 		virtual bool BeginFrame() override final { return true; }
EndFrame()34 		virtual bool EndFrame() override final { return true; }
SwapBuffers()35 		virtual bool SwapBuffers() override final { return true; }
36 
SetRenderState(RenderState *)37 		virtual bool SetRenderState(RenderState *) override final { return true; }
SetRenderTarget(RenderTarget *)38 		virtual bool SetRenderTarget(RenderTarget *) override final { return true; }
39 
SetDepthRange(double znear,double zfar)40 		virtual bool SetDepthRange(double znear, double zfar) override final { return true; }
ResetDepthRange()41 		virtual bool ResetDepthRange() override final { return true; }
42 
ClearScreen()43 		virtual bool ClearScreen() override final { return true; }
ClearDepthBuffer()44 		virtual bool ClearDepthBuffer() override final { return true; }
SetClearColor(const Color & c)45 		virtual bool SetClearColor(const Color &c) override final { return true; }
46 
SetViewport(Viewport v)47 		virtual bool SetViewport(Viewport v) override final { return true; }
GetViewport()48 		virtual Viewport GetViewport() const override final { return {}; }
49 
SetTransform(const matrix4x4f & m)50 		virtual bool SetTransform(const matrix4x4f &m) override final { return true; }
GetTransform()51 		virtual matrix4x4f GetTransform() const override final { return matrix4x4f::Identity(); }
SetPerspectiveProjection(float fov,float aspect,float near_,float far_)52 		virtual bool SetPerspectiveProjection(float fov, float aspect, float near_, float far_) override final { return true; }
SetOrthographicProjection(float xmin,float xmax,float ymin,float ymax,float zmin,float zmax)53 		virtual bool SetOrthographicProjection(float xmin, float xmax, float ymin, float ymax, float zmin, float zmax) override final { return true; }
SetProjection(const matrix4x4f & m)54 		virtual bool SetProjection(const matrix4x4f &m) override final { return true; }
GetProjection()55 		virtual matrix4x4f GetProjection() const override final { return matrix4x4f::Identity(); }
56 
SetWireFrameMode(bool enabled)57 		virtual bool SetWireFrameMode(bool enabled) override final { return true; }
58 
SetLights(Uint32 numlights,const Light * l)59 		virtual bool SetLights(Uint32 numlights, const Light *l) override final { return true; }
GetNumLights()60 		virtual Uint32 GetNumLights() const override final { return 1; }
SetAmbientColor(const Color & c)61 		virtual bool SetAmbientColor(const Color &c) override final { return true; }
62 
63 		virtual bool SetScissor(bool enabled, const vector2f &pos = vector2f(0.0f), const vector2f &size = vector2f(0.0f)) override final { return true; }
64 
65 		virtual bool DrawTriangles(const VertexArray *vertices, RenderState *state, Material *material, PrimitiveType type = TRIANGLES) override final { return true; }
DrawPointSprites(const Uint32 count,const vector3f * positions,RenderState * rs,Material * material,float size)66 		virtual bool DrawPointSprites(const Uint32 count, const vector3f *positions, RenderState *rs, Material *material, float size) override final { return true; }
DrawPointSprites(const Uint32 count,const vector3f * positions,const vector2f * offsets,const float * sizes,RenderState * rs,Material * material)67 		virtual bool DrawPointSprites(const Uint32 count, const vector3f *positions, const vector2f *offsets, const float *sizes, RenderState *rs, Material *material) override final { return true; }
DrawBuffer(VertexBuffer *,RenderState *,Material *,PrimitiveType)68 		virtual bool DrawBuffer(VertexBuffer *, RenderState *, Material *, PrimitiveType) override final { return true; }
DrawBufferIndexed(VertexBuffer *,IndexBuffer *,RenderState *,Material *,PrimitiveType)69 		virtual bool DrawBufferIndexed(VertexBuffer *, IndexBuffer *, RenderState *, Material *, PrimitiveType) override final { return true; }
70 		virtual bool DrawBufferInstanced(VertexBuffer *, RenderState *, Material *, InstanceBuffer *, PrimitiveType type = TRIANGLES) override final { return true; }
71 		virtual bool DrawBufferIndexedInstanced(VertexBuffer *, IndexBuffer *, RenderState *, Material *, InstanceBuffer *, PrimitiveType = TRIANGLES) override final { return true; }
72 
CreateMaterial(const MaterialDescriptor & d)73 		virtual Material *CreateMaterial(const MaterialDescriptor &d) override final { return new Graphics::Dummy::Material(); }
CreateTexture(const TextureDescriptor & d)74 		virtual Texture *CreateTexture(const TextureDescriptor &d) override final { return new Graphics::TextureDummy(d); }
CreateRenderState(const RenderStateDesc & d)75 		virtual RenderState *CreateRenderState(const RenderStateDesc &d) override final { return new Graphics::Dummy::RenderState(d); }
CreateRenderTarget(const RenderTargetDesc & d)76 		virtual RenderTarget *CreateRenderTarget(const RenderTargetDesc &d) override final { return new Graphics::Dummy::RenderTarget(d); }
CreateVertexBuffer(const VertexBufferDesc & d)77 		virtual VertexBuffer *CreateVertexBuffer(const VertexBufferDesc &d) override final { return new Graphics::Dummy::VertexBuffer(d); }
CreateIndexBuffer(Uint32 size,BufferUsage bu)78 		virtual IndexBuffer *CreateIndexBuffer(Uint32 size, BufferUsage bu) override final { return new Graphics::Dummy::IndexBuffer(size, bu); }
CreateInstanceBuffer(Uint32 size,BufferUsage bu)79 		virtual InstanceBuffer *CreateInstanceBuffer(Uint32 size, BufferUsage bu) override final { return new Graphics::Dummy::InstanceBuffer(size, bu); }
80 
ReloadShaders()81 		virtual bool ReloadShaders() override final { return true; }
82 
83 	protected:
PushState()84 		virtual void PushState() override final {}
PopState()85 		virtual void PopState() override final {}
86 
87 	private:
88 		const matrix4x4f m_identity;
89 	};
90 
91 } // namespace Graphics
92 
93 #endif
94