diff --git a/assets/Shaders/FragmentShader.fs b/assets/Shaders/FragmentShader.fs index 4573f3f5..a2c508a5 100644 --- a/assets/Shaders/FragmentShader.fs +++ b/assets/Shaders/FragmentShader.fs @@ -1,15 +1,10 @@ #version 450 core #extension GL_ARB_shading_language_include : require #include "./lib/lights.fs" +#include "./lib/material.fs" //Shaders/FragmentShader.fs -struct Material { - sampler2D diffuse; - sampler2D specular; - float shininess; -}; - in vec3 FragPos; in vec3 ViewFragPos; in vec3 Normal; diff --git a/assets/Shaders/core/anime/celShading.fs b/assets/Shaders/core/anime/celShading.fs index 07a44a3f..f775da0b 100644 --- a/assets/Shaders/core/anime/celShading.fs +++ b/assets/Shaders/core/anime/celShading.fs @@ -1,17 +1,12 @@ #version 450 core #extension GL_ARB_shading_language_include : require #include "../../lib/lights.fs" +#include "../../lib/material.fs" //celShading.fs -struct Material { - sampler2D diffuse; - sampler2D specular; - float shininess; -}; - in vec3 FragPos; in vec3 Normal; in vec2 TexCoord; diff --git a/assets/Shaders/core/oit/general/FragmentShader.fs b/assets/Shaders/core/oit/general/FragmentShader.fs index 9b904637..c2d801ef 100644 --- a/assets/Shaders/core/oit/general/FragmentShader.fs +++ b/assets/Shaders/core/oit/general/FragmentShader.fs @@ -1,17 +1,12 @@ #version 450 core #extension GL_ARB_shading_language_include : require #include "../../../lib/lights.fs" +#include "../../../lib/material.fs" layout (location = 0) out vec4 accum; layout (location = 1) out float reveal; -struct Material { - sampler2D diffuse; - sampler2D specular; - float shininess; -}; - //inputs in vec3 FragPos; diff --git a/assets/Shaders/entities/block/block.fs b/assets/Shaders/entities/block/block.fs index ef80d9f3..4767d627 100644 --- a/assets/Shaders/entities/block/block.fs +++ b/assets/Shaders/entities/block/block.fs @@ -1,6 +1,7 @@ #version 450 core #extension GL_ARB_shading_language_include : require #include "../../lib/lights.fs" +#include "../../lib/material.fs" //texture defines #define ATLAS_ELEMENT_DIM 256.0 @@ -10,12 +11,6 @@ #define ATLAS_NORMALIZED_ELEMENT_WIDTH_FULL 0.03125 //used to properly shift from texture to texture in the atlas -struct Material { - sampler2D diffuse; - sampler2D specular; - float shininess; -}; - in vec3 FragPos; in vec3 ViewFragPos; in vec3 Normal; diff --git a/assets/Shaders/entities/blocksingle/block.fs b/assets/Shaders/entities/blocksingle/block.fs index 5f20e658..02473223 100644 --- a/assets/Shaders/entities/blocksingle/block.fs +++ b/assets/Shaders/entities/blocksingle/block.fs @@ -1,6 +1,7 @@ #version 450 core #extension GL_ARB_shading_language_include : require #include "../../lib/lights.fs" +#include "../../lib/material.fs" //texture defines #define ATLAS_ELEMENT_DIM 256.0 @@ -10,12 +11,6 @@ #define ATLAS_NORMALIZED_ELEMENT_WIDTH_FULL 0.03125 //used to properly shift from texture to texture in the atlas -struct Material { - sampler2D diffuse; - sampler2D specular; - float shininess; -}; - in vec3 FragPos; in vec3 ViewFragPos; in vec3 Normal; diff --git a/assets/Shaders/entities/fluid2/fluid2.fs b/assets/Shaders/entities/fluid2/fluid2.fs index 92e8fc8a..fbae8190 100644 --- a/assets/Shaders/entities/fluid2/fluid2.fs +++ b/assets/Shaders/entities/fluid2/fluid2.fs @@ -1,14 +1,10 @@ #version 450 core #extension GL_ARB_shading_language_include : require #include "../../lib/lights.fs" +#include "../../lib/material.fs" -struct Material { - sampler2D diffuse; - sampler2D specular; - float shininess; -}; in vec3 FragPos; in vec3 Normal; diff --git a/assets/Shaders/entities/foliage/foliage.fs b/assets/Shaders/entities/foliage/foliage.fs index b36a5193..3fec82a5 100644 --- a/assets/Shaders/entities/foliage/foliage.fs +++ b/assets/Shaders/entities/foliage/foliage.fs @@ -1,15 +1,10 @@ #version 450 core #extension GL_ARB_shading_language_include : require #include "../../lib/lights.fs" +#include "../../lib/material.fs" //foliage.fs -struct Material { - sampler2D diffuse; - sampler2D specular; - float shininess; -}; - in vec3 FragPos; in vec3 ViewFragPos; in vec3 Normal; diff --git a/assets/Shaders/entities/foliage/foliage.vs b/assets/Shaders/entities/foliage/foliage.vs index a4abe8be..28c30b60 100644 --- a/assets/Shaders/entities/foliage/foliage.vs +++ b/assets/Shaders/entities/foliage/foliage.vs @@ -1,5 +1,7 @@ //Vertex Shader #version 430 core +#extension GL_ARB_shading_language_include : require +#include "../../lib/material.fs" @@ -20,12 +22,6 @@ layout (location = 1) in vec3 aNormal; layout (location = 4) in vec2 aTex; -struct Material { - sampler2D diffuse; - sampler2D specular; - float shininess; -}; - uniform Material material; uniform sampler2D dataMap; diff --git a/assets/Shaders/entities/particle/particle.fs b/assets/Shaders/entities/particle/particle.fs index 0f98f0fe..9e8cfb6f 100644 --- a/assets/Shaders/entities/particle/particle.fs +++ b/assets/Shaders/entities/particle/particle.fs @@ -1,6 +1,7 @@ #version 450 core #extension GL_ARB_shading_language_include : require #include "../../lib/lights.fs" +#include "../../lib/material.fs" //foliage.fs @@ -8,11 +9,7 @@ layout (location = 0) out vec4 accum; layout (location = 1) out float reveal; -struct Material { - sampler2D diffuse; - sampler2D specular; - float shininess; -}; + in vec3 FragPos; in vec3 ViewFragPos; diff --git a/assets/Shaders/entities/terrain2/terrain2.fs b/assets/Shaders/entities/terrain2/terrain2.fs index e55cbedc..978c346f 100644 --- a/assets/Shaders/entities/terrain2/terrain2.fs +++ b/assets/Shaders/entities/terrain2/terrain2.fs @@ -1,6 +1,7 @@ #version 450 core #extension GL_ARB_shading_language_include : require #include "../../lib/lights.fs" +#include "../../lib/material.fs" //texture defines #define ATLAS_ELEMENT_DIM 256.0 @@ -10,11 +11,7 @@ #define ATLAS_NORMALIZED_ELEMENT_WIDTH_FULL 0.03125 //used to properly shift from texture to texture in the atlas -struct Material { - sampler2D diffuse; - sampler2D specular; - float shininess; -}; + in vec3 FragPos; in vec3 ViewFragPos; diff --git a/assets/Shaders/instanced/colorshift/colorshift.fs b/assets/Shaders/instanced/colorshift/colorshift.fs index 419cbe8e..4e6aeae2 100644 --- a/assets/Shaders/instanced/colorshift/colorshift.fs +++ b/assets/Shaders/instanced/colorshift/colorshift.fs @@ -1,6 +1,7 @@ #version 450 core #extension GL_ARB_shading_language_include : require #include "../../lib/lights.fs" +#include "../../lib/material.fs" //colorshift.fs @@ -8,11 +9,6 @@ #define SMALL_EPSILON 0.001 -struct Material { - sampler2D diffuse; - sampler2D specular; - float shininess; -}; in vec3 FragPos; in vec3 ViewFragPos; diff --git a/assets/Shaders/instanced/generic/generic.fs b/assets/Shaders/instanced/generic/generic.fs index 67e77fa4..69a841db 100644 --- a/assets/Shaders/instanced/generic/generic.fs +++ b/assets/Shaders/instanced/generic/generic.fs @@ -1,6 +1,7 @@ #version 450 core #extension GL_ARB_shading_language_include : require #include "../../lib/lights.fs" +#include "../../lib/material.fs" //generic.fs @@ -8,11 +9,7 @@ out vec4 FragColor; -struct Material { - sampler2D diffuse; - sampler2D specular; - float shininess; -}; + in vec3 FragPos; in vec3 Normal; diff --git a/assets/Shaders/instanced/proceduraltree/proceduraltree.fs b/assets/Shaders/instanced/proceduraltree/proceduraltree.fs index 3b77a4de..1652c59a 100644 --- a/assets/Shaders/instanced/proceduraltree/proceduraltree.fs +++ b/assets/Shaders/instanced/proceduraltree/proceduraltree.fs @@ -1,14 +1,11 @@ #version 450 core #extension GL_ARB_shading_language_include : require #include "../../lib/lights.fs" +#include "../../lib/material.fs" //proceduraltree.fs -struct Material { - sampler2D diffuse; - sampler2D specular; - float shininess; -}; + in vec3 FragPos; in vec3 ViewFragPos; diff --git a/assets/Shaders/lib/material.fs b/assets/Shaders/lib/material.fs new file mode 100644 index 00000000..92ce647a --- /dev/null +++ b/assets/Shaders/lib/material.fs @@ -0,0 +1,35 @@ + +/** + * A material + */ +struct Material { + /** + * The diffuse sampler + */ + sampler2D diffuse; + + /** + * The diffuse sampler + */ + sampler2D specular; + + /** + * The shininess value + */ + float metallic; + + /** + * The shininess value + */ + float roughness; + + /** + * The shininess value + */ + float ior; + + /** + * The shininess value + */ + float alpha; +}; diff --git a/docs/src/progress/renderertodo.md b/docs/src/progress/renderertodo.md index 3ed38b6b..a88b9ae2 100644 --- a/docs/src/progress/renderertodo.md +++ b/docs/src/progress/renderertodo.md @@ -1898,6 +1898,7 @@ Renderer code cleanup Shader uniform parsing from source code Visual shader uniform location caching Remove old uniforms from shaders and code to push uniforms +Break out shader material into dedicated library file diff --git a/src/main/java/electrosphere/renderer/shader/VisualShader.java b/src/main/java/electrosphere/renderer/shader/VisualShader.java index 907b822b..72f84274 100644 --- a/src/main/java/electrosphere/renderer/shader/VisualShader.java +++ b/src/main/java/electrosphere/renderer/shader/VisualShader.java @@ -80,16 +80,14 @@ public class VisualShader implements Shader { } Pattern includePattern = Pattern.compile("#include \"(.*)\""); Matcher matcher = includePattern.matcher(contents); - int i = 1; while(matcher.find()){ - String group = matcher.group(i); + String group = matcher.group(1); if(!includes.contains(group)){ File directory = currentFile.getParentFile(); File newFile = new File(directory.getPath() + "/" + group); String includeContent = VisualShader.recursivelyPreprocessFile(newFile, includes); contents = contents.replace("#include \"" + group + "\"", includeContent); } - i++; } //remove strings that we don't want to include contents = contents.replace("#extension GL_ARB_shading_language_include : require","");