Remix.run Logo
boulos 2 hours ago

Technically, we did RTSL before Ingo and then Matt did their stuff at Intel. LLVM wasn't particularly usable in 2007, but Austin and I did try it (this isn't in the paper!). A few years later, I did an actual LLVM JIT for OSL, but we didn't have enough coherence for vectorized shading at the time at Sony.

But none of it was surprising. The original RenderMan shading language was "vectorized" and it even used SIMD instructions on modern processors to run the "interpreter loops". That is, a single "color add" in RSL might have looked like:

  for (int i=0; i < grid_points; i++) {
    out_color[i] += foo;
  }
and the inner part there could use vector instructions. That just isn't nearly enough to get useful wins.

The point of ISPC et al. was to give people CUDA-like easy mode for "trust me, just vectorize the whole thing and deal with the masking for me". It goes beyond a hardcoded shading language (easier target!) though didn't reach as far as CUDA with complex structs / C++ capabilities.