Guest User

Untitled

a guest
Jan 23rd, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.15 KB | None | 0 0
  1. class FoutBitP {
  2. public:
  3. FourBitP(float lX, float lY, float uX, float uY)
  4. : lx_(lx), ly_(ly), ux_(ux), uy_(uy) {
  5. }
  6.  
  7. __device__ Match evaluate(Patch patch) const {
  8. #define TEX_COORDS(A, B) float A ## B = patch.origin.B + patch.size.B * A ## B ## _
  9. TEX_COORDS(l, x);
  10. TEX_COORDS(l, y);
  11. TEX_COORDS(u, x);
  12. TEX_COORDS(u, y);
  13. #undef TEX_COORDS
  14. #define MIDDLE(A) float m ## A = (l ## A + u ## A) / 2
  15. MIDDLE(l);
  16. MIDDLE(u);
  17. #undef MIDDLE
  18. // Exactly 8 texture fetches are require for a 4BitP evalutaion:
  19. #define FETCH(X, Y) float s ## X ## Y = tex2D(image, X ## x, Y ## y)
  20. FETCH(l, u); FETCH(m, u); FETCH(u, u);
  21. FETCH(l, m); FETCH(u, m);
  22. FETCH(l, l); FETCH(m, l); FETCH(u, l);
  23. #undef FETCH
  24. float left = sml - sll - smu + slu,
  25. right = sul - sml - suu + smu,
  26. top = sum - slm - suu + slu,
  27. bottom = sul - sll - sum + slm;
  28. return (top < bottom) << 1 + (left < right);
  29. }
  30. private:
  31. float lx_, ly_, ux_, uy_;
  32. };
Add Comment
Please, Sign In to add comment