Darryl's Pixels

Solstice

Solstice is a 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 tile-based parallel computation.

The recent addition of embree has resulted in a lot of dirty code which I’m still clearning.

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’ll 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

Shapes

Mesh import:

Cameras:

Integrators:

Samplers:

Acceleration structure:

Materials

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:

Images

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