PCG-FPS  v2 m0.22.4
Simple First Person Shooter with Procedurally Generated Level
Shader.h
Go to the documentation of this file.
1 #ifndef SKR_FPS2_RENDERER_OPENGL_SHADER_H
2 #define SKR_FPS2_RENDERER_OPENGL_SHADER_H
3 
4 #include "..\..\pch.h"
5 
6 #include <string>
7 
8 namespace skr
9 {
10 namespace fps2
11 {
12 namespace Renderer
13 {
14 namespace OpenGL
15 {
17  enum struct ShaderType
18  {
19  Main,
20  Screen,
21  Skybox,
22  DebugLight,
23  Simple,
24  MaterialMaps,
26  };
27 
30  class Shader
31  {
32  public:
33  uint32_t _id;
34 
35  public:
38  Shader() : _id(0) {};
39 
44  Shader(std::string vertpath, std::string fragpath, std::string geompath = std::string(""));
45 
46  private:
50  std::string LoadShader(std::string path);
51 
56  uint32_t CompileShader(std::string code, GLenum type);
57 
60  void CheckCompileErrors(GLuint shader);
61 
64  void CheckLinkErrors(GLuint shader);
65 
66  public:
68  const void Use();
69 
73  const void SetBool(std::string loc, bool value);
74 
78  const void SetFloat(std::string loc, float value);
79 
83  const void SetInt(std::string loc, int value);
84 
88  const void SetVec3(std::string loc, glm::vec3 value);
89 
93  const void SetMat4(std::string loc, glm::mat4 value);
94  };
95 }
96 }
97 }
98 }
99 
100 #endif // !SKR_FPS2_RENDERER_OPENGL_SHADER_H
101 
skr::fps2::Renderer::OpenGL::Shader::CompileShader
uint32_t CompileShader(std::string code, GLenum type)
compile shader
Definition: Shader.cpp:79
skr::fps2::Renderer::OpenGL::Shader::LoadShader
std::string LoadShader(std::string path)
load shader from given path
Definition: Shader.cpp:54
skr::fps2::Renderer::OpenGL::ShaderType::Main
@ Main
main shader
skr::fps2::Renderer::OpenGL::Shader::Use
const void Use()
set shader active
Definition: Shader.cpp:118
skr::fps2::Renderer::OpenGL::Shader::SetFloat
const void SetFloat(std::string loc, float value)
set float value
Definition: Shader.cpp:128
skr::fps2::Renderer::OpenGL::ShaderType::DebugLight
@ DebugLight
draw position of lights for debug purposes
skr::fps2::Renderer::OpenGL::ShaderType::DepthShadow
@ DepthShadow
draw depthmap for shadow mapping
skr::fps2::Renderer::OpenGL::Shader::SetVec3
const void SetVec3(std::string loc, glm::vec3 value)
set vector 3 value
Definition: Shader.cpp:138
skr::fps2::Renderer::OpenGL::Shader
handles shader loading, compiling and linking. Also provides access to set uniform ids and usage.
Definition: Shader.h:31
skr::fps2::Renderer::OpenGL::Shader::SetInt
const void SetInt(std::string loc, int value)
set integer value
Definition: Shader.cpp:133
skr::fps2::Renderer::OpenGL::ShaderType::MaterialMaps
@ MaterialMaps
use material maps (normal maps, specular maps) to draw
skr::fps2::Renderer::OpenGL::ShaderType::Simple
@ Simple
very simple shader: draw everything in a given solor
skr::fps2::Renderer::OpenGL::ShaderType
ShaderType
shader type identifies. Used as keys in map keeping shaders
Definition: Shader.h:18
skr::fps2::Renderer::OpenGL::Shader::Shader
Shader()
default constructor default constructor is needed since OpenGL Renderer Object is a global object,...
Definition: Shader.h:38
skr
Definition: AssetPath.h:10
skr::fps2::Renderer::OpenGL::Shader::CheckCompileErrors
void CheckCompileErrors(GLuint shader)
check shader for compile errors
Definition: Shader.cpp:90
skr::fps2::Renderer::OpenGL::Shader::_id
uint32_t _id
shader id
Definition: Shader.h:33
skr::fps2::Renderer::OpenGL::ShaderType::Screen
@ Screen
screen shader
skr::fps2::Renderer::OpenGL::Shader::CheckLinkErrors
void CheckLinkErrors(GLuint shader)
check shader for linker errors
Definition: Shader.cpp:104
skr::fps2::Renderer::OpenGL::Shader::SetBool
const void SetBool(std::string loc, bool value)
set boolean value
Definition: Shader.cpp:123
skr::fps2::Renderer::OpenGL::ShaderType::Skybox
@ Skybox
shader to draw skybox
skr::fps2::Renderer::OpenGL::Shader::SetMat4
const void SetMat4(std::string loc, glm::mat4 value)
set matrix 4x4 value
Definition: Shader.cpp:143