Download

GLSL Shaders

GLSL shaders are small programs that are ran on the GPU. When importing a GLSL file with an extension of glsl, wgsl, vert, frag, vs, or fs, they have their include statements resolved and are then available as a string for you to forward on to Three.js.

Import them:

import frag from "./fragment.glsl";
import vert from "./vertex.glsl";

And use them as needed, for example here it's used with three-custom-shader-material:

import CustomShaderMaterial from "three-custom-shader-material";
 
export function WaterMaterial({
  color,
  wavelength = 1,
  speed = 1,
}: {
  color?: Color;
  wavelength?: number;
  speed?: number;
}) {
  const ref = useRef(null);
 
  useFrame((_, delta) => {
    ref.current.uniforms.u_windTime.value +=
      ref.current.uniforms.u_windSpeed.value * delta;
  });
 
  const uniforms = useMemo(() => {
    return {
      u_windSpeed: { value: 0.1 * speed },
      u_windTime: { value: 0.0 },
    };
  }, [speed]);
 
  return (
    <CustomShaderMaterial
      baseMaterial={MeshStandardMaterial}
      color={color}
+      fragmentShader={frag}
+      vertexShader={vert}
      ref={ref}
      metalness={0.1}
      transparent
      uniforms={uniforms}
    />
  );
0