aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEhsan Akhgari <ehsan.akhgari@gmail.com>2012-06-21 14:59:06 -0400
committerEhsan Akhgari <ehsan.akhgari@gmail.com>2012-06-21 15:43:35 -0400
commitde30f4b06444135ae55077054f572fa8bca84aff (patch)
tree6bebe741a64b0a14de4c57ea3dcb56f96e0dfa47 /src
parent8058ce6b85b60c737f21d215da128282d914eba7 (diff)
Add support for fog density
Diffstat (limited to 'src')
-rw-r--r--src/library_gl.js7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/library_gl.js b/src/library_gl.js
index 5f86669b..dd585f2d 100644
--- a/src/library_gl.js
+++ b/src/library_gl.js
@@ -909,6 +909,7 @@ var LibraryGL = {
// Fog support. Partial, we assume shaders are used that implement fog. We just pass them uniforms
fogStart: 0,
fogEnd: 1,
+ fogDensity: 1.0,
fogColor: null,
fogEnabled: false,
@@ -1202,6 +1203,8 @@ var LibraryGL = {
{{{ makeSetValue('params', '0', 'GLEmulation.fogStart', 'float') }}};
} else if (pname == 0x0B64) { // GL_FOG_END
{{{ makeSetValue('params', '0', 'GLEmulation.fogEnd', 'float') }}};
+ } else if (pname == 0x0B62) { // GL_FOG_DENSITY
+ {{{ makeSetValue('params', '0', 'GLEmulation.fogDensity', 'float') }}};
} else {
glGetFloatv(pname, params);
}
@@ -1558,7 +1561,7 @@ var LibraryGL = {
'float ffog(in float ecDistance) { \n' +
// GL_EXP implementation. TODO: implement other fog modes
// fog = exp2(-gl_Fog.density * gl_FogFragCoord * LOG2E)
- ' float density = 1.0; \n' + // TODO: support density
+ ' float density = float(' + GLEmulation.fogDensity + '); \n' +
' float fog = exp2(-density * ecDistance * ' + Math.LOG2E + '); \n' +
' fog = clamp(fog, 0.0, 1.0); \n' +
' return fog; \n' +
@@ -2085,6 +2088,8 @@ var LibraryGL = {
GLEmulation.fogStart = param; break;
case 0x0B64: // GL_FOG_END
GLEmulation.fogEnd = param; break;
+ case 0x0B62: // GL_FOG_DENSITY
+ GLEmulation.fogDensity = param; break;
}
},
glFogi__deps: ['glFogf'],