diff options
| author | Agando <roduccomm@gmail.com> | 2026-07-09 06:00:32 +0200 |
|---|---|---|
| committer | Agando <roduccomm@gmail.com> | 2026-07-09 06:00:32 +0200 |
| commit | 2538c91876455fe96febf441fc8dde20f2606023 (patch) | |
| tree | b74c949cdf4296d10103dd57ef8178ba427a5b39 /downloads/LuminosityHighPassShader.js | |
| parent | ea4d09fb5ccba12ed774fcf7c913edfa1e6a851a (diff) | |
auto: 2026-07-09_06:00 changes
Diffstat (limited to 'downloads/LuminosityHighPassShader.js')
| -rw-r--r-- | downloads/LuminosityHighPassShader.js | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/downloads/LuminosityHighPassShader.js b/downloads/LuminosityHighPassShader.js new file mode 100644 index 0000000..a5eab35 --- /dev/null +++ b/downloads/LuminosityHighPassShader.js @@ -0,0 +1,71 @@ +( function () { + + /** + * Luminosity + * http://en.wikipedia.org/wiki/Luminosity + */ + + const LuminosityHighPassShader = { + shaderID: 'luminosityHighPass', + uniforms: { + 'tDiffuse': { + value: null + }, + 'luminosityThreshold': { + value: 1.0 + }, + 'smoothWidth': { + value: 1.0 + }, + 'defaultColor': { + value: new THREE.Color( 0x000000 ) + }, + 'defaultOpacity': { + value: 0.0 + } + }, + vertexShader: + /* glsl */ + ` + + varying vec2 vUv; + + void main() { + + vUv = uv; + + gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); + + }`, + fragmentShader: + /* glsl */ + ` + + uniform sampler2D tDiffuse; + uniform vec3 defaultColor; + uniform float defaultOpacity; + uniform float luminosityThreshold; + uniform float smoothWidth; + + varying vec2 vUv; + + void main() { + + vec4 texel = texture2D( tDiffuse, vUv ); + + vec3 luma = vec3( 0.299, 0.587, 0.114 ); + + float v = dot( texel.xyz, luma ); + + vec4 outputColor = vec4( defaultColor.rgb, defaultOpacity ); + + float alpha = smoothstep( luminosityThreshold, luminosityThreshold + smoothWidth, v ); + + gl_FragColor = mix( outputColor, texel, alpha ); + + }` + }; + + THREE.LuminosityHighPassShader = LuminosityHighPassShader; + +} )(); |