diff options
Diffstat (limited to 'source/blender/draw/engines/eevee/shaders/effect_velocity_resolve_frag.glsl')
-rw-r--r-- | source/blender/draw/engines/eevee/shaders/effect_velocity_resolve_frag.glsl | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/source/blender/draw/engines/eevee/shaders/effect_velocity_resolve_frag.glsl b/source/blender/draw/engines/eevee/shaders/effect_velocity_resolve_frag.glsl new file mode 100644 index 00000000000..8324c25225c --- /dev/null +++ b/source/blender/draw/engines/eevee/shaders/effect_velocity_resolve_frag.glsl @@ -0,0 +1,22 @@ + +uniform mat4 currPersinv; +uniform mat4 pastPersmat; + +out vec2 outData; + +void main() +{ + /* Extract pixel motion vector from camera movement. */ + ivec2 texel = ivec2(gl_FragCoord.xy); + vec2 uv = gl_FragCoord.xy / vec2(textureSize(depthBuffer, 0).xy); + + float depth = texelFetch(depthBuffer, texel, 0).r; + + vec3 world_position = project_point(currPersinv, vec3(uv, depth) * 2.0 - 1.0); + vec2 uv_history = project_point(pastPersmat, world_position).xy * 0.5 + 0.5; + + outData = uv - uv_history; + + /* Encode to unsigned normalized 16bit texture. */ + outData = outData * 0.5 + 0.5; +} |