Использование шейдера watershader.js в рамке - PullRequest
0 голосов
/ 16 октября 2018

Я хочу понять, как внешние файлы шейдера могут использоваться внутри a-frame без копирования кода шейдера.Я знаю, что мы можем определить пользовательские шейдеры, используя регистршейдер aframe, но есть ли способ указать код вершинного и фрагментного шейдера на внешний URL?

Например, если я хочу использовать определенный здесь шейдер - Мистер.Водяной шейдер Doob в кадре, как я могу это сделать, не копируя код шейдера в мой локальный файл?

1 Ответ

0 голосов
/ 16 октября 2018

Скрипт содержит глобальное определение для

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
})

В сценарии используется THREE.Mirror, который также необходимо включить, если вы хотитеполностью использовать water ShaderLib

...