1
// expected #define: float pointCount
2
highp float encodingFactor = (exp2(24.0) - 1.0) / exp2(24.0);
4
uniform sampler2D points;
6
uniform mat4 projectionMatrix2;
7
uniform mat4 viewMatrix2;
11
vec2 getPoint(int index) {
12
vec4 coords = vec4(texture2D(points, vec2((0.5 + float(index)) / float(pointCount), 0.5)).ra, 0.0, 1.0);
13
// pass it though the camera matrix
14
return vec2(0.5, 0.5) + vec2(0.5, 0.5) * (projectionMatrix2 * viewMatrix2 * coords).xy;
18
float intersectionCount = 0.0;
19
for (int i = 1; i < pointCount; i++) {
20
vec2 prev = getPoint(i - 1);
21
vec2 curr = getPoint(i);
22
float xi = curr.x, yi = curr.y;
23
float xj = prev.x, yj = prev.y;
24
//https://github.com/substack/point-in-polygon/blob/master/index.js
25
//http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html
26
if ((yi > vUv.y != yj > vUv.y ) && (vUv.x < (xj - xi) * (vUv.y - yi) / (yj - yi) + xi))
29
bool inside = mod(intersectionCount, 2.0) == 1.0;
32
gl_FragColor = vec4(1.0, 0.0, 1.0, 1.0);