Compare commits

..

No commits in common. "7ed23a5d5f3b69ae7d4f6d34574b5a60b2d354be" and "643c9a1baef27052b2b40e3799cd238f81c3e2ef" have entirely different histories.

3 changed files with 20 additions and 33 deletions

2
engine

@ -1 +1 @@
Subproject commit 61cfdbccf3230b73d42eb90f6eec934dbe1ddfdb
Subproject commit ccce6c5d83deb260d06bc525721e31c7c4edcabe

View File

@ -14,9 +14,10 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from ctypes import c_ubyte, c_uint, POINTER
from array import array
from engine import (
INSTANCE_FLAG_SPAWNED, BATCH_MAX_SIZE, buffer, create_batch, draw_batch, destroy_batch)
INSTANCE_FLAG_SPAWNED, BATCH_MAX_SIZE, create_batch, draw_batch, destroy_batch)
class Batch:
__slots__ = '_batch', '_paramsp', 'size', 'max_size', 'flags', 'meshes', 'params'
@ -27,9 +28,9 @@ class Batch:
self._paramsp = POINTER(params_type)
self.size = 0
self.max_size = max_size
self.flags = buffer(c_ubyte, max_size)
self.meshes = buffer(c_uint, max_size)
self.params = buffer(params_type, max_size)
self.flags = (c_ubyte * max_size)()
self.meshes = (c_uint * max_size)()
self.params = (params_type * max_size)()
def __del__(self):
destroy_batch(self._batch)

View File

@ -20,12 +20,12 @@ from ctypes import Structure
from engine import *
from game import math
from game import generator
from game import shader
from game import resources
from game import batch
from game import triangles
from game import sea
from game.generator import Generator
from game.resources import RuntimeArchive
from game.batch import Batch
from game.camera import Camera
from game.environment import Environment
@ -42,9 +42,9 @@ sun_power = 1.0
def main():
print("Generating terrain...")
gen_begin = time.thread_time()
generated = Generator(256)
gen_end = time.thread_time()
gen_begin = time.process_time()
generated = generator.Generator(256)
gen_end = time.process_time()
print("Done: ", round(gen_end - gen_begin, 2), "seconds")
print("Initializing...")
@ -66,7 +66,7 @@ def main():
tests_normalmap_sampler = resolve_input(tests_shader, b'u_normal_sampler')
print("Loading resources...")
archive = RuntimeArchive.load('data/rk_island.rkar')
archive = resources.RuntimeArchive.load('data/rk_island.rkar')
print("Building tiles...")
tiles_texture = archive.get_texture('tiles')
@ -79,7 +79,7 @@ def main():
rock_model = archive.get_model('rock')
mud_model = archive.get_model('mud')
lava_model = archive.get_model('lava')
terrain_batch = Batch(tiles_vertices, generated.size ** 2, params_format(PARAM_FORMAT_VEC3_SHORT), vec3)
terrain_batch = batch.Batch(tiles_vertices, generated.size ** 2, params_format(PARAM_FORMAT_VEC3_SHORT), vec3)
#TODO: generator & for real
vc = generated.volcano_c
@ -112,7 +112,7 @@ def main():
model = rock_model
model.spawn(terrain_batch, vec3(float(((mx - 128) * 8) + 4), float(((127 - my) * 8) + 4), 0.0))
class TestsParams(Structure):
class testsparams(Structure):
_fields_ = ('translation', vec3), ('orientation', vec3)
tests_texture = archive.get_texture('tests')
@ -121,14 +121,14 @@ def main():
blob_model = archive.get_model('blob')
cube_model = archive.get_model('cube')
clouds_model = archive.get_model('clouds')
tests_batch = Batch(tests_vertices, 3,
params_format(PARAM_FORMAT_VEC3_FLOAT, PARAM_FORMAT_VEC3_INT10 | PARAM_FORMAT_NORMALIZE), TestsParams)
tests_batch = batch.Batch(tests_vertices, 3,
params_format(PARAM_FORMAT_VEC3_FLOAT, PARAM_FORMAT_VEC3_INT10 | PARAM_FORMAT_NORMALIZE), testsparams)
blob_spawn_translation = vec3(-100.0, -500.0, 0.0)
cube_spawn_translation = vec3(100.0, -500.0, 0.0)
blob_id = blob_model.spawn(tests_batch,
TestsParams(blob_spawn_translation, vec3(*math.vec3_normalize((sun_direction[0], sun_direction[1], 0.0)))))
cube_id = cube_model.spawn(tests_batch, TestsParams(cube_spawn_translation, vec3_forward))
clouds_id = clouds_model.spawn(tests_batch, TestsParams(vec3(0.0, 0.0, 32.0), vec3_forward))
testsparams(blob_spawn_translation, vec3(*math.vec3_normalize((sun_direction[0], sun_direction[1], 0.0)))))
cube_id = cube_model.spawn(tests_batch, testsparams(cube_spawn_translation, vec3_forward))
clouds_id = clouds_model.spawn(tests_batch, testsparams(vec3(0.0, 0.0, 32.0), vec3_forward))
sea_phase = resolve_input(sky_shader, b'u_sea_phase')
sea_polar_textures = sea.load_polar_textures(('data/sea_bump1.png', 'data/sea_bump2.png'))
@ -154,7 +154,6 @@ def main():
clouds_orientation = tests_batch.params[clouds_id].orientation
print("Running...")
events = buffer(Event, 16)
start_time = time.monotonic()
current_time = 0.0
frame_min = 10000.0
@ -237,19 +236,6 @@ def main():
frame_max = max(frame_max, frame_ms)
frame_avg += frame_ms
perf_count += 1
stop = False
while True:
nevents = consume_events(events, len(events))
if not nevents:
break
for event in events[:nevents]:
if event.type == EVENT_KEY_RELEASE:
print("EVENT_KEY_RELEASE:", event.data.key.keycode)
stop = True
if stop:
break
except KeyboardInterrupt:
pass