CacheableDynamicShader can cache created Shader instances for reuse between identical sets of bounds.
Called when new instance of Shader must be created, as the left, top, right, and bottom bounds have changed or there is no cached Shader.
Creates a Shader by using the provided left, top, right, and bottom bounds.