Het eerste wat ik heb gedaan is KodeLife gedowndload en een tutorial gevolgd voor het maken van een shader. Ik kwam er later achter dat de tutorial verouderd was. Ik heb toen de oorspronkelijke code van KodeLife gebruikt. Ik heb de kleuren van de shaders aangepast naar de kleueren uit mijn kleurenpalette.
vec2: Een 2D-vector met twee floatwaarden, vaak gebruikt voor coördinaten in 2D-ruimte, zoals (x, y).
vec3: Een 3D-vector met drie floatwaarden, vaak gebruikt voor kleuren (RGB) of 3D-posities gegevens zoals (x, y, z).
vec4: Een 4D-vector met vier floatwaarden, gebruikt voor kleuren met alfa (RGBA) of 3D-posities met extra informatie zoals (x, y, z, w).
FragColor bepaalt de kleur die op een specifiek fragment of pixel op het scherm wordt weergegeven.
Door dist te berekenen (de afstand van het middelpunt), en sin en cos te gebruiken op basis van time, krijg je dynamische kleurveranderingen over tijd. De mix-functie zorgt voor een vloeiende overgang tussen drie kleuren
Met createShadermaak en compileer ik een nieuwe shader.
IncreateProgram maak ik een programma en voeg ik de vertex- en fragment shaders toe om ze samen te laten werken.
function createShader(type, source) {
const shader = gl.createShader(type);
gl.shaderSource(shader, source);
gl.compileShader(shader);
if (gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
return shader;
} else {
console.error('Shader failed to compile:', gl.getShaderInfoLog(shader));
gl.deleteShader(shader);
}
}
function createProgram(vertexShader, fragmentShader) {
const program = gl.createProgram();
gl.attachShader(program, vertexShader);
gl.attachShader(program, fragmentShader);
gl.linkProgram(program);
return program;
}
De postitionBuffer is nodig om WebGL de coördinaten van de hoekpunten te geven en een rechthoek op het canvas te tekenen.
uniform is nodig om de shader de canvasgrootte te laten kennen, zodat effecten op schaal kunnen worden toegepast.
Het eerste wat ik heb gedaan is KodeLife gedowndload en een tutorial gevolgd voor het maken van een shader. Ik kwam er later achter dat de tutorial verouderd was. Ik heb toen de oorspronkelijke code van KodeLife gebruikt. Ik heb de kleuren van de shaders aangepast naar de kleueren uit mijn kleurenpalette.
vec2
: Een 2D-vector met tweefloat
waarden, vaak gebruikt voor coördinaten in 2D-ruimte, zoals(x, y)
.vec3
: Een 3D-vector met driefloat
waarden, vaak gebruikt voor kleuren (RGB) of 3D-posities gegevens zoals(x, y, z)
.vec4
: Een 4D-vector met vierfloat
waarden, gebruikt voor kleuren met alfa (RGBA) of 3D-posities met extra informatie zoals(x, y, z, w)
.FragColor
bepaalt de kleur die op een specifiek fragment of pixel op het scherm wordt weergegeven.in sveltekit implementeren shader.svelte en shader.js
Ik probeerde een Library, glslCanvas, te gebruiken, maar kreeg een
window not defined
errorDaarom heb ik direct met WebGL gewerkt waardoor ik mijn code moest omzetten.
vertexShader
: berekent posities van de punten in de 3D-ruimte,fragmentShader
: bepaalt de kleur en andere eigenschappen van pixels.time
zorgt voor animatie over tijd, enresolution
zorgt ervoor dat de fragment shader zich kan aanpassen aan de schermgrootte.Door
dist
te berekenen (de afstand van het middelpunt), ensin
encos
te gebruiken op basis vantime
, krijg je dynamische kleurveranderingen over tijd. Demix
-functie zorgt voor een vloeiende overgang tussen drie kleurencreateShader
maak en compileer ik een nieuwe shader.createProgram
maak ik een programma en voeg ik de vertex- en fragment shaders toe om ze samen te laten werken.De
postitionBuffer
is nodig om WebGL de coördinaten van de hoekpunten te geven en een rechthoek op het canvas te tekenen.uniform
is nodig om de shader de canvasgrootte te laten kennen, zodat effecten op schaal kunnen worden toegepast.