forked from PrismJS/prism
-
Notifications
You must be signed in to change notification settings - Fork 2
/
prism-glsl.html
65 lines (48 loc) · 1.28 KB
/
prism-glsl.html
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
<h2>Vertex shader example</h2>
<pre><code>attribute vec3 vertex;
attribute vec3 normal;
uniform mat4 _mvProj;
uniform mat3 _norm;
varying vec3 vColor;
varying vec3 localPos;
#pragma include "light.glsl"
// constants
vec3 materialColor = vec3(1.0,0.7,0.8);
vec3 specularColor = vec3(1.0,1.0,1.0);
void main(void) {
// compute position
gl_Position = _mvProj * vec4(vertex, 1.0);
localPos = vertex;
// compute light info
vec3 n = normalize(_norm * normal);
vec3 diffuse;
float specular;
float glowingSpecular = 50.0;
getDirectionalLight(n, _dLight, glowingSpecular, diffuse, specular);
vColor = max(diffuse,_ambient.xyz)*materialColor+specular*specularColor+_ambient;
}</code></pre>
<h2>Fragment shader example</h2>
<pre><code>#ifdef GL_ES
precision highp float;
#endif
uniform vec3 BrickColor, MortarColor;
uniform vec3 BrickSize;
uniform vec3 BrickPct;
varying vec3 vColor;
varying vec3 localPos;
void main()
{
vec3 color;
vec3 position, useBrick;
position = localPos / BrickSize.xyz;
if (fract(position.y * 0.5) > 0.5){
position.x += 0.5;
position.z += 0.5;
}
position = fract(position);
useBrick = step(position, BrickPct.xyz);
color = mix(MortarColor, BrickColor, useBrick.x * useBrick.y * useBrick.z);
color *= vColor;
gl_FragColor = vec4(color, 1.0);
}
</code></pre>