From a35a987997415dc8af71a3524ed19fc9bc4896e7 Mon Sep 17 00:00:00 2001 From: Syndamia Date: Thu, 9 Feb 2023 14:57:19 +0200 Subject: [WGL/P] Added semi-working keyboard navigation and toyed around with shaders --- .../Project/Project.html | 84 ++++++++++++++++++++-- .../Project/shaders.js | 35 ++++++++- 2 files changed, 111 insertions(+), 8 deletions(-) diff --git a/Year 2/Computer Graphics with WebGL/Project/Project.html b/Year 2/Computer Graphics with WebGL/Project/Project.html index a9e1d66..627e21a 100644 --- a/Year 2/Computer Graphics with WebGL/Project/Project.html +++ b/Year 2/Computer Graphics with WebGL/Project/Project.html @@ -8,16 +8,71 @@ diff --git a/Year 2/Computer Graphics with WebGL/Project/shaders.js b/Year 2/Computer Graphics with WebGL/Project/shaders.js index d936756..33fc743 100644 --- a/Year 2/Computer Graphics with WebGL/Project/shaders.js +++ b/Year 2/Computer Graphics with WebGL/Project/shaders.js @@ -15,6 +15,17 @@ attribute vec3 aNormal; varying vec3 vColor; + varying vec3 vXYZ; + + // Black Hole variables + attribute float aBH; + varying float vBH; + attribute vec3 aBHXYZ; + varying vec3 vBHXYZ; + attribute float aSR; + varying float vSR; + attribute float aR; + varying float vR; void main () { @@ -27,14 +38,36 @@ vec3 light = normalize(-uLightDir); vec3 normal = vec3(normalize(nMatrix*vec4(aNormal,0))); vColor += aColor*uDiffuseColor*max(dot(normal,light),0.0); + vXYZ = (uModelMatrix * vec4(aXYZ,1)).xyz; + + vBH = aBH; vBHXYZ = aBHXYZ; vSR = aSR; vR = aR; } `; var fShader = ` precision mediump float; + varying vec3 vColor; + varying vec3 vXYZ; + + varying float vBH; + varying vec3 vBHXYZ; + varying float vSR; + varying float vR; + void main() { - gl_FragColor = vec4(vColor,1); + if (vBH > 0.5 && distance(vXYZ, vBHXYZ) <= vR) { + float dist = distance(vXYZ, vBHXYZ); + if (dist < vSR) { + gl_FragColor = vec4(0,0,0,1); + } + else { + gl_FragColor = vec4(vColor,0.5); + } + } + else { + gl_FragColor = vec4(vColor,1.0); + } } `; -- cgit v1.3.1-26-gb76a