Renders
Programming/Coding/Scripting
Raytracer
Ray tracer written in C++, as an exercise to understand how ray-tracers work and to learn C++.
I am working on adding basic shaders, and more efficient light sampling (currently lights simply act as emissive surfaces, without direct sampling).
This project is an exploration and attempt to understand the core concepts behind ray tracing. I wanted to make all the mistakes that I can in order to understand why raytracers are implemented the way they are, and why other approaches are not used, so I did not follow any tutorials or guides. I have, however, read books, papers, and blogs to learn and understand all of the core concepts behind sampling, acceleration structures and shading, then pieced together that knowledge (along with my assumtions as a lighting artist) to create this project. As my skill progressed (starting with almost no understanding of C++) my code did too, so many of the early classes and functions I rely on have embarrassingly strange workarounds for things that (to my discovery) turned out to be doable in much cleaner and simpler ways.
Overall, though, it is a very fun experience for me and has helped me improve my understanding of rendering substantially, which has benefited my performance in my day to day job as a lighting artist & TD.
The code is available on github, which I use in to sync the project between my laptop and desktop workstation. Full disclosure - I do not understand git very well.
https://github.com/yegorsw/raytracer/tree/master
I am working on adding basic shaders, and more efficient light sampling (currently lights simply act as emissive surfaces, without direct sampling).
This project is an exploration and attempt to understand the core concepts behind ray tracing. I wanted to make all the mistakes that I can in order to understand why raytracers are implemented the way they are, and why other approaches are not used, so I did not follow any tutorials or guides. I have, however, read books, papers, and blogs to learn and understand all of the core concepts behind sampling, acceleration structures and shading, then pieced together that knowledge (along with my assumtions as a lighting artist) to create this project. As my skill progressed (starting with almost no understanding of C++) my code did too, so many of the early classes and functions I rely on have embarrassingly strange workarounds for things that (to my discovery) turned out to be doable in much cleaner and simpler ways.
Overall, though, it is a very fun experience for me and has helped me improve my understanding of rendering substantially, which has benefited my performance in my day to day job as a lighting artist & TD.
The code is available on github, which I use in to sync the project between my laptop and desktop workstation. Full disclosure - I do not understand git very well.
https://github.com/yegorsw/raytracer/tree/master
Rasterizer
Simple triangle rasterization renderer written in python. This was an exercise to try and apply basic linear algebra techniques and further my understanding of python. I was inspired to try the idea after reading about how Renderman created beautiful images without the use of raytracing.
The biggest thing I took away from this exercise is how slow python is at crunching numbers and doing math compared to a compiled language like C++.
Reads & renders OBJ files using "directional lights" (simple dot product).
Supports edge-detection-based anti-aliasing.
The biggest thing I took away from this exercise is how slow python is at crunching numbers and doing math compared to a compiled language like C++.
Reads & renders OBJ files using "directional lights" (simple dot product).
Supports edge-detection-based anti-aliasing.
Photography
Photoshop Paint Studies
These are various paint study exercises I have either done on my own time, or at Capilano University.