Una clase para describir un programa de sombreado.
Cada objeto p5.Shader
contiene un programa de sombreado que se ejecuta en la unidad de procesamiento gráfico (GPU). Los sombreadores pueden procesar muchos píxeles o vértices al mismo tiempo, lo que los hace rápidos para muchas tareas gráficas. Están escritos en un lenguaje llamado GLSL y se ejecutan junto con el resto del código en un sketch.
Un programa de sombreado consta de dos archivos, un sombreador de vértices y un sombreador de fragmentos. El sombreador de vértices afecta dónde se dibuja la geometría 3D en la pantalla y el sombreador de fragmentos afecta el color. Una vez que se crea el objeto p5.Shader
, se puede usar con la función shader(), como en shader(myShader)
.
Nota: createShader(), createFilterShader() y loadShader() son las formas recomendadas de crear una instancia de esta clase.
Ejemplos
Sintaxis
p5.Shader(renderer, vertSrc, fragSrc)
Parámetros
Contexto WebGL para este sombreador.
Código fuente para el programa de sombreado de vértices.
Código fuente para el programa de sombreado de fragmentos.
Métodos
Copia el sombreador de un contexto de dibujo a otro.
Cada objeto p5.Shader
debe ser compilado llamando a la función shader() antes de poder ejecutarse. La compilación se realiza en un contexto de dibujo que generalmente es el lienzo principal o una instancia de p5.Graphics. Un sombreador solo se puede usar en el contexto donde se compiló. El método copyToContext()
vuelve a compilar el sombreador y lo copia a otro contexto de dibujo donde se puede reutilizar.
El parámetro context
es el contexto de dibujo donde se utilizará el sombreador. El sombreador se puede copiar a una instancia de p5.Graphics, como en myShader.copyToContext(pg)
. También se puede copiar el sombreador desde un objeto p5.Graphics al lienzo principal utilizando la variable window
, como en myShader.copyToContext(window)
.
Nota: Un objeto p5.Shader creado con createShader(), createFilterShader() o loadShader() se puede utilizar directamente con un objeto p5.Framebuffer creado con createFramebuffer(). Ambos objetos tienen el mismo contexto que el lienzo principal.
Establece las variables uniformes (globales) del sombreador.
Los programas de sombreado se ejecutan en la unidad de procesamiento gráfico (GPU) de la computadora. Viven en una parte de la memoria de la computadora que es completamente separada del sketch que los ejecuta. Las variables uniformes son variables globales dentro de un programa de sombreado. Proporcionan una forma de pasar valores desde un sketch que se ejecuta en la CPU a un programa de sombreado que se ejecuta en la GPU.
El primer parámetro, uniformName
, es una cadena con el nombre de la variable uniforme. Para el sombreador anterior, uniformName
sería 'r'
.
El segundo parámetro, data
, es el valor que se debe utilizar para establecer la variable uniforme. Por ejemplo, llamar a myShader.setUniform('r', 0.5)
establecería la variable uniforme r
en el sombreador anterior a 0.5
. data debe coincidir con el tipo de la variable uniforme. Números, cadenas, booleanos, matrices y muchos tipos de imágenes se pueden pasar a un sombreador con setUniform()
.
Referencias Relacionadas
copyToContext
Copia el shader de un contexto de dibujo a otro.
setUniform
Establece los valores de las variables uniformes (globales) del shader.
ambientMaterial
Establece el color ambiental del material de la superficie de las formas.
createFilterShader
Crea un objeto p5.Shader para ser utilizado con la función filter().