Back in June I was hired at Nvidia as a "3D Content Specialist" to develop materials for their IRay render engine. The above video is the demoing the process that I go through to create a material and publish them to be ready for release.
For those who don't know, IRay seeks to be a physically based real time render engine and optimally along with the usage of Nvidia's Quadro VCA Clusters. IRay has been development for a few years now; it is in public open beta and is integrated as a plugin for Autodesk Maya, 3ds Max, Revit, Maxon Cinema 4D, Mcneel Rhinoceros, Allegorithmic Substance Designer (and Painter is scheduled), and Daz Studio.
As IRay is meant to be physically based, the materials created are aimed towards industrial/product designers and architects. These are more so the people who want to be able to have a library of materials to pick from and to drop directly on their models. Thus the materials that are being created are largely procedurally based rather than specific bitmaps and patterns need to be able to be tiled indefinitely without blatant repetition.
In the video you will see that I am using Rhino to create my materials in. This is due to that Rhino's plugin was the most stable out of all the programs and the UI was built to be flexible and with the core definitions in mind, whereas Maya's was built years before and by a 3rd party. There's also that currently Rhino's has viewport render and the other programs do not yet support it.
Normally I would create materials using a flex_material which has a large amount of attributes exposed. However, in this demo I was creating fabric and there are some particular attributes that I need which currently do not exist in any of the core definition materials given to us by the engineer. Thus, using MDL (material definition language) I compile a fabric shader. With the shader as a base, I am then able to start adjusting parameters and blending other core definitions in to create various types of fabric. When exporting a material, the MDL becomes compressed. Normally this may be fine for personal use but I am creating materials to be used by consumers so specific attributes have to be all nicely displayed in the UI (appearance attributes such as color and patterns) while others to be locked behind the code so the inherent structure of a material stays the same (a plastic material shouldn't be able to turn into a gemstone material) for ease of use.
As MDL aims to be a universal shading language so after I create my material in Rhino I am also simply able to open it in other programs such as Maya and 3ds Max!
vMaterial Library v1 has already been released to the public. I hope those who have access to it have enjoyed it. Currently, we are working on a version 2.
There's still a lot more IRay could do and I'm waiting for skin shader, geometry modified procedurals, more procedural functions, 3D texture functions, fur and hair support, and birefringence, just to name a few.