YEGOR'S VFX SITE
  • Demo Reel
  • Personal Projects
  • ArtStation
  • Resume/Contact
  • Blog

Renders


Picture
Procedural Sushi - All texturing done with fractal noise inside Arnold. Modeled procedurally in Houdini using VDBs.
Picture

​​​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

Picture
"Lucy" statue rendered with 2 area lights + environment light, 2 indirect diffuse bounces. Render took ~5min on my desktop machine (a core i7)
Picture
Rendering the bounding boxes generated from the bounding volume hierarchy gives the image a ghostly appearance. Every successive bbox intersection increments the pixel value by 1. The render is then normalized to produce this image.
Picture
Picture
Render
Samples Per Pixel
References & Inspiration:
OSL testrender
Physically Based Rendering
Peter Shirley's Graphics Blog
codeitnow
Scratchapixel
Fast, minimum storage ray-triangle intersection.

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.
Stanford Dragon model, rendered with 2 directional lights.
Edge detection algorithm for anti-aliasing. Model courtesy of tf3dm.com

Photography



Photoshop Paint Studies


These are various paint study exercises I have either done on my own time, or at Capilano University.
Powered by Create your own unique website with customizable templates.
  • Demo Reel
  • Personal Projects
  • ArtStation
  • Resume/Contact
  • Blog