6
\$\begingroup\$

There are many 3d packages which are able to construct materials. Autodesk Maya, 3ds max, Houdini, etc.

There are languages which are able to construct materials as well, like GLSL and Cg.

How does first group correspond to the second? Are there workflows, where they are used simultaneously?

From my experience, constructing materials in 3d packages is way faster than writing code in GLSL. They also have scripting systems for more customization. Do shading languages have their own benefits?

\$\endgroup\$
9
\$\begingroup\$

Well, Shading languages like GLSL and HLSL is what all the "material" code ultimately get translated to in the end. Shaders are the actual programs which are run directly on the GPU, and to create them, you use a shading language.

3D packages are generally used to make it easer for you to make realistic looking graphics, and writing shaders by hand is a little cumbersome, as one would require knowledge of shader programming, Lighting mathematics, physics, and so on. What you call materials is just an abstraction provided by the package so that you can design surfaces and graphics in an intuitive, easy and fast way.

It is seen that in most cases, scenes created with 3D packages can be created using a fixed set of commonly used shaders (phong shading, diffuse, specular colors, reflections, simulating roughness and other common things). These are the things 'materials' save you from rewriting.

Though writing shaders directly can be cumbersome, provided you have all the prerequisite knowledge to do so, you can fine-tune and create effects which are otherwise not so much possible with what 3D packages provide with their "material" interface. Shaders give you full control.

\$\endgroup\$
1
\$\begingroup\$

Shaders let you do much more than just materials.

With vertex shaders you can modify geometry.

With geometry shaders, hull shaders and domain shaders you can effectively define new primitive types (classically, patches)

With pixel shaders the options are nearly endless, you can define an entire scene in a pixel shader rendered in a fullscreen pass, perform raytracing, deformation, blurs and many other effects which are simply not easily categorised into 'material'.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.