Skip to content

Commit b5a3eb9

Browse files
author
takuma-hmng8
committed
fixbug
1 parent d2c61ad commit b5a3eb9

File tree

16 files changed

+148
-72
lines changed

16 files changed

+148
-72
lines changed

app/cream/FxMaterial.tsx

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
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+
vec2 uv = vUv;
35+
vec4 color = texture2D(u_fx, uv);
36+
gl_FragColor = color;
37+
// gl_FragColor.rgb = color.rgb;
38+
// gl_FragColor.a = color.r + color.g + color.b;
39+
}
40+
`
41+
);

app/cream/Playground.tsx

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
"use client";
2+
3+
import * as THREE from "three";
4+
import { useEffect, useMemo, useRef, useState } 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 } = useThree();
13+
const [updateFluid, setFluid, { output: fluid }] = useFluid({
14+
size,
15+
dpr: {
16+
dpr: 0.08,
17+
effect: {
18+
fbo: false,
19+
},
20+
},
21+
});
22+
23+
setFluid({
24+
density_dissipation: 0.99,
25+
velocity_dissipation: 0.99,
26+
splat_radius: 0.001,
27+
});
28+
29+
useFrame((props) => {
30+
updateFluid(props);
31+
});
32+
33+
return (
34+
<>
35+
<mesh>
36+
<planeGeometry args={[2, 2]} />
37+
<fxMaterial u_fx={fluid} key={FxMaterial.key} />
38+
</mesh>
39+
</>
40+
);
41+
};

app/cream/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+
}

app/playground/Playground.tsx

+4-20
Original file line numberDiff line numberDiff line change
@@ -3,28 +3,13 @@
33
import * as THREE from "three";
44
import { useEffect, useMemo, useRef, useState } from "react";
55
import { useFrame, useThree, extend, useLoader } from "@react-three/fiber";
6-
import {
7-
useCoverTexture,
8-
useFluid,
9-
useSingleFBO,
10-
} from "@/packages/use-shader-fx/src";
6+
import { useFluid } from "@/packages/use-shader-fx/src";
117
import { FxMaterial } from "./FxMaterial";
128

139
extend({ FxMaterial });
1410

1511
export const Playground = () => {
16-
const { size, viewport, camera } = useThree();
17-
18-
const [funkun] = useLoader(THREE.TextureLoader, ["/funkun.jpg"]);
19-
20-
const [updateCover, setCover, { output: cover }] = useCoverTexture({
21-
size,
22-
dpr: 0.01,
23-
});
24-
setCover({
25-
texture: funkun,
26-
});
27-
12+
const { size } = useThree();
2813
const [updateFluid, setFluid, { output: fluid }] = useFluid({
2914
size,
3015
dpr: {
@@ -42,15 +27,14 @@ export const Playground = () => {
4227
});
4328

4429
useFrame((props) => {
45-
updateCover(props);
46-
// updateFluid(props);
30+
updateFluid(props);
4731
});
4832

4933
return (
5034
<>
5135
<mesh>
5236
<planeGeometry args={[2, 2]} />
53-
<fxMaterial u_fx={cover} key={FxMaterial.key} />
37+
<fxMaterial u_fx={fluid} key={FxMaterial.key} />
5438
</mesh>
5539
</>
5640
);

packages/use-shader-fx/build/use-shader-fx.js

+10-12
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/use-shader-fx/build/use-shader-fx.js.map

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/use-shader-fx/build/use-shader-fx.umd.cjs

+25-25
Large diffs are not rendered by default.

packages/use-shader-fx/build/use-shader-fx.umd.cjs.map

+1-1
Large diffs are not rendered by default.

packages/use-shader-fx/package-lock.json

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/use-shader-fx/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@funtech-inc/use-shader-fx",
3-
"version": "1.1.13",
3+
"version": "1.1.14",
44
"description": "⚡️ More FXs, Less GLSL",
55
"main": "./build/use-shader-fx.umd.cjs",
66
"module": "./build/use-shader-fx.js",

packages/use-shader-fx/src/fxs/utils/useAlphaBlending/index.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ export const useAlphaBlending = ({
4141
const _dpr = getDpr(dpr);
4242

4343
const scene = useMemo(() => new THREE.Scene(), []);
44-
const { material, mesh } = useMesh({ scene, size, dpr: _dpr.shader });
44+
const { material, mesh } = useMesh({ scene, size });
4545
const camera = useCamera(size);
4646

4747
const [renderTarget, updateRenderTarget] = useSingleFBO({

packages/use-shader-fx/src/fxs/utils/useAlphaBlending/useMesh.ts

-2
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,9 @@ export class AlphaBlendingMaterial extends THREE.ShaderMaterial {
1515
export const useMesh = ({
1616
scene,
1717
size,
18-
dpr,
1918
}: {
2019
scene: THREE.Scene;
2120
size: Size;
22-
dpr: number | false;
2321
}) => {
2422
const geometry = useMemo(() => new THREE.PlaneGeometry(2, 2), []);
2523
const material = useMemo(

packages/use-shader-fx/src/fxs/utils/useHSV/index.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ export const useHSV = ({
4444
const _dpr = getDpr(dpr);
4545

4646
const scene = useMemo(() => new THREE.Scene(), []);
47-
const { material, mesh } = useMesh({ scene, size, dpr: _dpr.shader });
47+
const { material, mesh } = useMesh({ scene, size });
4848
const camera = useCamera(size);
4949

5050
const [renderTarget, updateRenderTarget] = useSingleFBO({

packages/use-shader-fx/src/fxs/utils/useHSV/useMesh.ts

-2
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,9 @@ export class HSVMaterial extends THREE.ShaderMaterial {
1616
export const useMesh = ({
1717
scene,
1818
size,
19-
dpr,
2019
}: {
2120
scene: THREE.Scene;
2221
size: Size;
23-
dpr: number | false;
2422
}) => {
2523
const geometry = useMemo(() => new THREE.PlaneGeometry(2, 2), []);
2624
const material = useMemo(

packages/use-shader-fx/types/fxs/utils/useAlphaBlending/useMesh.d.ts

+1-2
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,9 @@ export declare class AlphaBlendingMaterial extends THREE.ShaderMaterial {
1010
};
1111
};
1212
}
13-
export declare const useMesh: ({ scene, size, dpr, }: {
13+
export declare const useMesh: ({ scene, size, }: {
1414
scene: THREE.Scene;
1515
size: Size;
16-
dpr: number | false;
1716
}) => {
1817
material: AlphaBlendingMaterial;
1918
mesh: THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes>, AlphaBlendingMaterial>;

packages/use-shader-fx/types/fxs/utils/useHSV/useMesh.d.ts

+1-2
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,9 @@ export declare class HSVMaterial extends THREE.ShaderMaterial {
1313
};
1414
};
1515
}
16-
export declare const useMesh: ({ scene, size, dpr, }: {
16+
export declare const useMesh: ({ scene, size, }: {
1717
scene: THREE.Scene;
1818
size: Size;
19-
dpr: number | false;
2019
}) => {
2120
material: HSVMaterial;
2221
mesh: THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes>, HSVMaterial>;

0 commit comments

Comments
 (0)