aboutsummaryrefslogtreecommitdiff
path: root/src/Geometry.ts
diff options
context:
space:
mode:
authorJames Barnett <noreply@jamesbarnett.xyz>2022-01-04 21:44:49 +0000
committerJames Barnett <noreply@jamesbarnett.xyz>2022-01-04 21:44:49 +0000
commit16b0f20415efd3ed2c181df74a473ebd5265892b (patch)
tree2d94216df0dca5b378f74b47515af5b910fc5ae7 /src/Geometry.ts
parent496c63266d02bc9369e3406353b877a8ebbae60a (diff)
downloadjs-raytracer-16b0f20415efd3ed2c181df74a473ebd5265892b.tar.xz
js-raytracer-16b0f20415efd3ed2c181df74a473ebd5265892b.zip
Fix specular lighting. Update scene.
Diffstat (limited to 'src/Geometry.ts')
-rw-r--r--src/Geometry.ts17
1 files changed, 13 insertions, 4 deletions
diff --git a/src/Geometry.ts b/src/Geometry.ts
index 41d6023..556c7ea 100644
--- a/src/Geometry.ts
+++ b/src/Geometry.ts
@@ -19,21 +19,30 @@ export class Sphere {
}
export class Plane {
+ @Type(() => Colour)
+ readonly checkerboardColour1: Colour;
+ @Type(() => Colour)
+ readonly checkerboardColour2: Colour;
constructor(
readonly yPos: number,
readonly width: number, // How far the plane extends into x/-x from 0
readonly zStartPos: number,
readonly zEndPos: number,
- readonly checkerboardScale: number
- ) {}
+ readonly checkerboardScale: number,
+ checkerboardColour1: Colour,
+ checkerboardColour2: Colour
+ ) {
+ this.checkerboardColour1 = checkerboardColour1;
+ this.checkerboardColour2 = checkerboardColour2;
+ }
getMaterialAtPoint(x: number, z: number): Material {
let colour: Colour;
// prettier-ignore
if ((Math.round(this.checkerboardScale * x) + Math.round(this.checkerboardScale * z)) & 1) {
- colour = new Colour(15, 15, 15);
+ colour = this.checkerboardColour1;
} else {
- colour = new Colour(200, 200, 200);
+ colour = this.checkerboardColour2;
}
return new Material(colour, new Albedo(1, 0, 0, 0), 0, 1);
}