blob: 33fc743812a98fcb4f8130dcba0b9c92bd385d2b (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
var vShader =`
uniform mat4 uProjectionMatrix;
uniform mat4 uViewMatrix;
uniform mat4 uModelMatrix;
uniform mat4 uNormalMatrix;
uniform bool uUseNormalMatrix;
uniform vec3 uAmbientColor;
uniform vec3 uDiffuseColor;
uniform vec3 uLightDir;
attribute vec3 aXYZ;
attribute vec3 aColor;
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 ()
{
mat4 mvMatrix = uViewMatrix * uModelMatrix;
gl_Position = uProjectionMatrix * mvMatrix * vec4(aXYZ,1);
mat4 nMatrix = uUseNormalMatrix?uNormalMatrix:mvMatrix;
vColor = uAmbientColor*aColor;
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()
{
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);
}
}
`;
|