You have this.
vec3 unproject( vec2 tc, float depth ) {
return vec3( (tc * 2.0 - 1.0) * frustumCorner, -1) * depth;
}
You can precalculate 2.0* frustumCorner and optimize it to this.
vec3 unproject( vec2 tc, float depth ) {
return vec3(tc * frustumCorner2 - frustumCorner, -1) * depth;
}