Shader writing is used to accomplish different things:
- Solve a new problem
- Reduce complexity for demanding shots
- Create a tool that works in your specific pipeline
- Generate data you could use elsewhere (like Nuke, or another 3D package, etc)
- Improve on existing shaders
- Introduce new shaders and methods (BSDF materials are an example)
Examples are:
-
Shaders written to mimic something specific using data from another source, like the Iron Man suit shader that uses measured BSDF data. This reduces (or eliminates) the need to eyeball and develop one using artist time.
-
Creating a shader that writes specific data to a framebuffer pass or AOV for compositing later.
-
Shaders that can take point cloud data and use it between sources (XSI to Maya) or renderers (Renderman to mental ray, etc)
-
Make a renderer do a job differently, like making a path tracing BSDF material for mental ray so you can run it more like iRay without the iRay restrictions.
The thing about shader writing is that your imagination is the limit on what you might want it to do.
Shader writers are usually developers and that is their primary task. They also work with other departments if they need different things. Shader writers specifically would deal with lighters and look development. More general developers would also write tools as well as shaders for all departments. It depends on what your studio may need you to do and where you are most valuable.
A lot of places will use what is out of the box so-to-speak and not write anything. But in those cases I have found myself wishing we had a shader writer. Otherwise you may end up brute-forcing your way into doing some things. It will work, but it is inefficient and occasionally maddening.