As far as I have been able to find out, tone-mapping should always be the final step in a linear rendering process. This means that the correct approach when using post-processing is to set
renderer.toneMapping = NoToneMapping, and then add a
ToneMapPass as the final pass when using the
However, the official tone mapping example demonstrates using the various built-in tone mapping algorithms with the
EffectComposer. There’s no actual post-processing taking place (just a
CopyPass), so nothing looks incorrect. However, if this example is used as a template then any post-processing passes added will be performed on a render target with a reduced gamut (i.e. a LDR target rather than a HDR target).
Is the example demonstrating an incorrect process? Or am I making an incorrect assumption somewhere here (for example, are three.js post-processing passes designed to work in LDR)?