18 lines
730 B
GLSL
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;
|
|
}
|