glsl-face-normal

1.0.2 • Public • Published

glsl-face-normal

stable

demo-image

(click for demo)

Approximates face normals in the fragment shader for flat shading from the position in camera space.

Note: You need to enable GL_OES_standard_derivatives.

Fragment:

#extension GL_OES_standard_derivatives : enable
varying vec3 vViewPos;
 
#pragma glslify: faceNormal require('glsl-face-normal') 
 
void main() {
  vec3 normal = faceNormal(vViewPos);
  //... lighting 
}

Vertex:

varying vec3 vViewPos;
 
void main() {
  vec4 pos = vec4(position, 1.0);
  vec4 mpos = modelViewMatrix * pos;
  gl_Position = projectionMatrix * mpos;
  vViewPos = -mpos.xyz;
}

Usage

NPM

vec3 normal = faceNormal(vec3 pos)

Approximates the face normal from the given pos, which is typically the position in camera-space.

For better precision, you can use the eye relative position instead.

License

MIT. See LICENSE.md for details.

Dependencies (0)

    Dev Dependencies (7)

    Package Sidebar

    Install

    npm i glsl-face-normal

    Weekly Downloads

    89

    Version

    1.0.2

    License

    MIT

    Last publish

    Collaborators

    • hughsk
    • mikolalysenko
    • mattdesl
    • chrisdickinson
    • yoshuawuyts
    • mikkoh
    • rezaali
    • tatumcreative
    • wwwtyro
    • thibauts
    • bpostlethwaite
    • dfcreative
    • erkaman
    • gre
    • rreusser
    • vorg
    • archmoj
    • dy