Polyphase Game Engine
Loading...
Searching...
No Matches
Graphics.h
Go to the documentation of this file.
1#pragma once
2
3#include "GraphicsTypes.h"
4#include "Vertex.h"
5#include "Line.h"
6
7#include <vector>
8
9class World;
10class Node;
11class Texture;
12class Material;
13class StaticMesh;
14class SkeletalMesh;
15class StaticMesh3D;
16class SkeletalMesh3D;
17class ShadowMesh3D;
18class InstancedMesh3D;
19class TextMesh3D;
20class Particle3D;
21class Camera3D;
22class Node3D;
23class Quad;
24class Text;
25class Poly;
26
27struct FogSettings;
28
31
34void GFX_BeginScreen(uint32_t screenIndex);
35void GFX_BeginView(uint32_t viewIndex);
36
38
42
43void GFX_SetViewport(int32_t x, int32_t y, int32_t width, int32_t height, bool handlePrerotation = true);
44void GFX_SetScissor(int32_t x, int32_t y, int32_t width, int32_t height, bool handlePrerotation = true);
45glm::mat4 GFX_MakePerspectiveMatrix(float fovyDegrees, float aspectRatio, float zNear, float zFar);
46glm::mat4 GFX_MakeOrthographicMatrix(float left, float right, float bottom, float top, float zNear, float zFar);
47
48void GFX_SetFog(const FogSettings& fogSettings);
49
50void GFX_DrawLines(const std::vector<Line>& lines);
52
54void GFX_Reset();
55Node3D* GFX_ProcessHitCheck(World* world, int32_t x, int32_t y, uint32_t* outInstance = nullptr);
56uint32_t GFX_GetNumViews();
57
58void GFX_SetFrameRate(int32_t frameRate);
59
61
67
68void GFX_EnableMaterials(bool enable);
69
70void GFX_BeginGpuTimestamp(const char* name);
71void GFX_EndGpuTimestamp(const char* name);
72
73// Texture
74void GFX_CreateTextureResource(Texture* texture, std::vector<uint8_t>& data);
76
77// Streaming-RGBA8-texture upload. Currently implemented only for C3D (3DS);
78// Vulkan uses Texture::UpdatePixels' direct path via mResource.mImage->Update.
79// Other backends (GX) are no-ops. Typically called once per video frame.
80void GFX_UpdateTextureResourcePixels(Texture* texture, const uint8_t* src,
81 uint32_t srcWidth, uint32_t srcHeight);
82
83// Material
86
87// StaticMesh
88void GFX_CreateStaticMeshResource(StaticMesh* staticMesh, bool hasColor, uint32_t numVertices, void* vertices, uint32_t numIndices, IndexType* indices);
90
91// SkeletalMesh
92void GFX_CreateSkeletalMeshResource(SkeletalMesh* skeletalMesh, uint32_t numVertices, VertexSkinned* vertices, uint32_t numIndices, IndexType* indices);
94
95// StaticMeshComp
99void GFX_DrawStaticMeshComp(StaticMesh3D* staticMeshComp, StaticMesh* meshOverride = nullptr);
100
101// SkeletalMeshComp
104void GFX_ReallocateSkeletalMeshCompVertexBuffer(SkeletalMesh3D* skeletalMeshComp, uint32_t numVertices);
105void GFX_UpdateSkeletalMeshCompVertexBuffer(SkeletalMesh3D* skeletalMeshComp, const std::vector<Vertex>& skinnedVertices);
108
109// ShadowMeshComp
110// ShadowMesh3D uses StaticMeshCompResource for now.
112
113// InstancedMeshComp
115
116// TextMeshComp
119void GFX_UpdateTextMeshCompVertexBuffer(TextMesh3D* textMeshComp, const std::vector<Vertex>& vertices);
121
122// Voxel3D
123class Voxel3D;
126void GFX_UpdateVoxel3DResource(Voxel3D* voxel, const std::vector<VertexColor>& vertices, const std::vector<IndexType>& indices);
128
129// Terrain3D
130class Terrain3D;
133void GFX_UpdateTerrain3DResource(Terrain3D* terrain, const std::vector<VertexColor>& vertices, const std::vector<IndexType>& indices);
135
136// TileMap2D
137class TileMap2D;
140void GFX_UpdateTileMap2DResource(TileMap2D* tileMap, const std::vector<VertexColor>& vertices, const std::vector<IndexType>& indices);
142
143// ParticleComp
146void GFX_UpdateParticleCompVertexBuffer(Particle3D* particleComp, const std::vector<VertexParticle>& vertices);
148
149// Quad
153void GFX_DrawQuad(Quad* quad);
154
155// Quad Border
160
161// Text
165void GFX_DrawText(Text* text);
166
167// Polygon
171void GFX_DrawPoly(Poly* poly);
172
173// Arbitrary mesh draw (for debug drawing)
174void GFX_DrawStaticMesh(StaticMesh* mesh, Material* material, const glm::mat4& transform, glm::vec4 color);
175
176// PostProcess
uint16_t IndexType
Definition GraphicsTypes.h:121
RenderPassId
Definition GraphicsTypes.h:89
PipelineConfig
Definition GraphicsTypes.h:66
void GFX_CreateTerrain3DResource(Terrain3D *terrain)
void GFX_DestroyStaticMeshCompResource(StaticMesh3D *staticMeshComp)
void GFX_CreateQuadBorderResource(Quad *quad)
void GFX_EndRenderPass()
void GFX_Initialize()
void GFX_DestroyPolyResource(Poly *poly)
void GFX_DestroyParticleCompResource(Particle3D *particleComp)
void GFX_DrawStaticMesh(StaticMesh *mesh, Material *material, const glm::mat4 &transform, glm::vec4 color)
void GFX_DestroyQuadBorderResource(Quad *quad)
void GFX_DestroyVoxel3DResource(Voxel3D *voxel)
void GFX_DrawSkeletalMeshComp(SkeletalMesh3D *skeletalMeshComp)
void GFX_UpdateSkeletalMeshCompVertexBuffer(SkeletalMesh3D *skeletalMeshComp, const std::vector< Vertex > &skinnedVertices)
void GFX_EnableMaterials(bool enable)
Node3D * GFX_ProcessHitCheck(World *world, int32_t x, int32_t y, uint32_t *outInstance=nullptr)
void GFX_CreateStaticMeshResource(StaticMesh *staticMesh, bool hasColor, uint32_t numVertices, void *vertices, uint32_t numIndices, IndexType *indices)
bool GFX_IsCpuSkinningRequired(SkeletalMesh3D *skeletalMeshComp)
void GFX_SetViewport(int32_t x, int32_t y, int32_t width, int32_t height, bool handlePrerotation=true)
void GFX_BeginGpuTimestamp(const char *name)
void GFX_DestroySkeletalMeshResource(SkeletalMesh *skeletalMesh)
void GFX_RenderPostProcessPasses()
void GFX_UpdateTextureResourcePixels(Texture *texture, const uint8_t *src, uint32_t srcWidth, uint32_t srcHeight)
void GFX_ResizeWindow()
void GFX_CreateTextureResource(Texture *texture, std::vector< uint8_t > &data)
void GFX_BeginFrame()
glm::mat4 GFX_MakeOrthographicMatrix(float left, float right, float bottom, float top, float zNear, float zFar)
void GFX_UpdateStaticMeshCompResourceColors(StaticMesh3D *staticMeshComp)
void GFX_UpdateParticleCompVertexBuffer(Particle3D *particleComp, const std::vector< VertexParticle > &vertices)
void GFX_DrawQuadBorder(Quad *quad)
void GFX_UpdateQuadBorderResourceVertexData(Quad *quad)
void GFX_DestroyStaticMeshResource(StaticMesh *staticMesh)
void GFX_DrawPoly(Poly *poly)
float GFX_GetLightBakeProgress()
void GFX_CreateMaterialResource(Material *material)
void GFX_BeginRenderPass(RenderPassId renderPassId)
bool GFX_ShouldCullLights()
void GFX_PathTrace()
void GFX_UpdateTileMap2DResource(TileMap2D *tileMap, const std::vector< VertexColor > &vertices, const std::vector< IndexType > &indices)
void GFX_BeginScreen(uint32_t screenIndex)
void GFX_BeginLightBake()
void GFX_DestroyTextResource(Text *text)
bool GFX_IsLightBakeInProgress()
void GFX_DrawInstancedMeshComp(InstancedMesh3D *instancedMeshComp)
void GFX_DestroyTerrain3DResource(Terrain3D *terrain)
void GFX_EndFrame()
void GFX_UpdateTextMeshCompVertexBuffer(TextMesh3D *textMeshComp, const std::vector< Vertex > &vertices)
glm::mat4 GFX_MakePerspectiveMatrix(float fovyDegrees, float aspectRatio, float zNear, float zFar)
void GFX_UpdateTerrain3DResource(Terrain3D *terrain, const std::vector< VertexColor > &vertices, const std::vector< IndexType > &indices)
void GFX_UpdateVoxel3DResource(Voxel3D *voxel, const std::vector< VertexColor > &vertices, const std::vector< IndexType > &indices)
void GFX_DestroyTileMap2DResource(TileMap2D *tileMap)
void GFX_BeginView(uint32_t viewIndex)
void GFX_DestroyQuadResource(Quad *quad)
void GFX_EndLightBake()
void GFX_DrawTerrain3D(Terrain3D *terrain)
void GFX_CreateTextResource(Text *text)
void GFX_CreateTextMeshCompResource(TextMesh3D *textMeshComp)
void GFX_DrawQuad(Quad *quad)
void GFX_DrawTextMeshComp(TextMesh3D *textMeshComp)
void GFX_DrawStaticMeshComp(StaticMesh3D *staticMeshComp, StaticMesh *meshOverride=nullptr)
void GFX_DrawVoxel3D(Voxel3D *voxel)
void GFX_SetFog(const FogSettings &fogSettings)
void GFX_SetPipelineState(PipelineConfig config)
void GFX_CreateTileMap2DResource(TileMap2D *tileMap)
void GFX_CreateQuadResource(Quad *quad)
void GFX_DestroyMaterialResource(Material *material)
void GFX_CreatePolyResource(Poly *poly)
void GFX_EndGpuTimestamp(const char *name)
void GFX_DrawText(Text *text)
void GFX_DrawTileMap2D(TileMap2D *tileMap)
void GFX_CreateSkeletalMeshResource(SkeletalMesh *skeletalMesh, uint32_t numVertices, VertexSkinned *vertices, uint32_t numIndices, IndexType *indices)
void GFX_DestroySkeletalMeshCompResource(SkeletalMesh3D *skeletalMeshComp)
uint32_t GFX_GetNumViews()
void GFX_UpdateLightBake()
void GFX_DrawLines(const std::vector< Line > &lines)
void GFX_SetFrameRate(int32_t frameRate)
void GFX_UpdatePolyResourceVertexData(Poly *poly)
void GFX_DestroyTextureResource(Texture *texture)
void GFX_CreateStaticMeshCompResource(StaticMesh3D *staticMeshComp)
void GFX_Reset()
void GFX_CreateParticleCompResource(Particle3D *particleComp)
void GFX_DrawShadowMeshComp(ShadowMesh3D *shadowMeshComp)
void GFX_ReallocateSkeletalMeshCompVertexBuffer(SkeletalMesh3D *skeletalMeshComp, uint32_t numVertices)
void GFX_DestroyTextMeshCompResource(TextMesh3D *textMeshComp)
void GFX_CreateVoxel3DResource(Voxel3D *voxel)
void GFX_DrawParticleComp(Particle3D *particleComp)
void GFX_SetScissor(int32_t x, int32_t y, int32_t width, int32_t height, bool handlePrerotation=true)
void GFX_Shutdown()
void GFX_UpdateTextResourceVertexData(Text *text)
void GFX_UpdateQuadResourceVertexData(Quad *quad)
void GFX_DrawFullscreen()
void GFX_CreateSkeletalMeshCompResource(SkeletalMesh3D *skeletalMeshComp)
Definition Camera3d.h:12
Definition InstancedMesh3d.h:13
Definition Material.h:48
Definition Node3d.h:14
Definition Node.h:67
Definition Particle3d.h:34
Definition Poly.h:10
Definition Quad.h:20
Definition ShadowMesh3d.h:6
Definition SkeletalMesh3d.h:52
Definition SkeletalMesh.h:86
Definition StaticMesh3d.h:12
Definition StaticMesh.h:18
Definition Terrain3d.h:13
Definition TextMesh3d.h:10
Definition Text.h:24
Definition Texture.h:10
Definition TileMap2d.h:23
Definition Voxel3d.h:61
Definition World.h:24
Definition EngineTypes.h:446
Definition Vertex.h:50