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