glsl-fog

0.0.1 • Public • Published

glsl-fog experimental

Basic fog functions for GLSL, generic but intended for use with glslify.

Usage

glsl-fog

Here's a hypothetical example of linear fog calculated in a vertex shader:

#define FOG_START 100
#define FOG_END 500
 
uniform mat4 projection;
uniform mat4 view;
uniform mat4 model;
 
attribute vec3 position;
varying float fogAmount;
 
#pragma glslify: fog_linear require(glsl-fog/linear) 
 
void main() {
  gl_Position = projection * view * model * vec4(positon, 1.0);
  float fogDistance = length(gl_Position.xyz);
  fogAmount = fog_linear(fogDistance, FOG_START, FOG_END);
}

And another (separate) example using exp/exp2 per-pixel fog:

#define FOG_DENSITY 0.05
 
varying vec4 vertexColor;
 
// Take your pick: these should be usable interchangeably. 
#pragma glslify: fog_exp2 require(glsl-fog/exp2) 
#pragma glslify: fog_exp require(glsl-fog/exp) 
 
void main() {
  float fogDistance = gl_FragCoord.z / gl_FragCoord.w;
  float fogAmount = fog_exp2(fogDistance, FOG_DENSITY);
  const float fogColor = vec4(1.0); // white 
 
  gl_FragColor = mix(vertexColor, fogColor, fogAmount);
}

License

MIT. See LICENSE.md for details.

Readme

Keywords

none

Package Sidebar

Install

npm i glsl-fog

Weekly Downloads

4

Version

0.0.1

License

MIT

Last publish

Collaborators

  • hughsk