diff options
author | Ehsan Akhgari <ehsan.akhgari@gmail.com> | 2012-06-21 16:01:02 -0400 |
---|---|---|
committer | Ehsan Akhgari <ehsan.akhgari@gmail.com> | 2012-06-21 16:01:32 -0400 |
commit | dfab4e04fc488095c6ca830a510d3bca076e16b1 (patch) | |
tree | e491514977fcf84cb3fb405697436eb62fbfb1b9 /src/library_gl.js | |
parent | 55a8e9a02636154ebd99b1b030edfa970acad6bd (diff) |
Implement GL_LINEAR fog mode
Diffstat (limited to 'src/library_gl.js')
-rw-r--r-- | src/library_gl.js | 14 |
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; |