I wanted to introduce my latest Dart project, DartRay. It is a Dart port of the PBRT (pbrt.org
) physically based ray tracer. It supports a number of rendering and lighting algorithms, include monte carlo path tracing, metropolis light transport, photon mapping, subsurface scattering, etc. You can find the project on pub at http://pub.dartlang.org/packages/dartray
I was a bit skeptical of how Dart would hold up to the level of computation required by the more advanced rendering methods. But I was rather pleased with the results. For a benchmark test against C++, I did a metropolis render with bidirectional path tracing, specular reflections and environmental lighting. The C++ version (multi-threaded, debug build) completed the image in 10.5 minutes; the Dart VM, splitting the render job into 4 concurrent isolates, rendered the image in 19.5 minutes. Of course the optimized build of C++ would be better, but given it's nearly a direct port from C++ with little work on Dart-specific optimizations (no simd, too many object allocations, etc), I'm pleased with the results. And with continued optimizations, both in my code which has room for a lot of optimization, and in the Dart VM, I'm confident performance will get better.
Hope you enjoy, and don't get too put off by how loud your CPU fans can get :-)