Skip to content

Commit e61e7c0

Browse files
committed
Merge pull request #15277 from FishOrBear/ACESFilmToneMapping
Add ACES Filmic ToneMapping
2 parents ecde738 + dfd536f commit e61e7c0

File tree

4 files changed

+17
-2
lines changed

4 files changed

+17
-2
lines changed

examples/webgl_tonemapping.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,8 @@
7373
Linear: THREE.LinearToneMapping,
7474
Reinhard: THREE.ReinhardToneMapping,
7575
Uncharted2: THREE.Uncharted2ToneMapping,
76-
Cineon: THREE.CineonToneMapping
76+
Cineon: THREE.CineonToneMapping,
77+
ACESFilmic: THREE.ACESFilmicToneMapping
7778
};
7879

7980
var camera, scene, renderer, group;

src/constants.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ export var LinearToneMapping = 1;
5555
export var ReinhardToneMapping = 2;
5656
export var Uncharted2ToneMapping = 3;
5757
export var CineonToneMapping = 4;
58+
export var ACESFilmicToneMapping = 5;
59+
5860
export var UVMapping = 300;
5961
export var CubeReflectionMapping = 301;
6062
export var CubeRefractionMapping = 302;

src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,5 +39,13 @@ vec3 OptimizedCineonToneMapping( vec3 color ) {
3939
color = max( vec3( 0.0 ), color - 0.004 );
4040
return pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );
4141
42+
}
43+
44+
// source: https://knarkowicz.wordpress.com/2016/01/06/aces-filmic-tone-mapping-curve/
45+
vec3 ACESFilmicToneMapping( vec3 color ) {
46+
47+
color *= toneMappingExposure;
48+
return saturate( ( color * ( 2.51 * color + 0.03 ) ) / ( color * ( 2.43 * color + 0.59 ) + 0.14 ) );
49+
4250
}
4351
`;

src/renderers/webgl/WebGLProgram.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import { WebGLUniforms } from './WebGLUniforms.js';
66
import { WebGLShader } from './WebGLShader.js';
77
import { ShaderChunk } from '../shaders/ShaderChunk.js';
8-
import { NoToneMapping, AddOperation, MixOperation, MultiplyOperation, EquirectangularRefractionMapping, CubeRefractionMapping, SphericalReflectionMapping, EquirectangularReflectionMapping, CubeUVRefractionMapping, CubeUVReflectionMapping, CubeReflectionMapping, PCFSoftShadowMap, PCFShadowMap, CineonToneMapping, Uncharted2ToneMapping, ReinhardToneMapping, LinearToneMapping, GammaEncoding, RGBDEncoding, RGBM16Encoding, RGBM7Encoding, RGBEEncoding, sRGBEncoding, LinearEncoding } from '../../constants.js';
8+
import { NoToneMapping, AddOperation, MixOperation, MultiplyOperation, EquirectangularRefractionMapping, CubeRefractionMapping, SphericalReflectionMapping, EquirectangularReflectionMapping, CubeUVRefractionMapping, CubeUVReflectionMapping, CubeReflectionMapping, PCFSoftShadowMap, PCFShadowMap, ACESFilmicToneMapping, CineonToneMapping, Uncharted2ToneMapping, ReinhardToneMapping, LinearToneMapping, GammaEncoding, RGBDEncoding, RGBM16Encoding, RGBM7Encoding, RGBEEncoding, sRGBEncoding, LinearEncoding } from '../../constants.js';
99

1010
var programIdCount = 0;
1111

@@ -70,6 +70,10 @@ function getToneMappingFunction( functionName, toneMapping ) {
7070
toneMappingName = 'OptimizedCineon';
7171
break;
7272

73+
case ACESFilmicToneMapping:
74+
toneMappingName = 'ACESFilmic';
75+
break;
76+
7377
default:
7478
throw new Error( 'unsupported toneMapping: ' + toneMapping );
7579

0 commit comments

Comments
 (0)