6#include <glm/gtc/quaternion.hpp>
8#include "net/wire/bit_stream.h"
10namespace Vkm::Engine::Quantize {
17constexpr float POSITION_STEP = 0.001f;
24constexpr float MAX_SPEED = 200.0f;
32constexpr float WORLD_EXTENT = 512.0f;
39constexpr uint32_t positionBits() {
42 const float need = (WORLD_EXTENT * 2.0f) / POSITION_STEP;
43 while (range < need && bits < 32u) {
56constexpr uint32_t ROTATION_BITS = 11;
59constexpr uint32_t VELOCITY_BITS = 16;
73uint32_t toSigned(
float value,
float range, uint32_t width);
76float fromSigned(uint32_t raw,
float range, uint32_t width);
88void writePosition(BitWriter& out,
float value);
91float readPosition(BitReader& in);
102void writeRotation(BitWriter& out,
const glm::quat& value);
105glm::quat readRotation(BitReader& in);
108void writeVelocity(BitWriter& out,
float value);
111float readVelocity(BitReader& in);
float range(float min, float max)
Uniform float in [min, max), from the per-thread generator.
Definition random.h:135