diff options
author | David Thompson <dthompson2@worcester.edu> | 2021-05-07 09:49:57 -0400 |
---|---|---|
committer | David Thompson <dthompson2@worcester.edu> | 2021-05-07 09:49:57 -0400 |
commit | e142166c3e2d6f567ed0d4e4c414fa510271260f (patch) | |
tree | 3692fc871d6d46ae53d702d7bb1b0f538255c48b /data/shaders | |
parent | a5170a38e87b8ba4d6043e180e95f92927c8e467 (diff) |
graphics: pbr: Extract shader code to separate files.
Diffstat (limited to 'data/shaders')
-rw-r--r-- | data/shaders/pbr-frag.glsl | 42 | ||||
-rw-r--r-- | data/shaders/pbr-vert.glsl | 39 |
2 files changed, 81 insertions, 0 deletions
diff --git a/data/shaders/pbr-frag.glsl b/data/shaders/pbr-frag.glsl new file mode 100644 index 0000000..813f9a9 --- /dev/null +++ b/data/shaders/pbr-frag.glsl @@ -0,0 +1,42 @@ +// -*- mode: c -*- + +#ifdef GLSL120 +attribute vec2 fragTexcoord0; +attribute vec2 fragTexcoord1 +attribute vec4 fragColor0; +#else +in vec2 fragTexcoord0; +in vec2 fragTexcoord1; +in vec4 fragColor0; +#endif + +#ifdef GLSL330 +out vec4 fragColor; +#endif + +uniform bool textured0; +uniform bool textured1; +uniform bool vertexColored; +uniform vec3 baseColorFactor; +uniform sampler2D texture0; +uniform sampler2D texture1; + +void main (void) { + vec4 finalColor = vec4(baseColorFactor, 1.0); + // Vertex coloring. + if(vertexColored) { + finalColor *= fragColor0; + } + // Texture sampling. + if(textured0) { + finalColor *= texture(texture0, fragTexcoord0); + } + if(textured1) { + finalColor += texture(texture1, fragTexcoord1); + } +#ifdef GLSL330 + fragColor = finalColor; +#else + gl_FragColor = finalColor; +#endif +} diff --git a/data/shaders/pbr-vert.glsl b/data/shaders/pbr-vert.glsl new file mode 100644 index 0000000..f622988 --- /dev/null +++ b/data/shaders/pbr-vert.glsl @@ -0,0 +1,39 @@ +// -*- mode: c -*- + +#ifdef GLSL330 +layout (location = 0) in vec3 position; +layout (location = 1) in vec2 texcoord0; +layout (location = 2) in vec2 texcoord1; +layout (location = 3) in vec4 color0; +#elif defined(GLSL130) +in vec3 position; +in vec2 texcoord0; +in vec2 texcoord1; +in vec4 color0; +#elif defined(GLSL120) +attribute vec3 position; +attribute vec2 texcoord0; +attribute vec2 texcoord1; +attribute vec4 color0; +#endif + +#ifdef GLSL120 +varying vec2 fragTexcoord0; +varying vec2 fragTexcoord1; +varying vec4 fragColor0; +#else +out vec2 fragTexcoord0; +out vec2 fragTexcoord1; +out vec4 fragColor0; +#endif + +uniform mat4 model; +uniform mat4 view; +uniform mat4 projection; + +void main(void) { + fragTexcoord0 = texcoord0; + fragTexcoord1 = texcoord1; + fragColor0 = color0; + gl_Position = projection * view * model * vec4(position.xyz, 1.0); +} |