From c9a18567dc5ff5775e9f494233c5bb7d599a88cb Mon Sep 17 00:00:00 2001 From: James Barnett Date: Wed, 5 Jan 2022 16:11:14 +0000 Subject: Update readme --- README.md | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) (limited to 'README.md') diff --git a/README.md b/README.md index 12e6bc8..c394ba6 100644 --- a/README.md +++ b/README.md @@ -1 +1,33 @@ -# js-raytracer \ No newline at end of file +# JS Raytracer +A minimal ray tracing engine written from scratch in JS (TypeScript). + +![](.github/output.png) + +View an interactive demo [here](https://jamesbarnett.io/raytracer). + +No graphics APIs or libraries are used, only a single HTML5 canvas call to draw the generated bitmap image. + +Various effects are supported, including recursive optical reflections and refractions, and [Phong shading](https://en.wikipedia.org/wiki/Phong_reflection_model). +Basic multi-threading is implemented using the [Web Workers API](https://developer.mozilla.org/en-US/docs/Web/API/). + +## Building locally +You will need NodeJS >= 10. + +Clone this repo and build with webpack: + +``` +$ git clone https://github.com/jamesbarnett91/js-raytracer.git +$ cd js-raytracer +$ npm install +$ npm run serve +``` + +This will build the project and start a webpack dev server listening on port 9000. Navigate to `http://localhost:9000/` in you browser to view the project. This also enables hot-compiling/reloading on change. + +Alternatively, you can build a distributable with `npm run build`. This will compile and bundle the project into `./dist`. + +## Useful resources + +- https://www.scratchapixel.com/lessons/3d-basic-rendering/introduction-to-ray-tracing +- https://tmcw.github.io/literate-raytracer/ +- https://github.com/ssloy/tinyraytracer \ No newline at end of file -- cgit v1.2.3