Skip to content

Commit d1046a5

Browse files
author
takuma-hmng8
committed
フォルダ整理
1 parent 76ed953 commit d1046a5

File tree

95 files changed

+294
-264
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

95 files changed

+294
-264
lines changed

app/domSyncer/DomSyncer.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import {
88
useFxTexture,
99
useCopyTexture,
1010
} from "@/packages/use-shader-fx/src";
11-
import { WaveParams } from "@/packages/use-shader-fx/src/hooks/useWave";
11+
import { WaveParams } from "@/packages/use-shader-fx/src/fxs/utils/useWave";
1212
import gsap from "gsap";
1313

1414
extend({ FxMaterial });

app/playground/Playground.tsx

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,6 @@ import {
1111
useBrightnessPicker,
1212
useChromaKey,
1313
} from "@/packages/use-shader-fx/src";
14-
import {
15-
NoiseParams,
16-
NOISE_PARAMS,
17-
} from "@/packages/use-shader-fx/src/hooks/useNoise";
18-
import {
19-
ColorStrataParams,
20-
COLORSTRATA_PARAMS,
21-
} from "@/packages/use-shader-fx/src/hooks/useColorStrata";
2214
import GUI from "lil-gui";
2315
import { useGUI } from "@/utils/useGUI";
2416
import { FxMaterial, FxMaterialProps } from "./FxMaterial";

app/useBeat/Playground.tsx

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,7 @@ import {
1515
useMarble,
1616
useFxTexture,
1717
} from "@/packages/use-shader-fx/src";
18-
import {
19-
NoiseParams,
20-
NOISE_PARAMS,
21-
} from "@/packages/use-shader-fx/src/hooks/useNoise";
22-
import {
23-
ColorStrataParams,
24-
COLORSTRATA_PARAMS,
25-
} from "@/packages/use-shader-fx/src/hooks/useColorStrata";
18+
2619
import GUI from "lil-gui";
2720
import { useGUI } from "@/utils/useGUI";
2821
import { FxMaterial, FxMaterialProps } from "./FxMaterial";

app/useBrush/FxMaterial.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@ declare global {
1111
}
1212

1313
export type FxMaterialProps = {
14-
u_fx: THREE.Texture;
14+
u_tex: THREE.Texture;
1515
};
1616

1717
export const FxMaterial = shaderMaterial(
1818
{
19-
u_fx: new THREE.Texture(),
19+
u_tex: new THREE.Texture(),
2020
},
2121

2222
`

app/useBrush/Playground.tsx

Lines changed: 42 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import {
1616
useFxTexture,
1717
useBrush,
1818
useFPSLimiter,
19-
EASING,
19+
Easing,
2020
usePointer,
2121
useAlphaBlending,
2222
} from "@/packages/use-shader-fx/src";
@@ -28,10 +28,8 @@ extend({ FxMaterial });
2828

2929
export const Playground = () => {
3030
const ref = useRef<FxMaterialProps>();
31-
3231
const { size, viewport } = useThree();
3332
const bbbb = useVideoTexture("/bbbb.mov");
34-
const glitch = useVideoTexture("/glitch.mov");
3533
const [updateBrush, setBrush, { output: brush }] = useBrush({
3634
size,
3735
dpr: viewport.dpr,
@@ -41,62 +39,70 @@ export const Playground = () => {
4139
dpr: viewport.dpr,
4240
});
4341

44-
const [updateFluid, setFluid, { output: fluid }] = useFluid({
42+
const [updateAlphaBlending, setAlphaBlending, { output: alphaBlending }] =
43+
useAlphaBlending({ size, dpr: viewport.dpr });
44+
45+
const [updateCS, setCS, { output: cs }] = useColorStrata({
4546
size,
4647
dpr: viewport.dpr,
4748
});
4849

49-
const [updateAlphaBlending, setAlphaBlending, { output: alphaBlending }] =
50-
useAlphaBlending({ size, dpr: viewport.dpr });
51-
52-
setMarble({
53-
scale: 0.01,
50+
setCS({
51+
laminateLayer: 20,
52+
scale: 0.48,
53+
laminateDetail: new THREE.Vector2(5.1, 5),
54+
distortion: new THREE.Vector2(2.87, 2.75),
55+
timeStrength: new THREE.Vector2(5.1, 2.1),
5456
});
5557

56-
setAlphaBlending({
57-
texture: bbbb,
58-
map: brush,
58+
setMarble({
59+
scale: 0.002,
60+
timeStrength: 0.1,
5961
});
6062

61-
const colorVec = useRef(new THREE.Vector3());
6263
setBrush({
63-
texture: marble,
64-
// map: marble,
65-
// mapIntensity: 0.15,
66-
radius: 0.1,
67-
// smudge: 4,
68-
motionBlur: 0,
69-
dissipation: 0.9,
64+
map: cs,
65+
texture: cs,
66+
mapIntensity: 0.2,
67+
radius: 0.05,
68+
smudge: 4,
69+
// motionBlur: 5,
70+
dissipation: 0.8,
71+
isCursor: false,
7072
});
7173

72-
setFluid({
73-
fluid_color: (velocity: THREE.Vector2) => {
74-
const rCol = Math.max(0.0, Math.abs(velocity.x) * 200);
75-
const gCol = Math.max(0.0, Math.abs(velocity.y) * 200);
76-
const bCol = Math.max(0.0, (rCol + gCol) / 2);
77-
return colorVec.current.set(rCol, gCol, bCol);
78-
},
74+
setAlphaBlending({
75+
texture: marble,
76+
map: brush,
7977
});
8078

81-
// const updateBeat = useBeat(157);
82-
83-
const limiter = useFPSLimiter();
8479
const updatePointer = usePointer();
80+
const updateBeat = useBeat(157);
8581

8682
useFrame((props) => {
87-
// const pointerValues = updatePointer(props.pointer);
83+
// ref.current!.u_tex = updateAlphaBlending(props, {
84+
// texture: marble,
85+
// map: updateBrush(props, {
86+
// texture: updateMarble(props),
87+
// }),
88+
// });
89+
const pointerValues = updatePointer(props.pointer);
8890
updateBrush(props, {
89-
// pointerValues,
90-
// pressure: EASING.easeOutCirc(pointerValues.velocity.length()) * 10,
91+
// pressure: Easing.easeOutCirc(pointerValues.velocity.length() * 10) * 2,
92+
pointerValues: pointerValues,
93+
});
94+
// updateMarble(props);
95+
// updateAlphaBlending(props);
96+
const { beat, fract, floor, hash } = updateBeat(props.clock);
97+
updateCS(props, {
98+
beat: beat,
9199
});
92-
updateMarble(props);
93-
updateAlphaBlending(props);
94100
});
95101

96102
return (
97103
<mesh>
98104
<planeGeometry args={[2, 2]} />
99-
<fxMaterial key={FxMaterial.key} u_fx={alphaBlending} ref={ref} />
105+
<fxMaterial key={FxMaterial.key} u_tex={cs} ref={ref} />
100106
</mesh>
101107
);
102108
};

app/useBrush/main.frag

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,7 @@
11
precision highp float;
22
varying vec2 vUv;
3-
uniform sampler2D u_fx;
3+
uniform sampler2D u_tex;
44

55
void main() {
6-
vec2 uv = vUv;
7-
8-
vec4 fx = texture2D(u_fx, uv);
9-
10-
gl_FragColor = fx;
6+
gl_FragColor = texture2D(u_tex, vUv);
117
}

packages/use-shader-fx/src/hooks/useBrush/index.ts renamed to packages/use-shader-fx/src/fxs/interactions/useBrush/index.ts

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
import * as THREE from "three";
22
import { useMesh } from "./useMesh";
3-
import { useCamera } from "../../utils/useCamera";
4-
import { useCallback, useMemo } from "react";
3+
import { useCamera } from "../../../utils/useCamera";
4+
import { useCallback, useMemo, useRef } from "react";
55
import { RootState } from "@react-three/fiber";
6-
import { PointerValues, usePointer } from "../../utils/usePointer";
7-
import { setUniform } from "../../utils/setUniforms";
8-
import { HooksProps, HooksReturn } from "../types";
9-
import { useParams } from "../../utils/useParams";
10-
import { DoubleRenderTarget, useDoubleFBO } from "../../utils/useDoubleFBO";
6+
import { PointerValues, usePointer } from "../../../utils/usePointer";
7+
import { setUniform } from "../../../utils/setUniforms";
8+
import { HooksProps, HooksReturn } from "../../types";
9+
import { useParams } from "../../../utils/useParams";
10+
import { DoubleRenderTarget, useDoubleFBO } from "../../../utils/useDoubleFBO";
1111

1212
export type BrushParams = {
1313
/** Texture applied to the brush, textureがtrueの場合はcolorよりも優先するよ , default:false */
@@ -32,8 +32,8 @@ export type BrushParams = {
3232
isCursor?: boolean;
3333
/** 筆圧 , default : 1.0 */
3434
pressure?: number;
35-
/** usePointerをframeで呼び出す場合、この値にPointerValuesをセットすることで、2重の呼び出しを防ぎます , default:false */
36-
pointerValues?: PointerValues | false;
35+
/** When calling usePointer in a frame loop, setting PointerValues ​​to this value prevents double calls , default:null */
36+
pointerValues?: PointerValues | null;
3737
};
3838

3939
export type BrushObject = {
@@ -56,7 +56,7 @@ export const BRUSH_PARAMS: BrushParams = {
5656
color: new THREE.Vector3(1.0, 0.0, 0.0),
5757
isCursor: false,
5858
pressure: 1.0,
59-
pointerValues: false,
59+
pointerValues: null,
6060
};
6161

6262
/**
@@ -81,6 +81,8 @@ export const useBrush = ({
8181

8282
const [params, setParams] = useParams<BrushParams>(BRUSH_PARAMS);
8383

84+
const pressureEnd = useRef<number | null>(null);
85+
8486
const updateFx = useCallback(
8587
(props: RootState, updateParams?: BrushParams) => {
8688
const { gl, pointer } = props;
@@ -108,12 +110,7 @@ export const useBrush = ({
108110
setUniform(material, "uMotionBlur", params.motionBlur!);
109111
setUniform(material, "uMotionSample", params.motionSample!);
110112

111-
let pointerValues: PointerValues;
112-
if (params.pointerValues!) {
113-
pointerValues = params.pointerValues;
114-
} else {
115-
pointerValues = updatePointer(pointer);
116-
}
113+
const pointerValues = params.pointerValues! ?? updatePointer(pointer);
117114

118115
if (pointerValues.isVelocityUpdate) {
119116
setUniform(material, "uMouse", pointerValues.currentPointer);
@@ -128,7 +125,14 @@ export const useBrush = ({
128125
setUniform(material, "uColor", color);
129126

130127
setUniform(material, "uIsCursor", params.isCursor!);
131-
setUniform(material, "uPressure", params.pressure!);
128+
129+
// pressure
130+
setUniform(material, "uPressureEnd", params.pressure!);
131+
if (pressureEnd.current === null) {
132+
pressureEnd.current = params.pressure!;
133+
}
134+
setUniform(material, "uPressureStart", pressureEnd.current);
135+
pressureEnd.current = params.pressure!;
132136

133137
return updateRenderTarget(gl, ({ read }) => {
134138
setUniform(material, "uBuffer", read);

packages/use-shader-fx/src/hooks/useBrush/shader/main.frag renamed to packages/use-shader-fx/src/fxs/interactions/useBrush/shader/main.frag

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,22 @@ uniform float uRadius;
1010
uniform float uDissipation;
1111
uniform vec2 uResolution;
1212
uniform float uSmudge;
13-
uniform float uAspect;
1413
uniform vec2 uMouse;
1514
uniform vec2 uPrevMouse;
1615
uniform vec2 uVelocity;
1716
uniform vec3 uColor;
1817
uniform float uMotionBlur;
1918
uniform int uMotionSample;
2019
uniform bool uIsCursor;
21-
uniform float uPressure;
20+
uniform float uPressureStart;
21+
uniform float uPressureEnd;
2222

2323
varying vec2 vUv;
2424

25-
float isOnLine(vec2 point, vec2 start, vec2 end, float width, float aspect) {
25+
float isOnLine(vec2 point, vec2 start, vec2 end, float radius, float pressureStart, float pressureEnd) {
2626

27+
float aspect = uResolution.x / uResolution.y;
28+
2729
point.x *= aspect;
2830
start.x *= aspect;
2931
end.x *= aspect;
@@ -36,10 +38,14 @@ float isOnLine(vec2 point, vec2 start, vec2 end, float width, float aspect) {
3638
float distAlongLine = dot(p0, dir);
3739
float totalLength = length(end - start);
3840

41+
float progress = clamp(distAlongLine / totalLength, 0.0, 1.0);
42+
float pressure = mix(pressureStart, pressureEnd, progress);
43+
radius = min(radius,radius * pressure);
44+
3945
float distFromStart = length(point - start);
4046
float distFromEnd = length(point - end);
4147

42-
bool withinLine = (distToLine < width && distAlongLine > 0.0 && distAlongLine < totalLength) || distFromStart < width || distFromEnd < width;
48+
bool withinLine = (distToLine < radius && distAlongLine > 0.0 && distAlongLine < totalLength) || distFromStart < radius || distFromEnd < radius;
4349

4450
return float(withinLine);
4551
}
@@ -84,7 +90,7 @@ void main() {
8490

8591
vec2 velocity = uVelocity * uResolution;
8692

87-
float radius = max(0.0,uRadius * uPressure);
93+
float radius = max(0.0,uRadius);
8894

8995
vec4 smudgedColor = uSmudge > 0. ? createSmudge(uv) : texture2D(uBuffer, uv);
9096

@@ -95,11 +101,10 @@ void main() {
95101

96102
vec4 brushColor = uIsTexture ? texture2D(uTexture, uv) : vec4(uColor,1.);
97103

98-
float onLine = isOnLine(suv, uPrevMouse, uMouse, radius, uAspect);
104+
float onLine = isOnLine(suv, uPrevMouse, uMouse, radius, uPressureStart,uPressureEnd);
99105
float isOnLine = length(velocity) > 0. ? onLine : uIsCursor ? onLine : 0.;
100106

101107
vec4 finalColor = mix(bufferColor, brushColor, isOnLine);
102108

103109
gl_FragColor = finalColor;
104-
}
105-
110+
}

0 commit comments

Comments
 (0)