The original method of applying shaders to viewports did not work in practice. It was also too complicated. This new way of doing it with CanvasLayers works well and is easy to implement.
I reorganised the information to improve the information flow and readability, and to reduce redundancy.
I replaced the original cube example with a sheep sprite. While the original tutorial claimed to be in 2D, the example cubes were in 3D, which was confusing. Also, sheep are more engaging than cubes.
I replaced the the Sobel filter example with an hex pixelization example, because in practice applying a Sobel filter to a frame often makes it appear pure black. People trying out this filter may think it does not work. Removing the Sobel filter example also removes a note about the filter's implementation, saving space. In contrast, a pixelization filter works on nearly all images and makes for a more engaging and clear example.