Minor cleanups
This commit is contained in:
parent
4b1c948e6a
commit
b3681684a6
|
@ -33,7 +33,6 @@ use std::io::Read;
|
||||||
use std::mem;
|
use std::mem;
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
use std::ptr;
|
use std::ptr;
|
||||||
use std::time::{Duration, Instant};
|
|
||||||
use usvg::{Options as UsvgOptions, Tree};
|
use usvg::{Options as UsvgOptions, Tree};
|
||||||
|
|
||||||
#[global_allocator]
|
#[global_allocator]
|
||||||
|
@ -86,7 +85,7 @@ fn main() {
|
||||||
|
|
||||||
let mut camera_position = Point4DF32::new(1.1, 1.0, 3.0, 1.0);
|
let mut camera_position = Point4DF32::new(1.1, 1.0, 3.0, 1.0);
|
||||||
let mut camera_velocity = Point4DF32::new(0.0, 0.0, 0.0, 1.0);
|
let mut camera_velocity = Point4DF32::new(0.0, 0.0, 0.0, 1.0);
|
||||||
let (mut camera_yaw, mut camera_pitch, mut camera_roll) = (0.0, 0.0, 0.0);
|
let (mut camera_yaw, mut camera_pitch) = (0.0, 0.0);
|
||||||
|
|
||||||
let window_size = Size2D::new(drawable_width, drawable_height);
|
let window_size = Size2D::new(drawable_width, drawable_height);
|
||||||
|
|
||||||
|
@ -95,13 +94,12 @@ fn main() {
|
||||||
base_scene.transform(&base_transform);
|
base_scene.transform(&base_transform);
|
||||||
|
|
||||||
while !exit {
|
while !exit {
|
||||||
let rotation = Transform3DF32::from_rotation(-camera_yaw, -camera_pitch, -camera_roll);
|
let rotation = Transform3DF32::from_rotation(-camera_yaw, -camera_pitch, 0.0);
|
||||||
camera_position = camera_position + rotation.transform_point(camera_velocity);
|
camera_position = camera_position + rotation.transform_point(camera_velocity);
|
||||||
|
|
||||||
let mut transform = Transform3DF32::from_perspective(FRAC_PI_4, 4.0 / 3.0, 0.01, 100.0);
|
let mut transform = Transform3DF32::from_perspective(FRAC_PI_4, 4.0 / 3.0, 0.01, 100.0);
|
||||||
transform = transform.post_mul(&Transform3DF32::from_rotation(camera_yaw,
|
transform =
|
||||||
camera_pitch,
|
transform.post_mul(&Transform3DF32::from_rotation(camera_yaw, camera_pitch, 0.0));
|
||||||
camera_roll));
|
|
||||||
transform = transform.post_mul(&Transform3DF32::from_translation(-camera_position.x(),
|
transform = transform.post_mul(&Transform3DF32::from_translation(-camera_position.x(),
|
||||||
-camera_position.y(),
|
-camera_position.y(),
|
||||||
-camera_position.z()));
|
-camera_position.z()));
|
||||||
|
@ -215,53 +213,24 @@ fn load_scene(options: &Options, window_size: &Size2D<u32>) -> Scene {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn build_scene(scene: &Scene, options: &Options) -> BuiltScene {
|
fn build_scene(scene: &Scene, options: &Options) -> BuiltScene {
|
||||||
let (mut elapsed_object_build_time, mut elapsed_scene_build_time) = (0.0, 0.0);
|
|
||||||
|
|
||||||
let z_buffer = ZBuffer::new(&scene.view_box);
|
let z_buffer = ZBuffer::new(&scene.view_box);
|
||||||
|
|
||||||
let start_time = Instant::now();
|
|
||||||
let built_objects = match options.jobs {
|
let built_objects = match options.jobs {
|
||||||
Some(1) => scene.build_objects_sequentially(&z_buffer),
|
Some(1) => scene.build_objects_sequentially(&z_buffer),
|
||||||
_ => scene.build_objects(&z_buffer),
|
_ => scene.build_objects(&z_buffer),
|
||||||
};
|
};
|
||||||
elapsed_object_build_time += duration_to_ms(&(Instant::now() - start_time));
|
|
||||||
|
|
||||||
let start_time = Instant::now();
|
|
||||||
let mut built_scene = BuiltScene::new(&scene.view_box);
|
let mut built_scene = BuiltScene::new(&scene.view_box);
|
||||||
built_scene.shaders = scene.build_shaders();
|
built_scene.shaders = scene.build_shaders();
|
||||||
|
|
||||||
let mut scene_builder = SceneBuilder::new(built_objects, z_buffer, &scene.view_box);
|
let mut scene_builder = SceneBuilder::new(built_objects, z_buffer, &scene.view_box);
|
||||||
built_scene.solid_tiles = scene_builder.build_solid_tiles();
|
built_scene.solid_tiles = scene_builder.build_solid_tiles();
|
||||||
while let Some(batch) = scene_builder.build_batch() {
|
while let Some(batch) = scene_builder.build_batch() {
|
||||||
built_scene.batches.push(batch);
|
built_scene.batches.push(batch);
|
||||||
}
|
}
|
||||||
elapsed_scene_build_time += duration_to_ms(&(Instant::now() - start_time));
|
|
||||||
|
|
||||||
let total_elapsed_time = elapsed_object_build_time + elapsed_scene_build_time;
|
|
||||||
|
|
||||||
/*
|
|
||||||
println!(
|
|
||||||
"{:.3}ms ({:.3}ms objects, {:.3}ms scene) elapsed",
|
|
||||||
total_elapsed_time, elapsed_object_build_time, elapsed_scene_build_time
|
|
||||||
);
|
|
||||||
|
|
||||||
println!("{} solid tiles", built_scene.solid_tiles.len());
|
|
||||||
for (batch_index, batch) in built_scene.batches.iter().enumerate() {
|
|
||||||
println!(
|
|
||||||
"Batch {}: {} fills, {} mask tiles",
|
|
||||||
batch_index,
|
|
||||||
batch.fills.len(),
|
|
||||||
batch.mask_tiles.len()
|
|
||||||
);
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
built_scene
|
built_scene
|
||||||
}
|
}
|
||||||
|
|
||||||
fn duration_to_ms(duration: &Duration) -> f64 {
|
|
||||||
duration.as_secs() as f64 * 1000.0 + f64::from(duration.subsec_micros()) / 1000.0
|
|
||||||
}
|
|
||||||
|
|
||||||
struct Renderer {
|
struct Renderer {
|
||||||
fill_program: FillProgram,
|
fill_program: FillProgram,
|
||||||
solid_tile_program: SolidTileProgram,
|
solid_tile_program: SolidTileProgram,
|
||||||
|
@ -477,6 +446,15 @@ impl FillVertexArray {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl Drop for FillVertexArray {
|
||||||
|
#[inline]
|
||||||
|
fn drop(&mut self) {
|
||||||
|
unsafe {
|
||||||
|
gl::DeleteVertexArrays(1, &mut self.gl_vertex_array);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
struct MaskTileVertexArray {
|
struct MaskTileVertexArray {
|
||||||
gl_vertex_array: GLuint,
|
gl_vertex_array: GLuint,
|
||||||
vertex_buffer: Buffer,
|
vertex_buffer: Buffer,
|
||||||
|
@ -508,6 +486,15 @@ impl MaskTileVertexArray {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl Drop for MaskTileVertexArray {
|
||||||
|
#[inline]
|
||||||
|
fn drop(&mut self) {
|
||||||
|
unsafe {
|
||||||
|
gl::DeleteVertexArrays(1, &mut self.gl_vertex_array);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
struct SolidTileVertexArray {
|
struct SolidTileVertexArray {
|
||||||
gl_vertex_array: GLuint,
|
gl_vertex_array: GLuint,
|
||||||
vertex_buffer: Buffer,
|
vertex_buffer: Buffer,
|
||||||
|
@ -537,6 +524,15 @@ impl SolidTileVertexArray {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl Drop for SolidTileVertexArray {
|
||||||
|
#[inline]
|
||||||
|
fn drop(&mut self) {
|
||||||
|
unsafe {
|
||||||
|
gl::DeleteVertexArrays(1, &mut self.gl_vertex_array);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
struct VertexAttr {
|
struct VertexAttr {
|
||||||
attr: GLuint,
|
attr: GLuint,
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue