From 9cc01e74a45655e0f281688dd4a7c908145fde0e Mon Sep 17 00:00:00 2001 From: Mugen87 Date: Mon, 4 Sep 2017 18:09:14 +0200 Subject: [PATCH] common.glsl: Introduce linearToRelativeLuminance() --- examples/js/shaders/LuminosityShader.js | 8 ++++---- src/renderers/shaders/ShaderChunk/common.glsl | 9 +++++++++ 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/examples/js/shaders/LuminosityShader.js b/examples/js/shaders/LuminosityShader.js index b4244bc025..19dbbfca0f 100644 --- a/examples/js/shaders/LuminosityShader.js +++ b/examples/js/shaders/LuminosityShader.js @@ -29,6 +29,8 @@ THREE.LuminosityShader = { fragmentShader: [ + "#include ", + "uniform sampler2D tDiffuse;", "varying vec2 vUv;", @@ -37,11 +39,9 @@ THREE.LuminosityShader = { "vec4 texel = texture2D( tDiffuse, vUv );", - "vec3 luma = vec3( 0.299, 0.587, 0.114 );", - - "float v = dot( texel.xyz, luma );", + "float l = linearToRelativeLuminance( texel.rgb );", - "gl_FragColor = vec4( v, v, v, texel.w );", + "gl_FragColor = vec4( l, l, l, texel.w );", "}" diff --git a/src/renderers/shaders/ShaderChunk/common.glsl b/src/renderers/shaders/ShaderChunk/common.glsl index 20e7d3c9f1..ad1db1a0c7 100644 --- a/src/renderers/shaders/ShaderChunk/common.glsl +++ b/src/renderers/shaders/ShaderChunk/common.glsl @@ -83,3 +83,12 @@ mat3 transpose( const in mat3 v ) { return tmp; } + +// https://en.wikipedia.org/wiki/Relative_luminance +float linearToRelativeLuminance( const in vec3 color ) { + + vec3 weights = vec3( 0.2126, 0.7152, 0.0722 ); + + return dot( weights, color.rgb ); + +} -- GitLab