Summary Files Commits Branches @commit @diff @stats
diff options
context:
space:
mode:
Commit9f0700d9dc08e66e6fcba3bc59c2fab4349a32cb (patch)
Author
 Syndamia <kamen@syndamia.com>
2023-01-03 17:17:32 +0200
Committer
 Syndamia <kamen@syndamia.com>
2023-01-03 17:17:32 +0200
Filesfc01ccbfe0c9768feb6fa32f413f3af30ac5e940
uni-projects-9f0700d9dc08e66e6fcba3bc59c2fab4349a32cb.tar
uni-projects-9f0700d9dc08e66e6fcba3bc59c2fab4349a32cb.tar.gz
uni-projects-9f0700d9dc08e66e6fcba3bc59c2fab4349a32cb.zip
Parent948c1006729bfdcd2b5937e7c240c4df3294290e (diff)
[WGL/HW11] Added color support
diff --git a/Year 2/Computer Graphics with WebGL/Homework 11 - The graph/Homework.html b/Year 2/Computer Graphics with WebGL/Homework 11 - The graph/Homework.html
index 18760da..329ad38 100644
--- a/Year 2/Computer Graphics with WebGL/Homework 11 - The graph/Homework.html
+++ b/Year 2/Computer Graphics with WebGL/Homework 11 - The graph/Homework.html
@@ -70,11 +70,11 @@
* Points
*/
- var points = [];
+ var points = [[random(0, 1), random(0, 1), random(0, 1)]];
var graphStart = 5000;
var graphEnd = 50000;
for (var i = graphStart; i < graphEnd; i++) {
- points.push(i, 2000 * Math.sin(2 * Math.PI * i / (graphEnd / 5)));
+ points.push(i, 2000 * Math.sin(2 * Math.PI * i / (graphEnd / 5)) + random(-20, 20));
}
var changed = true;
@@ -155,19 +155,30 @@
gl = getContext("picasso");
glprog = getProgram(vShader,fShader);
getVariables();
+ resizeglcanvas();
gl.clearColor(1,1,1,1);
gl.clear(gl.COLOR_BUFFER_BIT);
drawFrame();
}
+
+ function resizeglcanvas() {
+ gl.canvas.width = gl.canvas.offsetWidth;
+ gl.canvas.height = gl.canvas.offsetHeight;
+ gl.viewport(0,0,gl.canvas.width,gl.canvas.height);
+ drawFrame();
+ }
+ window.onresize = resizeglcanvas;
function drawFrame()
{
if (changed) {
changed = false;
- var data = points.slice();
+ gl.vertexAttrib3f(aRGB, ...points[0]);
+
+ var data = points.slice(1);
var maxY = 0;
var minY = 0;
var maxX = graphStart;
@@ -178,7 +189,6 @@
if (data[i+1] > maxY) maxY = data[i+1];
if (data[i+1] < minY) minY = data[i+1];
}
- console.log(minX + " " + maxX);
for (var i = startI; i <= endI; i += 2) {
data[i] = (data[i] - minX) / ((maxX - minX) / 2) - 1; // x
@@ -192,8 +202,6 @@
gl.enableVertexAttribArray(aXY);
}
gl.drawArrays(gl.LINE_STRIP, startI / 2, (endI - startI) / 2 + 1);
- //gl.clearColor(0.5+sin(now()),0.5+sin(now()+2*PI/3),0.5+sin(now()+4*PI/3),1);
- //gl.clear(gl.COLOR_BUFFER_BIT+gl.DEPTH_BUFFER_BIT);
requestAnimationFrame(drawFrame);
}
</script>
diff --git a/Year 2/Computer Graphics with WebGL/Homework 11 - The graph/shaders.js b/Year 2/Computer Graphics with WebGL/Homework 11 - The graph/shaders.js
index 24aab23..121d79d 100644
--- a/Year 2/Computer Graphics with WebGL/Homework 11 - The graph/shaders.js
+++ b/Year 2/Computer Graphics with WebGL/Homework 11 - The graph/shaders.js
@@ -1,15 +1,22 @@
-var vShader =
- 'attribute vec2 aXY;'+
- ''+
- 'void main ()'+
- '{'+
- ' gl_Position = vec4(aXY,0,1);'+
- '}';
-
-var fShader =
- 'precision mediump float;'+
- ''+
- 'void main( )'+
- '{'+
- ' gl_FragColor = vec4(0,0,0,1);'+
- '}';
+var vShader = `
+ attribute vec2 aXY;
+
+ attribute vec3 aRGB;
+ varying vec3 vRGB;
+
+ void main()
+ {
+ gl_Position = vec4(aXY,0,1);
+ vRGB = aRGB;
+ }
+`;
+
+var fShader = `
+ precision mediump float;
+ varying vec3 vRGB;
+
+ void main()
+ {
+ gl_FragColor = vec4(vRGB,1);
+ }
+`;