Includes now use the key #include. Fixed a bug where it would crash if the file is not found. Fixed a bug where null terminators where included from the included file, causing it to stop reading after the first included file.
This commit is contained in:
@@ -2,8 +2,6 @@
|
|||||||
|
|
||||||
#define MIN_AMBIENT_LIGHT 0.3
|
#define MIN_AMBIENT_LIGHT 0.3
|
||||||
|
|
||||||
#GLSL "Shaders/Util/CommonUniforms.glsl"
|
|
||||||
|
|
||||||
uniform mat4 M;
|
uniform mat4 M;
|
||||||
uniform mat4 V;
|
uniform mat4 V;
|
||||||
uniform mat4 P;
|
uniform mat4 P;
|
||||||
@@ -118,12 +116,7 @@ LightResult CalcDirectionalLightSource(vec4 direction, vec4 color, float intensi
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
vec4 CalcNormalMappedValue(vec3 normal, vec3 tangent, vec3 bitangent, vec2 textureCoordinate, sampler2D normalMap)
|
#include "Shaders/Util/CommonUniforms.glsl"
|
||||||
{
|
|
||||||
mat3 TBN = mat3(tangent, bitangent, normal);
|
|
||||||
vec3 NormalMap = texture(normalMap, textureCoordinate).xyz * 2.0 - vec3(1.0);
|
|
||||||
return vec4(TBN * normalize(NormalMap), 0.0);
|
|
||||||
}
|
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1 +1,6 @@
|
|||||||
#define testtest1234;
|
vec4 CalcNormalMappedValue(vec3 normal, vec3 tangent, vec3 bitangent, vec2 textureCoordinate, sampler2D normalMap)
|
||||||
|
{
|
||||||
|
mat3 TBN = mat3(tangent, bitangent, normal);
|
||||||
|
vec3 NormalMap = texture(normalMap, textureCoordinate).xyz * 2.0 - vec3(1.0);
|
||||||
|
return vec4(TBN * normalize(NormalMap), 0.0);
|
||||||
|
}
|
||||||
@@ -12,17 +12,20 @@ GLuint Shader::CompileShader(GLenum shaderType, std::string fileName)
|
|||||||
|
|
||||||
std::size_t startPos = 0;
|
std::size_t startPos = 0;
|
||||||
std::size_t SEofNewFile[2];
|
std::size_t SEofNewFile[2];
|
||||||
while((startPos = shaderFile.find("#GLSL", startPos)) != std::string::npos)
|
std::string key = "#include";
|
||||||
|
while((startPos = shaderFile.find(key, startPos)) != std::string::npos)
|
||||||
{
|
{
|
||||||
SEofNewFile[0] = shaderFile.find('"', startPos+5)+1;
|
SEofNewFile[0] = shaderFile.find('"', startPos+key.length())+1;
|
||||||
SEofNewFile[1] = shaderFile.find('"', SEofNewFile[0]);
|
SEofNewFile[1] = shaderFile.find('"', SEofNewFile[0]);
|
||||||
if (SEofNewFile[0] == std::string::npos || SEofNewFile[1] == std::string::npos)
|
if (SEofNewFile[0] == std::string::npos || SEofNewFile[1] == std::string::npos)
|
||||||
{
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
|
||||||
|
|
||||||
std::string replacementFileName = shaderFile.substr(SEofNewFile[0], SEofNewFile[1] - SEofNewFile[0]);
|
std::string replacementFileName = shaderFile.substr(SEofNewFile[0], SEofNewFile[1] - SEofNewFile[0]);
|
||||||
std::string replacementString = ReadFile(replacementFileName);
|
std::string replacementString = ReadFile(replacementFileName);
|
||||||
|
size_t firstof = replacementString.find_first_of((char)0);
|
||||||
|
replacementString.erase(firstof, replacementString.size() - firstof);
|
||||||
|
if (replacementString.length() <= 0)
|
||||||
|
return 0;
|
||||||
shaderFile.replace(startPos, SEofNewFile[1]+2 - startPos, replacementString + "\n");
|
shaderFile.replace(startPos, SEofNewFile[1]+2 - startPos, replacementString + "\n");
|
||||||
startPos += replacementString.length(); //This might not be wanted.
|
startPos += replacementString.length(); //This might not be wanted.
|
||||||
}
|
}
|
||||||
@@ -59,7 +62,7 @@ std::string Shader::ReadFile(std::string fileName)
|
|||||||
std::ifstream in(fileName, std::ios::in);
|
std::ifstream in(fileName, std::ios::in);
|
||||||
if (!in) {
|
if (!in) {
|
||||||
LOG_ERROR("Error: Failed to open shader file \"%s\"", fileName.c_str());
|
LOG_ERROR("Error: Failed to open shader file \"%s\"", fileName.c_str());
|
||||||
return 0;
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
in.seekg(0, std::ios::end);
|
in.seekg(0, std::ios::end);
|
||||||
|
|||||||
Reference in New Issue
Block a user