From 2538c91876455fe96febf441fc8dde20f2606023 Mon Sep 17 00:00:00 2001 From: Agando Date: Thu, 9 Jul 2026 06:00:32 +0200 Subject: auto: 2026-07-09_06:00 changes --- downloads/LuminosityHighPassShader.js | 71 +++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 downloads/LuminosityHighPassShader.js (limited to 'downloads/LuminosityHighPassShader.js') 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; + +} )(); -- cgit v1.2.3