载入中...
搜索中...
未找到
VoxelPack.h
浏览该文件的文档.
1#pragma once
2
3#include <cstdint>
4
5namespace eve::voxel {
6
8constexpr int kChunkSize = 32;
9
22struct PackedRect {
23 uint32_t bits = 0;
24
25 static PackedRect pack(int x, int y, int z, int width, int height, int tex) {
26 PackedRect r;
27 r.bits = (uint32_t(x) & 31u) | ((uint32_t(y) & 31u) << 5) | ((uint32_t(z) & 31u) << 10) |
28 ((uint32_t(width - 1) & 31u) << 15) | ((uint32_t(height - 1) & 31u) << 20) |
29 ((uint32_t(tex) & 127u) << 25);
30 return r;
31 }
32
33 int x() const { return int(bits & 31u); }
34 int y() const { return int((bits >> 5) & 31u); }
35 int z() const { return int((bits >> 10) & 31u); }
36 int width() const { return int((bits >> 15) & 31u) + 1; }
37 int height() const { return int((bits >> 20) & 31u) + 1; }
38 int tex() const { return int((bits >> 25) & 127u); }
39};
40
41static_assert(sizeof(PackedRect) == 4, "PackedRect must be 32-bit");
42
43} // namespace eve::voxel
方块类型定义:名字、各面图集纹理、方向性、组合声明。 方向性方块在注册时按 orientation 绕 Y 轴展开成多个"具体类型"变体, 每个变体持有旋转后的各面纹理;渲染端只消费纹理 id,不接触 ...
Definition Chunk.h:12
constexpr int kChunkSize
Chunk edge length in voxels (fixed).
Definition VoxelPack.h:8
Packed face-rectangle instance (exactly 32 bits): bits 0..4 : x (0..31) bits 5..9 : y (0....
Definition VoxelPack.h:22
static PackedRect pack(int x, int y, int z, int width, int height, int tex)
Definition VoxelPack.h:25