Okay, managed to solve it. For posterity, here are the relevant parts of the shader:
vec3 computeWorldPosition(){
// Convert screen coordinates to normalized device coordinates (NDC)
float normalizedDepth = unpackRGBAToDepth( texture2D( tDepth, vUv) );
vec4 ndc = vec4(
(vUv.x - 0.5) * 2.0,
(vUv.y - 0.5) * 2.0,
(normalizedDepth - 0.5) * 2.0,
1.0);
vec4 clip = uProjectionInverse * ndc;
vec4 view = uMatrixWorld* (clip / clip.w);
vec3 result = view.xyz;
return result;
}
here are the relevant matrices:
uniforms.uProjectionInverse.value.copy(camera.projectionMatrixInverse);
uniforms.uViewInverse.value.copy(camera.matrixWorld);
Note that the “camera” here is the original camera used to render the scene over which the screen-space effect is being drawn and not the camera facing the quad of said effect.