18 if (!camera || !cameraNode) {
26 frustum.
create(viewProjection);
28 const auto center = bounds.
center();
30 const float extentLen = extents.
length();
31 const float baseSlop = std::max(0.01f, extentLen * 0.05f);
33 constexpr size_t PLANE_COUNT = 6;
34 for (
size_t i = 0; i < PLANE_COUNT; ++i) {
35 const auto& plane = frustum.
planes[i];
36 const float px = plane.
getX();
37 const float py = plane.getY();
38 const float pz = plane.getZ();
39 const float pw = plane.getW();
40 const float distanceToCenter =
46 const float projectedRadius =
47 std::abs(px) * extents.getX() +
48 std::abs(py) * extents.getY() +
49 std::abs(pz) * extents.getZ();
53 const float slop = (i == 0) ? (baseSlop * 4.0f) : baseSlop;
54 if (distanceToCenter + projectedRadius < -slop) {