No, there is not. While fingerprinting can be done by actively providing the browser with a resource that will allow for fingerprinting, it is also possible to fingerprint a client entirely passively. For example, the specific order that client headers are transmitted in gives away the web client you are using. Even if you spoof various headers like accept encoding and user agent, you are still giving away the order of the headers, which itself makes passive browser fingerprinting possible. Another example is analyzing the behavior of the client when fetching resources. In what order does it fetch resources? How many does it fetch in parallel? All of this data is routinely sent to any web server you connect to, and there is no way that you can tell if it is being used for fingerprinting purposes.
It is possible to detect if certain explicit and active fingerprinting attempts are made, for example AudioContext fingerprinting or, as you provided as an example in your question, WebGL-based fingerprinting, but detecting this will not allow you to conclude that the website is not engaging in fingerprinting activity. In addition, there are going to be numerous ways to covertly collect this information in a way that looks quite innocent to automated detection. As for specific software that is able to do this, explicit software recommendations are off-topic here (and I do not know of any specific pieces of software that can detect this, anyway).
You may want to check out AmIUnique, a proof-of-concept website that uses a variety of fingerprinting techniques, both active and passive, to uniquely identify a system. It uses not only primitive techniques such as UA fingerprinting, but more advanced techniques such as WebGL and AudioContext fingerprinting, font enumeration, browser window dimensions, etc.