Using grab pass
In the Adding transparency to PBR recipe of Chapter 4, Creating Test Cases and Writing Scenarios for Behavior Driven Development in Symfony, we have seen how a material can be made transparent. Even if a transparent material can draw over a scene, it cannot change what has been drawn underneath it. This means that those Transparent Shaders cannot create distortions such as the ones typically seen in glass or water. In order to simulate them, we need to introduce another technique called grab pass. This allows us to access what has been drawn on screen so far so that a shader can use it (or alter it) with no restrictions. To learn how to use grab passes, we will create a material that grabs what's rendered behind it and draws it again on the screen. It's a shader that, paradoxically, uses several operations to show no changes at all.
Getting ready
This recipe requires the following operations:
Create a shader that we will initialize later.
Create a material to host the shader...