Milo's Epic Ray Tracer (tm)(tm)

Idea Generation

What is this project about?

Looking for more support narrowing down your idea? Try using the idea matrix on this page.


This project is about learning how ray tracing works.

What do you want to get out of this project?


I want to learn all the basics of ray tracing as well as how to make a ray tracer.

where did the skills go? we are taking skills out of the idea generation process, in an attempt to make projects more career-focused. If you want to get leveled-up for a project, share it with the appropriate guide or faculty member for feedback upon completion.

Guiding Question

Turn your idea above into a guiding question.

Check out some resources on how to write a guiding question here.


How does ray tracing work and how does it compare to other


What will it take for you to complete this project?

Use the table below to set your own timeline for deliverables, keep in mind when your final work product is due at the end of the cycle.

Work Product Deliverables

Final Work Product + Notion Page Due
June 29, 2021
Last Day of Project Cycle
July 1, 2021


Use this space to take notes, keep track of your sources, or conversations you have with people about this project.

Link to the repl that I'm coding this in:

6/8: I am using the website to make my ray tracer because it makes it a lot easier to run code. We set up a canvas and made it so that I can set certain pixels through java script code.

I added a custom Vec3 class which holds 3 values, an X a Y, and a Z. I'm using this for my color class as well because color only needs RGB values which is just 3 values as well. I put custom methods on my class like add(vec3), subtract(vec3), divide(number), multiply(number), then also things like dot(vec3) and other vector methods.

Then I made a ray class which holds 2 vectors, one for the location and one for the direction.

6/9: I was able to write some code to draw this to the canvas:


6/15: I made it look for a sphere and it drew this.


I made it so that when you hit the sphere it turns the vector into a color by setting the XYZ to RGB


I then changed it so that there is a light source infinitely far away and it checks the difference between the vector of the face that was hit and the vector of the light and it changes its shade depending on that difference.


I did two things in this step. The first thing was make it so that it could have multiple objects "hittables" in the scene so that I could have a huge sphere below the other one as a "floor". I have a sphere class that has a position (a vec3)

The second thing I did was add anti aliasing which gets rid of the chunky edges of the shapes (like you can see above). It does this by instead of shooting one ray out to check the color, it shoots out a bunch of them in a random way and gets the average of all of the colors which makes edges look smoother.








Embed your Work Product Here 👇🏽

How do I embed my work product on notion?
Add a short description and cover photo

Work Product


Reflect on this project cycle by answering the questions below.

The act of reflecting allows you to highlight the accomplishments and applications of your project. (questions courtesy of Powderhouse Studios)

Was your project meaningful?

Did this project matter? In what ways did it further your knowledge, force you to grow, or provide something useful?

Was your project ambitious?

Given what you already know, did this project challenge you in meaningful ways?

Was your project deep?

Did your project engage with powerful ideas or tools? Additionally, did you engage with the material in a deep sense (i.e. did you develop ownership over the ideas or tools)? Can you utilize these skills independently now?


Use the pages below "QR Partner Feedback" and "Faculty Feedback" to find places for improvement.

QR Partner Peer Feedback
Advisor Feedback

Coming up with an Idea
What is a guiding question?