Skip to content

Commit

Permalink
WebGLRenderer: Use inline tone mapping only when rendering to screen.
Browse files Browse the repository at this point in the history
  • Loading branch information
Mugen87 committed Jul 4, 2023
1 parent 8832496 commit 2be58c7
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 5 deletions.
4 changes: 2 additions & 2 deletions examples/jsm/postprocessing/OutputPass.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {
ShaderMaterial,
RawShaderMaterial,
UniformsUtils,
NoToneMapping,
LinearToneMapping,
Expand All @@ -25,7 +25,7 @@ class OutputPass extends Pass {

this.uniforms = UniformsUtils.clone( shader.uniforms );

this.material = new ShaderMaterial( {
this.material = new RawShaderMaterial( {
uniforms: this.uniforms,
vertexShader: shader.vertexShader,
fragmentShader: shader.fragmentShader
Expand Down
15 changes: 14 additions & 1 deletion examples/jsm/shaders/OutputShader.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
import {
ShaderChunk
} from 'three';

const OutputShader = {

uniforms: {
Expand All @@ -8,6 +12,13 @@ const OutputShader = {
},

vertexShader: /* glsl */`
precision highp float;
uniform mat4 modelViewMatrix;
uniform mat4 projectionMatrix;
attribute vec3 position;
attribute vec2 uv;
varying vec2 vUv;
Expand All @@ -19,10 +30,12 @@ const OutputShader = {
}`,

fragmentShader: /* glsl */`
precision highp float;
uniform sampler2D tDiffuse;
#include <tonemapping_pars_fragment>
` + ShaderChunk[ 'tonemapping_pars_fragment' ] + ShaderChunk[ 'colorspace_pars_fragment' ] + `
varying vec2 vUv;
Expand Down
2 changes: 1 addition & 1 deletion src/renderers/WebGLRenderer.js
Original file line number Diff line number Diff line change
Expand Up @@ -1629,7 +1629,7 @@ class WebGLRenderer {
const morphTargets = !! geometry.morphAttributes.position;
const morphNormals = !! geometry.morphAttributes.normal;
const morphColors = !! geometry.morphAttributes.color;
const toneMapping = material.toneMapped ? _this.toneMapping : NoToneMapping;
const toneMapping = ( material.toneMapped && _currentRenderTarget === null ) ? _this.toneMapping : NoToneMapping;

const morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;
const morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;
Expand Down
2 changes: 1 addition & 1 deletion src/renderers/webgl/WebGLPrograms.js
Original file line number Diff line number Diff line change
Expand Up @@ -320,7 +320,7 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
shadowMapEnabled: renderer.shadowMap.enabled && shadows.length > 0,
shadowMapType: renderer.shadowMap.type,

toneMapping: material.toneMapped ? renderer.toneMapping : NoToneMapping,
toneMapping: ( material.toneMapped && currentRenderTarget === null ) ? renderer.toneMapping : NoToneMapping,
useLegacyLights: renderer.useLegacyLights,

premultipliedAlpha: material.premultipliedAlpha,
Expand Down

0 comments on commit 2be58c7

Please sign in to comment.