Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
b850f0f
commit 3f6f327
Showing
11 changed files
with
602 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
trans_alphach |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
|
||
uniform sampler2D myTexture; | ||
uniform sampler2D normalTexture; | ||
|
||
uniform vec4 skyBgColor; | ||
uniform float fogDistance; | ||
|
||
varying vec3 vPosition; | ||
|
||
varying vec3 viewVec; | ||
|
||
void main (void) | ||
{ | ||
vec4 col = texture2D(myTexture, vec2(gl_TexCoord[0])); | ||
float alpha = col.a; | ||
vec2 uv = gl_TexCoord[0].st; | ||
vec4 base = texture2D(myTexture, uv); | ||
vec4 final_color = vec4(0.2, 0.2, 0.2, 1.0) * base; | ||
vec3 vVec = normalize(viewVec); | ||
vec3 bump = normalize(texture2D(normalTexture, uv).xyz * 2.0 - 1.0); | ||
vec3 R = reflect(-vVec, bump); | ||
vec3 lVec = normalize(vec3(0.0, -0.4, 0.5)); | ||
float diffuse = max(dot(lVec, bump), 0.0); | ||
|
||
vec3 color = diffuse * texture2D(myTexture, gl_TexCoord[0].st).rgb; | ||
|
||
|
||
float specular = pow(clamp(dot(R, lVec), 0.0, 1.0),1.0); | ||
vec4 vSpecular = 0.2*specular * diffuse; | ||
color += vSpecular; | ||
|
||
|
||
col = vec4(color.r, color.g, color.b, alpha); | ||
col *= gl_Color; | ||
col = col * col; // SRGB -> Linear | ||
col *= 1.8; | ||
col.r = 1.0 - exp(1.0 - col.r) / exp(1.0); | ||
col.g = 1.0 - exp(1.0 - col.g) / exp(1.0); | ||
col.b = 1.0 - exp(1.0 - col.b) / exp(1.0); | ||
col = sqrt(col); // Linear -> SRGB | ||
if(fogDistance != 0.0){ | ||
float d = max(0.0, min(vPosition.z / fogDistance * 1.5 - 0.6, 1.0)); | ||
alpha = mix(alpha, 0.0, d); | ||
} | ||
|
||
gl_FragColor = vec4(col.r, col.g, col.b, alpha); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,98 @@ | ||
|
||
uniform mat4 mWorldViewProj; | ||
uniform mat4 mInvWorld; | ||
uniform mat4 mTransWorld; | ||
uniform float dayNightRatio; | ||
|
||
varying vec3 vPosition; | ||
varying vec3 viewVec; | ||
|
||
void main(void) | ||
{ | ||
gl_Position = mWorldViewProj * gl_Vertex; | ||
|
||
vPosition = (mWorldViewProj * gl_Vertex).xyz; | ||
|
||
vec3 tangent; | ||
vec3 binormal; | ||
|
||
vec3 c1 = cross( gl_Normal, vec3(0.0, 0.0, 1.0) ); | ||
vec3 c2 = cross( gl_Normal, vec3(0.0, 1.0, 0.0) ); | ||
|
||
if( length(c1)>length(c2) ) | ||
{ | ||
tangent = c1; | ||
} | ||
else | ||
{ | ||
tangent = c2; | ||
} | ||
|
||
tangent = normalize(tangent); | ||
|
||
//binormal = cross(gl_Normal, tangent); | ||
//binormal = normalize(binormal); | ||
|
||
vec4 color; | ||
//color = vec4(1.0, 1.0, 1.0, 1.0); | ||
|
||
float day = gl_Color.r; | ||
float night = gl_Color.g; | ||
float light_source = gl_Color.b; | ||
|
||
/*color.r = mix(night, day, dayNightRatio); | ||
color.g = color.r; | ||
color.b = color.r;*/ | ||
|
||
float rg = mix(night, day, dayNightRatio); | ||
rg += light_source * 1.5; // Make light sources brighter | ||
float b = rg; | ||
|
||
// Moonlight is blue | ||
b += (day - night) / 13.0; | ||
rg -= (day - night) / 13.0; | ||
|
||
// Emphase blue a bit in darker places | ||
// See C++ implementation in mapblock_mesh.cpp finalColorBlend() | ||
b += max(0.0, (1.0 - abs(b - 0.13)/0.17) * 0.025); | ||
|
||
// Artificial light is yellow-ish | ||
// See C++ implementation in mapblock_mesh.cpp finalColorBlend() | ||
rg += max(0.0, (1.0 - abs(rg - 0.85)/0.15) * 0.065); | ||
|
||
color.r = rg; | ||
color.g = rg; | ||
color.b = b; | ||
|
||
// Make sides and bottom darker than the top | ||
color = color * color; // SRGB -> Linear | ||
if(gl_Normal.y <= 0.5) | ||
color *= 0.6; | ||
//color *= 0.7; | ||
color = sqrt(color); // Linear -> SRGB | ||
|
||
color.a = gl_Color.a; | ||
|
||
gl_FrontColor = gl_BackColor = color; | ||
|
||
gl_TexCoord[0] = gl_MultiTexCoord0; | ||
|
||
vec3 n1 = normalize(gl_NormalMatrix * gl_Normal); | ||
vec4 tangent1 = vec4(tangent.x, tangent.y, tangent.z, 0); | ||
//vec3 t1 = normalize(gl_NormalMatrix * tangent1); | ||
//vec3 b1 = cross(n1, t1); | ||
|
||
vec3 v; | ||
vec3 vVertex = vec3(gl_ModelViewMatrix * gl_Vertex); | ||
vec3 vVec = -vVertex; | ||
//v.x = dot(vVec, t1); | ||
//v.y = dot(vVec, b1); | ||
//v.z = dot(vVec, n1); | ||
//viewVec = vVec; | ||
viewVec = normalize(vec3(0.0, -0.4, 0.5)); | ||
//Vector representing the 0th texture coordinate passed to fragment shader | ||
//gl_TexCoord[0] = vec2(gl_MultiTexCoord0); | ||
|
||
// Transform the current vertex | ||
//gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
trans_alphach_ref |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
|
||
uniform sampler2D myTexture; | ||
uniform sampler2D normalTexture; | ||
|
||
uniform vec4 skyBgColor; | ||
uniform float fogDistance; | ||
|
||
varying vec3 vPosition; | ||
|
||
varying vec3 viewVec; | ||
|
||
void main (void) | ||
{ | ||
vec4 col = texture2D(myTexture, vec2(gl_TexCoord[0])); | ||
float alpha = col.a; | ||
vec2 uv = gl_TexCoord[0].st; | ||
vec4 base = texture2D(myTexture, uv); | ||
vec4 final_color = vec4(0.2, 0.2, 0.2, 1.0) * base; | ||
vec3 vVec = normalize(viewVec); | ||
vec3 bump = normalize(texture2D(normalTexture, uv).xyz * 2.0 - 1.0); | ||
vec3 R = reflect(-vVec, bump); | ||
vec3 lVec = normalize(vec3(0.0, -0.4, 0.5)); | ||
float diffuse = max(dot(lVec, bump), 0.0); | ||
|
||
vec3 color = diffuse * texture2D(myTexture, gl_TexCoord[0].st).rgb; | ||
|
||
|
||
float specular = pow(clamp(dot(R, lVec), 0.0, 1.0),1.0); | ||
vec4 vSpecular = 0.2*specular * diffuse; | ||
color += vSpecular; | ||
|
||
|
||
col = vec4(color.r, color.g, color.b, alpha); | ||
col *= gl_Color; | ||
col = col * col; // SRGB -> Linear | ||
col *= 1.8; | ||
col.r = 1.0 - exp(1.0 - col.r) / exp(1.0); | ||
col.g = 1.0 - exp(1.0 - col.g) / exp(1.0); | ||
col.b = 1.0 - exp(1.0 - col.b) / exp(1.0); | ||
col = sqrt(col); // Linear -> SRGB | ||
if(fogDistance != 0.0){ | ||
float d = max(0.0, min(vPosition.z / fogDistance * 1.5 - 0.6, 1.0)); | ||
col = mix(col, skyBgColor, d); | ||
} | ||
gl_FragColor = vec4(col.r, col.g, col.b, alpha); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,98 @@ | ||
|
||
uniform mat4 mWorldViewProj; | ||
uniform mat4 mInvWorld; | ||
uniform mat4 mTransWorld; | ||
uniform float dayNightRatio; | ||
|
||
varying vec3 vPosition; | ||
varying vec3 viewVec; | ||
|
||
void main(void) | ||
{ | ||
gl_Position = mWorldViewProj * gl_Vertex; | ||
|
||
vPosition = (mWorldViewProj * gl_Vertex).xyz; | ||
|
||
vec3 tangent; | ||
vec3 binormal; | ||
|
||
vec3 c1 = cross( gl_Normal, vec3(0.0, 0.0, 1.0) ); | ||
vec3 c2 = cross( gl_Normal, vec3(0.0, 1.0, 0.0) ); | ||
|
||
if( length(c1)>length(c2) ) | ||
{ | ||
tangent = c1; | ||
} | ||
else | ||
{ | ||
tangent = c2; | ||
} | ||
|
||
tangent = normalize(tangent); | ||
|
||
//binormal = cross(gl_Normal, tangent); | ||
//binormal = normalize(binormal); | ||
|
||
vec4 color; | ||
//color = vec4(1.0, 1.0, 1.0, 1.0); | ||
|
||
float day = gl_Color.r; | ||
float night = gl_Color.g; | ||
float light_source = gl_Color.b; | ||
|
||
/*color.r = mix(night, day, dayNightRatio); | ||
color.g = color.r; | ||
color.b = color.r;*/ | ||
|
||
float rg = mix(night, day, dayNightRatio); | ||
rg += light_source * 1.5; // Make light sources brighter | ||
float b = rg; | ||
|
||
// Moonlight is blue | ||
b += (day - night) / 13.0; | ||
rg -= (day - night) / 13.0; | ||
|
||
// Emphase blue a bit in darker places | ||
// See C++ implementation in mapblock_mesh.cpp finalColorBlend() | ||
b += max(0.0, (1.0 - abs(b - 0.13)/0.17) * 0.025); | ||
|
||
// Artificial light is yellow-ish | ||
// See C++ implementation in mapblock_mesh.cpp finalColorBlend() | ||
rg += max(0.0, (1.0 - abs(rg - 0.85)/0.15) * 0.065); | ||
|
||
color.r = rg; | ||
color.g = rg; | ||
color.b = b; | ||
|
||
// Make sides and bottom darker than the top | ||
color = color * color; // SRGB -> Linear | ||
if(gl_Normal.y <= 0.5) | ||
color *= 0.6; | ||
//color *= 0.7; | ||
color = sqrt(color); // Linear -> SRGB | ||
|
||
color.a = gl_Color.a; | ||
|
||
gl_FrontColor = gl_BackColor = color; | ||
|
||
gl_TexCoord[0] = gl_MultiTexCoord0; | ||
|
||
vec3 n1 = normalize(gl_NormalMatrix * gl_Normal); | ||
vec4 tangent1 = vec4(tangent.x, tangent.y, tangent.z, 0); | ||
//vec3 t1 = normalize(gl_NormalMatrix * tangent1); | ||
//vec3 b1 = cross(n1, t1); | ||
|
||
vec3 v; | ||
vec3 vVertex = vec3(gl_ModelViewMatrix * gl_Vertex); | ||
vec3 vVec = -vVertex; | ||
//v.x = dot(vVec, t1); | ||
//v.y = dot(vVec, b1); | ||
//v.z = dot(vVec, n1); | ||
//viewVec = vVec; | ||
viewVec = normalize(vec3(0.0, -0.4, 0.5)); | ||
//Vector representing the 0th texture coordinate passed to fragment shader | ||
//gl_TexCoord[0] = vec2(gl_MultiTexCoord0); | ||
|
||
// Transform the current vertex | ||
//gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.