[resolved]How to solve the sRGB problem

I understand that when EffectComposer is enabled, the sRGB encoding of the renderer output is disabled, and using the GammaCorrectionShader causes abnormal gradients, noticeable textures, and insufficient smooth transitions. How can this be resolved? Thanks.


Render output in sRGB encoding mode


Enable EffectComposer and use GammaCorrectionShader

Create your effect composer like so for now:

const renderTarget = new WebGLRenderTarget( width, height, { type: THREE.HalfFloatType } );
const composer = new EffectComposer( renderer, renderTarget );

The banding happens because of the default THREE.UnsignedByteType of render targets. Using THREE.HalfFloatTyp fixes this and also supports HDR workflows.

1 Like

Storing the UnsignedByteType render target with sRGB encoding can avoid the banding too, but unfortunately has a major bug on some macOS devices. In any case, if your effects require HDR workflows, you’ll need at least half float targets.

1 Like

Solved, thank you

1 Like

Okay, thank you