/**
 * Copyright (c) 2020 mol* contributors, licensed under MIT, See LICENSE file for more info.
 *
 * @author Alexander Rose <alexander.rose@weirdbyte.de>
 */
export declare const cylinders_vert = "\nprecision highp float;\nprecision highp int;\n\n#include common\n#include read_from_texture\n#include common_vert_params\n#include color_vert_params\n#include size_vert_params\n#include common_clip\n\nuniform mat4 uModelView;\n\nattribute mat4 aTransform;\nattribute float aInstance;\nattribute float aGroup;\n\nattribute vec3 aMapping;\nattribute vec3 aStart;\nattribute vec3 aEnd;\nattribute float aScale;\nattribute float aCap;\n\nvarying mat4 vTransform;\nvarying vec3 vStart;\nvarying vec3 vEnd;\nvarying float vSize;\nvarying float vCap;\n\nuniform float uIsOrtho;\nuniform vec3 uCameraDir;\n\nvoid main() {\n    #include assign_group\n    #include assign_color_varying\n    #include assign_marker_varying\n    #include assign_clipping_varying\n    #include assign_size\n\n    mat4 modelTransform = uModel * aTransform;\n\n    vTransform = aTransform;\n    vStart = (modelTransform * vec4(aStart, 1.0)).xyz;\n    vEnd = (modelTransform * vec4(aEnd, 1.0)).xyz;\n    vSize = size * aScale;\n    vCap = aCap;\n\n    vModelPosition = (vStart + vEnd) * 0.5;\n    vec3 camDir = -mix(normalize(vModelPosition - uCameraPosition), uCameraDir, uIsOrtho);\n    vec3 dir = vEnd - vStart;\n    // ensure cylinder 'dir' is pointing towards the camera\n    if(dot(camDir, dir) < 0.0) dir = -dir;\n\n    vec3 left = cross(camDir, dir);\n    vec3 up = cross(left, dir);\n    left = vSize * normalize(left);\n    up = vSize * normalize(up);\n\n    // move vertex in object-space from center to corner\n    vModelPosition += aMapping.x * dir + aMapping.y * left + aMapping.z * up;\n\n    vec4 mvPosition = uView * vec4(vModelPosition, 1.0);\n    vViewPosition = mvPosition.xyz;\n    gl_Position = uProjection * mvPosition;\n\n    #include clip_instance\n}\n";
