<p dir="auto">This more a suggestion than an issue.<br>
I used the SAOPass and SSAOPass examples in my code and we have skinned meshes in the scene(only skinned meshes).<br>
For this postprocessing effect to work I had to manually set <code class="notranslate">.skinning = true</code> on all the shader pass' internal materials(like the depth material). It was probably overkill, maybe only some of them needed this setting.<br>
If I don't do this the internal render targets of the shader pass are not updated as the mesh moves/animates and you get a ghost effect.<br>
It would be nice if this was a parameter of the shader pass constructor.</p>
<p dir="auto">When a morph target mesh is rendered with a non-morph target material, the mesh seems to render in bind pose. The <code class="notranslate">EffectComposer</code> framework for postprocessing uses the <code class="notranslate">scene.overrideMaterial</code> interface to generate depth and normal buffers, so these buffers have all meshes in bind pose. You can see the issue by applying a normal buffer postprocess to the MD2 character example.</p>
<p dir="auto">I've badly hacked up three.js to take a <code class="notranslate">scene.morphOverrideMaterial</code> parameter to use as an alternate override for meshes which originally had a material with the morph target flags. I also updated the post processing effects to provide morph target variants of their override materials, and it allows them to render correctly on animated characters.</p>
<p dir="auto">I could share my hack, but I think a better solution would be to use the morph target and morph normal settings from the true material of a mesh, even in the presence of an override material setting. (Or... does webgl have multiple render targets?)</p>