Skip to content

Commit b2bbd88

Browse files
authored
Merge pull request #93 from FunTechInc/v1.1.10
Remove unnecessary useEffect
2 parents d357c31 + 0ca135c commit b2bbd88

File tree

24 files changed

+1122
-1094
lines changed

24 files changed

+1122
-1094
lines changed

Diff for: app/_home/Playground.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import * as THREE from "three";
2-
import { useEffect, useRef } from "react";
2+
import { useMemo, useRef } from "react";
33
import { useFrame, useThree, extend } from "@react-three/fiber";
44
import {
55
useNoise,
@@ -115,7 +115,7 @@ export const Playground = ({
115115
dpr: viewport.dpr,
116116
});
117117

118-
useEffect(() => {
118+
useMemo(() => {
119119
CONFIG.random();
120120
setNoise({
121121
scale: 1000,

Diff for: app/obscurus/Playground.tsx

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
"use client";
22

33
import * as THREE from "three";
4-
import { useEffect, useMemo } from "react";
4+
import { useMemo } from "react";
55
import { useFrame, useThree, extend, useLoader } from "@react-three/fiber";
66
import {
77
useCreateWobble3D,
@@ -139,10 +139,10 @@ export const Playground = () => {
139139
dpr: viewport.dpr,
140140
geometry: useMemo(() => new THREE.IcosahedronGeometry(0.8, 10), []),
141141
});
142-
useEffect(() => {
142+
useMemo(() => {
143143
particles.points.material.blending = THREE.NormalBlending;
144144
camera.position.z = 8;
145-
}, [noise, updateParticle, particles.points.material, camera]);
145+
}, [particles.points.material, camera]);
146146
useFrame((props) => {
147147
updateWobble(props, {
148148
...setWobbleConfig(),

Diff for: app/playground/FxMaterial.tsx

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import * as THREE from "three";
2+
import { shaderMaterial } from "@react-three/drei";
3+
4+
declare global {
5+
namespace JSX {
6+
interface IntrinsicElements {
7+
fxMaterial: any;
8+
}
9+
}
10+
}
11+
12+
export type FxMaterialProps = {
13+
u_fx: THREE.Texture;
14+
};
15+
16+
export const FxMaterial = shaderMaterial(
17+
{
18+
u_fx: new THREE.Texture(),
19+
},
20+
21+
`
22+
varying vec2 vUv;
23+
void main() {
24+
vUv = uv;
25+
gl_Position = vec4(position, 1.0);
26+
}
27+
`,
28+
`
29+
precision highp float;
30+
varying vec2 vUv;
31+
uniform sampler2D u_fx;
32+
33+
void main() {
34+
gl_FragColor = texture2D(u_fx,vUv);
35+
// gl_FragColor = vec4(1.,1.,0.,1.);
36+
}
37+
`
38+
);

Diff for: app/playground/Playground.tsx

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
"use client";
2+
3+
import * as THREE from "three";
4+
import { useEffect, useMemo } from "react";
5+
import { useFrame, useThree, extend, useLoader } from "@react-three/fiber";
6+
import { useFluid } from "@/packages/use-shader-fx/src";
7+
import { FxMaterial } from "./FxMaterial";
8+
9+
extend({ FxMaterial });
10+
11+
export const Playground = () => {
12+
const { size, viewport, camera } = useThree();
13+
14+
const [updateFluid, , { output }] = useFluid({ size, dpr: viewport.dpr });
15+
16+
useFrame((props) => {
17+
updateFluid(props);
18+
});
19+
20+
return (
21+
<mesh>
22+
<planeGeometry args={[2, 2]} />
23+
<fxMaterial u_fx={output} key={FxMaterial.key} />
24+
</mesh>
25+
);
26+
};

Diff for: app/playground/page.tsx

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import { ShaderFx } from "../ShaderFx";
2+
import { Playground } from "./Playground";
3+
4+
export default function Page() {
5+
return (
6+
<div
7+
style={{
8+
position: "fixed",
9+
width: "100%",
10+
height: "100svh",
11+
pointerEvents: "none",
12+
}}>
13+
<ShaderFx>
14+
<Playground />
15+
</ShaderFx>
16+
</div>
17+
);
18+
}

0 commit comments

Comments
 (0)