Advertisement
Guest User

Untitled

a guest
Sep 29th, 2017
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
D 0.71 KB | None | 0 0
  1.  
  2. bool rayHitsAABB(vec3f a, vec3f b, vec3f pos, vec3f dir) {
  3.   xmm[4] = dir;
  4.   xmm[5] = pos;
  5.   xmm[6] = a;
  6.   xmm[7] = b;
  7.   int i = 1 << 31;
  8.   asm "movd (%esp), %xmm3";
  9.   asm `shufps $0, %xmm3, %xmm3`;
  10.   asm "movaps %xmm4, %xmm2";
  11.   asm "andps %xmm3, %xmm2"; // select sign bits of dir
  12.   asm "xorps %xmm2, %xmm4"; // flip signs where negative
  13.   asm "xorps %xmm2, %xmm5";
  14.   asm "xorps %xmm2, %xmm6";
  15.   asm "xorps %xmm2, %xmm7";
  16.   asm "movaps %xmm6, %xmm2";
  17.   asm "movaps %xmm7, %xmm3";
  18.   asm "minps %xmm3, %xmm6"; // a = min(a, b);
  19.   asm "maxps %xmm2, %xmm7"; // b = max(a, b);
  20.   // pretend ray starts at origin
  21.   dir = xmm[4];
  22.   pos = xmm[5];
  23.   a   = xmm[6];
  24.   b   = xmm[7];
  25.  
  26.   a -= pos;
  27.   b -= pos;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement