SippShaderStrauss Command

SippShaderStrauss ambient smoothness metalness color [opacity]

NOTE: This shader is currently has a serious bug. As smoothness and metalness get larger, the object gets darker. It anyone wants to take on figuring this out, it would be great.

This is an implementation of a shader described by Paul Strauss in IEEE CG&A Nov. 1990. In his article he explains that most shading models in use today, i.e. Phong, Cook-Torrance, are difficult to use for non-experts, and this for several reasons. The parameters and their effect on a surface are non-intuitive and/or complicated. The shading model Strauss designed has parameters that is easy to grasp and have a reasonably deterministic effect on a surface, but yet produces very realistic results.

ambient is a value between 0 and 1 which determines how much of the base color of a surface that is visible when it is not illuminated by any light source.

smoothness is a value between 0 and 1 that describes how smooth the surface is. This parameter controls both diffuse and specular reflections. 0 means a dull surface while 1 means a very smooth and shiny one.

metalness is also a value between 0 and 1. It describes how metallic the material is. It controls among other things how much of the surface color should be mixed into the specular reflections at different angles. 0 means a non-metal while 1 means a very metallic surface.

color is a list containing the red, green and blue values for the surface. Each being a number between 0.0 and 1.0.

opacity describes the opacity of a surface. 0.0 means totally transparent, 1.0 means totally opaque. May be a list of red, green and blue opacity values or a single value to be used for all color channels. Optional, default is 1.0.