Merge version_2 into main #3

Merged
bender merged 2 commits from version_2 into main 2026-03-09 21:43:44 +00:00
2 changed files with 35 additions and 40 deletions

View File

@@ -1,8 +1,6 @@
import type { Metadata } from "next";
import { Lexend } from "next/font/google";
import "./globals.css";
import ServiceWrapper from "@/providers/serviceWrapper/ServiceWrapper";
import Tag from "@/components/tag/Tag";
const lexend = Lexend({
variable: "--font-lexend", subsets: ["latin"],
@@ -20,10 +18,7 @@ export default function RootLayout({
return (
<html lang="en" suppressHydrationWarning>
<body className={`${lexend.variable}`}>
<ServiceWrapper>
<Tag />
{children}
</ServiceWrapper>
{children}
<script
dangerouslySetInnerHTML={{
__html: `

View File

@@ -41,43 +41,43 @@ export const WebGLShader: React.FC<WebGLShaderProps> = ({
// Compile shaders
const compileShader = (source: string, type: number): WebGLShader | null => {
const shader = gl.createShader(type);
const shader = (gl as WebGLRenderingContext).createShader(type);
if (!shader) return null;
gl.shaderSource(shader, source);
gl.compileShader(shader);
if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
console.error('Shader compilation error:', gl.getShaderInfoLog(shader));
gl.deleteShader(shader);
(gl as WebGLRenderingContext).shaderSource(shader, source);
(gl as WebGLRenderingContext).compileShader(shader);
if (!(gl as WebGLRenderingContext).getShaderParameter(shader, (gl as WebGLRenderingContext).COMPILE_STATUS)) {
console.error('Shader compilation error:', (gl as WebGLRenderingContext).getShaderInfoLog(shader));
(gl as WebGLRenderingContext).deleteShader(shader);
return null;
}
return shader;
};
const vShader = compileShader(vertexShader, gl.VERTEX_SHADER);
const fShader = compileShader(fragmentShader, gl.FRAGMENT_SHADER);
const vShader = compileShader(vertexShader, (gl as WebGLRenderingContext).VERTEX_SHADER);
const fShader = compileShader(fragmentShader, (gl as WebGLRenderingContext).FRAGMENT_SHADER);
if (!vShader || !fShader) return;
// Link program
const program = gl.createProgram();
const program = (gl as WebGLRenderingContext).createProgram();
if (!program) return;
gl.attachShader(program, vShader);
gl.attachShader(program, fShader);
gl.linkProgram(program);
(gl as WebGLRenderingContext).attachShader(program, vShader);
(gl as WebGLRenderingContext).attachShader(program, fShader);
(gl as WebGLRenderingContext).linkProgram(program);
if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {
console.error('Program link error:', gl.getProgramInfoLog(program));
gl.deleteProgram(program);
if (!(gl as WebGLRenderingContext).getProgramParameter(program, (gl as WebGLRenderingContext).LINK_STATUS)) {
console.error('Program link error:', (gl as WebGLRenderingContext).getProgramInfoLog(program));
(gl as WebGLRenderingContext).deleteProgram(program);
return;
}
programRef.current = program;
gl.useProgram(program);
(gl as WebGLRenderingContext).useProgram(program);
// Store uniform locations
const locations: Record<string, WebGLUniformLocation> = {};
Object.keys(uniforms).forEach((name) => {
const location = gl.getUniformLocation(program, name);
const location = (gl as WebGLRenderingContext).getUniformLocation(program, name);
if (location !== null) {
locations[name] = location;
}
@@ -88,7 +88,7 @@ export const WebGLShader: React.FC<WebGLShaderProps> = ({
const resizeCanvas = () => {
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
gl.viewport(0, 0, canvas.width, canvas.height);
(gl as WebGLRenderingContext).viewport(0, 0, canvas.width, canvas.height);
};
resizeCanvas();
@@ -99,13 +99,13 @@ export const WebGLShader: React.FC<WebGLShaderProps> = ({
-1, -1, 1, -1, -1, 1, 1, 1,
]);
const vertexBuffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, vertexBuffer);
gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW);
const vertexBuffer = (gl as WebGLRenderingContext).createBuffer();
(gl as WebGLRenderingContext).bindBuffer((gl as WebGLRenderingContext).ARRAY_BUFFER, vertexBuffer);
(gl as WebGLRenderingContext).bufferData((gl as WebGLRenderingContext).ARRAY_BUFFER, vertices, (gl as WebGLRenderingContext).STATIC_DRAW);
const positionLocation = gl.getAttribLocation(program, 'position');
gl.enableVertexAttribArray(positionLocation);
gl.vertexAttribPointer(positionLocation, 2, gl.FLOAT, false, 0, 0);
const positionLocation = (gl as WebGLRenderingContext).getAttribLocation(program, 'position');
(gl as WebGLRenderingContext).enableVertexAttribArray(positionLocation);
(gl as WebGLRenderingContext).vertexAttribPointer(positionLocation, 2, (gl as WebGLRenderingContext).FLOAT, false, 0, 0);
// Render loop
const render = () => {
@@ -114,15 +114,15 @@ export const WebGLShader: React.FC<WebGLShaderProps> = ({
const location = uniformLocationsRef.current[name];
if (!location) return;
if (type === '1f') gl.uniform1f(location, value);
else if (type === '2f') gl.uniform2f(location, value[0], value[1]);
else if (type === '3f') gl.uniform3f(location, value[0], value[1], value[2]);
else if (type === '4f') gl.uniform4f(location, value[0], value[1], value[2], value[3]);
else if (type === '1i') gl.uniform1i(location, value);
else if (type === 'matrix4fv') gl.uniformMatrix4fv(location, false, value);
if (type === '1f') (gl as WebGLRenderingContext).uniform1f(location, value);
else if (type === '2f') (gl as WebGLRenderingContext).uniform2f(location, value[0], value[1]);
else if (type === '3f') (gl as WebGLRenderingContext).uniform3f(location, value[0], value[1], value[2]);
else if (type === '4f') (gl as WebGLRenderingContext).uniform4f(location, value[0], value[1], value[2], value[3]);
else if (type === '1i') (gl as WebGLRenderingContext).uniform1i(location, value);
else if (type === 'matrix4fv') (gl as WebGLRenderingContext).uniformMatrix4fv(location, false, value);
});
gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);
(gl as WebGLRenderingContext).drawArrays((gl as WebGLRenderingContext).TRIANGLE_STRIP, 0, 4);
requestAnimationFrame(render);
};
@@ -130,9 +130,9 @@ export const WebGLShader: React.FC<WebGLShaderProps> = ({
return () => {
window.removeEventListener('resize', resizeCanvas);
gl.deleteProgram(program);
gl.deleteShader(vShader);
gl.deleteShader(fShader);
(gl as WebGLRenderingContext).deleteProgram(program);
(gl as WebGLRenderingContext).deleteShader(vShader);
(gl as WebGLRenderingContext).deleteShader(fShader);
};
}, [fragmentShader, vertexShader, uniforms]);