• Buddahriffic@lemmy.world
    link
    fedilink
    arrow-up
    3
    ·
    6 months ago

    Check out 3d graphics related stuff, there’s a ton of geometry used there, whether you’re ray tracing or using 2d projection.

    A ray tracer is basically made up of:

    • ray caster algorithm to map pixels to rays and puts them into an image
    • data structures to contain scene data (like geometry, lighting, materials)
    • algorithm that represents a ray as a line and determines which parts of the scene geometry that line intersects with, selecting the one nearest and in front of the eye (or wherever the front is culled)
    • same algorithm used to determine if a ray from that intersection point to each light has anything between the point and light
    • also need to get the angle to the light for each ray that isn’t blocked
    • a shading algorithm that uses the lights, materials, and angles (and maybe more info) to determine the colour of that ray
    • some code that does something with the resulting image, like display it or save to a file

    And that’s basically it. It will be slow without optimizations but it’s cool af seeing your renders. And you can improve on it from there if you want. Though a warning: you might get obsessed with analysing different visual phenomena and thinking about how to render something like that for a while after doing this, which might also lead to gaining a critical eye for where 3d engines fail to be accurate.