Estoy buscando comprender cómo se pueden usar los archivos de sombreado externos dentro de un marco sin copiar el código del sombreador. Sé que podemos definir sombreadores personalizados usando el sombreador de registro de un marco, pero ¿hay alguna manera de apuntar el código del sombreador de vértices y fragmentos a una URL externa?

Por ejemplo, si quiero usar el sombreador definido aquí - three.js shader aframe fragment-shader vertex-shader

1
Niraj 16 oct. 2018 a las 17:11

2 respuestas

La mejor respuesta

El script contiene una definición global para

THREE.ShaderLib[ 'water' ]

Si lo incluye en su html, debería poder acceder a él desde cualquier lugar:

THREE.ShaderLib['water'].vertexShader // vertexShader

Ejemplo aquí.


AFRAME.registerShader('foo', {
  schema: {
    //all uniforms from the water shader lib
  },
  vertexShader: THREE.ShaderLib[ 'water' ].vertexShader,
  fragmentShader: THREE.ShaderLib[ 'water' ].fragmentShader
})

La secuencia de comandos usa un THREE.Mirror que también debe incluirse si desea utilizar completamente el water ShaderLib

1
Piotr Adam Milewski 16 oct. 2018 a las 15:20

Si vino de Google en busca de un sombreador de agua para A-Frame: aquí hay un ejemplo adicional con código.

0
dirkk0 22 mar. 2020 a las 11:15