summaryrefslogtreecommitdiffhomepage
path: root/examples/web/models/resources/shaders
diff options
context:
space:
mode:
Diffstat (limited to 'examples/web/models/resources/shaders')
-rw-r--r--examples/web/models/resources/shaders/glsl100/cubemap.fs29
-rw-r--r--examples/web/models/resources/shaders/glsl100/cubemap.vs20
-rw-r--r--examples/web/models/resources/shaders/glsl100/skybox.fs28
-rw-r--r--examples/web/models/resources/shaders/glsl100/skybox.vs24
-rw-r--r--examples/web/models/resources/shaders/glsl330/brdf.fs (renamed from examples/web/models/resources/shaders/brdf.fs)0
-rw-r--r--examples/web/models/resources/shaders/glsl330/brdf.vs (renamed from examples/web/models/resources/shaders/brdf.vs)0
-rw-r--r--examples/web/models/resources/shaders/glsl330/cubemap.fs (renamed from examples/web/models/resources/shaders/cubemap.fs)8
-rw-r--r--examples/web/models/resources/shaders/glsl330/cubemap.vs (renamed from examples/web/models/resources/shaders/cubemap.vs)0
-rw-r--r--examples/web/models/resources/shaders/glsl330/irradiance.fs (renamed from examples/web/models/resources/shaders/irradiance.fs)6
-rw-r--r--examples/web/models/resources/shaders/glsl330/pbr.fs (renamed from examples/web/models/resources/shaders/pbr.fs)14
-rw-r--r--examples/web/models/resources/shaders/glsl330/pbr.vs (renamed from examples/web/models/resources/shaders/pbr.vs)2
-rw-r--r--examples/web/models/resources/shaders/glsl330/prefilter.fs (renamed from examples/web/models/resources/shaders/prefilter.fs)8
-rw-r--r--examples/web/models/resources/shaders/glsl330/skybox.fs (renamed from examples/web/models/resources/shaders/skybox.fs)8
-rw-r--r--examples/web/models/resources/shaders/glsl330/skybox.vs (renamed from examples/web/models/resources/shaders/skybox.vs)2
14 files changed, 125 insertions, 24 deletions
diff --git a/examples/web/models/resources/shaders/glsl100/cubemap.fs b/examples/web/models/resources/shaders/glsl100/cubemap.fs
new file mode 100644
index 0000000..402cdea
--- /dev/null
+++ b/examples/web/models/resources/shaders/glsl100/cubemap.fs
@@ -0,0 +1,29 @@
+#version 100
+
+precision mediump float;
+
+// Input vertex attributes (from vertex shader)
+varying vec3 fragPosition;
+
+// Input uniform values
+uniform sampler2D equirectangularMap;
+
+vec2 SampleSphericalMap(vec3 v)
+{
+ vec2 uv = vec2(atan(v.z, v.x), asin(v.y));
+ uv *= vec2(0.1591, 0.3183);
+ uv += 0.5;
+ return uv;
+}
+
+void main()
+{
+ // Normalize local position
+ vec2 uv = SampleSphericalMap(normalize(fragPosition));
+
+ // Fetch color from texture map
+ vec3 color = texture2D(equirectangularMap, uv).rgb;
+
+ // Calculate final fragment color
+ gl_FragColor = vec4(color, 1.0);
+}
diff --git a/examples/web/models/resources/shaders/glsl100/cubemap.vs b/examples/web/models/resources/shaders/glsl100/cubemap.vs
new file mode 100644
index 0000000..fd8d17e
--- /dev/null
+++ b/examples/web/models/resources/shaders/glsl100/cubemap.vs
@@ -0,0 +1,20 @@
+#version 100
+
+// Input vertex attributes
+attribute vec3 vertexPosition;
+
+// Input uniform values
+uniform mat4 projection;
+uniform mat4 view;
+
+// Output vertex attributes (to fragment shader)
+varying vec3 fragPosition;
+
+void main()
+{
+ // Calculate fragment position based on model transformations
+ fragPosition = vertexPosition;
+
+ // Calculate final vertex position
+ gl_Position = projection*view*vec4(vertexPosition, 1.0);
+}
diff --git a/examples/web/models/resources/shaders/glsl100/skybox.fs b/examples/web/models/resources/shaders/glsl100/skybox.fs
new file mode 100644
index 0000000..1269a96
--- /dev/null
+++ b/examples/web/models/resources/shaders/glsl100/skybox.fs
@@ -0,0 +1,28 @@
+#version 100
+
+precision mediump float;
+
+// Input vertex attributes (from vertex shader)
+varying vec3 fragPosition;
+
+// Input uniform values
+uniform samplerCube environmentMap;
+uniform bool vflipped;
+
+void main()
+{
+ // Fetch color from texture map
+ vec4 texelColor = vec4(0.0);
+
+ if (vflipped) texelColor = textureCube(environmentMap, vec3(fragPosition.x, -fragPosition.y, fragPosition.z));
+ else texelColor = textureCube(environmentMap, fragPosition);
+
+ vec3 color = vec3(texelColor.x, texelColor.y, texelColor.z);
+
+ // Apply gamma correction
+ color = color/(color + vec3(1.0));
+ color = pow(color, vec3(1.0/2.2));
+
+ // Calculate final fragment color
+ gl_FragColor = vec4(color, 1.0);
+}
diff --git a/examples/web/models/resources/shaders/glsl100/skybox.vs b/examples/web/models/resources/shaders/glsl100/skybox.vs
new file mode 100644
index 0000000..0d00d54
--- /dev/null
+++ b/examples/web/models/resources/shaders/glsl100/skybox.vs
@@ -0,0 +1,24 @@
+#version 100
+
+// Input vertex attributes
+attribute vec3 vertexPosition;
+
+// Input uniform values
+uniform mat4 projection;
+uniform mat4 view;
+
+// Output vertex attributes (to fragment shader)
+varying vec3 fragPosition;
+
+void main()
+{
+ // Calculate fragment position based on model transformations
+ fragPosition = vertexPosition;
+
+ // Remove translation from the view matrix
+ mat4 rotView = mat4(mat3(view));
+ vec4 clipPos = projection*rotView*vec4(vertexPosition, 1.0);
+
+ // Calculate final vertex position
+ gl_Position = clipPos.xyzw;
+}
diff --git a/examples/web/models/resources/shaders/brdf.fs b/examples/web/models/resources/shaders/glsl330/brdf.fs
index d04bc66..d04bc66 100644
--- a/examples/web/models/resources/shaders/brdf.fs
+++ b/examples/web/models/resources/shaders/glsl330/brdf.fs
diff --git a/examples/web/models/resources/shaders/brdf.vs b/examples/web/models/resources/shaders/glsl330/brdf.vs
index 0638467..0638467 100644
--- a/examples/web/models/resources/shaders/brdf.vs
+++ b/examples/web/models/resources/shaders/glsl330/brdf.vs
diff --git a/examples/web/models/resources/shaders/cubemap.fs b/examples/web/models/resources/shaders/glsl330/cubemap.fs
index e8e2853..e4d4ddd 100644
--- a/examples/web/models/resources/shaders/cubemap.fs
+++ b/examples/web/models/resources/shaders/glsl330/cubemap.fs
@@ -1,11 +1,3 @@
-/*******************************************************************************************
-*
-* rPBR [shader] - Equirectangular to cubemap fragment shader
-*
-* Copyright (c) 2017 Victor Fisac
-*
-**********************************************************************************************/
-
#version 330
// Input vertex attributes (from vertex shader)
diff --git a/examples/web/models/resources/shaders/cubemap.vs b/examples/web/models/resources/shaders/glsl330/cubemap.vs
index 5721eaa..5721eaa 100644
--- a/examples/web/models/resources/shaders/cubemap.vs
+++ b/examples/web/models/resources/shaders/glsl330/cubemap.vs
diff --git a/examples/web/models/resources/shaders/irradiance.fs b/examples/web/models/resources/shaders/glsl330/irradiance.fs
index b42d214..4ef03e0 100644
--- a/examples/web/models/resources/shaders/irradiance.fs
+++ b/examples/web/models/resources/shaders/glsl330/irradiance.fs
@@ -15,7 +15,7 @@ in vec3 fragPosition;
uniform samplerCube environmentMap;
// Constant values
-const float PI = 3.14159265359f;
+const float PI = 3.14159265359;
// Output fragment color
out vec4 finalColor;
@@ -31,8 +31,8 @@ void main()
vec3 right = cross(up, normal);
up = cross(normal, right);
- float sampleDelta = 0.025f;
- float nrSamples = 0.0f;
+ float sampleDelta = 0.025;
+ float nrSamples = 0.0;
for (float phi = 0.0; phi < 2.0*PI; phi += sampleDelta)
{
diff --git a/examples/web/models/resources/shaders/pbr.fs b/examples/web/models/resources/shaders/glsl330/pbr.fs
index 38d56c5..68bf203 100644
--- a/examples/web/models/resources/shaders/pbr.fs
+++ b/examples/web/models/resources/shaders/glsl330/pbr.fs
@@ -73,6 +73,8 @@ vec3 fresnelSchlick(float cosTheta, vec3 F0);
vec3 fresnelSchlickRoughness(float cosTheta, vec3 F0, float roughness);
vec2 ParallaxMapping(vec2 texCoords, vec3 viewDir);
+// WARNING: There is some weird behaviour with this function, always returns black!
+// Yes, I even tried: return texture(property.sampler, texCoord).rgb;
vec3 ComputeMaterialProperty(MaterialProperty property)
{
vec3 result = vec3(0.0, 0.0, 0.0);
@@ -187,17 +189,17 @@ void main()
else texCoord = fragTexCoord; // Use default texture coordinates
// Fetch material values from texture sampler or color attributes
- vec3 color = ComputeMaterialProperty(albedo);
- vec3 metal = ComputeMaterialProperty(metalness);
- vec3 rough = ComputeMaterialProperty(roughness);
- vec3 emiss = ComputeMaterialProperty(emission);
- vec3 ao = ComputeMaterialProperty(occlusion);
+ vec3 color = texture(albedo.sampler, texCoord).rgb; //ComputeMaterialProperty(albedo);
+ vec3 metal = texture(metalness.sampler, texCoord).rgb; //ComputeMaterialProperty(metalness);
+ vec3 rough = texture(roughness.sampler, texCoord).rgb; //ComputeMaterialProperty(roughness);
+ vec3 emiss = texture(emission.sampler, texCoord).rgb; //ComputeMaterialProperty(emission);
+ vec3 ao = texture(occlusion.sampler, texCoord).rgb; //ComputeMaterialProperty(occlusion);
// Check if normal mapping is enabled
if (normals.useSampler == 1)
{
// Fetch normal map color and transform lighting values to tangent space
- normal = ComputeMaterialProperty(normals);
+ normal = texture(normals.sampler, texCoord).rgb; //ComputeMaterialProperty(normals);
normal = normalize(normal*2.0 - 1.0);
normal = normalize(normal*TBN);
diff --git a/examples/web/models/resources/shaders/pbr.vs b/examples/web/models/resources/shaders/glsl330/pbr.vs
index 8bd3faa..045428c 100644
--- a/examples/web/models/resources/shaders/pbr.vs
+++ b/examples/web/models/resources/shaders/glsl330/pbr.vs
@@ -34,7 +34,7 @@ void main()
mat3 normalMatrix = transpose(inverse(mat3(matModel)));
// Calculate fragment position based on model transformations
- fragPosition = vec3(matModel*vec4(vertexPosition, 1.0f));
+ fragPosition = vec3(matModel*vec4(vertexPosition, 1.0));
// Send vertex attributes to fragment shader
fragTexCoord = vertexTexCoord;
diff --git a/examples/web/models/resources/shaders/prefilter.fs b/examples/web/models/resources/shaders/glsl330/prefilter.fs
index 9439810..941ea86 100644
--- a/examples/web/models/resources/shaders/prefilter.fs
+++ b/examples/web/models/resources/shaders/glsl330/prefilter.fs
@@ -18,7 +18,7 @@ uniform samplerCube environmentMap;
uniform float roughness;
// Constant values
-const float PI = 3.14159265359f;
+const float PI = 3.14159265359;
// Output fragment color
out vec4 finalColor;
@@ -35,7 +35,7 @@ float DistributionGGX(vec3 N, vec3 H, float roughness)
float NdotH = max(dot(N, H), 0.0);
float NdotH2 = NdotH*NdotH;
- float nom = a2;
+ float nom = a2;
float denom = (NdotH2*(a2 - 1.0) + 1.0);
denom = PI*denom*denom;
@@ -49,7 +49,7 @@ float RadicalInverse_VdC(uint bits)
bits = ((bits & 0x33333333u) << 2u) | ((bits & 0xCCCCCCCCu) >> 2u);
bits = ((bits & 0x0F0F0F0Fu) << 4u) | ((bits & 0xF0F0F0F0u) >> 4u);
bits = ((bits & 0x00FF00FFu) << 8u) | ((bits & 0xFF00FF00u) >> 8u);
- return float(bits) * 2.3283064365386963e-10; // / 0x100000000
+ return float(bits)*2.3283064365386963e-10; // / 0x100000000
}
vec2 Hammersley(uint i, uint N)
@@ -60,7 +60,7 @@ vec2 Hammersley(uint i, uint N)
vec3 ImportanceSampleGGX(vec2 Xi, vec3 N, float roughness)
{
float a = roughness*roughness;
- float phi = 2.0 * PI * Xi.x;
+ float phi = 2.0*PI*Xi.x;
float cosTheta = sqrt((1.0 - Xi.y)/(1.0 + (a*a - 1.0)*Xi.y));
float sinTheta = sqrt(1.0 - cosTheta*cosTheta);
diff --git a/examples/web/models/resources/shaders/skybox.fs b/examples/web/models/resources/shaders/glsl330/skybox.fs
index 053a251..c7a1788 100644
--- a/examples/web/models/resources/shaders/skybox.fs
+++ b/examples/web/models/resources/shaders/glsl330/skybox.fs
@@ -4,6 +4,8 @@
*
* Copyright (c) 2017 Victor Fisac
*
+* 19-Jun-2020 - modified by Giuseppe Mastrangelo (@peppemas) - VFlip Support
+*
**********************************************************************************************/
#version 330
@@ -13,6 +15,7 @@ in vec3 fragPosition;
// Input uniform values
uniform samplerCube environmentMap;
+uniform bool vflipped;
// Output fragment color
out vec4 finalColor;
@@ -20,7 +23,10 @@ out vec4 finalColor;
void main()
{
// Fetch color from texture map
- vec3 color = texture(environmentMap, fragPosition).rgb;
+ vec3 color = vec3(0.0);
+
+ if (vflipped) color = texture(environmentMap, vec3(fragPosition.x, -fragPosition.y, fragPosition.z)).rgb;
+ else color = texture(environmentMap, fragPosition).rgb;
// Apply gamma correction
color = color/(color + vec3(1.0));
diff --git a/examples/web/models/resources/shaders/skybox.vs b/examples/web/models/resources/shaders/glsl330/skybox.vs
index dcbe6c3..4fe9a2c 100644
--- a/examples/web/models/resources/shaders/skybox.vs
+++ b/examples/web/models/resources/shaders/glsl330/skybox.vs
@@ -28,5 +28,5 @@ void main()
vec4 clipPos = projection*rotView*vec4(vertexPosition, 1.0);
// Calculate final vertex position
- gl_Position = clipPos.xyww;
+ gl_Position = clipPos.xyzw;
}