Darryl's Pixels


Solstice is my multiplatform physically-based renderer, written in C++. The objective of this project is for self-teaching goals, given my interest in ray tracing techniques.

The project has started and stopped many times, this current version has been ongoing for over a year and a half.

This version started from Peter Shirley’s Ray Tracing in One Weekend books, and has continued with me changing chunks and pieces to improve it, such as the implementation of a Stratified Sampler, texture mapping, triangular meshes and most recently the addition of embree.

TBB is used for screen tile based parallel computation. and embree is used for accelerated ray intersection tests.

My objective is to have a working simple version of all the different parts of a renderer. Once I have a working example of each section, I’ll start making more advanced implementations of each e.g. I’ll write more sophisticated samplers, integrators, add so forth.

The blog posts I will write sometimes will have to do with Solstice. I usually try some new feature in a sandbox outside it and then move it into it.

Current features


Mesh import:




Acceleration structure:


I’ve had to break a few things when I was on a big cleaning spree and adding in embree, hopefully I can manage to get things back to normal soon.

Future work

There’s a ton of work I intend to do. I’m still polishing some things and removing bugs, but these are some of the features I intend to implement:


Here’s some images from what I’ve rendered so far, more images are incoming when I start implementing the cooler stuff

Cornell box with bunny - all diffuse

The white pixels are making me sad

Noisy sibenik with white pixels