cvmath 0.0.8

Computer Graphics Vector Math Library
Documentation
Scene(
	image: ImageSettings(
		width: 960,
		height: 540,
		nsamples: 2048,
		max_bounces: 6,
		use_rayon: true,
	),
	camera: CameraSettings(
		origin: Vec3(0.0, 1.25, -4.0),
		target: Vec3(0.0, 1.0, 0.0),
		ref_up: Vec3(0.0, 1.0, 0.0),
		fov_y: 40.0,
		dof_enabled: true,
		aperture_radius: 0.05,
		focus_distance: 4.0,
	),
	world: World(
		ambient_light: 0.3,
		light: Light(
			pos: Vec3(0.0, 100.0, 0.0),
			color: Vec3(1.0, 1.0, 1.0),
			radius: 5.0,
		),
		materials: {
			"ground": Material(
				texture: Ground,
				reflectivity: 0.0,
				hardness: 1.0,
				diffuse_factor: 0.8,
				specular_factor: 0.0,
			),
			"sphere1": Material(
				texture: r#None,
				reflectivity: 0.95,
				hardness: 1.0,
				diffuse_factor: 0.0,
				specular_factor: 1.0,
			),
			"sphere2": Material(
				texture: Color(Vec3(1.0, 0.65, 0.0)),
				reflectivity: 0.05,
				hardness: 99.0,
				diffuse_factor: 0.9,
				specular_factor: 1.0,
			),
			"mirror": Material(
				texture: Color(Vec3(1.0, 1.0, 1.0)),
				reflectivity: 1.0,
				hardness: 1.0,
				diffuse_factor: 0.1,
				specular_factor: 1.0,
			),
		},
		objects: [
			Object(
				shape: Plane(Plane3(
					normal: Vec3(0.0, 1.0, 0.0),
					distance: 0.0,
				)),
				material: "ground",
			),
			Object(
				shape: Sphere(Sphere(
					center: Vec3(-1.0, 2.0, 3.0),
					radius: 0.5,
				)),
				material: "sphere1",
			),
			Object(
				shape: Sphere(Sphere(
					center: Vec3(1.25, 0.8, 0.0),
					radius: 0.25,
				)),
				material: "sphere2",
			),
			Object(
				shape: Triangle(Triangle3(
					p: Vec3(0.0, 0.0, 0.0),
					u: Vec3(0.0, 1.0, 1.0),
					v: Vec3(-1.0, 1.0, 0.0),
				)),
				material: "mirror",
			),
			Object(
				shape: Triangle(Triangle3(
					p: Vec3(0.0, 0.0, 0.0),
					u: Vec3(-1.0, 1.0, 0.0),
					v: Vec3(0.0, 1.0, -1.0),
				)),
				material: "mirror",
			),
			Object(
				shape: Triangle(Triangle3(
					p: Vec3(0.0, 0.0, 0.0),
					u: Vec3(0.0, 1.0, -1.0),
					v: Vec3(1.0, 1.0, 0.0),
				)),
				material: "mirror",
			),
			Object(
				shape: Triangle(Triangle3(
					p: Vec3(0.0, 0.0, 0.0),
					u: Vec3(1.0, 1.0, 0.0),
					v: Vec3(0.0, 1.0, 1.0),
				)),
				material: "mirror",
			),
			Object(
				shape: Triangle(Triangle3(
					p: Vec3(0.0, 2.0, 0.0),
					u: Vec3(-1.0, -1.0, 0.0),
					v: Vec3(0.0, -1.0, 1.0),
				)),
				material: "mirror",
			),
			Object(
				shape: Triangle(Triangle3(
					p: Vec3(0.0, 2.0, 0.0),
					u: Vec3(0.0, -1.0, 1.0),
					v: Vec3(1.0, -1.0, 0.0),
				)),
				material: "mirror",
			),
			Object(
				shape: Triangle(Triangle3(
					p: Vec3(0.0, 2.0, 0.0),
					u: Vec3(1.0, -1.0, 0.0),
					v: Vec3(0.0, -1.0, -1.0),
				)),
				material: "mirror",
			),
			Object(
				shape: Triangle(Triangle3(
					p: Vec3(0.0, 2.0, 0.0),
					u: Vec3(0.0, -1.0, -1.0),
					v: Vec3(-1.0, -1.0, 0.0),
				)),
				material: "mirror",
			),
		],
	),
)