From e142166c3e2d6f567ed0d4e4c414fa510271260f Mon Sep 17 00:00:00 2001 From: David Thompson Date: Fri, 7 May 2021 09:49:57 -0400 Subject: graphics: pbr: Extract shader code to separate files. --- data/shaders/pbr-frag.glsl | 42 ++++++++++++++++++++++++++++++++++++++++++ data/shaders/pbr-vert.glsl | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+) create mode 100644 data/shaders/pbr-frag.glsl create mode 100644 data/shaders/pbr-vert.glsl (limited to 'data/shaders') 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); +} -- cgit v1.2.3