diff options
| author | raysan5 <[email protected]> | 2020-12-24 13:26:30 +0100 |
|---|---|---|
| committer | raysan5 <[email protected]> | 2020-12-24 13:26:30 +0100 |
| commit | 83ab2cb01746a869b625c9d84fbb4737146b73a9 (patch) | |
| tree | 010b0794848d863916e5acb4f766ea9e7ecb6e90 /examples/web/models/resources/shaders | |
| parent | d11274dcfcb0f349fba16ab4b83d2b96bcac8d1a (diff) | |
| download | raylib.com-83ab2cb01746a869b625c9d84fbb4737146b73a9.tar.gz raylib.com-83ab2cb01746a869b625c9d84fbb4737146b73a9.zip | |
Updated Web examples to raylib 3.5
Diffstat (limited to 'examples/web/models/resources/shaders')
| -rw-r--r-- | examples/web/models/resources/shaders/glsl100/cubemap.fs | 29 | ||||
| -rw-r--r-- | examples/web/models/resources/shaders/glsl100/cubemap.vs | 20 | ||||
| -rw-r--r-- | examples/web/models/resources/shaders/glsl100/skybox.fs | 28 | ||||
| -rw-r--r-- | examples/web/models/resources/shaders/glsl100/skybox.vs | 24 | ||||
| -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; } |
