import {
ShaderMount,
flutedGlassFragmentShader,
ShaderFitOptions,
defaultObjectSizing,
} from '@paper-design/shaders';
function mountGlassShader(container: HTMLElement, imageSrc: string) {
const img = new Image();
img.crossOrigin = 'anonymous';
img.onload = () => {
new ShaderMount(
container,
flutedGlassFragmentShader,
{
u_image: img, // fully loaded image
u_colorBack: [0, 0, 0, 0],
u_colorShadow: [0, 0, 0, 1],
u_colorHighlight: [1, 1, 1, 1],
u_shadows: 0.25,
u_size: 0.5,
u_angle: 0,
u_distortion: 0.5,
u_shift: 0,
u_blur: 0,
u_edges: 0.25,
u_stretch: 0,
u_distortionShape: 1,
u_highlights: 0.1,
u_shape: 1,
u_marginLeft: 0,
u_marginRight: 0,
u_marginTop: 0,
u_marginBottom: 0,
u_grainMixer: 0,
u_grainOverlay: 0,
u_fit: ShaderFitOptions['cover'],
u_scale: 1,
u_rotation: 0,
u_offsetX: 0,
u_offsetY: 0,
u_originX: defaultObjectSizing.originX,
u_originY: defaultObjectSizing.originY,
u_worldWidth: 0,
u_worldHeight: 0,
},
undefined,
0, // speed
);
};
img.src = imageSrc;
}