aboutsummaryrefslogtreecommitdiff
path: root/source/Shader.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/Shader.cpp')
-rw-r--r--source/Shader.cpp52
1 files changed, 29 insertions, 23 deletions
diff --git a/source/Shader.cpp b/source/Shader.cpp
index 458491a..72b679e 100644
--- a/source/Shader.cpp
+++ b/source/Shader.cpp
@@ -83,6 +83,8 @@ Shader::ErrorCode LinkShaderProgram(GLuint program) {
#define CATCH_ERROR(x) CATCH_ERROR_IMPL(x, UNIQUE_NAME(result))
Shader::ErrorCode Shader::InitFromSources(const ShaderSources& sources) {
+ using namespace ProjectBrussel_UNITY_ID;
+
if (IsValid()) {
return ShaderAlreadyCreated;
}
@@ -93,39 +95,39 @@ Shader::ErrorCode Shader::InitFromSources(const ShaderSources& sources) {
GLuint vertex = 0;
DEFER { glDeleteShader(vertex); };
if (!sources.vertex.empty()) {
- CATCH_ERROR(ProjectBrussel_UNITY_ID::CreateShader(vertex, sources.vertex, GL_VERTEX_SHADER));
+ CATCH_ERROR(CreateShader(vertex, sources.vertex, GL_VERTEX_SHADER));
glAttachShader(program, vertex);
}
GLuint geometry = 0;
DEFER { glDeleteShader(geometry); };
if (!sources.geometry.empty()) {
- CATCH_ERROR(ProjectBrussel_UNITY_ID::CreateShader(geometry, sources.geometry, GL_GEOMETRY_SHADER));
+ CATCH_ERROR(CreateShader(geometry, sources.geometry, GL_GEOMETRY_SHADER));
glAttachShader(program, geometry);
}
GLuint tessControl = 0;
DEFER { glDeleteShader(tessControl); };
if (!sources.tessControl.empty()) {
- CATCH_ERROR(ProjectBrussel_UNITY_ID::CreateShader(tessControl, sources.tessControl, GL_TESS_CONTROL_SHADER));
+ CATCH_ERROR(CreateShader(tessControl, sources.tessControl, GL_TESS_CONTROL_SHADER));
glAttachShader(program, tessControl);
}
GLuint tessEval = 0;
DEFER { glDeleteShader(tessEval); };
if (!sources.tessEval.empty()) {
- CATCH_ERROR(ProjectBrussel_UNITY_ID::CreateShader(tessEval, sources.tessEval, GL_TESS_EVALUATION_SHADER));
+ CATCH_ERROR(CreateShader(tessEval, sources.tessEval, GL_TESS_EVALUATION_SHADER));
glAttachShader(program, tessEval);
}
GLuint fragment = 0;
DEFER { glDeleteShader(fragment); };
if (!sources.fragment.empty()) {
- CATCH_ERROR(ProjectBrussel_UNITY_ID::CreateShader(fragment, sources.fragment, GL_FRAGMENT_SHADER));
+ CATCH_ERROR(CreateShader(fragment, sources.fragment, GL_FRAGMENT_SHADER));
glAttachShader(program, fragment);
}
- CATCH_ERROR(ProjectBrussel_UNITY_ID::LinkShaderProgram(program));
+ CATCH_ERROR(LinkShaderProgram(program));
sg.Dismiss();
mHandle = program;
@@ -134,6 +136,8 @@ Shader::ErrorCode Shader::InitFromSources(const ShaderSources& sources) {
}
Shader::ErrorCode Shader::InitFromFiles(const ShaderFilePaths& files) {
+ using namespace ProjectBrussel_UNITY_ID;
+
if (IsValid()) {
return ShaderAlreadyCreated;
}
@@ -145,8 +149,8 @@ Shader::ErrorCode Shader::InitFromFiles(const ShaderFilePaths& files) {
DEFER { glDeleteShader(vertex); };
if (files.vertex) {
std::string src;
- CATCH_ERROR(ProjectBrussel_UNITY_ID::LoadFile(src, files.vertex));
- CATCH_ERROR(ProjectBrussel_UNITY_ID::CreateShader(vertex, src, GL_VERTEX_SHADER));
+ CATCH_ERROR(LoadFile(src, files.vertex));
+ CATCH_ERROR(CreateShader(vertex, src, GL_VERTEX_SHADER));
glAttachShader(program, vertex);
}
@@ -154,8 +158,8 @@ Shader::ErrorCode Shader::InitFromFiles(const ShaderFilePaths& files) {
DEFER { glDeleteShader(geometry); };
if (files.geometry) {
std::string src;
- CATCH_ERROR(ProjectBrussel_UNITY_ID::LoadFile(src, files.geometry));
- CATCH_ERROR(ProjectBrussel_UNITY_ID::CreateShader(geometry, src, GL_GEOMETRY_SHADER));
+ CATCH_ERROR(LoadFile(src, files.geometry));
+ CATCH_ERROR(CreateShader(geometry, src, GL_GEOMETRY_SHADER));
glAttachShader(program, geometry);
}
@@ -163,8 +167,8 @@ Shader::ErrorCode Shader::InitFromFiles(const ShaderFilePaths& files) {
DEFER { glDeleteShader(tessControl); };
if (files.tessControl) {
std::string src;
- CATCH_ERROR(ProjectBrussel_UNITY_ID::LoadFile(src, files.tessControl));
- CATCH_ERROR(ProjectBrussel_UNITY_ID::CreateShader(tessControl, src, GL_TESS_CONTROL_SHADER));
+ CATCH_ERROR(LoadFile(src, files.tessControl));
+ CATCH_ERROR(CreateShader(tessControl, src, GL_TESS_CONTROL_SHADER));
glAttachShader(program, tessControl);
}
@@ -172,8 +176,8 @@ Shader::ErrorCode Shader::InitFromFiles(const ShaderFilePaths& files) {
DEFER { glDeleteShader(tessEval); };
if (files.tessEval) {
std::string src;
- CATCH_ERROR(ProjectBrussel_UNITY_ID::LoadFile(src, files.tessEval));
- CATCH_ERROR(ProjectBrussel_UNITY_ID::CreateShader(tessEval, src, GL_TESS_EVALUATION_SHADER));
+ CATCH_ERROR(LoadFile(src, files.tessEval));
+ CATCH_ERROR(CreateShader(tessEval, src, GL_TESS_EVALUATION_SHADER));
glAttachShader(program, tessEval);
}
@@ -181,12 +185,12 @@ Shader::ErrorCode Shader::InitFromFiles(const ShaderFilePaths& files) {
DEFER { glDeleteShader(fragment); };
if (files.fragment) {
std::string src;
- CATCH_ERROR(ProjectBrussel_UNITY_ID::LoadFile(src, files.fragment));
- CATCH_ERROR(ProjectBrussel_UNITY_ID::CreateShader(fragment, src, GL_FRAGMENT_SHADER));
+ CATCH_ERROR(LoadFile(src, files.fragment));
+ CATCH_ERROR(CreateShader(fragment, src, GL_FRAGMENT_SHADER));
glAttachShader(program, fragment);
}
- CATCH_ERROR(ProjectBrussel_UNITY_ID::LinkShaderProgram(program));
+ CATCH_ERROR(LinkShaderProgram(program));
sg.Dismiss();
mHandle = program;
@@ -195,6 +199,8 @@ Shader::ErrorCode Shader::InitFromFiles(const ShaderFilePaths& files) {
}
Shader::ErrorCode Shader::InitFromSource(std::string_view source) {
+ using namespace ProjectBrussel_UNITY_ID;
+
GLuint vertex = 0;
DEFER { glDeleteShader(vertex); };
@@ -221,15 +227,15 @@ Shader::ErrorCode Shader::InitFromSource(std::string_view source) {
}
if (prevShaderVariant == "vertex" && !vertex) {
- CATCH_ERROR(ProjectBrussel_UNITY_ID::CreateShader(vertex, source.data(), prevBegin, prevEnd, GL_VERTEX_SHADER));
+ CATCH_ERROR(CreateShader(vertex, source.data(), prevBegin, prevEnd, GL_VERTEX_SHADER));
} else if (prevShaderVariant == "geometry" && !geometry) {
- CATCH_ERROR(ProjectBrussel_UNITY_ID::CreateShader(geometry, source.data(), prevBegin, prevEnd, GL_GEOMETRY_SHADER));
+ CATCH_ERROR(CreateShader(geometry, source.data(), prevBegin, prevEnd, GL_GEOMETRY_SHADER));
} else if (prevShaderVariant == "tessellation_control" && !tessControl) {
- CATCH_ERROR(ProjectBrussel_UNITY_ID::CreateShader(tessControl, source.data(), prevBegin, prevEnd, GL_TESS_CONTROL_SHADER));
+ CATCH_ERROR(CreateShader(tessControl, source.data(), prevBegin, prevEnd, GL_TESS_CONTROL_SHADER));
} else if (prevShaderVariant == "tessellation_evaluation" && !tessEval) {
- CATCH_ERROR(ProjectBrussel_UNITY_ID::CreateShader(tessEval, source.data(), prevBegin, prevEnd, GL_TESS_EVALUATION_SHADER));
+ CATCH_ERROR(CreateShader(tessEval, source.data(), prevBegin, prevEnd, GL_TESS_EVALUATION_SHADER));
} else if (prevShaderVariant == "fragment" && !fragment) {
- CATCH_ERROR(ProjectBrussel_UNITY_ID::CreateShader(fragment, source.data(), prevBegin, prevEnd, GL_FRAGMENT_SHADER));
+ CATCH_ERROR(CreateShader(fragment, source.data(), prevBegin, prevEnd, GL_FRAGMENT_SHADER));
} else {
return InvalidShaderVariant;
}
@@ -301,7 +307,7 @@ Shader::ErrorCode Shader::InitFromSource(std::string_view source) {
if (tessEval) glAttachShader(program, tessEval);
if (fragment) glAttachShader(program, fragment);
- CATCH_ERROR(ProjectBrussel_UNITY_ID::LinkShaderProgram(program));
+ CATCH_ERROR(LinkShaderProgram(program));
sg.Dismiss();
mHandle = program;