Toast Engine
Loading...
Searching...
No Matches
brick.hpp File Reference
#include "voxel_constants.hpp"
#include <array>
#include <bit>
#include <cassert>
#include <cstdint>
Include dependency graph for brick.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  voxel::BrickOccupancy
 One 64-bit word per z-slice with bit y * 8 + x. More...
struct  voxel::BrickCoord
struct  voxel::BrickExtent
struct  voxel::BrickNeighbourhood
struct  voxel::BrickFaces

Functions

constexpr auto voxel::localIndex (const uint32_t x, const uint32_t y, const uint32_t z) noexcept -> uint32_t
constexpr auto voxel::localFromIndex (uint32_t index) noexcept -> BrickCoord
constexpr auto voxel::sliceBit (uint32_t x, uint32_t y) noexcept -> uint32_t
constexpr auto voxel::isSolid (const BrickOccupancy &brick, uint32_t x, uint32_t y, uint32_t z) noexcept -> bool
constexpr auto voxel::isSolid (const BrickOccupancy &brick, uint32_t local_index) noexcept -> bool
constexpr void voxel::setSolid (BrickOccupancy &brick, uint32_t x, uint32_t y, uint32_t z, bool solid) noexcept
constexpr void voxel::setSolid (BrickOccupancy &brick, uint32_t local_index, bool solid) noexcept
constexpr auto voxel::isEmpty (const BrickOccupancy &brick) noexcept -> bool
constexpr auto voxel::isFull (const BrickOccupancy &brick) noexcept -> bool
constexpr auto voxel::popCount (const BrickOccupancy &brick) noexcept -> uint32_t
constexpr auto voxel::occupiedExtent (const BrickOccupancy &brick) noexcept -> BrickExtent
 Brick must not be empty.
constexpr auto voxel::operator& (const BrickOccupancy &a, const BrickOccupancy &b) noexcept -> BrickOccupancy
constexpr auto voxel::operator| (const BrickOccupancy &a, const BrickOccupancy &b) noexcept -> BrickOccupancy
constexpr auto voxel::operator~ (const BrickOccupancy &a) noexcept -> BrickOccupancy
constexpr auto voxel::neighboursNegX (const BrickOccupancy &brick, const BrickOccupancy *adjacent=nullptr) noexcept -> BrickOccupancy
constexpr auto voxel::neighboursPosX (const BrickOccupancy &brick, const BrickOccupancy *adjacent=nullptr) noexcept -> BrickOccupancy
constexpr auto voxel::neighboursNegY (const BrickOccupancy &brick, const BrickOccupancy *adjacent=nullptr) noexcept -> BrickOccupancy
constexpr auto voxel::neighboursPosY (const BrickOccupancy &brick, const BrickOccupancy *adjacent=nullptr) noexcept -> BrickOccupancy
constexpr auto voxel::neighboursNegZ (const BrickOccupancy &brick, const BrickOccupancy *adjacent=nullptr) noexcept -> BrickOccupancy
constexpr auto voxel::neighboursPosZ (const BrickOccupancy &brick, const BrickOccupancy *adjacent=nullptr) noexcept -> BrickOccupancy
constexpr auto voxel::interior (const BrickOccupancy &brick, const BrickNeighbourhood &neighbours={}) noexcept -> BrickOccupancy
constexpr auto voxel::surfaceShell (const BrickOccupancy &brick, const BrickNeighbourhood &neighbours={}) noexcept -> BrickOccupancy
constexpr auto voxel::dilate (const BrickOccupancy &brick) noexcept -> BrickOccupancy
constexpr auto voxel::faceNegX (const BrickOccupancy &brick) noexcept -> uint64_t
 x == 0 plane with bit z * 8 + y
constexpr auto voxel::facePosX (const BrickOccupancy &brick) noexcept -> uint64_t
 x == 7 plane with bit z * 8 + y
constexpr auto voxel::faceNegY (const BrickOccupancy &brick) noexcept -> uint64_t
 y == 0 plane with bit z * 8 + x
constexpr auto voxel::facePosY (const BrickOccupancy &brick) noexcept -> uint64_t
 y == 7 plane with bit z * 8 + x
constexpr auto voxel::faceNegZ (const BrickOccupancy &brick) noexcept -> uint64_t
 z == 0 plane with bit y * 8 + x
constexpr auto voxel::facePosZ (const BrickOccupancy &brick) noexcept -> uint64_t
 z == 7 plane with bit y * 8 + x
constexpr auto voxel::computeFaces (const BrickOccupancy &brick) noexcept -> BrickFaces
constexpr auto voxel::facesConnect (uint64_t face_a, uint64_t face_b) noexcept -> bool

Variables

constexpr BrickOccupancy voxel::k_empty_brick {}
constexpr BrickOccupancy voxel::k_full_brick
constexpr uint64_t voxel::k_column_x_min = 0x0101010101010101ull
constexpr uint64_t voxel::k_column_x_max = 0x8080808080808080ull
constexpr uint64_t voxel::k_row_y_min = 0x00000000000000FFull
constexpr uint64_t voxel::k_row_y_max = 0xFF00000000000000ull

Detailed Description

Author
dario
Date
08/09/2026

Variable Documentation

◆ k_full_brick

BrickOccupancy voxel::k_full_brick
inlineconstexpr
Initial value:
{
{~0ull, ~0ull, ~0ull, ~0ull, ~0ull, ~0ull, ~0ull, ~0ull}
}