In this project, I explored the refract() VEX function in combination with my favorite function, intersect(). My control Null let's you choose the size of the emitter, the number of rays emitted and the angle of the cone (using the sample_direction_cone() function). The last two sliders control the amount of refract samples used and the Index of Refraction for the entire scene, not object / shader specific.
In my second example, obviously inspired by Pink Floyd's iconic album cover, splits a single ray into multiple rays with different IORs. After the first split, all rays behave like in the first example with the difference that each ray remembers it's new IOR and color value, sampled for the actual album cover, and passes it over for coherent refractions.
This project is heavily inspired by rman197 on vimeo and his TP Rays.
Thanks for watching :)