diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2018-04-20 19:18:33 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2018-04-20 19:29:33 +0300 |
commit | e2613e4051d501c8b553d781cb63d06735968f91 (patch) | |
tree | bed7313216d92c4c3093bf2b0ef6d8740705253c /source/blender/draw/engines/eevee/shaders/effect_velocity_resolve_frag.glsl | |
parent | 358dfe6ac9f22eb59302f5a04b14b75beadf064c (diff) |
Eevee: Add Velocity pass.
This pass create a velocity buffer which is basically a 2D motion vector
texture. This is not yet used for rendering but will be usefull for motion
blur and temporal reprojection.
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 | 19 |
1 files changed, 19 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..9c118277212 --- /dev/null +++ b/source/blender/draw/engines/eevee/shaders/effect_velocity_resolve_frag.glsl @@ -0,0 +1,19 @@ + +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; +} |