aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEhsan Akhgari <ehsan.akhgari@gmail.com>2012-06-21 16:01:02 -0400
committerEhsan Akhgari <ehsan.akhgari@gmail.com>2012-06-21 16:01:32 -0400
commitdfab4e04fc488095c6ca830a510d3bca076e16b1 (patch)
treee491514977fcf84cb3fb405697436eb62fbfb1b9 /src
parent55a8e9a02636154ebd99b1b030edfa970acad6bd (diff)
Implement GL_LINEAR fog mode
Diffstat (limited to 'src')
-rw-r--r--src/library_gl.js14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/library_gl.js b/src/library_gl.js
index b18f3eab..3a8873bc 100644
--- a/src/library_gl.js
+++ b/src/library_gl.js
@@ -1558,11 +1558,17 @@ var LibraryGL = {
switch (GLEmulation.fogMode) {
case 0x0801: // GL_EXP2
// fog = exp(-(gl_Fog.density * gl_FogFragCoord)^2)
- var fogFormula = ' float fog = exp(-density * density * ecDistance * ecDistance); \n';
+ var fogFormula = ' float density = float(' + GLEmulation.fogDensity + '); \n' +
+ ' float fog = exp(-density * density * ecDistance * ecDistance); \n';
+ break;
+ case 0x2601: // GL_LINEAR
+ // fog = (gl_Fog.end - gl_FogFragCoord) * gl_fog.scale
+ var fogFormula = ' float fog = (u_fogEnd - ecDistance) * u_fogScale; \n';
break;
default: // default to GL_EXP
// fog = exp(-gl_Fog.density * gl_FogFragCoord)
- var fogFormula = ' float fog = exp(-density * ecDistance); \n';
+ var fogFormula = ' float density = float(' + GLEmulation.fogDensity + '); \n' +
+ ' float fog = exp(-density * ecDistance); \n';
break;
}
}
@@ -1573,8 +1579,9 @@ var LibraryGL = {
(colorSize ? 'attribute vec4 a_color; \n': 'uniform vec4 u_color; \n') +
(GLEmulation.fogEnabled ? (
'varying float v_fogFragCoord; \n' +
+ 'uniform float u_fogEnd; \n' +
+ 'uniform float u_fogScale; \n' +
'float ffog(in float ecDistance) { \n' +
- ' float density = float(' + GLEmulation.fogDensity + '); \n' +
fogFormula +
' fog = clamp(fog, 0.0, 1.0); \n' +
' return fog; \n' +
@@ -2106,6 +2113,7 @@ var LibraryGL = {
case 0x0B65: // GL_FOG_MODE
switch (param) {
case 0x0801: // GL_EXP2
+ case 0x2601: // GL_LINEAR
GLEmulation.fogMode = param; break;
default: // default to GL_EXP
GLEmulation.fogMode = 0x0800 /* GL_EXP */; break;