54 virtual void Bind()
const = 0;
55 virtual void Unbind()
const = 0;
57 virtual void Get(std::string_view Uniform,
int& Value) = 0;
58 virtual void Get(std::string_view Uniform,
bool& Value) = 0;
59 virtual void Get(std::string_view Uniform,
float& Value) = 0;
60 virtual void Get(std::string_view Uniform, uint32_t& Value) = 0;
61 virtual void Get(std::string_view Uniform, glm::vec3& Value) = 0;
62 virtual void Get(std::string_view Uniform, glm::vec4& Value) = 0;
64 virtual void Set(std::string_view Uniform,
int Value) = 0;
65 virtual void Set(std::string_view Uniform,
bool Value) = 0;
66 virtual void Set(std::string_view Uniform,
float Value) = 0;
67 virtual void Set(std::string_view Uniform, uint32_t Value) = 0;
68 virtual void Set(std::string_view Uniform,
const glm::vec2& Value) = 0;
69 virtual void Set(std::string_view Uniform,
const glm::vec3& Value) = 0;
70 virtual void Set(std::string_view Uniform,
const glm::vec4& Value) = 0;
71 virtual void Set(std::string_view Uniform,
const glm::ivec2& Value) = 0;
72 virtual void Set(std::string_view Uniform,
const glm::ivec3& Value) = 0;
73 virtual void Set(std::string_view Uniform,
const glm::ivec4& Value) = 0;
74 virtual void Set(std::string_view Uniform,
const glm::mat4& Value) = 0;
76 virtual uint32_t CompileShader(
const uint32_t ShaderType,
const std::string& Source) = 0;
79 bool ParseShader(
FShaderProgramSource& ShaderProgramSource,
const std::filesystem::path& InFilePath);
81 const std::filesystem::path& InVertexPath,
82 const std::filesystem::path& InFragmentPath);
84 virtual std::size_t GetHash()
const = 0;
85 virtual std::string GetName()
const = 0;
89 static const char* ConvertUniformType(
const ETextureUniformType Type)
93 case ETextureUniformType::Diffuse:
return "u_Diffuse";
94 case ETextureUniformType::Specular:
return "u_Specular";
95 case ETextureUniformType::Normal:
return "u_Normal";
96 case ETextureUniformType::Height:
return "u_Height";
97 case ETextureUniformType::DiffuseRoughness:
return "u_DiffuseRoughness";
98 case ETextureUniformType::Emissive:
return "u_Emissive";
101 LK_CORE_ASSERT(
false,
"Could not convert the TextureUniformType {}",
static_cast<int>(Type));
110 static std::pair<EUniformVarType, std::string>
GetUniformVariable(
const std::string& InString);