-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathgeometry.yaml
39 lines (38 loc) · 1.92 KB
/
geometry.yaml
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
styles:
terrain-geometry:
doc:
author:
name: Patricio Gonzalez Vivo
twitter: patriciogv
version: 0.0.1
tangram-version: 0.0.7
licence: MIT
raster: custom
shaders:
defines:
TERRAIN_TEXTURE_INDEX: 0
TERRAIN_ZOFFSET: 0.
blocks:
global: |
#ifdef TANGRAM_VERTEX_SHADER
uniform sampler2D u_rasters[TANGRAM_NUM_RASTER_SOURCES];
uniform vec2 u_raster_sizes[TANGRAM_NUM_RASTER_SOURCES];
uniform vec3 u_raster_offsets[TANGRAM_NUM_RASTER_SOURCES];
#define adjustRasterUV(raster_index, uv) ((uv) * u_raster_offsets[raster_index].z + u_raster_offsets[raster_index].xy)
#define currentRasterUV(raster_index) (adjustRasterUV(raster_index, v_modelpos_base_zoom.xy))
#define currentRasterPixel(raster_index) (currentRasterUV(raster_index) * rasterPixelSize(raster_index))
#define sampleRaster(raster_index) (texture2D(u_rasters[raster_index], currentRasterUV(raster_index)))
#define sampleRasterAtPixel(raster_index, pixel) (texture2D(u_rasters[raster_index], adjustRasterUV(raster_index, (pixel) / rasterPixelSize(raster_index))))
#define rasterPixelSize(raster_index) (u_raster_sizes[raster_index])
#endif
float getHeight() {
float h = sampleRaster(int(TERRAIN_TEXTURE_INDEX)).a;
if (h != 0.0) {
return (1.-h)*10000.;
} else {
return 0.0;
}
}
position: |
position.z += TERRAIN_ZOFFSET*u_meters_per_pixel;
position.z += getHeight();