three.js - 在 aframe 中使用 watershader.js 着色器
问题描述
我希望了解如何在不复制着色器代码的情况下在框架内使用外部着色器文件。我知道我们可以使用 aframe 的 registershader 定义自定义着色器,但是有没有办法将顶点和片段着色器代码指向外部 URL?
例如,如果我想使用此处定义的着色器 - Doob 先生在 a-frame 内的水着色器,我如何在不将着色器代码复制到本地文件的情况下这样做?
解决方案
该脚本包含一个全局定义
THREE.ShaderLib[ 'water' ]
如果你将它包含在你的 html 中,你应该可以在任何地方访问它:
THREE.ShaderLib['water'].vertexShader // vertexShader
这里的例子。
要注册着色器,您只需要正确定义架构中的所有制服:
AFRAME.registerShader('foo', {
schema: {
//all uniforms from the water shader lib
},
vertexShader: THREE.ShaderLib[ 'water' ].vertexShader,
fragmentShader: THREE.ShaderLib[ 'water' ].fragmentShader
})
如果要充分利用ShaderLib ,该脚本使用THREE.Mirror
也需要包含在内water
推荐阅读
- javascript - 如何自定义嵌入式 Vimeo 视频播放器?
- thunderbird - Thunderbird 导入邮件文件夹
- python - 检查元素是否存在
- ruby-on-rails - 在 minitest 之前 rails 会加载什么?(使用 rails 6 进行非常慢的测试)
- javascript - 如何在 CKEditor 中限制每行字符?
- python - 对文本文件中的字典列表进行排序
- r - if (any(co)) { : valor ausente donde TRUE/FALSE es necesario 中的错误
- typescript - 如何使用 Fluent UI Northstar 调色板?
- c++ - 如何使用 allegro 4.4.2 创建可移植的可执行文件
- google-sheets - 从逗号分隔列表中分离和堆叠值