在框架中使用 watershader.js 着色器
Using watershader.js shader in aframe
我想了解如何在不复制着色器代码的情况下在框架内使用外部着色器文件。我知道我们可以使用 aframe 的 registershader 定义自定义着色器,但是有没有办法将顶点和片段着色器代码指向外部 URL?
例如,如果我想在一帧内使用此处定义的着色器 - Mr. Doob's water shader,我该如何在不将着色器代码复制到我的本地文件的情况下执行此操作?
该脚本包含
的全局定义
THREE.ShaderLib[ 'water' ]
如果您将它包含在您的 html 中,您应该可以在任何地方访问它:
THREE.ShaderLib['water'].vertexShader // vertexShader
示例here。
要注册着色器,您只需在架构中正确定义所有制服:
AFRAME.registerShader('foo', {
schema: {
//all uniforms from the water shader lib
},
vertexShader: THREE.ShaderLib[ 'water' ].vertexShader,
fragmentShader: THREE.ShaderLib[ 'water' ].fragmentShader
})
该脚本使用 THREE.Mirror
如果您想充分利用 water
ShaderLib
,也需要将其包括在内
我想了解如何在不复制着色器代码的情况下在框架内使用外部着色器文件。我知道我们可以使用 aframe 的 registershader 定义自定义着色器,但是有没有办法将顶点和片段着色器代码指向外部 URL?
例如,如果我想在一帧内使用此处定义的着色器 - Mr. Doob's water shader,我该如何在不将着色器代码复制到我的本地文件的情况下执行此操作?
该脚本包含
的全局定义THREE.ShaderLib[ 'water' ]
如果您将它包含在您的 html 中,您应该可以在任何地方访问它:
THREE.ShaderLib['water'].vertexShader // vertexShader
示例here。
要注册着色器,您只需在架构中正确定义所有制服:
AFRAME.registerShader('foo', {
schema: {
//all uniforms from the water shader lib
},
vertexShader: THREE.ShaderLib[ 'water' ].vertexShader,
fragmentShader: THREE.ShaderLib[ 'water' ].fragmentShader
})
该脚本使用 THREE.Mirror
如果您想充分利用 water
ShaderLib