Just as the title describes, I need a shader which has a sharp, non-gradient specular highlight. Also, I’d prefer to leave in the regular shading for everything else.
Come on. There has to be some way to achieve this.
To get the specular value, get the dot product of the surface normal and the half angle (which is normalize(light vector + view vector)).
Then you can either use that as a UV coordinate for a ramp texture (ensure it’s coordinates are clamped in the inspector). It should be black with the rightmost few pixels in solid white (more white pixels = larger highlight).
Or multiply it by a large number and clamp it to 0-1 so you get a nice hard black/white output.
Then add that on top the rest of your shader output.
Or multiply the rest of the shader output by 1-specular and then add the specular (so that it’s a solid output, rather than additive).
Or, for a solid coloured specular - multiply the rest of the shader output by 1-specular and then add the specular * light colour.