Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class FoutBitP {
- public:
- FourBitP(float lX, float lY, float uX, float uY)
- : lx_(lx), ly_(ly), ux_(ux), uy_(uy) {
- }
- __device__ Match evaluate(Patch patch) const {
- #define TEX_COORDS(A, B) float A ## B = patch.origin.B + patch.size.B * A ## B ## _
- TEX_COORDS(l, x);
- TEX_COORDS(l, y);
- TEX_COORDS(u, x);
- TEX_COORDS(u, y);
- #undef TEX_COORDS
- #define MIDDLE(A) float m ## A = (l ## A + u ## A) / 2
- MIDDLE(l);
- MIDDLE(u);
- #undef MIDDLE
- // Exactly 8 texture fetches are require for a 4BitP evalutaion:
- #define FETCH(X, Y) float s ## X ## Y = tex2D(image, X ## x, Y ## y)
- FETCH(l, u); FETCH(m, u); FETCH(u, u);
- FETCH(l, m); FETCH(u, m);
- FETCH(l, l); FETCH(m, l); FETCH(u, l);
- #undef FETCH
- float left = sml - sll - smu + slu,
- right = sul - sml - suu + smu,
- top = sum - slm - suu + slu,
- bottom = sul - sll - sum + slm;
- return (top < bottom) << 1 + (left < right);
- }
- private:
- float lx_, ly_, ux_, uy_;
- };
Add Comment
Please, Sign In to add comment