更多示例代码:github地址
更多示例效果:demo地址
基本的转换规则:
- 把ShaderToy特定变量作为 uniform 变量添加到自己的着色器中,如iGlobalTime、iResolution等
- 把mainImage(out vec4 z, in vec2 w)重命名为main()
- 把输出变量重命名为gl_FragColor,而输入变量即为顶点着色器里的输出
- 利用three.js内置的uv变量,重写shadertoy里对于坐标的计算
遵照这种基本模式,可以在three中转换shadertoy中的着色器代码。
我首先在shadertoy上选了一个看起来很简单的效果,上升气泡。
大概是这个样子的。
下面是它的shader代码: