pre-calculate proj4 coordinate transformations as a texture
generate proj4 texture data:
var ptex = require('glsl-proj4-texture')
var tex = ptex({
src: '+proj=longlat +datum=WGS84',
dst: '+proj=geocent',
bounds: [-180,-90,180,90],
size: [256,256]
})
process.stdout.write(Buffer.from(tex.buffer))in your vertex shader using glslify:
precision highp float;
#pragma glslify: ptex = require('glsl-proj4-texture')
attribute vec2 position;
uniform sampler2D coordmap;
uniform float size;
void main () {
vec3 pt = ptex(coordmap,vec4(-180,-90,180,90),position);
gl_Position = vec4(pt.xy,0,1);
}usage: glsl-proj4-texture
Write a binary coordinate texture to stdout.
--size texture width and height in pixels. default: 128
--src proj4 source string
--dst proj4 destination string
-w --west default: -180
-s --south default: -90
-e --east default: +180
-n --north default: +90
var ptex = require('glsl-proj4-texture')Return a Float32Array texture from:
- opts.size - texture
[width,height]. default:[128,128] - opts.src - proj4 source string
- opts.dst - proj4 destination string
- opts.bounds -
[west,south,east,north]in degrees. default:[-180,-90,180,90]
#pragma glslify: ptex = require('glsl-proj4-texture')Return a vec3 pt from the texture lookup on a texture created with a bbox
mapping lonlat in degrees to screen coordinates in pt.
npm install glsl-proj4-texture
BSD