84 lines
1.5 KiB
Python
84 lines
1.5 KiB
Python
from numba import njit
|
|
import numpy as np
|
|
import glm
|
|
import math
|
|
|
|
# OpenGL settings
|
|
MAJOR_VER, MINOR_VER = 3, 3
|
|
DEPTH_SIZE = 24
|
|
NUM_SAMPLES = 1 # antialiasing
|
|
|
|
# resolution
|
|
WIN_RES = glm.vec2(1600, 900)
|
|
|
|
# world generation
|
|
SEED = 16
|
|
|
|
# ray casting
|
|
MAX_RAY_DIST = 6
|
|
|
|
# chunk
|
|
CHUNK_SIZE = 48
|
|
H_CHUNK_SIZE = CHUNK_SIZE // 2
|
|
CHUNK_AREA = CHUNK_SIZE * CHUNK_SIZE
|
|
CHUNK_VOL = CHUNK_AREA * CHUNK_SIZE
|
|
CHUNK_SPHERE_RADIUS = H_CHUNK_SIZE * math.sqrt(3)
|
|
|
|
# world
|
|
WORLD_W, WORLD_H = 20, 2
|
|
WORLD_D = WORLD_W
|
|
WORLD_AREA = WORLD_W * WORLD_D
|
|
WORLD_VOL = WORLD_AREA * WORLD_H
|
|
|
|
# world center
|
|
CENTER_XZ = WORLD_W * H_CHUNK_SIZE
|
|
CENTER_Y = WORLD_H * H_CHUNK_SIZE
|
|
|
|
# camera
|
|
ASPECT_RATIO = WIN_RES.x / WIN_RES.y
|
|
FOV_DEG = 50
|
|
V_FOV = glm.radians(FOV_DEG) # vertical FOV
|
|
H_FOV = 2 * math.atan(math.tan(V_FOV * 0.5) * ASPECT_RATIO) # horizontal FOV
|
|
NEAR = 0.1
|
|
FAR = 2000.0
|
|
PITCH_MAX = glm.radians(89)
|
|
|
|
# player
|
|
PLAYER_SPEED = 0.005
|
|
PLAYER_ROT_SPEED = 0.003
|
|
# PLAYER_POS = glm.vec3(CENTER_XZ, WORLD_H * CHUNK_SIZE, CENTER_XZ)
|
|
PLAYER_POS = glm.vec3(CENTER_XZ, CHUNK_SIZE, CENTER_XZ)
|
|
MOUSE_SENSITIVITY = 0.002
|
|
|
|
# colors
|
|
BG_COLOR = glm.vec3(0.58, 0.83, 0.99)
|
|
|
|
# textures
|
|
SAND = 1
|
|
GRASS = 2
|
|
DIRT = 3
|
|
STONE = 4
|
|
SNOW = 5
|
|
LEAVES = 6
|
|
WOOD = 7
|
|
|
|
# terrain levels
|
|
SNOW_LVL = 54
|
|
STONE_LVL = 49
|
|
DIRT_LVL = 40
|
|
GRASS_LVL = 8
|
|
SAND_LVL = 7
|
|
|
|
# tree settings
|
|
TREE_PROBABILITY = 0.02
|
|
TREE_WIDTH, TREE_HEIGHT = 4, 8
|
|
TREE_H_WIDTH, TREE_H_HEIGHT = TREE_WIDTH // 2, TREE_HEIGHT // 2
|
|
|
|
# water
|
|
WATER_LINE = 5.6
|
|
WATER_AREA = 5 * CHUNK_SIZE * WORLD_W
|
|
|
|
# cloud
|
|
CLOUD_SCALE = 25
|
|
CLOUD_HEIGHT = WORLD_H * CHUNK_SIZE * 2
|