WebcamToy 如何在 getUserMedia() 网络摄像头视频之上获得奇怪的效果?

How does WebcamToy get weird effects on top of getUserMedia() webcam video?

我知道如何在 Javascript 中使用 getUserMedia() 访问网络摄像头。然而,webcamtoy.com中添加的所有效果给我留下了深刻的印象——尤其是"Top mirror"、"Tunnel"、"Shuffle"等效果。这些似乎不是普通的 CSS 过滤器 [1]。看到他们在浏览器中工作 "live" 令人印象深刻。

不知道这里有没有人知道用的是什么技术? .. 是否有任何网站可以解释如何做到这一点?

[1] https://webrtc.github.io/samples/src/content/getusermedia/filter/

我想出了一个办法。这个想法是设置一个 WebGL canvas 并使用网络摄像头作为纹理的来源。然后可以通过修改片段着色器来添加奇怪的效果。

我在这里测试技术:https://www.html5fun.com/webgl/webglswirl2.php