Thomas Dinges is a Blender developer and was one of the driving forces behind the creation of a working implementation of Open Shading Language (OSL) in Cycles. He is also hosting the website OpenShading.com which features news, background infos and tutorials for OSL. This interview was conducted at FMX 2013 and was released in the magazine Digital Production in German language.
BD: Hello Thomas, you were one of the developers who helped implement the Open Shading Language in Blender Cycles. Tell us a little about your experiences...
TD: OSL has been in Cycles since the very beginning, which was in 2011. At that time OSL was already implemented, yet in a non-functional state. Brecht van Lommel, the main developer of Cycles, had used the Open Shading Language project to great extent when designing Cycles. OSL was an important aspect in the development process of Cycles, even today you can still find its traces in names and tools and also in the workflow.
OSL was one of two shading backends, but unfortunately it was not working. OSL only runs on the CPU so Brecht designed a second shading backend that also worked on GPU because Cycles was intended to run on both CPU and GPU. This second backend got virtually all attention when developing Cycles so the OSL backend was kind of in an orphaned stage. In the late summer of 2012 OSL got into a usable state. That was when I looked a bit at the code and changed a few little things and fixed some bugs. But I also had to port all the changes in the shader system since 2011 to the OSL backend. Together with Lukas Tönne I worked on the implementation so we could show a working prototype. It already had the script node which Lukas had designed. So it was finally possible to use Cycles with OSL shader scripts.
BD: So in theory Blender has some OSL support since 2011 and since 2012 it's actually usable. Now we have 2013 and Blender is still the only software on the free market with OSL shading. What are the reasons why other engines are so shy in adopting OSL?
TD: I think the main reason is that there were no public projects that utilized OSL before 2012. Then “Men in Black III”, “Hotel Transylvania” and “The Amazing Spiderman” were released. Those were the first feature-films that were realized using solely OSL for shading. Before that OSL was not well known. It was known that Sony Imageworks were using it, but people probably were still a bit skeptic whether an early adoption would make sense. Today I know that V-Ray will feature an OSL implementation for sure, the information was confirmed at FMX 2013. Unfortunately, there are still NDAs on the details so we have to wait a few more weeks for the official announcement.
BD: Thus Blender Cycles is the only pathtracing-engine with OSL support right now. A lot of scripts have already been written for it. Can those scripts become a valuable resource for users of other render engines?
TD: I think it will definitely be portable, that's one of the reasons to use a shader language in the first place. Take a look at all the different engines that are compatible to Renderman – one can exchange shaders quite easily. The only thing that is not part of the OSL specification are the closures or BRDFs or actual shaders. But those are simple function calls, one can change them inside the shaders quite easily. For example, if you have a shader that is implementing a procedural texture and you use a diffuse shader as an output, you might need to rename that when you want to use another engine. Yet in the end the scripts should work in all render engines supporting OSL.
BD: So it's portable and in the future the scripts that have been created for Blender Cycles will also be useful for users of other render engines. At the moment your are running a website with information on OSL, but at the moment it only covers the usage of OSL in Cycles. Are you planning to add news and infos on other render engines as well?
TD: Definitely! At the moment OpenShading.com is focusing on Cycles because it is the only render engine available to the public. But I'm planning to add further infos once other engines are released. I think together with the many OSL scripts already available it will be really valuable for other users once for example V-Ray gets OSL support.