I'm struggling a lot with reconstructing the world space position (or alternatively the view space position) from depth (by reading the depth buffer) in a performant way (in a full-screen post-process). So far I've been using this approach: vec3 calculate_world_position(vec2 texture_coordinate, float depth_from_depth_buffer) { vec4 clip_space_position = vec4(texture_coordinate * 2.0 - vec2(1.0), 2.0 * depth_from_depth_buffer - 1.0, 1.0); //vec4 position = inverse_projection_matrix * clip_spac...