Advertisement
Guest User

Untitled

a guest
Dec 29th, 2016
535
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.22 KB | None | 0 0
  1. struct PS_INPUT {
  2. float2 uv: TEXCOORD0;
  3. };
  4.  
  5. struct PS_OUTPUT {
  6. float4 color_0: SV_TARGET0;
  7. };
  8.  
  9. uniform float2 texel_size;
  10.  
  11. float2 unpack_velocity(float4 data) {return float2(data.x + (data.y / 255.0), data.z + (data.w / 255.0));}
  12. float4 pack_velocity(float2 data) {return float4(floor(data.x * 255.0) / 255.0, frac(data.x * 255.0), floor(data.y * 255.0) / 255.0, frac(data.y * 255.0));}
  13. float unpack_divergence(float2 data) {return data.x + (data.y / 255.0);}
  14. float2 pack_divergence(float data) {return float2(floor(data * 255.0) / 255.0, frac(data * 255.0));}
  15.  
  16. void main(in PS_INPUT IN, out PS_OUTPUT OUT) {
  17. float2 right = unpack_velocity(tex2D(gm_BaseTexture, IN.uv + float2(texel_size.x, 0.0))) - 128.0 / 255.0;
  18. float2 left = unpack_velocity(tex2D(gm_BaseTexture, IN.uv - float2(texel_size.x, 0.0))) - 128.0 / 255.0;
  19. float2 bottom = unpack_velocity(tex2D(gm_BaseTexture, IN.uv + float2(0.0, texel_size.y))) - 128.0 / 255.0;
  20. float2 top = unpack_velocity(tex2D(gm_BaseTexture, IN.uv - float2(0.0, texel_size.y))) - 128.0 / 255.0;
  21.  
  22. float divergence = 0.5 * ((right.x - left.x) + (bottom.y - top.y));
  23.  
  24. OUT.color_0 = float4(pack_divergence(saturate(divergence + 128.0 / 255.0)), 0.0, 0.0);
  25. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement