Files

18 lines
730 B
GLSL

vec3 getPosFromFragCoord(vec4 frag_coord, vec4 viewport, mat4 inverse_projection_matrix)
{
vec2 ndc = vec2((frag_coord.x - viewport.x) / viewport.z * 2.0 - 1.0,
(frag_coord.y - viewport.y) / viewport.w * 2.0 - 1.0);
vec4 clip = vec4(ndc, 1.0, 1.0);
vec4 view_space = inverse_projection_matrix * clip;
return view_space.xyz / frag_coord.w;
}
vec3 getPosFromUVDepth(vec3 uv_depth, vec4 viewport, mat4 inverse_projection_matrix)
{
vec2 ndc = vec2((uv_depth.x - viewport.x) / viewport.z * 2.0 - 1.0,
(uv_depth.y - viewport.y) / viewport.w * 2.0 - 1.0);
vec4 clip = vec4(ndc, uv_depth.z, 1.0);
vec4 view_space = inverse_projection_matrix * clip;
return view_space.xyz / view_space.w;
}