<h5 dir="auto">Description of the problem</h5>
<p dir="auto">It would be great to have the option to render in grayscale. It could be implemented as a new tonemapping type and set in renderer.tonemapping.</p>
<p dir="auto">I see that there's been some work done in the past in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="386811031" data-permission-text="Title is private" data-url="https://github.com/mrdoob/three.js/issues/15360" data-hovercard-type="pull_request" data-hovercard-url="/mrdoob/three.js/pull/15360/hovercard" href="https://github.com/mrdoob/three.js/pull/15360">#15360</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/greggman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/greggman">@greggman</a> has put together a nice article on the topic <a href="https://threejsfundamentals.org/threejs/lessons/threejs-post-processing-3dlut.html" rel="nofollow">here</a>. It's not entirely clear to me why the previous PR was closed but I wanted to bring this up as a nice addition to three.js. The utility has been better explained in the two links above but 3DLUTs are great for controlling the look and feel of a scene.</p>
<p dir="auto">3DLUTs are supported in a variety of 3d engines and video editing software include <a href="https://docs.unity3d.com/Packages/com.unity.postprocessing@2.1/manual/Color-Grading.html" rel="nofollow">Unity</a>, <a href="https://docs.unrealengine.com/en-US/Engine/Rendering/PostProcessEffects/UsingLUTs/index.html" rel="nofollow">Unreal Engine</a>, and <a href="https://doc.babylonjs.com/api/classes/babylon.colorgradingtexture" rel="nofollow">Babylonjs</a>. There are also a couple existing file formats for them including <a href="https://wwwimages2.adobe.com/content/dam/acom/en/products/speedgrade/cc/pdfs/cube-lut-specification-1.0.pdf" rel="nofollow">.cube</a> and <a href="http://community.foundry.com/discuss/topic/103636/format-spec-for-3dl?mode=Post&amp;postID=895258" rel="nofollow">.3dl</a> (though 3dl looks relatively undocumented).</p>
<p dir="auto">These formats are available online and can also be <a href="https://helpx.adobe.com/photoshop/using/export-color-lookup-tables.html" rel="nofollow">created in tools like Photoshop</a> and would enable more artistic control over the look of the final scene.</p>
<p dir="auto">I figure that just like gamma correction there could be a postprocessing effect and WebGLRenderer support that adds the LUT application to the end of the built in shaders:</p>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="const lut = new LUTLoader().load( '../path/to/lut.3dl' );
renderer.colorLUT3D = lut;"><pre class="notranslate"><span class="pl-k">const</span> <span class="pl-s1">lut</span> <span class="pl-c1">=</span> <span class="pl-k">new</span> <span class="pl-v">LUTLoader</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">load</span><span class="pl-kos">(</span> <span class="pl-s">'../path/to/lut.3dl'</span> <span class="pl-kos">)</span><span class="pl-kos">;</span>
<span class="pl-s1">renderer</span><span class="pl-kos">.</span><span class="pl-c1">colorLUT3D</span> <span class="pl-c1">=</span> <span class="pl-s1">lut</span><span class="pl-kos">;</span></pre></div>