Try to set ray types correctly for rays -- a little naive now, only using "camera", "shadow", and "diffuse" for all rays (leave distinguishing between reflection, refraction, diffuse, glossy for another day, and currently testrender doesn't support subsurface or displacement, but maybe someday). Also, for testshade, improve efficency -- don't decode raytype on every point. For each individual shade, testshade was converting the name of the raytype from a string to a ustring, then decoding to a bitfield. Pull it all out of the loops by computing the bitfield once. Adjust glass shaders to not change behavior based on raytype: The code path that was supposed to suppress noisy caustic rays never worked properly before because we never set the ray type in testrender. Now that testrender sets it -- but does not distinguish between the different types of secondary rays -- the code path is active, but incorrect, and causes tests to fail. Just remove the offending clause for now and return to the old behavior of the shader (no attempt to eliminate caustic rays). Later, we should revamp the glass shader entirely by switching to the newer MaterialX-inspired closures. Note: when you specify a resolution in the Background command in our scene xml, it will run the shader out of any ray context at all (therefore having no raytype) in order to populate an environment map that will be used as needed. If you omit the resolution, no importance sampling is used at all, so it's much noisier. I think the right approach is to do both -- populate the map for importance sampling, but run the shader on the rays themselves to get higher quality visible results. Signed-off-by: Larry Gritz <lg@larrygritz.com>
a68a972