1. Camera movable with mouse and keyboard 2. GUI runs in separate thread 3. Improvement to GUI widgets 4. Fixes to BVH
This commit is contained in:
81
rhai/bvh_test.rhai
Normal file
81
rhai/bvh_test.rhai
Normal file
@@ -0,0 +1,81 @@
|
||||
// BVH Stress Test Scene - Grid of spheres
|
||||
let scene = Scene();
|
||||
|
||||
// Camera
|
||||
let camera = Camera(P(0.0, 2.0, 5.0), P(0.0, 0.0, 0.0), V(0.0, 1.0, 0.0));
|
||||
scene.addCamera("main", camera);
|
||||
|
||||
// Lights
|
||||
let light = Light(P(3.0, 5.0, 3.0), V(0.8, 0.8, 0.8), V(0.05, 0.05, 0.05));
|
||||
light.active(true);
|
||||
scene.addLight("key", light);
|
||||
|
||||
let light2 = Light(P(-3.0, 4.0, -2.0), V(0.4, 0.4, 0.6), V(0.05, 0.05, 0.05));
|
||||
light2.active(true);
|
||||
scene.addLight("fill", light2);
|
||||
|
||||
let ambient = Ambient(V(0.1, 0.1, 0.1));
|
||||
ambient.active(true);
|
||||
scene.addLight("ambient", ambient);
|
||||
|
||||
// Materials
|
||||
let kd = V(0.8, 0.2, 0.2);
|
||||
let ks = V(0.3, 0.3, 0.3);
|
||||
let kr = V(0.0, 0.0, 0.0);
|
||||
let red = Material(kd, ks, kr, 10.0);
|
||||
scene.addMaterial("red", red);
|
||||
|
||||
let kd = V(0.2, 0.2, 0.8);
|
||||
let ks = V(0.3, 0.3, 0.3);
|
||||
let kr = V(0.0, 0.0, 0.0);
|
||||
let blue = Material(kd, ks, kr, 10.0);
|
||||
scene.addMaterial("blue", blue);
|
||||
|
||||
let kd = V(0.2, 0.8, 0.2);
|
||||
let ks = V(0.3, 0.3, 0.3);
|
||||
let kr = V(0.0, 0.0, 0.0);
|
||||
let green = Material(kd, ks, kr, 10.0);
|
||||
scene.addMaterial("green", green);
|
||||
|
||||
let kd = V(0.8, 0.8, 0.2);
|
||||
let ks = V(0.3, 0.3, 0.3);
|
||||
let kr = V(0.0, 0.0, 0.0);
|
||||
let yellow = Material(kd, ks, kr, 10.0);
|
||||
scene.addMaterial("yellow", yellow);
|
||||
|
||||
let kd = V(0.8, 0.4, 0.8);
|
||||
let ks = V(0.3, 0.3, 0.3);
|
||||
let kr = V(0.1, 0.1, 0.1);
|
||||
let purple = Material(kd, ks, kr, 15.0);
|
||||
scene.addMaterial("purple", purple);
|
||||
|
||||
// Floor
|
||||
let floor = RectangleUnit();
|
||||
let floor_node = Node(floor, green);
|
||||
floor_node.rotate(-90.0, 0.0, 0.0);
|
||||
floor_node.translate(0.0, -1.5, 0.0);
|
||||
floor_node.scale(5.0, 5.0, 1.0);
|
||||
scene.addNode("floor", floor_node);
|
||||
|
||||
// Grid of spheres: 5 x 4 x 5 = 100 spheres
|
||||
let materials = [red, blue, green, yellow, purple];
|
||||
let count = 0;
|
||||
|
||||
for x in range(-2, 3) {
|
||||
for y in range(0, 4) {
|
||||
for z in range(-2, 3) {
|
||||
let mat_idx = count % 5;
|
||||
let mat = materials[mat_idx];
|
||||
let sphere = Sphere(P(0.0, 0.0, 0.0), 0.15);
|
||||
let node = Node(sphere, mat);
|
||||
let px = x.to_float() * 0.7;
|
||||
let py = y.to_float() * 0.7 - 1.0;
|
||||
let pz = z.to_float() * 0.7 - 1.0;
|
||||
node.translate(px, py, pz);
|
||||
scene.addNode("s" + count, node);
|
||||
count += 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
scene
|
||||
Reference in New Issue
Block a user