rusting_engine 1.4.0

Vulkan 3D game engine with GPU-accelerated physics for massive physics-heavy scenes
use rusting_engine::{
    CollisionType, ComputeShaderType, Engine, Material, MaterialModel, Physics,
    Transform,
};

pub fn main() {
    let mut engine =
        Engine::new("RustingEngine - Stress Test PBR (10k Objects)");
    engine.set_light([300.0, 500.0, 300.0], [1.0, 1.0, 1.0], 50000.0);

    // engine.add_gltf(Transform {
    //         position: [0.0, 0.0, 0.0],
    //         scale: [10.0, 10.0, 10.0],
    //         ..Default::default()
    //     },
    //     &Material::standard()
    //         .color([0.1, 1.0, 0.1])
    //         .model(MaterialModel::Pbr)
    //         .build(),
    //     &Physics::default()
    //         .compute_shader(ComputeShaderType::FullPhysics)
    //         .mass(10.0)
    //         .gravity_scale(1.0)
    //         .collision_type(CollisionType::Sphere),
    //     "./testModels/1kRustingSphere.gltf"
    // );

    engine
        .add_gltf(
            Transform {
                position: [5.0, 100.0, 5.0],
                scale: [10.0, 10.0, 10.0],
                ..Default::default()
            },
            &Material::standard()
                .color([1.0, 1.0, 1.0])
                .model(MaterialModel::Pbr)
                .build(),
            &Physics::default()
                .compute_shader(ComputeShaderType::GridCollision)
                .mass(10.0)
                .gravity_scale(1.0)
                .collision_type(CollisionType::Sphere),
            "./testModels/1kRustingSphere.gltf",
        )
        .expect("failed to load 1kRustingSphere.gltf");

    for i in 0..10 {
        for j in 0..10 {
            for k in 0..10 {
                engine
                    .add_gltf(
                        Transform {
                            position: [
                                0.0 + (1.0 * i as f32),
                                0.0 + (1.0 * j as f32),
                                0.0 + (1.0 * k as f32),
                            ],
                            scale: [1.0, 1.0, 1.0],
                            ..Default::default()
                        },
                        &Material::standard()
                            .color([1.0, 1.0, 1.0])
                            .model(MaterialModel::Pbr)
                            .build(),
                        &Physics::default()
                            .compute_shader(ComputeShaderType::GridCollision)
                            .mass(10.0)
                            .gravity_scale(1.0)
                            .collision_type(CollisionType::Box),
                        "./testModels/cube.gltf",
                    )
                    .expect("failed to load cube.gltf");
            }
        }
    }

    engine.set_scene_shader(MaterialModel::Pbr);
    engine.set_scene_physic(ComputeShaderType::GridCollision);
    engine.run();
}