diff --git a/docs/api/en/renderers/WebGLRenderer.html b/docs/api/en/renderers/WebGLRenderer.html index c318ecd808a1a4c24c5f22a640d35c0a24e8ae80..e314151540a0f5dc183aa4044ec1f127941256ce 100644 --- a/docs/api/en/renderers/WebGLRenderer.html +++ b/docs/api/en/renderers/WebGLRenderer.html @@ -164,8 +164,9 @@

[property:Float gammaFactor]

Default is *2*.

-

[property:Boolean gammaOutput]

-

If set, then it expects that all textures and colors need to be outputted in premultiplied gamma. Default is *false*.

+

[property:number outputEncoding]

+

Defines the output encoding of the renderer. Default is [page:Textures THREE.LinearEncoding].

+

See the [page:Textures texture constants] page for details of other formats.

[property:Object info]

An object with a series of statistical information about the graphics board memory and the rendering process. Useful for debugging or just for the sake of curiosity. The object contains the following fields:

diff --git a/docs/api/zh/renderers/WebGLRenderer.html b/docs/api/zh/renderers/WebGLRenderer.html index 471edc7570eb3e5980c9abb0e36c4d0623757db8..e70a73274d4076c126fb2fb4d088a54117c0a7b9 100644 --- a/docs/api/zh/renderers/WebGLRenderer.html +++ b/docs/api/zh/renderers/WebGLRenderer.html @@ -143,8 +143,9 @@

[property:Float gammaFactor]

默认是 *2*.

-

[property:Boolean gammaOutput]

-

如果设置, 那么它期望所有纹理和颜色需要乘以gamma输出。 默认值*false*.

+

[property:number outputEncoding]

+

Defines the output encoding of the renderer. Default is [page:Textures THREE.LinearEncoding].

+

See the [page:Textures texture constants] page for details of other formats.

[property:Object info]

一个对象,包含有关图形板内存和渲染过程的一系列统计信息。这些信息可用于调试或仅仅满足下好奇心。改对象包含以下字段:

diff --git a/docs/examples/en/loaders/GLTFLoader.html b/docs/examples/en/loaders/GLTFLoader.html index c8b09458924eedb7d0d458ba724af9b3736e9342..f2761b13ea246299a4a7977c1c4ed6b731e0307d 100644 --- a/docs/examples/en/loaders/GLTFLoader.html +++ b/docs/examples/en/loaders/GLTFLoader.html @@ -111,8 +111,7 @@ in linear colorspace, always configure [page:WebGLRenderer] as follows when using glTF:

- renderer.gammaOutput = true; - renderer.gammaFactor = 2.2; + renderer.outputEncoding = THREE.sRGBEncoding;

GLTFLoader will automatically configure textures referenced from a .gltf or .glb file correctly, with the diff --git a/docs/examples/zh/loaders/GLTFLoader.html b/docs/examples/zh/loaders/GLTFLoader.html index 925437751bd4a9af65c3c0de17d2bc100a026edd..0288aa6b17efc1e64d7de12156d9f6e72ba82b03 100644 --- a/docs/examples/zh/loaders/GLTFLoader.html +++ b/docs/examples/zh/loaders/GLTFLoader.html @@ -107,8 +107,7 @@ 颜色空间并显示在屏幕上。除非你需要使用线性颜色空间进行后期处理,否则请在使用glTF的时候将[page:WebGLRenderer]进行如下配置:

- renderer.gammaOutput = true; - renderer.gammaFactor = 2.2; + renderer.outputEncoding = THREE.sRGBEncoding;

假设渲染器的配置如上所示,则GLTFLoader将可以正确地自动配置从.gltf或.glb文件中引用的纹理。 diff --git a/editor/js/Viewport.js b/editor/js/Viewport.js index 085f384042d32e18cedee8de67f0513358b9d94b..0a41e7b12f2dde2043c63ec59304f55bfe90ad11 100644 --- a/editor/js/Viewport.js +++ b/editor/js/Viewport.js @@ -313,7 +313,7 @@ var Viewport = function ( editor ) { renderer.autoClear = false; renderer.autoUpdateScene = false; - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.GammaEncoding; renderer.setPixelRatio( window.devicePixelRatio ); renderer.setSize( container.dom.offsetWidth, container.dom.offsetHeight ); diff --git a/editor/js/libs/app.js b/editor/js/libs/app.js index 8f88b5c4660e7c19994daafe83363de6b6865c5f..f68ee880061edc93caf7d4cff0e7d742ddde75c6 100644 --- a/editor/js/libs/app.js +++ b/editor/js/libs/app.js @@ -21,7 +21,7 @@ var APP = { this.load = function ( json ) { renderer = new THREE.WebGLRenderer( { antialias: true } ); - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.GammaEncoding; renderer.setClearColor( 0x000000 ); renderer.setPixelRatio( window.devicePixelRatio ); diff --git a/editor/js/libs/tern-threejs/threejs.js b/editor/js/libs/tern-threejs/threejs.js index 376cde167f3b3e1dca3b4ff5f355c080fb7edd96..e82bc30fcb263c625560f1d427fe1113d5d93539 100644 --- a/editor/js/libs/tern-threejs/threejs.js +++ b/editor/js/libs/tern-threejs/threejs.js @@ -4661,10 +4661,6 @@ "!type": "bool", "!doc": "Defines whether the renderer should auto update objects. Default is true." }, - "gammaOutput": { - "!type": "bool", - "!doc": "Default is false. If set, then it expects that all textures and colors need to be outputted in premultiplied gamma." - }, "shadowMapEnabled": { "!type": "bool", "!doc": "Default is false. If set, use shadow maps in the scene." diff --git a/examples/js/pmrem/PMREMGenerator.js b/examples/js/pmrem/PMREMGenerator.js index 03541b1876f13164a4f8b95d343ad1e45e749ee8..93d8526a77bbba4614539f025d45a0b97c6e5881 100644 --- a/examples/js/pmrem/PMREMGenerator.js +++ b/examples/js/pmrem/PMREMGenerator.js @@ -261,7 +261,7 @@ THREE.PMREMGenerator = ( function () { var upSign = [ 1, 1, 1, 1, - 1, 1 ]; var forwardSign = [ 1, 1, - 1, - 1, - 1, 1 ]; - var gammaOutput = _renderer.gammaOutput; + var outputEncoding = _renderer.outputEncoding; var toneMapping = _renderer.toneMapping; var toneMappingExposure = _renderer.toneMappingExposure; var clearColor = _renderer.getClearColor(); @@ -269,7 +269,7 @@ THREE.PMREMGenerator = ( function () { _renderer.toneMapping = THREE.LinearToneMapping; _renderer.toneMappingExposure = 1.0; - _renderer.gammaOutput = false; + _renderer.outputEncoding = THREE.LinearEncoding; scene.scale.z *= - 1; var background = scene.background; @@ -314,7 +314,7 @@ THREE.PMREMGenerator = ( function () { _renderer.toneMapping = toneMapping; _renderer.toneMappingExposure = toneMappingExposure; - _renderer.gammaOutput = gammaOutput; + _renderer.outputEncoding = outputEncoding; _renderer.setClearColor( clearColor, clearAlpha ); scene.scale.z *= - 1; @@ -560,8 +560,8 @@ void main() { float theta = dTheta * float(dir * i); float cosTheta = cos(theta); // Rodrigues' axis-angle rotation - vec3 sampleDirection = vOutputDirection * cosTheta - + cross(axis, vOutputDirection) * sin(theta) + vec3 sampleDirection = vOutputDirection * cosTheta + + cross(axis, vOutputDirection) * sin(theta) + axis * dot(axis, vOutputDirection) * (1.0 - cosTheta); gl_FragColor.rgb += weights[i] * bilinearCubeUV(envMap, sampleDirection, mipInt); diff --git a/examples/jsm/nodes/core/NodeBuilder.d.ts b/examples/jsm/nodes/core/NodeBuilder.d.ts index 505d8a14fcfcab053bbc331e7f3ca07612220abb..c39b69c8fed14d897456ed6be2d0723b82d259b2 100644 --- a/examples/jsm/nodes/core/NodeBuilder.d.ts +++ b/examples/jsm/nodes/core/NodeBuilder.d.ts @@ -143,6 +143,6 @@ export class NodeBuilder { setShader( shader: string ): this; mergeDefines( defines: object ): object; mergeUniform( uniforms: object ): object; - getTextureEncodingFromMap( map: Texture, gammaOverrideLinear?: boolean ): TextureEncoding; + getTextureEncodingFromMap( map: Texture ): TextureEncoding; } diff --git a/examples/jsm/nodes/core/NodeBuilder.js b/examples/jsm/nodes/core/NodeBuilder.js index 2f2ac00e4e5a25dabbcc5d97e70a070a2847f7c0..fbb486a212b3f76517c4907b656808d5c8d492f4 100644 --- a/examples/jsm/nodes/core/NodeBuilder.js +++ b/examples/jsm/nodes/core/NodeBuilder.js @@ -949,9 +949,7 @@ NodeBuilder.prototype = { }, - getTextureEncodingFromMap: function ( map, gammaOverrideLinear ) { - - gammaOverrideLinear = gammaOverrideLinear !== undefined ? gammaOverrideLinear : this.context.gamma; + getTextureEncodingFromMap: function ( map ) { var encoding; @@ -970,8 +968,7 @@ NodeBuilder.prototype = { } - // add backwards compatibility for WebGLRenderer.gammaOutput parameter, should probably be removed at some point. - if ( encoding === LinearEncoding && gammaOverrideLinear ) { + if ( encoding === LinearEncoding && this.context.gamma ) { encoding = GammaEncoding; diff --git a/examples/jsm/pmrem/PMREMGenerator.js b/examples/jsm/pmrem/PMREMGenerator.js index d5cc2b32231a5ae0bde60f9be0b368c5d03eb079..6372bc43aa36388637f81bb6c5d8f345ec5da17c 100644 --- a/examples/jsm/pmrem/PMREMGenerator.js +++ b/examples/jsm/pmrem/PMREMGenerator.js @@ -287,7 +287,7 @@ var PMREMGenerator = ( function () { var upSign = [ 1, 1, 1, 1, - 1, 1 ]; var forwardSign = [ 1, 1, - 1, - 1, - 1, 1 ]; - var gammaOutput = _renderer.gammaOutput; + var outputEncoding = _renderer.outputEncoding; var toneMapping = _renderer.toneMapping; var toneMappingExposure = _renderer.toneMappingExposure; var clearColor = _renderer.getClearColor(); @@ -295,7 +295,7 @@ var PMREMGenerator = ( function () { _renderer.toneMapping = LinearToneMapping; _renderer.toneMappingExposure = 1.0; - _renderer.gammaOutput = false; + _renderer.outputEncoding = LinearEncoding; scene.scale.z *= - 1; var background = scene.background; @@ -340,7 +340,7 @@ var PMREMGenerator = ( function () { _renderer.toneMapping = toneMapping; _renderer.toneMappingExposure = toneMappingExposure; - _renderer.gammaOutput = gammaOutput; + _renderer.outputEncoding = outputEncoding; _renderer.setClearColor( clearColor, clearAlpha ); scene.scale.z *= - 1; @@ -586,8 +586,8 @@ void main() { float theta = dTheta * float(dir * i); float cosTheta = cos(theta); // Rodrigues' axis-angle rotation - vec3 sampleDirection = vOutputDirection * cosTheta - + cross(axis, vOutputDirection) * sin(theta) + vec3 sampleDirection = vOutputDirection * cosTheta + + cross(axis, vOutputDirection) * sin(theta) + axis * dot(axis, vOutputDirection) * (1.0 - cosTheta); gl_FragColor.rgb += weights[i] * bilinearCubeUV(envMap, sampleDirection, mipInt); diff --git a/examples/misc_exporter_collada.html b/examples/misc_exporter_collada.html index fde78ceb1e00e7fae5bd58e59ddb8e32c0e6e8e7..3b60aeb622056a21c664cf073fb289bd7210d477 100644 --- a/examples/misc_exporter_collada.html +++ b/examples/misc_exporter_collada.html @@ -73,7 +73,7 @@ renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setPixelRatio( window.devicePixelRatio ); renderer.setSize( canvasWidth, canvasHeight ); - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; container.appendChild( renderer.domElement ); // EVENTS diff --git a/examples/webaudio_orientation.html b/examples/webaudio_orientation.html index af28fa1422cbb310201853baab7a594be16f3e3c..3bebf91363f467d4172fe30d537f4b0f3b8327f9 100644 --- a/examples/webaudio_orientation.html +++ b/examples/webaudio_orientation.html @@ -144,8 +144,7 @@ renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setSize( window.innerWidth, window.innerHeight ); renderer.setPixelRatio( window.devicePixelRatio ); - renderer.gammaOutput = true; - renderer.gammaFactor = 2.2; + renderer.outputEncoding = THREE.sRGBEncoding; renderer.shadowMap.enabled = true; container.appendChild( renderer.domElement ); diff --git a/examples/webgl_animation_cloth.html b/examples/webgl_animation_cloth.html index 9e34ffc1c8d7c5fba14642db3caa1af6467fe8bc..43595f90e88f343051bcf8ef889519f201134879 100644 --- a/examples/webgl_animation_cloth.html +++ b/examples/webgl_animation_cloth.html @@ -562,7 +562,7 @@ container.appendChild( renderer.domElement ); - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; renderer.shadowMap.enabled = true; diff --git a/examples/webgl_animation_keyframes.html b/examples/webgl_animation_keyframes.html index 87b04f6ea001c57fc883547bb52e52746119a094..d1c6ac47c8a008572dd70344fcf9fc277316e120 100644 --- a/examples/webgl_animation_keyframes.html +++ b/examples/webgl_animation_keyframes.html @@ -49,8 +49,7 @@ renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setPixelRatio( window.devicePixelRatio ); renderer.setSize( window.innerWidth, window.innerHeight ); - renderer.gammaOutput = true; - renderer.gammaFactor = 2.2; + renderer.outputEncoding = THREE.sRGBEncoding; container.appendChild( renderer.domElement ); scene = new THREE.Scene(); diff --git a/examples/webgl_animation_multiple.html b/examples/webgl_animation_multiple.html index 1e2f424385a4ea4fe8528f0bf9bcd1dde21a1cce..08641043e4d8f65280d8743f64cb54159e314e81 100644 --- a/examples/webgl_animation_multiple.html +++ b/examples/webgl_animation_multiple.html @@ -320,8 +320,7 @@ renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setPixelRatio( window.devicePixelRatio ); renderer.setSize( window.innerWidth, window.innerHeight ); - renderer.gammaOutput = true; - renderer.gammaFactor = 2.2; + renderer.outputEncoding = THREE.sRGBEncoding; renderer.shadowMap.enabled = true; renderer.shadowMap.type = THREE.PCFSoftShadowMap; container.appendChild( renderer.domElement ); diff --git a/examples/webgl_animation_skinning_blending.html b/examples/webgl_animation_skinning_blending.html index d3753fb447cf3617824eff9e9af40996f8294fac..ddacdade841af36baeb2bf74b896c7a91f9c5277 100644 --- a/examples/webgl_animation_skinning_blending.html +++ b/examples/webgl_animation_skinning_blending.html @@ -137,8 +137,7 @@ renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setPixelRatio( window.devicePixelRatio ); renderer.setSize( window.innerWidth, window.innerHeight ); - renderer.gammaOutput = true; - renderer.gammaFactor = 2.2; + renderer.outputEncoding = THREE.sRGBEncoding; renderer.shadowMap.enabled = true; container.appendChild( renderer.domElement ); diff --git a/examples/webgl_animation_skinning_morph.html b/examples/webgl_animation_skinning_morph.html index 52c5d4220864c5e7a5e686765bbea20b8b3b05f9..e4fd2268b2538a37cf2178dfcad861be123b2d09 100644 --- a/examples/webgl_animation_skinning_morph.html +++ b/examples/webgl_animation_skinning_morph.html @@ -106,8 +106,7 @@ renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setPixelRatio( window.devicePixelRatio ); renderer.setSize( window.innerWidth, window.innerHeight ); - renderer.gammaOutput = true; - renderer.gammaFactor = 2.2; + renderer.outputEncoding = THREE.sRGBEncoding; container.appendChild( renderer.domElement ); window.addEventListener( 'resize', onWindowResize, false ); diff --git a/examples/webgl_buffergeometry.html b/examples/webgl_buffergeometry.html index 427f62f104e6472ef77b0def2d002a8f67979f9c..66b28149bc3861ca1de94fab5351cd3b49fa94de 100644 --- a/examples/webgl_buffergeometry.html +++ b/examples/webgl_buffergeometry.html @@ -156,7 +156,7 @@ renderer = new THREE.WebGLRenderer(); renderer.setPixelRatio( window.devicePixelRatio ); renderer.setSize( window.innerWidth, window.innerHeight ); - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; container.appendChild( renderer.domElement ); diff --git a/examples/webgl_buffergeometry_drawrange.html b/examples/webgl_buffergeometry_drawrange.html index b718a286331d990160103b0526ac7f6da0283cc3..30a73a5edd2e6f783e9d10f3dbf5c55546536f28 100644 --- a/examples/webgl_buffergeometry_drawrange.html +++ b/examples/webgl_buffergeometry_drawrange.html @@ -168,7 +168,7 @@ renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setPixelRatio( window.devicePixelRatio ); renderer.setSize( window.innerWidth, window.innerHeight ); - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; container.appendChild( renderer.domElement ); diff --git a/examples/webgl_buffergeometry_instancing_lambert.html b/examples/webgl_buffergeometry_instancing_lambert.html index c7d49ad0f3396d4f0da7a23245d704effb074ea2..e1be9e9421cd265f9495b7c426b7cc018d861040 100644 --- a/examples/webgl_buffergeometry_instancing_lambert.html +++ b/examples/webgl_buffergeometry_instancing_lambert.html @@ -35,7 +35,7 @@ import { Curves } from './jsm/curves/CurveExtras.js'; // this is a cut-and-paste of the depth shader -- modified to accommodate instancing for this app - var customDepthVertexShader = + var customDepthVertexShader = ` // instanced attribute vec3 instanceOffset; @@ -165,7 +165,7 @@ renderer.shadowMap.enabled = true; document.body.appendChild( renderer.domElement ); - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; scene = new THREE.Scene(); diff --git a/examples/webgl_buffergeometry_lines.html b/examples/webgl_buffergeometry_lines.html index eceacb6602da08920589358faf610d0520145078..ac23d7ea5207a4505b15025772923868f643f805 100644 --- a/examples/webgl_buffergeometry_lines.html +++ b/examples/webgl_buffergeometry_lines.html @@ -82,7 +82,7 @@ renderer = new THREE.WebGLRenderer(); renderer.setPixelRatio( window.devicePixelRatio ); renderer.setSize( window.innerWidth, window.innerHeight ); - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; container.appendChild( renderer.domElement ); diff --git a/examples/webgl_buffergeometry_lines_indexed.html b/examples/webgl_buffergeometry_lines_indexed.html index 43914b06573e0f0cee7a458a589ea17ca0e1de48..acefa62baaae4be93e5f323a95038dc1c5683563 100644 --- a/examples/webgl_buffergeometry_lines_indexed.html +++ b/examples/webgl_buffergeometry_lines_indexed.html @@ -190,7 +190,7 @@ renderer = new THREE.WebGLRenderer(); renderer.setPixelRatio( window.devicePixelRatio ); renderer.setSize( window.innerWidth, window.innerHeight ); - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; container.appendChild( renderer.domElement ); diff --git a/examples/webgl_buffergeometry_uint.html b/examples/webgl_buffergeometry_uint.html index d7a7959595de766ded1bb4c71e2324caa5666ba0..38d869259f8d11860a535ed832ab1e17f6e26d1d 100644 --- a/examples/webgl_buffergeometry_uint.html +++ b/examples/webgl_buffergeometry_uint.html @@ -157,7 +157,7 @@ renderer = new THREE.WebGLRenderer(); renderer.setPixelRatio( window.devicePixelRatio ); renderer.setSize( window.innerWidth, window.innerHeight ); - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; container.appendChild( renderer.domElement ); diff --git a/examples/webgl_geometry_teapot.html b/examples/webgl_geometry_teapot.html index e4bfe4f641087f7206abf86359f2b17fccfd33e8..a56642377ef581a3784f3c1e9ea2f439e12e3556 100644 --- a/examples/webgl_geometry_teapot.html +++ b/examples/webgl_geometry_teapot.html @@ -67,7 +67,7 @@ renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setPixelRatio( window.devicePixelRatio ); renderer.setSize( canvasWidth, canvasHeight ); - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; container.appendChild( renderer.domElement ); // EVENTS diff --git a/examples/webgl_lensflares.html b/examples/webgl_lensflares.html index fb58142d830830dde156005dec30afd761d2bd8e..73a3c7bd976d02eb12002482f13a06fd815e81e9 100644 --- a/examples/webgl_lensflares.html +++ b/examples/webgl_lensflares.html @@ -115,7 +115,7 @@ renderer = new THREE.WebGLRenderer( { antialias: true, alpha: true } ); renderer.setPixelRatio( window.devicePixelRatio ); renderer.setSize( window.innerWidth, window.innerHeight ); - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; container.appendChild( renderer.domElement ); // diff --git a/examples/webgl_lightningstrike.html b/examples/webgl_lightningstrike.html index 3242363215456ba61ae48da83256b60f3d2e7c2e..eb1f01ece271effbc93401ba640e6dd17c69f7d8 100644 --- a/examples/webgl_lightningstrike.html +++ b/examples/webgl_lightningstrike.html @@ -54,7 +54,7 @@ renderer = new THREE.WebGLRenderer(); renderer.setPixelRatio( window.devicePixelRatio ); renderer.setSize( window.innerWidth, window.innerHeight ); - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; container.appendChild( renderer.domElement ); diff --git a/examples/webgl_lightprobe.html b/examples/webgl_lightprobe.html index a2ae9830a8af838a54d05e8a6d6e99e66c48ce40..28caedbb2dc3f1dbc65d39ed1e41b9cc15578839 100644 --- a/examples/webgl_lightprobe.html +++ b/examples/webgl_lightprobe.html @@ -49,9 +49,7 @@ //renderer.toneMapping = LinearToneMapping; //renderer.toneMappingExposure = API.exposure; - // gamma - renderer.gammaOutput = true; - renderer.gammaFactor = 2.2; // approximate sRGB + renderer.outputEncoding = THREE.sRGBEncoding; // scene scene = new THREE.Scene(); diff --git a/examples/webgl_lightprobe_cubecamera.html b/examples/webgl_lightprobe_cubecamera.html index 0a1377e2067f88a29340e816115c516db45f66bb..2831f5bb7ce3b5d656ec46c99028cda38886acf8 100644 --- a/examples/webgl_lightprobe_cubecamera.html +++ b/examples/webgl_lightprobe_cubecamera.html @@ -32,10 +32,7 @@ renderer.setPixelRatio( window.devicePixelRatio ); renderer.setSize( window.innerWidth, window.innerHeight ); document.body.appendChild( renderer.domElement ); - - // gamma - renderer.gammaOutput = true; - renderer.gammaFactor = 2.2; // approximate sRGB + renderer.outputEncoding = THREE.sRGBEncoding; // scene scene = new THREE.Scene(); diff --git a/examples/webgl_lights_hemisphere.html b/examples/webgl_lights_hemisphere.html index 30b1e004986a014139dba075ebcb069aadb5bec1..a210bbd0531bbee89d6b8ab2af060d639d3e191a 100644 --- a/examples/webgl_lights_hemisphere.html +++ b/examples/webgl_lights_hemisphere.html @@ -190,7 +190,7 @@ renderer.setPixelRatio( window.devicePixelRatio ); renderer.setSize( window.innerWidth, window.innerHeight ); container.appendChild( renderer.domElement ); - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; renderer.shadowMap.enabled = true; // STATS diff --git a/examples/webgl_lights_physical.html b/examples/webgl_lights_physical.html index dd14a1f83d0b3344fc6a14bbef2a60bee3ba26fc..2b124060ea22c7bb3c80e0631a388915a5e25e96 100644 --- a/examples/webgl_lights_physical.html +++ b/examples/webgl_lights_physical.html @@ -218,7 +218,7 @@ renderer = new THREE.WebGLRenderer(); renderer.physicallyCorrectLights = true; - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; renderer.shadowMap.enabled = true; renderer.toneMapping = THREE.ReinhardToneMapping; renderer.setPixelRatio( window.devicePixelRatio ); diff --git a/examples/webgl_lights_pointlights2.html b/examples/webgl_lights_pointlights2.html index 6e09f449b0a5c350c5cca27dd95dbaf64e20e163..02910d5c00c3ef1ef2a2c1f0623aeed1ea03fcbe 100644 --- a/examples/webgl_lights_pointlights2.html +++ b/examples/webgl_lights_pointlights2.html @@ -134,7 +134,7 @@ renderer.setPixelRatio( window.devicePixelRatio ); renderer.setSize( window.innerWidth, window.innerHeight ); container.appendChild( renderer.domElement ); - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; // CONTROLS diff --git a/examples/webgl_lights_rectarealight.html b/examples/webgl_lights_rectarealight.html index 9d009ef81f84d3d7c5c728e00b5832202e0d05d7..227a75286e65f6d2d99302d4bcddc57b41ae6470 100644 --- a/examples/webgl_lights_rectarealight.html +++ b/examples/webgl_lights_rectarealight.html @@ -42,7 +42,7 @@ renderer.setSize( window.innerWidth, window.innerHeight ); renderer.shadowMap.enabled = true; renderer.shadowMap.type = THREE.PCFSoftShadowMap; - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; document.body.appendChild( renderer.domElement ); // Check for float-RT support diff --git a/examples/webgl_lights_spotlight.html b/examples/webgl_lights_spotlight.html index dd6bed4de0881f01033141aacb252276d40890db..c819a8e99a9c6505ae3877d06a6696f75c860393 100644 --- a/examples/webgl_lights_spotlight.html +++ b/examples/webgl_lights_spotlight.html @@ -34,7 +34,7 @@ document.body.appendChild( renderer.domElement ); renderer.shadowMap.enabled = true; renderer.shadowMap.type = THREE.PCFSoftShadowMap; - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; scene = new THREE.Scene(); diff --git a/examples/webgl_lights_spotlights.html b/examples/webgl_lights_spotlights.html index 2dd5abbe2fea38b0c250d2e950d6ee1aec00b188..13b2be05ac607de7861ee22f7ed639f036af4214 100644 --- a/examples/webgl_lights_spotlights.html +++ b/examples/webgl_lights_spotlights.html @@ -52,7 +52,7 @@ renderer.shadowMap.enabled = true; renderer.shadowMap.type = THREE.PCFSoftShadowMap; - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; camera.position.set( 46, 22, - 21 ); diff --git a/examples/webgl_lightshafts.html b/examples/webgl_lightshafts.html index e1bdce52d80db89cd3522044dd41d911d94b6777..927b38d3aa3e843ff2fd67ad1ebfcd8518bab2d2 100644 --- a/examples/webgl_lightshafts.html +++ b/examples/webgl_lightshafts.html @@ -181,8 +181,7 @@ renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setPixelRatio( window.devicePixelRatio ); renderer.setSize( window.innerWidth, window.innerHeight ); - renderer.gammaOutput = true; - renderer.gammaFactor = 2.2; + renderer.outputEncoding = THREE.sRGBEncoding; container.appendChild( renderer.domElement ); controls = new OrbitControls( camera, renderer.domElement ); diff --git a/examples/webgl_loader_3mf_materials.html b/examples/webgl_loader_3mf_materials.html index 9c9adc5c60766797d8e30f38e175d248746cae79..20fa6800d47b6bd4fa77460c702a02037d427d4e 100644 --- a/examples/webgl_loader_3mf_materials.html +++ b/examples/webgl_loader_3mf_materials.html @@ -100,8 +100,7 @@ renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setPixelRatio( window.devicePixelRatio ); renderer.setSize( window.innerWidth, window.innerHeight ); - renderer.gammaOutput = true; - renderer.gammaFactor = 2.2; + renderer.outputEncoding = THREE.sRGBEncoding; renderer.shadowMap.enabled = true; renderer.shadowMap.type = THREE.PCFSoftShadowMap; document.body.appendChild( renderer.domElement ); diff --git a/examples/webgl_loader_draco.html b/examples/webgl_loader_draco.html index 02ed4adf9f5a25cd0fe863679c1f7ab2a73b1a2d..91992ecbeb174af3c83a97587c6806730493c8b2 100644 --- a/examples/webgl_loader_draco.html +++ b/examples/webgl_loader_draco.html @@ -80,7 +80,7 @@ renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setPixelRatio( window.devicePixelRatio ); renderer.setSize( window.innerWidth, window.innerHeight ); - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; renderer.shadowMap.enabled = true; container.appendChild( renderer.domElement ); diff --git a/examples/webgl_loader_gltf.html b/examples/webgl_loader_gltf.html index 29ab5ac09e6ce459fa2393dc74a08946bc3945da..be5d42017fc731d514bd862d9b8ea1fcd0cb4cb7 100644 --- a/examples/webgl_loader_gltf.html +++ b/examples/webgl_loader_gltf.html @@ -83,7 +83,7 @@ renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setPixelRatio( window.devicePixelRatio ); renderer.setSize( window.innerWidth, window.innerHeight ); - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; container.appendChild( renderer.domElement ); controls = new OrbitControls( camera, renderer.domElement ); diff --git a/examples/webgl_loader_gltf_extensions.html b/examples/webgl_loader_gltf_extensions.html index b1d4b30c11767baab5ca72cd8ce0ef4c20e40ebe..ee3208630a00a4c2786da283f098bac4c8b5c7f0 100644 --- a/examples/webgl_loader_gltf_extensions.html +++ b/examples/webgl_loader_gltf_extensions.html @@ -144,7 +144,7 @@ renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setPixelRatio( window.devicePixelRatio ); renderer.setSize( window.innerWidth, window.innerHeight ); - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; renderer.physicallyCorrectLights = true; container.appendChild( renderer.domElement ); diff --git a/examples/webgl_loader_lwo.html b/examples/webgl_loader_lwo.html index f17bce68a3f37b5c6939642629ca32e2b3be3c7e..febb755b4a15be51dbb544717b5ec355b6a5474c 100644 --- a/examples/webgl_loader_lwo.html +++ b/examples/webgl_loader_lwo.html @@ -87,7 +87,7 @@ renderer.shadowMap.enabled = true; renderer.physicallyCorrectLights = true; renderer.gammaFactor = 1.18; - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; container.appendChild( renderer.domElement ); controls = new OrbitControls( camera, renderer.domElement ); diff --git a/examples/webgl_loader_md2.html b/examples/webgl_loader_md2.html index ca1525b509216a1f42d59c7898f03245ab30ed55..917806b825231cdfd3a346e840273ea9ed146597 100644 --- a/examples/webgl_loader_md2.html +++ b/examples/webgl_loader_md2.html @@ -115,7 +115,7 @@ // - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; renderer.shadowMap.enabled = true; // STATS diff --git a/examples/webgl_loader_md2_control.html b/examples/webgl_loader_md2_control.html index c1c46bedf633fd48504b079811002cb26c2fdd7c..2b6ffd488edf60af80a1052f136267a10ab1ec00 100644 --- a/examples/webgl_loader_md2_control.html +++ b/examples/webgl_loader_md2_control.html @@ -126,7 +126,7 @@ // - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; renderer.shadowMap.enabled = true; renderer.shadowMap.type = THREE.PCFSoftShadowMap; diff --git a/examples/webgl_loader_ply.html b/examples/webgl_loader_ply.html index 2056bc1bebaf08a4de83671a24793fd181870bbf..423c0ae4acc98ada9f726674bd1aaf5574379249 100644 --- a/examples/webgl_loader_ply.html +++ b/examples/webgl_loader_ply.html @@ -109,7 +109,7 @@ renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setPixelRatio( window.devicePixelRatio ); renderer.setSize( window.innerWidth, window.innerHeight ); - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; renderer.shadowMap.enabled = true; diff --git a/examples/webgl_loader_stl.html b/examples/webgl_loader_stl.html index 0823232cc2d05d46f8ba8f7f3e72cfca3d9053c9..958fef8ee50bd576f6cafc370ef7432f5c19c530 100644 --- a/examples/webgl_loader_stl.html +++ b/examples/webgl_loader_stl.html @@ -145,7 +145,7 @@ renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setPixelRatio( window.devicePixelRatio ); renderer.setSize( window.innerWidth, window.innerHeight ); - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; renderer.shadowMap.enabled = true; diff --git a/examples/webgl_loader_texture_basis.html b/examples/webgl_loader_texture_basis.html index a83785dad64bf4aa74bfeec3d627d04f5d3025bc..df852f30859afc175202488a62206a34c169636d 100644 --- a/examples/webgl_loader_texture_basis.html +++ b/examples/webgl_loader_texture_basis.html @@ -32,8 +32,7 @@ renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setPixelRatio( window.devicePixelRatio ); renderer.setSize( window.innerWidth, window.innerHeight ); - renderer.gammaOutput = true; - renderer.gammaFactor = 2.2; + renderer.outputEncoding = THREE.sRGBEncoding; document.body.appendChild( renderer.domElement ); camera = new THREE.PerspectiveCamera( 50, window.innerWidth / window.innerHeight, 1, 2000 ); diff --git a/examples/webgl_loader_texture_exr.html b/examples/webgl_loader_texture_exr.html index b5ca2b59ec61863d92b510008c0f19ff25cd1477..c208e122a1d2454ea5a96100a92243c1e97b9f15 100644 --- a/examples/webgl_loader_texture_exr.html +++ b/examples/webgl_loader_texture_exr.html @@ -39,7 +39,7 @@ renderer.toneMapping = THREE.ReinhardToneMapping; renderer.toneMappingExposure = params.exposure; - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; scene = new THREE.Scene(); diff --git a/examples/webgl_loader_texture_hdr.html b/examples/webgl_loader_texture_hdr.html index 5816aaff1cfdcffb5ad79297897e9e3ee67ec279..382ea2fd25c16836314c55c3f15b835eeb31c3de 100644 --- a/examples/webgl_loader_texture_hdr.html +++ b/examples/webgl_loader_texture_hdr.html @@ -39,7 +39,7 @@ renderer.toneMapping = THREE.ReinhardToneMapping; renderer.toneMappingExposure = params.exposure; - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; scene = new THREE.Scene(); diff --git a/examples/webgl_loader_texture_rgbm.html b/examples/webgl_loader_texture_rgbm.html index 02e059db5e8faffcf8f26026bf82a3c04e37461d..862bff96cddebb407d3b5525ed5a38dcefae9945 100644 --- a/examples/webgl_loader_texture_rgbm.html +++ b/examples/webgl_loader_texture_rgbm.html @@ -36,7 +36,7 @@ renderer.toneMapping = THREE.ReinhardToneMapping; renderer.toneMappingExposure = params.exposure; - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; scene = new THREE.Scene(); diff --git a/examples/webgl_loader_vrm.html b/examples/webgl_loader_vrm.html index 94d2b0762ca8d6e4422e13dd658810a5188b933b..0d1432a5aae2830554b475bda648bdb421018073 100644 --- a/examples/webgl_loader_vrm.html +++ b/examples/webgl_loader_vrm.html @@ -93,7 +93,7 @@ renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setPixelRatio( window.devicePixelRatio ); renderer.setSize( window.innerWidth, window.innerHeight ); - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; container.appendChild( renderer.domElement ); controls = new OrbitControls( camera, renderer.domElement ); diff --git a/examples/webgl_marchingcubes.html b/examples/webgl_marchingcubes.html index 57e4b8bc3bff044f18404eb04ee4f3e58fd20209..f06c0c2499d2ac52d404f6a5b3cc7cc0ca713cf6 100644 --- a/examples/webgl_marchingcubes.html +++ b/examples/webgl_marchingcubes.html @@ -92,7 +92,7 @@ // RENDERER renderer = new THREE.WebGLRenderer(); - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; renderer.setPixelRatio( window.devicePixelRatio ); renderer.setSize( window.innerWidth, window.innerHeight ); diff --git a/examples/webgl_materials_bumpmap.html b/examples/webgl_materials_bumpmap.html index 5fa7e9da7a54864b90319d37722222b03cf50e18..3137fb2dfe1bddfe7dbd746ad22d5a880a7690ec 100644 --- a/examples/webgl_materials_bumpmap.html +++ b/examples/webgl_materials_bumpmap.html @@ -102,7 +102,7 @@ container.appendChild( renderer.domElement ); renderer.shadowMap.enabled = true; - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; // diff --git a/examples/webgl_materials_bumpmap_skin.html b/examples/webgl_materials_bumpmap_skin.html index ef99e0b4dea15e6ad3ba278f8f5e93717078a3aa..b07e807dcb72843c009931c04bb901572d7a8755 100644 --- a/examples/webgl_materials_bumpmap_skin.html +++ b/examples/webgl_materials_bumpmap_skin.html @@ -83,7 +83,7 @@ renderer.setSize( window.innerWidth, window.innerHeight ); container.appendChild( renderer.domElement ); renderer.autoClear = false; - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; // diff --git a/examples/webgl_materials_car.html b/examples/webgl_materials_car.html index fbae4dcaa09c30b833767d9e1c00a42e47d3aed7..8c5ec52f23fa7a859052d9e301d1999438814645 100644 --- a/examples/webgl_materials_car.html +++ b/examples/webgl_materials_car.html @@ -102,7 +102,7 @@ renderer.setSize( window.innerWidth, window.innerHeight ); container.appendChild( renderer.domElement ); - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; renderer.toneMapping = THREE.ACESFilmicToneMapping; stats = new Stats(); diff --git a/examples/webgl_materials_displacementmap.html b/examples/webgl_materials_displacementmap.html index 2e60395984b3cacd5b6f973adcd65d484873221f..50328995755e627f11dadfae12a597c630b564c5 100644 --- a/examples/webgl_materials_displacementmap.html +++ b/examples/webgl_materials_displacementmap.html @@ -112,7 +112,7 @@ renderer.setPixelRatio( window.devicePixelRatio ); renderer.setSize( window.innerWidth, window.innerHeight ); container.appendChild( renderer.domElement ); - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; // diff --git a/examples/webgl_materials_envmaps.html b/examples/webgl_materials_envmaps.html index 7427281133e8987561b71782217da5d883b2118b..c2a6ba46b53ff07b4bb1c21921cb8a23c0b2733c 100644 --- a/examples/webgl_materials_envmaps.html +++ b/examples/webgl_materials_envmaps.html @@ -106,7 +106,7 @@ } ); cubeMaterial.envMap = textureCube; - + // Skybox cubeMesh = new THREE.Mesh( new THREE.BoxBufferGeometry( 100, 100, 100 ), cubeMaterial ); @@ -128,7 +128,7 @@ renderer.setSize( window.innerWidth, window.innerHeight ); document.body.appendChild( renderer.domElement ); - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; // diff --git a/examples/webgl_materials_envmaps_exr.html b/examples/webgl_materials_envmaps_exr.html index 370ebfa410de8d8d17f77655605e40aa9b6a38f4..0b9c13721760cf09470f317f9c350c957ebacc17 100644 --- a/examples/webgl_materials_envmaps_exr.html +++ b/examples/webgl_materials_envmaps_exr.html @@ -107,7 +107,7 @@ container.appendChild( renderer.domElement ); - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; stats = new Stats(); container.appendChild( stats.dom ); diff --git a/examples/webgl_materials_envmaps_hdr.html b/examples/webgl_materials_envmaps_hdr.html index 4371c199633722c58e7f7f760e8129e0a72fb774..e10172e5e8824a05743135b2f3f75f41ceb5837d 100644 --- a/examples/webgl_materials_envmaps_hdr.html +++ b/examples/webgl_materials_envmaps_hdr.html @@ -57,7 +57,7 @@ envScene.add(mainLight); var lightMaterial = new THREE.MeshLambertMaterial( { color: 0x000000, emissive: 0xffffff, emissiveIntensity: 10 } ); - + var light1 = new THREE.Mesh(geometry, lightMaterial); light1.position.set(-5, 2, 0); light1.scale.set(0.1, 1, 1); @@ -168,7 +168,7 @@ container.appendChild( renderer.domElement ); //renderer.toneMapping = ReinhardToneMapping; - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; stats = new Stats(); container.appendChild( stats.dom ); diff --git a/examples/webgl_materials_envmaps_hdr_nodes.html b/examples/webgl_materials_envmaps_hdr_nodes.html index a2e7e0f13761099c91e549e626274d4500c3b698..4a360f422b52ee87110db6eeef9d4efff3743c14 100644 --- a/examples/webgl_materials_envmaps_hdr_nodes.html +++ b/examples/webgl_materials_envmaps_hdr_nodes.html @@ -154,7 +154,7 @@ container.appendChild( renderer.domElement ); //renderer.toneMapping = THREE.ReinhardToneMapping; - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; stats = new Stats(); container.appendChild( stats.dom ); diff --git a/examples/webgl_materials_envmaps_pmrem_nodes.html b/examples/webgl_materials_envmaps_pmrem_nodes.html index 95a5159f2a66907281d2b68d7af9b37a8f64fe90..ed00f04cfcf8ab33ab95645537c71b44b5dfac95 100644 --- a/examples/webgl_materials_envmaps_pmrem_nodes.html +++ b/examples/webgl_materials_envmaps_pmrem_nodes.html @@ -142,7 +142,7 @@ container.appendChild( renderer.domElement ); //renderer.toneMapping = THREE.ReinhardToneMapping; - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; stats = new Stats(); container.appendChild( stats.dom ); diff --git a/examples/webgl_materials_lightmap.html b/examples/webgl_materials_lightmap.html index 8afbf2dc38d667e8c73cf061b823fed5d7f27afd..2c0b26189d18cee4873ecca71892285548381ad4 100644 --- a/examples/webgl_materials_lightmap.html +++ b/examples/webgl_materials_lightmap.html @@ -110,7 +110,7 @@ renderer.setPixelRatio( window.devicePixelRatio ); renderer.setSize( SCREEN_WIDTH, SCREEN_HEIGHT ); container.appendChild( renderer.domElement ); - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; // CONTROLS diff --git a/examples/webgl_materials_matcap.html b/examples/webgl_materials_matcap.html index ca420ff3719f908c9ed0300ab4f000688b76d811..4413c7a72a8811dbf44fe3604f664bca16edfa32 100644 --- a/examples/webgl_materials_matcap.html +++ b/examples/webgl_materials_matcap.html @@ -43,7 +43,7 @@ renderer.toneMapping = THREE.LinearToneMapping; renderer.toneMappingExposure = API.exposure; - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; // scene scene = new THREE.Scene(); diff --git a/examples/webgl_materials_nodes.html b/examples/webgl_materials_nodes.html index cdddd5b497f17c9bc80b5a09d17b9b0c6409ee61..23dbbbe25e0c2e63b8dcddce31b4e46000cb0c54 100644 --- a/examples/webgl_materials_nodes.html +++ b/examples/webgl_materials_nodes.html @@ -121,6 +121,7 @@ renderer.setPixelRatio( window.devicePixelRatio ); renderer.setSize( window.innerWidth, window.innerHeight ); renderer.uuid = THREE.Math.generateUUID(); // generate to library + renderer.outputEncoding = THREE.sRGBEncoding; container.appendChild( renderer.domElement ); scene = new THREE.Scene(); diff --git a/examples/webgl_materials_normalmap.html b/examples/webgl_materials_normalmap.html index 117df1b52a8814b64f56429bfd7ed6048533bb53..63966b97b71c9fd00ade1e652aecd44ff5747416 100644 --- a/examples/webgl_materials_normalmap.html +++ b/examples/webgl_materials_normalmap.html @@ -35,6 +35,7 @@ import { BleachBypassShader } from './jsm/shaders/BleachBypassShader.js'; import { ColorCorrectionShader } from './jsm/shaders/ColorCorrectionShader.js'; import { FXAAShader } from './jsm/shaders/FXAAShader.js'; + import { GammaCorrectionShader } from './jsm/shaders/GammaCorrectionShader.js'; var container, stats, loader; @@ -113,7 +114,6 @@ renderer = new THREE.WebGLRenderer(); renderer.setSize( window.innerWidth, window.innerHeight ); container.appendChild( renderer.domElement ); - renderer.gammaOutput = true; // @@ -130,10 +130,11 @@ var effectBleach = new ShaderPass( BleachBypassShader ); var effectColor = new ShaderPass( ColorCorrectionShader ); effectFXAA = new ShaderPass( FXAAShader ); + var gammaCorrection = new ShaderPass( GammaCorrectionShader ); effectFXAA.uniforms[ 'resolution' ].value.set( 1 / window.innerWidth, 1 / window.innerHeight ); - effectBleach.uniforms[ 'opacity' ].value = 0.4; + effectBleach.uniforms[ 'opacity' ].value = 0.2; effectColor.uniforms[ 'powRGB' ].value.set( 1.4, 1.45, 1.45 ); effectColor.uniforms[ 'mulRGB' ].value.set( 1.1, 1.1, 1.1 ); @@ -144,6 +145,7 @@ composer.addPass( effectFXAA ); composer.addPass( effectBleach ); composer.addPass( effectColor ); + composer.addPass( gammaCorrection ); // EVENTS diff --git a/examples/webgl_materials_normalmap_object_space.html b/examples/webgl_materials_normalmap_object_space.html index 33f82eb47c4d1b6c6156b8391b18b7b639db4ae2..39ca258393d4b7f2df3310014f9b063df2b296ed 100644 --- a/examples/webgl_materials_normalmap_object_space.html +++ b/examples/webgl_materials_normalmap_object_space.html @@ -33,7 +33,7 @@ renderer.setSize( window.innerWidth, window.innerHeight ); document.body.appendChild( renderer.domElement ); - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; // scene scene = new THREE.Scene(); diff --git a/examples/webgl_materials_parallaxmap.html b/examples/webgl_materials_parallaxmap.html index e4c67bc368703016e4f52863529955f3f8a85700..b131c5a5257e8907660f31748fb7b916907d19fc 100644 --- a/examples/webgl_materials_parallaxmap.html +++ b/examples/webgl_materials_parallaxmap.html @@ -82,7 +82,7 @@ renderer.setPixelRatio( window.devicePixelRatio ); renderer.setSize( window.innerWidth, window.innerHeight ); container.appendChild( renderer.domElement ); - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; // diff --git a/examples/webgl_materials_physical_clearcoat.html b/examples/webgl_materials_physical_clearcoat.html index d3f39a5ebd38b52bad0b56a7bd7901b700e946f7..75be8c1d6da553b4ca103a270cd15330d0bf67ac 100644 --- a/examples/webgl_materials_physical_clearcoat.html +++ b/examples/webgl_materials_physical_clearcoat.html @@ -179,7 +179,7 @@ // - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; // diff --git a/examples/webgl_materials_physical_transparency.html b/examples/webgl_materials_physical_transparency.html index 99cf73d4a181de8f067cb19ada2712dd4dbf13b8..e7d6533dd71cd83c18c50bee39453a574ea4b88f 100644 --- a/examples/webgl_materials_physical_transparency.html +++ b/examples/webgl_materials_physical_transparency.html @@ -61,7 +61,7 @@ renderer.toneMapping = THREE.ACESFilmicToneMapping; renderer.toneMappingExposure = params.exposure; - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; scene = new THREE.Scene(); scene.background = hdrCubeMap; diff --git a/examples/webgl_materials_reflectivity.html b/examples/webgl_materials_reflectivity.html index 491362e4c4c2322e8b3a90ab613bdb02d9f29623..5b5921d76c153fb25ba7f3b104555a5d0296bda4 100644 --- a/examples/webgl_materials_reflectivity.html +++ b/examples/webgl_materials_reflectivity.html @@ -155,7 +155,7 @@ renderer.shadowMap.enabled = true; container.appendChild( renderer.domElement ); - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; stats = new Stats(); container.appendChild( stats.dom ); diff --git a/examples/webgl_materials_standard.html b/examples/webgl_materials_standard.html index 61b7c2059946d0b66e8d9c8f232cde0e974e9473..67b8eb3fce4fe5d618682bfd6d11fb611fd1933e 100644 --- a/examples/webgl_materials_standard.html +++ b/examples/webgl_materials_standard.html @@ -43,7 +43,7 @@ renderer.setSize( window.innerWidth, window.innerHeight ); container.appendChild( renderer.domElement ); - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; renderer.toneMapping = THREE.ReinhardToneMapping; renderer.toneMappingExposure = 3; diff --git a/examples/webgl_materials_translucency.html b/examples/webgl_materials_translucency.html index f25ca534978cd88009d1e730b990c0fd4171cb2e..3c4e4d2fc227e841d0d13d78e103563ed681b4d8 100644 --- a/examples/webgl_materials_translucency.html +++ b/examples/webgl_materials_translucency.html @@ -67,7 +67,7 @@ renderer.setPixelRatio( window.devicePixelRatio ); renderer.setSize( window.innerWidth, window.innerHeight ); container.appendChild( renderer.domElement ); - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; // diff --git a/examples/webgl_materials_variations_basic.html b/examples/webgl_materials_variations_basic.html index f015b309ca6a5b705ba03a551d81ca1e21806382..456c71ceb4cb07357d3f95721efa2cbfb9aaaa31 100644 --- a/examples/webgl_materials_variations_basic.html +++ b/examples/webgl_materials_variations_basic.html @@ -146,7 +146,7 @@ renderer.setPixelRatio( window.devicePixelRatio ); renderer.setSize( window.innerWidth, window.innerHeight ); container.appendChild( renderer.domElement ); - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; // diff --git a/examples/webgl_materials_variations_lambert.html b/examples/webgl_materials_variations_lambert.html index 1393a70799fbbe09d066226eab70253cf341b2d2..cfdb0c9156e4516e3c0097c8cc9b108f5222a8ad 100644 --- a/examples/webgl_materials_variations_lambert.html +++ b/examples/webgl_materials_variations_lambert.html @@ -146,7 +146,7 @@ renderer.setPixelRatio( window.devicePixelRatio ); renderer.setSize( window.innerWidth, window.innerHeight ); container.appendChild( renderer.domElement ); - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; // diff --git a/examples/webgl_materials_variations_phong.html b/examples/webgl_materials_variations_phong.html index 5d495194ad544ea8ac8cb1f3a9b5e019c34a5636..eccd06c78c0822afd9b5ca0b91cc5394e6b58511 100644 --- a/examples/webgl_materials_variations_phong.html +++ b/examples/webgl_materials_variations_phong.html @@ -153,7 +153,7 @@ renderer.setPixelRatio( window.devicePixelRatio ); renderer.setSize( window.innerWidth, window.innerHeight ); container.appendChild( renderer.domElement ); - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; // diff --git a/examples/webgl_materials_variations_physical.html b/examples/webgl_materials_variations_physical.html index 0fd1c87d835ffc778342fa163122863a3dd60e54..31b899fc47e40b8fe534bf4bc43a773e32b47e39 100644 --- a/examples/webgl_materials_variations_physical.html +++ b/examples/webgl_materials_variations_physical.html @@ -159,7 +159,7 @@ renderer.setSize( window.innerWidth, window.innerHeight ); container.appendChild( renderer.domElement ); - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; renderer.toneMapping = THREE.Uncharted2ToneMapping; renderer.toneMappingExposure = 0.75; diff --git a/examples/webgl_materials_variations_standard.html b/examples/webgl_materials_variations_standard.html index 58207c8bb7e6ed655f0ca7676b07da25d6d09603..879c9e35857ea33ad4df4419e12c0e0e5444d2e8 100644 --- a/examples/webgl_materials_variations_standard.html +++ b/examples/webgl_materials_variations_standard.html @@ -164,7 +164,7 @@ renderer.setSize( window.innerWidth, window.innerHeight ); container.appendChild( renderer.domElement ); - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; renderer.toneMapping = THREE.Uncharted2ToneMapping; renderer.toneMappingExposure = 0.75; diff --git a/examples/webgl_materials_variations_toon.html b/examples/webgl_materials_variations_toon.html index 28fa11a489e0fe54a7d631ba56564a86f62dbd00..9624f16e42bbd101f6df7e796450dab74817d715 100644 --- a/examples/webgl_materials_variations_toon.html +++ b/examples/webgl_materials_variations_toon.html @@ -152,7 +152,7 @@ renderer.setPixelRatio( window.devicePixelRatio ); renderer.setSize( window.innerWidth, window.innerHeight ); container.appendChild( renderer.domElement ); - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; effect = new OutlineEffect( renderer ); diff --git a/examples/webgl_morphtargets_horse.html b/examples/webgl_morphtargets_horse.html index 06995d5e99757e6f2e8b02fc995643fcc7a8e0cd..36b2872ace4622d38fde99fa2cb3a5c22c69ef08 100644 --- a/examples/webgl_morphtargets_horse.html +++ b/examples/webgl_morphtargets_horse.html @@ -80,8 +80,7 @@ renderer.setPixelRatio( window.devicePixelRatio ); renderer.setSize( window.innerWidth, window.innerHeight ); - renderer.gammaOutput = true; - renderer.gammaFactor = 2.2; + renderer.outputEncoding = THREE.sRGBEncoding; container.appendChild( renderer.domElement ); diff --git a/examples/webgl_performance_doublesided.html b/examples/webgl_performance_doublesided.html index 573d6e2b1a7849d14541606d2318b48d9ffd3d19..a29c51518e9cb9c04e48133081ebd055ca3da104 100644 --- a/examples/webgl_performance_doublesided.html +++ b/examples/webgl_performance_doublesided.html @@ -93,7 +93,7 @@ renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setPixelRatio( window.devicePixelRatio ); renderer.setSize( SCREEN_WIDTH, SCREEN_HEIGHT ); - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; container.appendChild( renderer.domElement ); diff --git a/examples/webgl_postprocessing_advanced.html b/examples/webgl_postprocessing_advanced.html index 0ea656fabd9f7d230003ed1290c2af47f8a47afe..e35207d37f036d72f1b6099d9b068568ac0388ab 100644 --- a/examples/webgl_postprocessing_advanced.html +++ b/examples/webgl_postprocessing_advanced.html @@ -36,6 +36,7 @@ import { VerticalBlurShader } from './jsm/shaders/VerticalBlurShader.js'; import { SepiaShader } from './jsm/shaders/SepiaShader.js'; import { VignetteShader } from './jsm/shaders/VignetteShader.js'; + import { GammaCorrectionShader } from './jsm/shaders/GammaCorrectionShader.js'; import { GLTFLoader } from './jsm/loaders/GLTFLoader.js'; @@ -118,7 +119,6 @@ renderer.setPixelRatio( window.devicePixelRatio ); renderer.setSize( width, height ); renderer.autoClear = false; - renderer.gammaOutput = true; // @@ -139,6 +139,7 @@ var effectBleach = new ShaderPass( shaderBleach ); var effectSepia = new ShaderPass( shaderSepia ); var effectVignette = new ShaderPass( shaderVignette ); + var gammaCorrection = new ShaderPass( GammaCorrectionShader ); // var effectCopy = new ShaderPass( shaderCopy ); effectBleach.uniforms[ "opacity" ].value = 0.95; @@ -206,9 +207,11 @@ composer1 = new EffectComposer( renderer, new THREE.WebGLRenderTarget( rtWidth, rtHeight, rtParameters ) ); composer1.addPass( renderScene ); + composer1.addPass( gammaCorrection ); //composer1.addPass( renderMask ); composer1.addPass( effectFilmBW ); //composer1.addPass( clearMask ); + composer1.addPass( effectVignette ); // @@ -216,6 +219,7 @@ composer2 = new EffectComposer( renderer, new THREE.WebGLRenderTarget( rtWidth, rtHeight, rtParameters ) ); composer2.addPass( renderScene ); + composer2.addPass( gammaCorrection ); composer2.addPass( effectDotScreen ); composer2.addPass( renderMask ); composer2.addPass( effectColorify1 ); @@ -230,6 +234,7 @@ composer3 = new EffectComposer( renderer, new THREE.WebGLRenderTarget( rtWidth, rtHeight, rtParameters ) ); composer3.addPass( renderScene ); + composer3.addPass( gammaCorrection ); //composer3.addPass( renderMask ); composer3.addPass( effectSepia ); composer3.addPass( effectFilm ); @@ -241,6 +246,7 @@ composer4 = new EffectComposer( renderer, new THREE.WebGLRenderTarget( rtWidth, rtHeight, rtParameters ) ); composer4.addPass( renderScene ); + composer4.addPass( gammaCorrection ); //composer4.addPass( renderMask ); composer4.addPass( effectBloom ); composer4.addPass( effectFilm ); diff --git a/examples/webgl_shaders_tonemapping.html b/examples/webgl_shaders_tonemapping.html index 48e9d5c8a629fa5d633f15ccf37a28b98d016c7d..ee34837489c0c8b249e2a6149463fc6adf4e11a9 100644 --- a/examples/webgl_shaders_tonemapping.html +++ b/examples/webgl_shaders_tonemapping.html @@ -324,7 +324,6 @@ renderer.setPixelRatio( window.devicePixelRatio ); renderer.setSize( window.innerWidth, window.innerHeight ); renderer.autoClear = false; - renderer.gammaOutput = false; container.appendChild( renderer.domElement ); diff --git a/examples/webgl_shading_physical.html b/examples/webgl_shading_physical.html index 91c31784162b60f411dc752b65af5c063ed67d0e..66038942ee1a2ef653188684a66d46fe05c73ccc 100644 --- a/examples/webgl_shading_physical.html +++ b/examples/webgl_shading_physical.html @@ -236,7 +236,7 @@ renderer.shadowMap.enabled = true; renderer.shadowMap.type = THREE.PCFSoftShadowMap; - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; // diff --git a/examples/webgl_shadowmap.html b/examples/webgl_shadowmap.html index c3478e4d6048848301f7ec8b4caa70af2f6787ce..1f1b3d15beab7316e387a9a712cd5702ebb6033c 100644 --- a/examples/webgl_shadowmap.html +++ b/examples/webgl_shadowmap.html @@ -94,8 +94,7 @@ renderer.setSize( SCREEN_WIDTH, SCREEN_HEIGHT ); container.appendChild( renderer.domElement ); - renderer.gammaOutput = true; - renderer.gammaFactor = 2.2; + renderer.outputEncoding = THREE.sRGBEncoding; renderer.autoClear = false; // diff --git a/examples/webgl_shadowmap_pcss.html b/examples/webgl_shadowmap_pcss.html index caa8f741de40ed31c78df983bd02ca4381574f2f..5ebfe462f15c58772e93a874c15f484c1d9fa70b 100644 --- a/examples/webgl_shadowmap_pcss.html +++ b/examples/webgl_shadowmap_pcss.html @@ -238,7 +238,7 @@ container.appendChild( renderer.domElement ); - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; renderer.shadowMap.enabled = true; // controls diff --git a/examples/webgl_shadowmap_performance.html b/examples/webgl_shadowmap_performance.html index 8acc6bc96b9eb2af80bebe04fd192bfd18fe82d2..e7fe642f4d97710f8a5977b85d08c3529ee11cf7 100644 --- a/examples/webgl_shadowmap_performance.html +++ b/examples/webgl_shadowmap_performance.html @@ -90,8 +90,7 @@ renderer.setSize( SCREEN_WIDTH, SCREEN_HEIGHT ); container.appendChild( renderer.domElement ); - renderer.gammaOutput = true; - renderer.gammaFactor = 2.2; + renderer.outputEncoding = THREE.sRGBEncoding; renderer.autoClear = false; // diff --git a/examples/webgl_tonemapping.html b/examples/webgl_tonemapping.html index 7850673bbc6f50da7658615c1472fe83af0f3fa7..1065533a0f0f1c0d48ac7bb7fa6b498a2a2c4548 100644 --- a/examples/webgl_tonemapping.html +++ b/examples/webgl_tonemapping.html @@ -164,7 +164,7 @@ renderer.shadowMap.enabled = true; container.appendChild( renderer.domElement ); - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; composer = new EffectComposer( renderer ); composer.setSize( window.innerWidth, window.innerHeight ); diff --git a/examples/webxr_vr_dragging.html b/examples/webxr_vr_dragging.html index aecf377835463cd365daacc15f5ea3aaba929566..72a454a2fb20af6a8b6e838e1c305571adf0f29c 100644 --- a/examples/webxr_vr_dragging.html +++ b/examples/webxr_vr_dragging.html @@ -114,7 +114,7 @@ renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setPixelRatio( window.devicePixelRatio ); renderer.setSize( window.innerWidth, window.innerHeight ); - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; renderer.shadowMap.enabled = true; renderer.xr.enabled = true; container.appendChild( renderer.domElement ); diff --git a/examples/webxr_vr_paint.html b/examples/webxr_vr_paint.html index 6afa49b38313a5c8b91da3a6aa98e2a3ab582806..b80e2e0a2a0429ef81dfd4e9d23aac4203a219e5 100644 --- a/examples/webxr_vr_paint.html +++ b/examples/webxr_vr_paint.html @@ -91,7 +91,7 @@ renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setPixelRatio( window.devicePixelRatio ); renderer.setSize( window.innerWidth, window.innerHeight ); - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; renderer.xr.enabled = true; container.appendChild( renderer.domElement ); diff --git a/examples/webxr_vr_sculpt.html b/examples/webxr_vr_sculpt.html index 96ecc072fc49b28271393753ec72df0301b78198..80ff27ed9dabc77be4f0b60dfe436f014159f2b6 100644 --- a/examples/webxr_vr_sculpt.html +++ b/examples/webxr_vr_sculpt.html @@ -84,7 +84,7 @@ renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setPixelRatio( window.devicePixelRatio ); renderer.setSize( window.innerWidth, window.innerHeight ); - renderer.gammaOutput = true; + renderer.outputEncoding = THREE.sRGBEncoding; renderer.xr.enabled = true; container.appendChild( renderer.domElement ); diff --git a/src/Three.Legacy.js b/src/Three.Legacy.js index 8501cf36a955ddf23b71854abb71b57ed8bb798b..5110e36cb907e88ce1b4518fd50ef9f9b2664ae5 100644 --- a/src/Three.Legacy.js +++ b/src/Three.Legacy.js @@ -7,6 +7,8 @@ import { AudioAnalyser } from './audio/AudioAnalyser.js'; import { PerspectiveCamera } from './cameras/PerspectiveCamera.js'; import { FlatShading, + GammaEncoding, + LinearEncoding, StaticDrawUsage, DynamicDrawUsage, TrianglesDrawMode @@ -1728,6 +1730,20 @@ Object.defineProperties( WebGLRenderer.prototype, { console.warn( 'THREE.WebGLRenderer: .gammaInput has been removed. Please define the correct color spaces for textures via Texture.encoding instead.' ); + } + }, + gammaOutput: { + get: function () { + + console.warn( 'THREE.WebGLRenderer: .gammaOutput has been removed. Please use WebGLRenderer.outputEncoding instead.' ); + return ( this.outputEncoding === GammaEncoding ) ? true : false; + + }, + set: function ( value ) { + + console.warn( 'THREE.WebGLRenderer: .gammaOutput has been removed. Please use WebGLRenderer.outputEncoding instead.' ); + this.outputEncoding = ( value === true ) ? GammaEncoding : LinearEncoding; + } } diff --git a/src/renderers/WebGLRenderer.d.ts b/src/renderers/WebGLRenderer.d.ts index 809ca85ef77355d1767f3832497e242d43fc6487..cae44a328910769397f80064dad1891cfd5c12c1 100644 --- a/src/renderers/WebGLRenderer.d.ts +++ b/src/renderers/WebGLRenderer.d.ts @@ -14,7 +14,7 @@ import { WebGLRenderTarget } from './WebGLRenderTarget'; import { Object3D } from './../core/Object3D'; import { Material } from './../materials/Material'; import { Fog } from './../scenes/Fog'; -import { ToneMapping, ShadowMapType, CullFace } from '../constants'; +import { ToneMapping, ShadowMapType, CullFace, TextureEncoding } from '../constants'; import { WebXRManager } from '../renderers/webxr/WebXRManager'; import { RenderTarget } from './webgl/WebGLRenderLists'; import { Geometry } from './../core/Geometry'; @@ -156,9 +156,9 @@ export class WebGLRenderer implements Renderer { extensions: WebGLExtensions; /** - * Default is false. + * Default is LinearEncoding. */ - gammaOutput: boolean; + outputEncoding: TextureEncoding; physicallyCorrectLights: boolean; toneMapping: ToneMapping; diff --git a/src/renderers/WebGLRenderer.js b/src/renderers/WebGLRenderer.js index 737eb3c45e9f6c0f86755ac441822f325593b6b0..ecab1ba497ce92591868a81c347b7b9adb93af3b 100644 --- a/src/renderers/WebGLRenderer.js +++ b/src/renderers/WebGLRenderer.js @@ -11,6 +11,7 @@ import { HalfFloatType, FloatType, UnsignedByteType, + LinearEncoding, LinearToneMapping, BackSide } from '../constants.js'; @@ -100,7 +101,7 @@ function WebGLRenderer( parameters ) { // physically based shading this.gammaFactor = 2.0; // for backwards compatibility - this.gammaOutput = false; + this.outputEncoding = LinearEncoding; // physical lights @@ -1539,6 +1540,7 @@ function WebGLRenderer( parameters ) { program = programCache.acquireProgram( material, materialProperties.shader, parameters, programCacheKey ); materialProperties.program = program; + materialProperties.outputEncoding = _this.outputEncoding; material.program = program; } @@ -1672,6 +1674,10 @@ function WebGLRenderer( parameters ) { material.needsUpdate = true; + } else if ( materialProperties.outputEncoding !== _this.outputEncoding ) { + + material.needsUpdate = true; + } } diff --git a/src/renderers/webgl/WebGLPrograms.js b/src/renderers/webgl/WebGLPrograms.js index 0ee0113659ce1f4bb2e0afa094814b2fb35ef11f..4394fe5f4f9cd9f094333a50848dbd52bd0ba8ce 100644 --- a/src/renderers/webgl/WebGLPrograms.js +++ b/src/renderers/webgl/WebGLPrograms.js @@ -2,7 +2,7 @@ * @author mrdoob / http://mrdoob.com/ */ -import { BackSide, DoubleSide, CubeUVRefractionMapping, CubeUVReflectionMapping, GammaEncoding, LinearEncoding, ObjectSpaceNormalMap, TangentSpaceNormalMap, NoToneMapping } from '../../constants.js'; +import { BackSide, DoubleSide, CubeUVRefractionMapping, CubeUVReflectionMapping, LinearEncoding, ObjectSpaceNormalMap, TangentSpaceNormalMap, NoToneMapping } from '../../constants.js'; import { WebGLProgram } from './WebGLProgram.js'; function WebGLPrograms( renderer, extensions, capabilities ) { @@ -87,7 +87,7 @@ function WebGLPrograms( renderer, extensions, capabilities ) { } - function getTextureEncodingFromMap( map, gammaOverrideLinear ) { + function getTextureEncodingFromMap( map ) { var encoding; @@ -106,13 +106,6 @@ function WebGLPrograms( renderer, extensions, capabilities ) { } - // add backwards compatibility for WebGLRenderer.gammaInput/gammaOutput parameter, should probably be removed at some point. - if ( encoding === LinearEncoding && gammaOverrideLinear ) { - - encoding = GammaEncoding; - - } - return encoding; } @@ -153,7 +146,7 @@ function WebGLPrograms( renderer, extensions, capabilities ) { supportsVertexTextures: vertexTextures, numMultiviewViews: numMultiviewViews, - outputEncoding: getTextureEncodingFromMap( ( ! currentRenderTarget ) ? null : currentRenderTarget.texture, renderer.gammaOutput ), + outputEncoding: ( currentRenderTarget !== null ) ? getTextureEncodingFromMap( currentRenderTarget.texture ) : renderer.outputEncoding, map: !! material.map, mapEncoding: getTextureEncodingFromMap( material.map ), matcap: !! material.matcap, @@ -276,7 +269,7 @@ function WebGLPrograms( renderer, extensions, capabilities ) { array.push( material.onBeforeCompile.toString() ); - array.push( renderer.gammaOutput ); + array.push( renderer.outputEncoding ); array.push( renderer.gammaFactor );