12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- /**
- * Copyright (c) 2019 mol* contributors, licensed under MIT, See LICENSE file for more info.
- *
- * @author Alexander Rose <alexander.rose@weirdbyte.de>
- */
- precision highp float;
- precision highp int;
- #include common
- #include read_from_texture
- #include common_vert_params
- #include color_vert_params
- #include size_vert_params
- uniform mat4 uModelView;
- attribute vec3 aPosition;
- attribute vec2 aMapping;
- attribute float aDepth;
- attribute vec2 aTexCoord;
- attribute mat4 aTransform;
- attribute float aInstance;
- attribute float aGroup;
- uniform float uOffsetX;
- uniform float uOffsetY;
- uniform float uOffsetZ;
- // uniform bool ortho;
- uniform float uPixelRatio;
- uniform float uViewportHeight;
- varying vec2 vTexCoord;
- #include matrix_scale
- void main(void){
- #include assign_group
- #include assign_color_varying
- #include assign_marker_varying
- #include assign_size
- vTexCoord = aTexCoord;
- float scale = matrixScale(uModelView);
- float offsetX = uOffsetX * scale;
- float offsetY = uOffsetY * scale;
- float offsetZ = (uOffsetZ + aDepth * 0.95) * scale;
- vec4 mvPosition = uModelView * aTransform * vec4(aPosition, 1.0);
- // TODO
- // #ifdef FIXED_SIZE
- // if (ortho) {
- // scale /= pixelRatio * ((uViewportHeight / 2.0) / -uCameraPosition.z) * 0.1;
- // } else {
- // scale /= pixelRatio * ((uViewportHeight / 2.0) / -mvPosition.z) * 0.1;
- // }
- // #endif
- vec4 mvCorner = vec4(mvPosition.xyz, 1.0);
- if (vTexCoord.x == 10.0) { // indicates background plane
- // move a bit to the back, tkaing ditsnace to camera into account to avoid z-fighting
- offsetZ -= 0.001 * distance(uCameraPosition, (uProjection * mvCorner).xyz);
- }
- mvCorner.xy += aMapping * size * scale;
- mvCorner.x += offsetX;
- mvCorner.y += offsetY;
- // TODO
- // if(ortho){
- // mvCorner.xyz += normalize(-uCameraPosition) * offsetZ;
- // } else {
- // mvCorner.xyz += normalize(-mvCorner.xyz) * offsetZ;
- // }
- mvCorner.xyz += normalize(-mvCorner.xyz) * offsetZ;
- gl_Position = uProjection * mvCorner;
- vViewPosition = -mvCorner.xyz;
- }
|