byte-engine 0.1.0

A composable Rust game engine focused on graphics, input, audio, physics, and retained UI.
Mesh: struct {
	model: mat4x3f,
	material_index: u32,
	base_vertex_index: u32,
	base_primitive_index: u32,
	base_triangle_index: u32,
	base_meshlet_index: u32,
	meshlet_count: u32,
	skinned_base_vertex_index: u32,
	padding0: u32,
}

MeshData: struct {
	meshes: Mesh[1024],
}

MaterialCount: struct {
	material_count: atomicu32[1024],
}

mesh_data: descriptor<MeshData, 1, read>;
material_count_buffer: descriptor<MaterialCount, 1033, read_write>;
instance_index_render_target: descriptor<StorageImage<r32ui>, 1040, read>;

main: fn () -> void {
	let coord: vec2u = thread_id();
	guard_image_bounds(instance_index_render_target, coord);
	let pixel_instance_index: u32 = image_load_u32(instance_index_render_target, coord);

	if (pixel_instance_index < 4294967295 && pixel_instance_index < 1024) {
		let material_index: u32 = mesh_data.meshes[pixel_instance_index].material_index;

		if (material_index < 1024) {
			atomic_add(material_count_buffer.material_count[material_index], 1);
		}
	}
}