summaryrefslogtreecommitdiff
path: root/thirdparty/embree/kernels/bvh/node_intersector.h
blob: 25edaf295d819ce5b4d553efff6b8f015a201f89 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// Copyright 2009-2021 Intel Corporation
// SPDX-License-Identifier: Apache-2.0

#pragma once

#include "bvh.h"

namespace embree
{
  namespace isa
  {
    struct NearFarPrecalculations
    {
      size_t nearX, nearY, nearZ;
      size_t farX, farY, farZ;

      __forceinline NearFarPrecalculations() {}

      __forceinline NearFarPrecalculations(const Vec3fa& dir, size_t N)
      {
        const size_t size = sizeof(float)*N;
        nearX = (dir.x < 0.0f) ? 1*size : 0*size;
        nearY = (dir.y < 0.0f) ? 3*size : 2*size;
        nearZ = (dir.z < 0.0f) ? 5*size : 4*size;
        farX  = nearX ^ size;
        farY  = nearY ^ size;
        farZ  = nearZ ^ size;
      }
    };
  }
}