Skip to content

Commit 195449c

Browse files
committed
refactor: use fragment files
1 parent 0fce4c2 commit 195449c

File tree

8 files changed

+58
-37
lines changed

8 files changed

+58
-37
lines changed

.vscode/settings.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,8 @@
1313
"editor.formatOnSave": true,
1414
"editor.formatOnPaste": true,
1515
"editor.formatOnSaveMode": "file",
16-
"mayank1513.trello-kanban.Workspace.filePath": ".tkb"
16+
"mayank1513.trello-kanban.Workspace.filePath": ".tkb",
17+
"[glsl]": {
18+
"editor.defaultFormatter": "raczzalan.webgl-glsl-editor"
19+
}
1720
}

lib/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
"esbuild-plugin-rdi": "^0.0.0",
3636
"esbuild-plugin-react18": "0.2.4",
3737
"esbuild-plugin-react18-css": "^0.0.4",
38+
"esbuild-plugin-webgl": "^0.0.1",
3839
"jsdom": "^24.1.0",
3940
"react": "^18.3.1",
4041
"react-dom": "^18.3.1",

lib/src/declaration.d.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,10 @@
11
declare module "*.module.css";
22
declare module "*.module.scss";
3+
declare module "*.glsl" {
4+
const value: string;
5+
export default value;
6+
}
7+
declare module "*.glsl?raw" {
8+
const value: string;
9+
export default value;
10+
}

lib/src/shaders/frag.glsl

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
precision mediump float;
2+
3+
uniform vec3 c;
4+
varying float v;
5+
void main() {
6+
gl_FragColor = vec4(c, v);
7+
}

lib/src/shaders/vert.glsl

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
attribute vec2 pos;
2+
attribute float a;
3+
varying float v;
4+
void main() {
5+
gl_Position = vec4(pos, 0.0, 1.0);
6+
v = a;
7+
}

lib/src/utils.ts

Lines changed: 6 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,8 @@
1-
const vertexShaderSource = `
2-
attribute vec2 pos;
3-
attribute float a;
4-
varying float v;
5-
void main() {
6-
gl_Position = vec4(pos, 0.0, 1.0);
7-
v = a;
8-
}
9-
`;
10-
11-
/** Create fragmentSource */
12-
const fragmentShaderSource = (rgb = [1, 0, 0]) => `
13-
precision mediump float;
14-
varying float v;
15-
void main() {
16-
gl_FragColor = vec4(${rgb.join()}, v);
17-
}
18-
`;
1+
import vertexShaderSource from "./shaders/vert.glsl?raw";
2+
import fragmentShaderSource from "./shaders/frag.glsl?raw";
193

204
/** Setup trails */
21-
export const trails = (gl: WebGLRenderingContext, rgb?: [number, number, number]) => {
5+
export const trails = (gl: WebGLRenderingContext, rgb: [number, number, number] = [1, 0, 0]) => {
226
gl.enable(gl.BLEND);
237
gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);
248

@@ -47,7 +31,7 @@ export const trails = (gl: WebGLRenderingContext, rgb?: [number, number, number]
4731
return buffer;
4832
};
4933
const vertexShader = createShader(gl.VERTEX_SHADER, vertexShaderSource);
50-
const fragmentShader = createShader(gl.FRAGMENT_SHADER, fragmentShaderSource(rgb));
34+
const fragmentShader = createShader(gl.FRAGMENT_SHADER, fragmentShaderSource);
5135
const program = gl.createProgram();
5236
if (!program) throw new Error("Failed to create program");
5337
gl.attachShader(program, vertexShader);
@@ -76,6 +60,8 @@ export const trails = (gl: WebGLRenderingContext, rgb?: [number, number, number]
7660
const positionBuffer = createBuffer();
7761
const timeBuffer = createBuffer();
7862

63+
gl.uniform3f(gl.getUniformLocation(program, "c"), ...rgb);
64+
7965
let runningAnim = false;
8066
let positions: number[] = [];
8167
let fades: number[] = [];

lib/tsup.config.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { defineConfig, type Options } from "tsup";
33
import react18Plugin from "esbuild-plugin-react18";
44
import cssPlugin from "esbuild-plugin-react18-css";
55
import { rdiPlugin } from "esbuild-plugin-rdi";
6+
import { webglPlugin } from "esbuild-plugin-webgl";
67

78
export default defineConfig(
89
(options: Options) =>
@@ -24,12 +25,12 @@ export default defineConfig(
2425
const contents = text
2526
.replace(/if \(!gl[^}]*}/gm, "")
2627
.replace(/;\s*if \(![^;]*;/gm, "!;")
27-
.replace(/`[^`]*`/gm, match => match.replace(/\s+/g, " ").trim())
2828
.trim();
2929
return { contents, loader: "ts" };
3030
});
3131
},
3232
},
33+
webglPlugin(),
3334
react18Plugin({ disableJSXRequireDedup: true }),
3435
cssPlugin({ generateScopedName: "rt_[local]" }),
3536
rdiPlugin(),

pnpm-lock.yaml

Lines changed: 23 additions & 15 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)