https://www.mediafire.com/file/qpiftjs4bucugx4/Tda+Base+previews.7z/fileSomeone called this a 'balloon shader' and I included a balloon in this scene. The shader is essentially unchanged from the first upload two months ago, though the short-form files have been reorganized a little. This has mainly been about exploring the boundaries of the shader's capabilities.
What we already knew:
1) setting specular strength in a PMD or X object's material properties is better than using a custom shader for each material, that has to be selected and compiled for each material. Most models just don't do this because default shader's specular looks bad.
2) generic specular math is bad for hair, which, like satin, has shiny fibers arranged in parallel. Reflections from a shiny fiber are more like cones, which is why hair reflections often look like a band circling the head. It's possible to get at least a bad tangent vector to use with better math, but this shader doesn't try at all.
What we learned:
3) grazing specular for a stage looks bad if there's no shadow map, because we expect to see outlines of objects in shadows when the brightest components of a pixel's light are mainly from a specific light source. (Solution: use a 'stage specular' flag.)
4) more work is required to get ground shadows to look good with pmx stages that are drawn after the ground shadows, especially when the stage floor is not gray.
5) ambient occlusion is not the most important part of how a shader looks, especially because more accurate simulation would look at the reflected colors and brightness of the objects doing the occluding, which can deepen hues instead of just darkening colors.
6) environment-type settings like shadow darkness are hard to use without a project-specific settings file. Either have to duplicate short-form effects or edit the main shader, which affects every project that uses the shader. Unless you just copy the entire shader, which is hard when it "#include"s other files.