Resources to read?


I have some background in rendering, but most of it is older, i.e. things like PolyRay and POV-Ray from 10-20 years ago - so pretty much all direct illumination / eye-based. I have a little Blender experience, but not much with its renderers, whether Cycles or BI. I get how path tracers work, but have almost no experience in them.

I’m routinely lost when looking around at all the things I have control over in Appleseed, but both docs and tutorials are a bit scarce. Now, I know that most of this wasn’t invented from scratch in Appleseed, so I’m sure that most of it I can read about somewhere. What is a good place to get some background and some practical explanation on things like renderer settings and, particularly, with different materials and their parameters and interactions? Is something like PBRT a good place to start?


PBRT (Physically Based Rendering) is an excellent source if you are interested in all the theory and concepts of modern render technology and its implementation. It is not a how-to do for the average end-user.
Some explanation about the current state of documentation and tutorials (or lack thereof):

  • That the docs and tutorials are a bit scarce is a problem shared with most free open source projects. It is hard to find people to do (unpaid) the relatively unexciting work of writing extensive documentation and preparing tutorial scenes.
  • Good tutorial scenes, which are up to the standard of what artists produce for commercial work, are especially hard to do. High quality assets (models, textures) used in these scenes are mostly not free, not cheap and cannot be included to be shared with other users.
  • appleseed had some major changes recently, especially the introduction of a fully OSL (Open Shading Language) based shader system, and that means the process of updating the documentation is still ongoing.

Apart from the appleseed documentation and the downloadable demo-scenes I would recommend the Arnold user guide.
Arnold works on similar principles (unidirectional path tracing) and many tips and principles apply also to appleseed. Especially the tutorials section, sampling and materials (standard surface) are helpful.

You are of course welcome to join the developers on Discord and directly ask about anything which comes up with appleseed.


Hi Hodapp87. I’ve been working on the docs for the Blender plugin on and off over the last few months. Right now it’s very ‘this button does this’ (although I did try to give some background into the OSL implementation and why it’s a good thing). I’d like to add more background info on path tracing and how the settings all work together, but like Mango said my priority right now is getting the new blenderseed feature complete.

And yes, you should definitely join Discord if you have questions. There’s a lot of information in there and it’ll give you a much better idea of what is going on with appleseed development.


Thanks for replies.

I’m a software developer myself and use open source pretty extensively (professionally and otherwise), so I’m no stranger to projects that lack documentation. I know that not everyone follows the practice of documenting as they code, and I know that documenting after-the-fact can be a big time sink. Having said that: I write a lot, I document a lot, and I like to help where I can (once I actually understand things somewhat).

I didn’t realize the OSL integration was recent. When it comes to OSL, are there good practical resources that tend to apply across various renderers?

The Arnold user guide is the sort of thing I was looking for, so I’ll be checking that out. I’ll check the Discord out too, but do my best to not be an insufferable pest with questions that can be answered elsewhere.


appleseed has it’s own internal shading system but it won’t be exposed anymore in the future. The reason being that OSL, a dedicated programming language for shading, is much more flexible and has developed into an industry standard.
OSL has C-like syntax and is designed for describing materials, lights, displacement, and pattern generation.


Okay. If it’s not too complicated to answer: in what form is its internal shading system exposed now, and what is going away? If this is all deprecated, it would be good to know what parts I need not waste time trying to understand.

Also, I see that the OSL files in the repo contain URLs to appleseed-maya docs, e.g. as_disney_material.osl and asDisneyMaterial - are these actually specific to Maya or do they apply elsewhere?


I quote from the documentation
OSL is available in conjunction with the node editor in Blender. When a material is created by default it will use the internal (non-OSL) system. To use OSL, click on the ‘Add OSL Nodetree’ button at the top of the material panel. This will create an OSL nodetree and automatically link it into the material. This will override all the internal material settings and they will vanish from the panel, and OSL will now be used for this material.
(The image shows how to add OSL materials in Blender)

Going away is all access to non-OSL materials in the upcoming version of the blenderseed plugin. The new plugin (which is in testing right now) had some major changes. Most beneficial for users will be the implementation of preview rendering inside the Blender viewport. For this the project writer had to be rewritten and is now based on Python 3.5.
If you want we can provide you with an alpha build of the upcoming plugin for testing.

This is correct, the description of the OSL shader (also valid for for Blender) is in the Maya documentation


You say “build”: are there native components of this that have to be compiled? I ask because I’m interested in whether I’ll have to handle this in order to make things run on NixOS. Current Blenderseed worked fine through the normal add-on installation process.


Yes, the current version of blenderseed uses Python 2.7 and corresponding python bindings in appleseed.
The upcoming version is based on Python 3.5 (Blender uses this version internally) and requires corresponding Python 3 bindings and boost-python3 support in appleseed to be compiled and linked.
We have ready binary builds for Windows but for linux you will need some static compiled dependencies.
@est is the developer to ask for details regarding Linux compilation. But best would be to join Discord for this if you haven’t already done so.


Ooh, thanks for telling me. I left the Python 3 bindings out of the NixOS build of Appleseed that I committed, but it looks like I’ll need to be fixing this if upcoming Blenderseed is to work properly with it.


You’ll definitely need it. Like Mango alluded to appleseed won’t work without the Python 3 bindings on the new blenderseed.

As far as OSL the fact that it’s a standardized library means 95% of the code will work with any renderer that supports it. The only things exclusive to each renderer are the shading closures (BSDF’s, BSSRDF’s, etc…). Some renderers that support OSL don’t even use those. For instance, Renderman uses OSL for a lot of it’s pattern generation nodes, so in theory those shaders should be usable in any OSL supported renderer (although I’ve never tried that myself). I have however loaded 3DSMax OSL shaders in blenderseed and they worked fine.

There’s a slight speed penalty for all this versatility but it’s worth the trade off.


I definitely like the idea that OSL is not just supported here, but is central. What do you mean that the shading clojures are exclusive to the renderer? Just that (for instance) Appleseed ships with its own set of standard BSDFs, BSSRDFs, and so on, but they happen to be done as .osl files?

Somewhat off-the-wall question: I saw that Appleseed has things like distancefieldobject implemented via plugins. Is it conceivable that rather than expressing geometry via a distance field + sphere tracer in a C++ plugin, this could be done via OSL?


A closure is like OSL’s hook into the BSDF’s that a renderer uses. Appleseed has it’s internal shaders (like plastic, metal, Lambertian, etc…). Those are exposed to OSL through a closure.

So different renderers will have different closures depending on their capabilities. Or in the case of Renderman, no closures at all (i.e. you can’t create a material for Renderman fully in OSL).

Ultimately, you’re accessing the same BSDF’s no matter which method you use in appleseed (OSL or the legacy integrated system). But with OSL you can do a lot more with them. If you’re feeling adventurous, take a look at the OSL file for the asStandard material. It uses a number of appleseed closures as outputs but all the math and heavy logic are done in OSL.


Certainly something we’ve been pondering!!


Actually, appleseed has been supporting OSL for years now: it was in fact one of the first open source renderers to support it).

What is recent however is OSL support in blenderseed, our Blender plugin.

Shaders in src\appleseed.shaders\src\appleseed are not specific to any DCC app, they’re general purpose. However as @Jonathan_Dent pointed out, OSL shaders docs are currently part of the Maya plugin docs.