This paper presents MoonRay, a high performance production rendering architecture using Monte Carlo path tracing developed at DreamWorks Animation. MoonRay is the first production path tracer, to our knowledge, designed to fully leverage Single Instruction/Multiple Data (SIMD) vector units throughout. To achieve high SIMD efficiency, we employ Embree for tracing rays and vectorize the remaining compute intensive components of the renderer: the integrator, the shading system and shaders, and the texturing engine. Queuing is used to help keep all vector lanes full and improve data coherency. We use the ISPC programming language to achieve improved performance across SSE, AVX/AVX2 and AVX512 instruction sets. Our system includes two functionally equivalent uni-directional CPU path tracing implementations: a C++ scalar depth-first version and an ISPC vectorized breadth-first wavefront version. Using side by side performance comparisons on complex production scenes and assets we show our vectorized architecture, running on AVX2, delivers between a 1.3× to 2.3× speed-up in overall render time, and up to 3×, 6×, and 4×, speed-ups within the integration, shading, and texturing components, respectively.
I thought there would be a website for a newly available render engine (instead, we get a paper about a specific programming technique for the engine used by Dreamworks with little information about anything else).
Without much info, there’s not much regarding Moonray that we can talk about.
It’s their proprietary rendering engine, and one they apparently have no desire to make available to third parties so why would they create a website for it?
They have written a publication detailing their research, just like what you would expect coming out of universities. Adding in the source code or even a working executable is actually uncommon.
We can debate whether that’s a good way to go about things (it isn’t), but it’s standard procedure.
It is standard practice because it has nothing to do with end users or even immediate implications for development. And it is the best way to do things in a scientific community where you want to a) share information (for the greater good with others) that you do not intend to patent b) be acknowledged for having invented it or developed the concepts c) prevent others from staking a claim on your inventions or ideas (copyright or otherwise) and finally legally, d) preventing anyone from developing a patent on this technology (by having stolen the ideas some way or even by coincidently having developed it simultaneously), and thus preventing you or others from moving forward with producing products from the patented technology.
In patent law you can not patent anything that has been described publically, or published in some way.
The antithesis to this is what Joe Alter did with his hair technology. He kept quiet, and made a patent. This gave him legal grounds to come after other similar technology. I don’t believe he ever won anything in court. But he did sue and he did get a pay off out of court, if memory serves. This is his right of course. And more power to him.
But it is not how these large studios, Pixar/Disney, DreamWorks and others think.
They have always looked at this as open scientific discovery. The very technology we use in 3D was developed exactly like this. Papers started coming out in the late seventies.
Subdivision Surface technology started out as a white paper. And eventually developed into Catmull Clarke we have today, which is currently open source.
But it does not have to be open source to satisfy the legal requirements to keep information flowing, exchanging ideas and removes the option for a Joe Alter to pop up and sue you later over a patent.
So that is why white papers happen. Every year. Been this way since the start. And it has given us what we have now.
Obviously Intel would have an advantage here because of its AVX-512 registers… But then again CUDA and OpenCL often have the advantage because of their thousands of cores and we see a lot more render engines built to run on the latter rather than built to use Vector units of CPUs.
Now, we can talk about it.
Here is the link
They are preparing the files and release it soon on GitHub.
And this is the announcement
DreamWorks intends to make MoonRay available under the Apache 2.0 license. Further
information and updates will be available at OpenMoonRay.org