When I change elevation in leva, the vertexShader isn’t reflecting the change.
import { useRef, useEffect, useMemo } from "react";
import { useThree, useFrame } from "@react-three/fiber";
import { Html, OrbitControls } from "@react-three/drei";
import waterVertexShader from "./shaders/water/vertex.glsl";
import waterFragmentShader from "./shaders/water/fragment.glsl";
import { useControls } from "leva";
export default function Experience() {
const { time, elevation } = useControls({
time: 0,
elevation: {
value: 0.5,
min: 0,
max: 1,
step: 0.001,
label: "uBigWavesElevation",
},
});
const ref = useRef();
const uniforms = useMemo(() => {
return {
uBigWavesElevation: { value: elevation },
};
}, [elevation]);
return (
<>
<OrbitControls makeDefault />
<directionalLight position={[1, 2, 3]} intensity={4.5} />
<ambientLight intensity={1.5} />
<mesh position-y={-1} rotation-x={-Math.PI * 0.5} scale={1} ref={ref}>
<planeGeometry args={[2, 2, 128, 128]} />
<shaderMaterial
vertexShader={waterVertexShader}
fragmentShader={waterFragmentShader}
uniforms={uniforms}
/>
</mesh>
</>
);
}