Socket
Socket
Sign inDemoInstall

glsl-specular-cook-torrance

Package Overview
Dependencies
1
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    glsl-specular-cook-torrance

Cook-Torrance specular/fresnel lighting term


Version published
Weekly downloads
82K
increased by13.5%
Maintainers
1
Install size
13.8 kB
Created
Weekly downloads
 

Readme

Source

glsl-specular-cook-torrance

Computes the specular power in the Cook-Torrance model.

Example

#pragma glslify: cookTorranceSpec = require(glsl-specular-cook-torrance)

uniform vec3 eyePosition;
uniform vec3 lightPosition;

uniform float roughness, fresnel;

varying vec3 surfacePosition, surfaceNormal;

void main() {
  //Light and view geometry
  vec3 viewDirection = normalize(eyePosition - surfacePosition);
  vec3 lightDirection = normalize(lightPosition - surfacePosition);

  //Surface properties
  vec3 normal = normalize(surfaceNormal);
  
  //Compute specular power
  float power = cookTorranceSpec(
    lightDirection, 
    viewDirection, 
    normal, 
    roughness,
    fresnel);

  gl_FragColor = vec4(power,power,power,1.0);
}

Usage

Install with npm:

npm install glsl-specular-phong

Then use with glslify.

API

#pragma glslify: cookTorrance = require(glsl-specular-cook-torrance)
float cookTorrance(vec3 lightDir, vec3 eyeDir, vec3 normal, float roughness, float fresnel)

Computes the specular power in the Cook-Torrance

  • lightDir is a unit length vec3 pointing from the surface point toward the light
  • eyeDir is a unit length vec3 pointing from the surface point toward the camera
  • normal is the unit length surface normal at the sample point
  • roughness is the surface roughness parameter, between 0 and 1. 0 means surface is perfectly smooth, 1 means surface is matte
  • fresnel the Fresnel exponent. 0 = no Fresnel, higher values create a rim effect around objects

Returns A float representing the specular power

Note Unlike the usual Cook-Torrance model, the light power is not scaled by 1/(normal . lightDirection). This avoids an unnecessary numerically unstable division, but requires modifying how diffuse light is calculated.

License

(c) 2014 Mikola Lysenko. MIT License

Keywords

FAQs

Last updated on 18 Oct 2014

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc