Skip to main content

lights/common/
lights_scene.rs

1use super::*;
2
3pub fn geometry() -> [MeshData; 2] {
4    [MeshData::plane(160.0), MeshData::cube(2.0)]
5}
6
7pub fn setup(ctx: &mut Ctx, count: usize) {
8    ctx.camera3d.position = vec3(0.0, 34.0, 62.0);
9    ctx.camera3d.look_at(vec3(0.0, 0.0, -25.0));
10    ctx.camera3d.far = 250.0;
11    ctx.lighting.shadows = false;
12    ctx.lighting.sun_intensity = 0.0;
13    ctx.lighting.ambient_intensity = 0.015;
14    ctx.sky.atmosphere = false;
15    ctx.post.bloom = 0.0;
16    let stone = ctx.create_material(MaterialDesc {
17        roughness: 0.5,
18        ..Default::default()
19    });
20    let [floor, cube] = geometry().map(|data| ctx.create_mesh(&data, stone));
21    ctx.world
22        .spawn((Transform3D::at(vec3(0.0, -1.0, -25.0)), Model::new(floor)));
23    for z in 0..10 {
24        for x in 0..15 {
25            ctx.world.spawn((
26                Transform3D::at(vec3((x as f32 - 7.0) * 6.0, 0.0, 10.0 - z as f32 * 7.0)),
27                Model::new(cube),
28            ));
29        }
30    }
31    for i in 0..count {
32        let x = ((i * 37) % 101) as f32 - 50.0;
33        let z = 15.0 - ((i * 53) % 101) as f32;
34        let color = [
35            Color::rgb(1.0, 0.12, 0.03),
36            Color::rgb(0.06, 0.3, 1.0),
37            Color::rgb(0.05, 1.0, 0.25),
38        ][i % 3];
39        let t = Transform3D::at(vec3(x, 3.0, z));
40        if i % 4 == 0 {
41            ctx.world.spawn((
42                t.looking_at(vec3(x + 2.0, -1.0, z - 3.0)),
43                SpotLight3D {
44                    color,
45                    intensity: 80.0,
46                    range: 12.0,
47                    inner_angle: 0.3,
48                    outer_angle: 0.7,
49                    ..Default::default()
50                },
51            ));
52        } else {
53            ctx.world.spawn((
54                t,
55                PointLight3D {
56                    color,
57                    intensity: 30.0,
58                    range: 9.0,
59                    ..Default::default()
60                },
61            ));
62        }
63    }
64}