18
assets/linear_srgb.fs
Normal file
18
assets/linear_srgb.fs
Normal file
@@ -0,0 +1,18 @@
|
||||
precision mediump float;
|
||||
|
||||
varying vec2 fragTexCoord;
|
||||
varying vec4 fragColor;
|
||||
uniform sampler2D texture0;
|
||||
|
||||
vec3 srgb_to_linear(vec3 c) {
|
||||
bvec3 cutoff = lessThanEqual(c, vec3(0.04045));
|
||||
vec3 low = c / 12.92;
|
||||
vec3 high = pow((c + 0.055) / 1.055, vec3(2.4));
|
||||
return mix(high, low, vec3(cutoff));
|
||||
}
|
||||
|
||||
void main() {
|
||||
vec4 c = texture2D(texture0, fragTexCoord) * fragColor;
|
||||
c.rgb = srgb_to_linear(c.rgb); // decode to linear
|
||||
gl_FragColor = c;
|
||||
}
|
||||
31
assets/skybox.fs
Normal file
31
assets/skybox.fs
Normal file
@@ -0,0 +1,31 @@
|
||||
#version 100
|
||||
|
||||
precision mediump float;
|
||||
|
||||
// Input vertex attributes (from vertex shader)
|
||||
varying vec3 fragPosition;
|
||||
|
||||
// Input uniform values
|
||||
uniform samplerCube environmentMap;
|
||||
uniform bool vflipped;
|
||||
uniform bool doGamma;
|
||||
|
||||
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);
|
||||
|
||||
if (doGamma) // 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);
|
||||
}
|
||||
24
assets/skybox.vs
Normal file
24
assets/skybox.vs
Normal file
@@ -0,0 +1,24 @@
|
||||
#version 100
|
||||
|
||||
// Input vertex attributes
|
||||
attribute vec3 vertexPosition;
|
||||
|
||||
// Input uniform values
|
||||
uniform mat4 matProjection;
|
||||
uniform mat4 matView;
|
||||
|
||||
// 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(matView));
|
||||
vec4 clipPos = matProjection*rotView*vec4(vertexPosition, 1.0);
|
||||
|
||||
// Calculate final vertex position
|
||||
gl_Position = clipPos;
|
||||
}
|
||||
Reference in New Issue
Block a user