--- /srv/rebuilderd/tmp/rebuilderd7VKx7o/inputs/organicmaps_2026.01.26-11+ds-4_amd64.deb +++ /srv/rebuilderd/tmp/rebuilderd7VKx7o/out/organicmaps_2026.01.26-11+ds-4_amd64.deb ├── file list │ @@ -1,3 +1,3 @@ │ -rw-r--r-- 0 0 0 4 2026-02-11 10:14:08.000000 debian-binary │ --rw-r--r-- 0 0 0 1212 2026-02-11 10:14:08.000000 control.tar.xz │ --rw-r--r-- 0 0 0 5127660 2026-02-11 10:14:08.000000 data.tar.xz │ +-rw-r--r-- 0 0 0 1208 2026-02-11 10:14:08.000000 control.tar.xz │ +-rw-r--r-- 0 0 0 5127696 2026-02-11 10:14:08.000000 data.tar.xz ├── control.tar.xz │ ├── control.tar │ │ ├── ./md5sums │ │ │ ├── ./md5sums │ │ │ │┄ Files differ ├── data.tar.xz │ ├── data.tar │ │ ├── ./usr/bin/OMaps │ │ │┄ File has been modified after NT_GNU_BUILD_ID has been applied. │ │ │ ├── readelf --wide --notes {} │ │ │ │ @@ -1,11 +1,11 @@ │ │ │ │ │ │ │ │ Displaying notes found in: .note.gnu.build-id │ │ │ │ Owner Data size Description │ │ │ │ - GNU 0x00000014 NT_GNU_BUILD_ID (unique build ID bitstring) Build ID: 9ed5950fb0bda6f5ed2236b21e6156c72c91c93f │ │ │ │ + GNU 0x00000014 NT_GNU_BUILD_ID (unique build ID bitstring) Build ID: b709fbf75dfa399631670a0eae1c28b14f5dbf6c │ │ │ │ │ │ │ │ Displaying notes found in: .note.gnu.property │ │ │ │ Owner Data size Description │ │ │ │ GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0 Properties: x86 ISA needed: x86-64-baseline │ │ │ │ │ │ │ │ Displaying notes found in: .note.ABI-tag │ │ │ │ Owner Data size Description │ │ │ ├── strings --all --bytes=8 {} │ │ │ │ @@ -1,8 +1,8 @@ │ │ │ │ -?/lib64/ld-linux-x86-64.so.2 │ │ │ │ +l/lib64/ld-linux-x86-64.so.2 │ │ │ │ _ITM_deregisterTMCloneTable │ │ │ │ __gmon_start__ │ │ │ │ _ITM_registerTMCloneTable │ │ │ │ _ZN6google14FlagRegistererC1IiEEPKcS3_S3_PT_S5_ │ │ │ │ _ZN6google16SetVersionStringERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE │ │ │ │ _ZSt19piecewise_construct │ │ │ │ _ZN6google21ParseCommandLineFlagsEPiPPPcb │ │ │ │ @@ -24710,15 +24710,15 @@ │ │ │ │ CHECK(d < ofs.siCHECK(d + 1 < of 1 < ofs.size())CHECK(subReader)CHECK(version == == Version::V0)0123456789abcdefGeoJsonGeometryUUnknown [type = │ │ │ │ CHECK(static_caste>(result) == v)CHECK((result > > 0) == (v > 0))Invalid lat,lon │ │ │ │ @a_colorTexCoordscurrent-position │ │ │ │ Legacy Objects can not be edited with the new ed/omaps/editor/fields/field_group""//\\a │ │ │ │ CHECK(numSegsForThisFid % numDirCHECK(u < numSpe numSpeedGroups) │ │ │ │ MapProgramParamsRouteProgramParaTrafficProgramPaTransitProgramPaGuiProgramParamsShapesProgramParArrow3dProgramPaDebugRectProgramScreenQuadPrograSMAAProgramParamTileBackgroundPrundProgramParamsImGuiProgramPara │ │ │ │ https://instagrahttps://facebookhttps://twitter.CHECK(i != m_map │ │ │ │ -CaptionRuleProtoPathTextRuleProtDrawElementProtoClassifElementPrColorElementProtColorsElementProIncorrectTransitransitionsFormatUnsupportedTimeZedTimeZoneFormatIncorrectGenerationYearOffsetForIncorrectBaseOffBaseOffsetFormatIncorrectDstDeltionsLengthFormatransitionsAmountIncorrectDayDeltIncorrectMinuteOinuteOfDayFormatgenerator/timezone/timezone_infoFailed to load timezone databasehttps://meta.omaa.omaps.app/maps{"servers":["https://cdn-nl1.organicmaps.app/","https://cdn-uk1.organicmaps.app/","https://cdn.organicmaps.app/"2026.02.11-0-0000-00000000-Linuxp │ │ │ │ +CaptionRuleProtoPathTextRuleProtDrawElementProtoClassifElementPrColorElementProtColorsElementProIncorrectTransitransitionsFormatUnsupportedTimeZedTimeZoneFormatIncorrectGenerationYearOffsetForIncorrectBaseOffBaseOffsetFormatIncorrectDstDeltionsLengthFormatransitionsAmountIncorrectDayDeltIncorrectMinuteOinuteOfDayFormatgenerator/timezone/timezone_infoFailed to load timezone databasehttps://meta.omaa.omaps.app/maps{"servers":["https://cdn-nl1.organicmaps.app/","https://cdn-uk1.organicmaps.app/","https://cdn.organicmaps.app/"2026.02.16-0-0000-00000000-Linuxp │ │ │ │ "placePagePrompt │ │ │ │ CHECK(curr.m_delelta >> 62 == 0) │ │ │ │ NULL string poin │ │ │ │ ?Zero length lineth linear objectTexture|Handles INVALID_TIME_STA │ │ │ │ CHECK(m_checker.CalledOnOriginalriginalThread()) │ │ │ │ CHECK(level < na < names.size())( │ │ │ │ CHECK(id == std::this_thread::geDeadlineExceededCHECK(prefixSizeize <= s.size())CHECK(!m_map.emp │ │ │ │ @@ -26352,68 +26352,70 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ - in vec3 a_position; │ │ │ │ - in vec2 a_colorTexCoords; │ │ │ │ - #ifdef ENABLE_VTF │ │ │ │ - out LOW_P vec4 v_color; │ │ │ │ - #else │ │ │ │ - out vec2 v_colorTexCoords; │ │ │ │ - #endif │ │ │ │ + in vec2 v_colorTexCoord; │ │ │ │ + out vec4 v_FragColor; │ │ │ │ uniform mat4 u_modelView; │ │ │ │ uniform mat4 u_projection; │ │ │ │ uniform mat4 u_pivotTransform; │ │ │ │ - uniform vec2 u_contrastGamma; │ │ │ │ + uniform vec4 u_trafficParams; │ │ │ │ + uniform vec4 u_outlineColor; │ │ │ │ + uniform vec4 u_lightArrowColor; │ │ │ │ + uniform vec4 u_darkArrowColor; │ │ │ │ + uniform float u_outline; │ │ │ │ uniform float u_opacity; │ │ │ │ - uniform float u_zScale; │ │ │ │ - uniform float u_interpolation; │ │ │ │ - uniform float u_isOutlinePass; │ │ │ │ - #ifdef ENABLE_VTF │ │ │ │ uniform sampler2D u_colorTex; │ │ │ │ - #endif │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ - vec4 applyPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ) │ │ │ │ - vec4 transformedPivot = pivot; │ │ │ │ - float w = transformedPivot.w; │ │ │ │ - transformedPivot.xyw = (pivotTransform * vec4(transformedPivot.xy, pivotRealZ, w)).xyw; │ │ │ │ - transformedPivot.z *= transformedPivot.w / w; │ │ │ │ - #ifdef VULKAN │ │ │ │ - transformedPivot.y = -transformedPivot.y; │ │ │ │ - transformedPivot.z = (transformedPivot.z + transformedPivot.w) / 2.0; │ │ │ │ - #endif │ │ │ │ - return transformedPivot; │ │ │ │ - vec4 applyBillboardPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ, vec2 offset) │ │ │ │ - float logicZ = pivot.z / pivot.w; │ │ │ │ - vec4 transformedPivot = pivotTransform * vec4(pivot.xy, pivotRealZ, pivot.w); │ │ │ │ - vec4 scale = pivotTransform * vec4(1.0, -1.0, 0.0, 1.0); │ │ │ │ - vec4 position = vec4(transformedPivot.xy / transformedPivot.w, logicZ, 1.0) + vec4(offset / scale.w * scale.x, 0.0, 0.0); │ │ │ │ - #ifdef VULKAN │ │ │ │ - position.y = -position.y; │ │ │ │ - position.z = (position.z + position.w) / 2.0; │ │ │ │ - #endif │ │ │ │ - return position; │ │ │ │ - vec2 calcLineTransformedAxisPos(vec2 originalAxisPos, vec2 shiftedPos, mat4 modelView, float halfWidth) │ │ │ │ - vec2 p = (vec4(shiftedPos, 0.0, 1.0) * modelView).xy; │ │ │ │ - vec2 d = p - originalAxisPos; │ │ │ │ - if (dot(d, d) != 0.0) │ │ │ │ - return originalAxisPos + normalize(d) * halfWidth; │ │ │ │ - else │ │ │ │ - return originalAxisPos; │ │ │ │ void main() │ │ │ │ - vec4 pos = vec4(a_position, 1) * u_modelView * u_projection; │ │ │ │ - gl_Position = applyPivotTransform(pos, u_pivotTransform, 0.0); │ │ │ │ - #ifdef ENABLE_VTF │ │ │ │ - v_color = texture(u_colorTex, a_colorTexCoords); │ │ │ │ + vec4 color = texture(u_colorTex, v_colorTexCoord); │ │ │ │ + v_FragColor = vec4(color.rgb, u_opacity); │ │ │ │ + #ifdef GL_ES │ │ │ │ + #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ + #define MAXPREC highp │ │ │ │ + #else │ │ │ │ + #define MAXPREC mediump │ │ │ │ + #endif │ │ │ │ + precision MAXPREC float; │ │ │ │ + #define LOW_P lowp │ │ │ │ + #define MEDIUM_P mediump │ │ │ │ + #define HIGH_P highp │ │ │ │ #else │ │ │ │ - v_colorTexCoords = a_colorTexCoords; │ │ │ │ + #define LOW_P │ │ │ │ + #define MEDIUM_P │ │ │ │ + #define HIGH_P │ │ │ │ #endif │ │ │ │ + in vec2 v_colorTexCoords; │ │ │ │ + out vec4 v_FragColor; │ │ │ │ + uniform mat4 u_modelView; │ │ │ │ + uniform mat4 u_projection; │ │ │ │ + uniform mat4 u_pivotTransform; │ │ │ │ + uniform vec4 u_routeParams; │ │ │ │ + uniform vec4 u_color; │ │ │ │ + uniform vec4 u_maskColor; │ │ │ │ + uniform vec4 u_outlineColor; │ │ │ │ + uniform vec4 u_fakeColor; │ │ │ │ + uniform vec4 u_fakeOutlineColor; │ │ │ │ + uniform vec2 u_fakeBorders; │ │ │ │ + uniform vec2 u_pattern; │ │ │ │ + uniform vec2 u_angleCosSin; │ │ │ │ + uniform float u_arrowHalfWidth; │ │ │ │ + uniform float u_opacity; │ │ │ │ + uniform sampler2D u_colorTex; │ │ │ │ + const float kShapeCoordScalar = 1000.0; │ │ │ │ + void main() │ │ │ │ + vec4 finalColor = texture(u_colorTex, v_colorTexCoords); │ │ │ │ + finalColor.a *= u_opacity; │ │ │ │ + if (finalColor.a < 0.01) │ │ │ │ + discard; │ │ │ │ + finalColor = vec4(mix(finalColor.rgb, u_maskColor.rgb, u_maskColor.a), finalColor.a); │ │ │ │ + v_FragColor = finalColor; │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -26421,28 +26423,28 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ - in vec3 a_position; │ │ │ │ - in vec3 a_normal; │ │ │ │ + in vec4 a_position; │ │ │ │ + in vec2 a_normal; │ │ │ │ in vec2 a_colorTexCoords; │ │ │ │ + in vec2 a_maskTexCoords; │ │ │ │ out vec2 v_colorTexCoords; │ │ │ │ - out float v_intensity; │ │ │ │ + out vec2 v_maskTexCoords; │ │ │ │ uniform mat4 u_modelView; │ │ │ │ uniform mat4 u_projection; │ │ │ │ uniform mat4 u_pivotTransform; │ │ │ │ uniform vec2 u_contrastGamma; │ │ │ │ uniform float u_opacity; │ │ │ │ uniform float u_zScale; │ │ │ │ uniform float u_interpolation; │ │ │ │ uniform float u_isOutlinePass; │ │ │ │ - const vec4 kNormalizedLightDir = vec4(0.3162, 0.0, 0.9486, 0.0); │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ vec4 applyPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ) │ │ │ │ vec4 transformedPivot = pivot; │ │ │ │ float w = transformedPivot.w; │ │ │ │ transformedPivot.xyw = (pivotTransform * vec4(transformedPivot.xy, pivotRealZ, w)).xyw; │ │ │ │ transformedPivot.z *= transformedPivot.w / w; │ │ │ │ #ifdef VULKAN │ │ │ │ @@ -26464,31 +26466,20 @@ │ │ │ │ vec2 p = (vec4(shiftedPos, 0.0, 1.0) * modelView).xy; │ │ │ │ vec2 d = p - originalAxisPos; │ │ │ │ if (dot(d, d) != 0.0) │ │ │ │ return originalAxisPos + normalize(d) * halfWidth; │ │ │ │ else │ │ │ │ return originalAxisPos; │ │ │ │ void main() │ │ │ │ - vec4 pos = vec4(a_position, 1.0) * u_modelView; │ │ │ │ - vec4 normal = vec4(a_position + a_normal, 1.0) * u_modelView; │ │ │ │ - normal.xyw = (normal * u_projection).xyw; │ │ │ │ - normal.z = normal.z * u_zScale; │ │ │ │ - pos.xyw = (pos * u_projection).xyw; │ │ │ │ - pos.z = a_position.z * u_zScale; │ │ │ │ - vec4 normDir = normal - pos; │ │ │ │ - if (dot(normDir, normDir) != 0.0) │ │ │ │ - v_intensity = max(0.0, -dot(kNormalizedLightDir, normalize(normDir))); │ │ │ │ - else │ │ │ │ - v_intensity = 0.0; │ │ │ │ - gl_Position = u_pivotTransform * pos; │ │ │ │ - #ifdef VULKAN │ │ │ │ - gl_Position.y = -gl_Position.y; │ │ │ │ - gl_Position.z = (gl_Position.z + gl_Position.w) * 0.5; │ │ │ │ - #endif │ │ │ │ + vec4 pivot = vec4(a_position.xyz, 1.0) * u_modelView; │ │ │ │ + vec4 offset = vec4(a_normal, 0.0, 0.0) * u_projection; │ │ │ │ + gl_Position = applyBillboardPivotTransform(pivot * u_projection, u_pivotTransform, │ │ │ │ + a_position.w * u_zScale, offset.xy); │ │ │ │ v_colorTexCoords = a_colorTexCoords; │ │ │ │ + v_maskTexCoords = a_maskTexCoords; │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -26497,31 +26488,24 @@ │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ in vec3 a_position; │ │ │ │ - in vec2 a_colorTexCoords; │ │ │ │ - #ifdef ENABLE_VTF │ │ │ │ - out LOW_P vec4 v_color; │ │ │ │ - #else │ │ │ │ - out vec2 v_colorTexCoords; │ │ │ │ - #endif │ │ │ │ + in vec4 a_normal; │ │ │ │ + in vec4 a_color; │ │ │ │ + out vec4 v_offsets; │ │ │ │ + out vec4 v_color; │ │ │ │ uniform mat4 u_modelView; │ │ │ │ uniform mat4 u_projection; │ │ │ │ uniform mat4 u_pivotTransform; │ │ │ │ - uniform vec2 u_contrastGamma; │ │ │ │ - uniform float u_opacity; │ │ │ │ - uniform float u_zScale; │ │ │ │ - uniform float u_interpolation; │ │ │ │ - uniform float u_isOutlinePass; │ │ │ │ - #ifdef ENABLE_VTF │ │ │ │ - uniform sampler2D u_colorTex; │ │ │ │ - #endif │ │ │ │ + uniform vec4 u_params; │ │ │ │ + uniform float u_lineHalfWidth; │ │ │ │ + uniform float u_maxRadius; │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ vec4 applyPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ) │ │ │ │ vec4 transformedPivot = pivot; │ │ │ │ float w = transformedPivot.w; │ │ │ │ transformedPivot.xyw = (pivotTransform * vec4(transformedPivot.xy, pivotRealZ, w)).xyw; │ │ │ │ transformedPivot.z *= transformedPivot.w / w; │ │ │ │ #ifdef VULKAN │ │ │ │ @@ -26543,53 +26527,23 @@ │ │ │ │ vec2 p = (vec4(shiftedPos, 0.0, 1.0) * modelView).xy; │ │ │ │ vec2 d = p - originalAxisPos; │ │ │ │ if (dot(d, d) != 0.0) │ │ │ │ return originalAxisPos + normalize(d) * halfWidth; │ │ │ │ else │ │ │ │ return originalAxisPos; │ │ │ │ void main() │ │ │ │ - vec4 pos = vec4(a_position, 1.0) * u_modelView; │ │ │ │ - pos.xyw = (pos * u_projection).xyw; │ │ │ │ - pos.z = a_position.z * u_zScale; │ │ │ │ - gl_Position = u_pivotTransform * pos; │ │ │ │ - #ifdef VULKAN │ │ │ │ - gl_Position.y = -gl_Position.y; │ │ │ │ - gl_Position.z = (gl_Position.z + gl_Position.w) * 0.5; │ │ │ │ - #endif │ │ │ │ - #ifdef ENABLE_VTF │ │ │ │ - v_color = texture(u_colorTex, a_colorTexCoords); │ │ │ │ - #else │ │ │ │ - v_colorTexCoords = a_colorTexCoords; │ │ │ │ - #endif │ │ │ │ - #ifdef GL_ES │ │ │ │ - #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ - #define MAXPREC highp │ │ │ │ - #else │ │ │ │ - #define MAXPREC mediump │ │ │ │ - #endif │ │ │ │ - precision MAXPREC float; │ │ │ │ - #define LOW_P lowp │ │ │ │ - #define MEDIUM_P mediump │ │ │ │ - #define HIGH_P highp │ │ │ │ - #else │ │ │ │ - #define LOW_P │ │ │ │ - #define MEDIUM_P │ │ │ │ - #define HIGH_P │ │ │ │ - #endif │ │ │ │ - in vec3 v_normal; │ │ │ │ - out vec4 v_FragColor; │ │ │ │ - uniform mat4 u_transform; │ │ │ │ - uniform mat4 u_normalTransform; │ │ │ │ - uniform vec4 u_color; │ │ │ │ - uniform vec2 u_texCoordFlipping; │ │ │ │ - const vec3 lightDir = vec3(0.316, 0.0, 0.948); │ │ │ │ - const float kShapeCoordScalar = 1000.0; │ │ │ │ - void main() │ │ │ │ - float phongDiffuse = max(0.0, -dot(lightDir, v_normal)); │ │ │ │ - v_FragColor = vec4((phongDiffuse * 0.5 + 0.5) * u_color.rgb, u_color.a); │ │ │ │ + vec4 pos = vec4(a_position.xy, 0, 1) * u_modelView; │ │ │ │ + vec2 normal = vec2(a_normal.x * u_params.x - a_normal.y * u_params.y, │ │ │ │ + a_normal.x * u_params.y + a_normal.y * u_params.x); │ │ │ │ + vec2 shiftedPos = normal * u_params.z + pos.xy; │ │ │ │ + pos = vec4(shiftedPos, a_position.z, 1.0) * u_projection; │ │ │ │ + gl_Position = applyPivotTransform(pos, u_pivotTransform, 0.0); │ │ │ │ + vec2 offsets = abs(a_normal.zw); │ │ │ │ + v_offsets = vec4(a_normal.zw, offsets - 1.0); │ │ │ │ + v_color = a_color; │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -26597,21 +26551,17 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ - in vec3 a_pos; │ │ │ │ - in vec3 a_normal; │ │ │ │ - out vec3 v_normal; │ │ │ │ - uniform mat4 u_transform; │ │ │ │ - uniform mat4 u_normalTransform; │ │ │ │ - uniform vec4 u_color; │ │ │ │ - uniform vec2 u_texCoordFlipping; │ │ │ │ + in vec2 a_pos; │ │ │ │ + in vec2 a_tcoord; │ │ │ │ + out vec2 v_colorTexCoords; │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ vec4 applyPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ) │ │ │ │ vec4 transformedPivot = pivot; │ │ │ │ float w = transformedPivot.w; │ │ │ │ transformedPivot.xyw = (pivotTransform * vec4(transformedPivot.xy, pivotRealZ, w)).xyw; │ │ │ │ transformedPivot.z *= transformedPivot.w / w; │ │ │ │ #ifdef VULKAN │ │ │ │ @@ -26633,21 +26583,16 @@ │ │ │ │ vec2 p = (vec4(shiftedPos, 0.0, 1.0) * modelView).xy; │ │ │ │ vec2 d = p - originalAxisPos; │ │ │ │ if (dot(d, d) != 0.0) │ │ │ │ return originalAxisPos + normalize(d) * halfWidth; │ │ │ │ else │ │ │ │ return originalAxisPos; │ │ │ │ void main() │ │ │ │ - vec4 position = u_transform * vec4(a_pos, 1.0); │ │ │ │ - v_normal = normalize((u_normalTransform * vec4(a_normal, 0.0)).xyz); │ │ │ │ - gl_Position = position; │ │ │ │ - #ifdef VULKAN │ │ │ │ - gl_Position.y = -gl_Position.y; │ │ │ │ - gl_Position.z = (gl_Position.z + gl_Position.w) * 0.5; │ │ │ │ - #endif │ │ │ │ + v_colorTexCoords = a_tcoord; │ │ │ │ + gl_Position = vec4(a_pos, 0.0, 1.0); │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -26655,23 +26600,28 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ - in float v_intensity; │ │ │ │ + in vec3 v_normal; │ │ │ │ + in vec2 v_texCoords; │ │ │ │ out vec4 v_FragColor; │ │ │ │ uniform mat4 u_transform; │ │ │ │ uniform mat4 u_normalTransform; │ │ │ │ uniform vec4 u_color; │ │ │ │ uniform vec2 u_texCoordFlipping; │ │ │ │ + uniform sampler2D u_colorTex; │ │ │ │ + const vec3 lightDir = vec3(0.316, 0.0, 0.948); │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ void main() │ │ │ │ - v_FragColor = vec4(u_color.rgb, u_color.a * smoothstep(0.7, 1.0, v_intensity)); │ │ │ │ + float phongDiffuse = max(0.0, -dot(lightDir, v_normal)); │ │ │ │ + vec4 color = texture(u_colorTex, v_texCoords) * u_color; │ │ │ │ + v_FragColor = vec4((phongDiffuse * 0.5 + 0.5) * color.rgb, color.a); │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -26679,45 +26629,35 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ - in float v_intensity; │ │ │ │ - out vec4 v_FragColor; │ │ │ │ - uniform mat4 u_transform; │ │ │ │ - uniform mat4 u_normalTransform; │ │ │ │ - uniform vec4 u_color; │ │ │ │ - uniform vec2 u_texCoordFlipping; │ │ │ │ - const float kShapeCoordScalar = 1000.0; │ │ │ │ - void main() │ │ │ │ - v_FragColor = vec4(u_color.rgb, u_color.a * v_intensity); │ │ │ │ - #ifdef GL_ES │ │ │ │ - #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ - #define MAXPREC highp │ │ │ │ - #else │ │ │ │ - #define MAXPREC mediump │ │ │ │ - #endif │ │ │ │ - precision MAXPREC float; │ │ │ │ - #define LOW_P lowp │ │ │ │ - #define MEDIUM_P mediump │ │ │ │ - #define HIGH_P highp │ │ │ │ + in vec2 a_colorTexCoord; │ │ │ │ + in vec2 a_maskTexCoord; │ │ │ │ + in vec4 a_position; │ │ │ │ + in vec2 a_normal; │ │ │ │ + #ifdef ENABLE_VTF │ │ │ │ + out LOW_P vec4 v_color; │ │ │ │ #else │ │ │ │ - #define LOW_P │ │ │ │ - #define MEDIUM_P │ │ │ │ - #define HIGH_P │ │ │ │ + out vec2 v_colorTexCoord; │ │ │ │ + #endif │ │ │ │ + out vec2 v_maskTexCoord; │ │ │ │ + uniform mat4 u_modelView; │ │ │ │ + uniform mat4 u_projection; │ │ │ │ + uniform mat4 u_pivotTransform; │ │ │ │ + uniform vec2 u_contrastGamma; │ │ │ │ + uniform float u_opacity; │ │ │ │ + uniform float u_zScale; │ │ │ │ + uniform float u_interpolation; │ │ │ │ + uniform float u_isOutlinePass; │ │ │ │ + #ifdef ENABLE_VTF │ │ │ │ + uniform sampler2D u_colorTex; │ │ │ │ #endif │ │ │ │ - in vec3 a_pos; │ │ │ │ - in vec2 a_texCoords; │ │ │ │ - out float v_intensity; │ │ │ │ - uniform mat4 u_transform; │ │ │ │ - uniform mat4 u_normalTransform; │ │ │ │ - uniform vec4 u_color; │ │ │ │ - uniform vec2 u_texCoordFlipping; │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ vec4 applyPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ) │ │ │ │ vec4 transformedPivot = pivot; │ │ │ │ float w = transformedPivot.w; │ │ │ │ transformedPivot.xyw = (pivotTransform * vec4(transformedPivot.xy, pivotRealZ, w)).xyw; │ │ │ │ transformedPivot.z *= transformedPivot.w / w; │ │ │ │ #ifdef VULKAN │ │ │ │ @@ -26739,21 +26679,23 @@ │ │ │ │ vec2 p = (vec4(shiftedPos, 0.0, 1.0) * modelView).xy; │ │ │ │ vec2 d = p - originalAxisPos; │ │ │ │ if (dot(d, d) != 0.0) │ │ │ │ return originalAxisPos + normalize(d) * halfWidth; │ │ │ │ else │ │ │ │ return originalAxisPos; │ │ │ │ void main() │ │ │ │ - vec4 position = u_transform * vec4(a_pos, 1.0); │ │ │ │ - v_intensity = a_texCoords.x; │ │ │ │ - gl_Position = position; │ │ │ │ - #ifdef VULKAN │ │ │ │ - gl_Position.y = -gl_Position.y; │ │ │ │ - gl_Position.z = (gl_Position.z + gl_Position.w) * 0.5; │ │ │ │ + vec4 pos = vec4(a_position.xyz, 1) * u_modelView; │ │ │ │ + vec4 shiftedPos = vec4(a_normal, 0.0, 0.0) + pos; │ │ │ │ + gl_Position = applyPivotTransform(shiftedPos * u_projection, u_pivotTransform, 0.0); │ │ │ │ + #ifdef ENABLE_VTF │ │ │ │ + v_color = texture(u_colorTex, a_colorTexCoord); │ │ │ │ + #else │ │ │ │ + v_colorTexCoord = a_colorTexCoord; │ │ │ │ #endif │ │ │ │ + v_maskTexCoord = a_maskTexCoord; │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -26761,28 +26703,95 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ - in vec3 v_normal; │ │ │ │ - in vec2 v_texCoords; │ │ │ │ + in vec3 v_length; │ │ │ │ + in vec4 v_color; │ │ │ │ out vec4 v_FragColor; │ │ │ │ - uniform mat4 u_transform; │ │ │ │ - uniform mat4 u_normalTransform; │ │ │ │ + uniform mat4 u_modelView; │ │ │ │ + uniform mat4 u_projection; │ │ │ │ + uniform mat4 u_pivotTransform; │ │ │ │ + uniform vec4 u_routeParams; │ │ │ │ uniform vec4 u_color; │ │ │ │ - uniform vec2 u_texCoordFlipping; │ │ │ │ + uniform vec4 u_maskColor; │ │ │ │ + uniform vec4 u_outlineColor; │ │ │ │ + uniform vec4 u_fakeColor; │ │ │ │ + uniform vec4 u_fakeOutlineColor; │ │ │ │ + uniform vec2 u_fakeBorders; │ │ │ │ + uniform vec2 u_pattern; │ │ │ │ + uniform vec2 u_angleCosSin; │ │ │ │ + uniform float u_arrowHalfWidth; │ │ │ │ + uniform float u_opacity; │ │ │ │ + const float kAntialiasingThreshold = 0.92; │ │ │ │ + const float kOutlineThreshold1 = 0.81; │ │ │ │ + const float kOutlineThreshold2 = 0.71; │ │ │ │ + const float kShapeCoordScalar = 1000.0; │ │ │ │ + void main() │ │ │ │ + if (v_length.x < v_length.z) │ │ │ │ + discard; │ │ │ │ + vec2 coefs = step(v_length.xx, u_fakeBorders); │ │ │ │ + coefs.y = 1.0 - coefs.y; │ │ │ │ + vec4 mainColor = mix(u_color, u_fakeColor, coefs.x); │ │ │ │ + mainColor = mix(mainColor, u_fakeColor, coefs.y); │ │ │ │ + vec4 mainOutlineColor = mix(u_outlineColor, u_fakeOutlineColor, coefs.x); │ │ │ │ + mainOutlineColor = mix(mainOutlineColor, u_fakeOutlineColor, coefs.y); │ │ │ │ + vec4 color = mix(mix(mainColor, vec4(v_color.rgb, 1.0), v_color.a), mainColor, step(u_routeParams.w, 0.0)); │ │ │ │ + color = mix(color, mainOutlineColor, step(kOutlineThreshold1, abs(v_length.y))); │ │ │ │ + color = mix(color, mainOutlineColor, smoothstep(kOutlineThreshold2, kOutlineThreshold1, abs(v_length.y))); │ │ │ │ + color.a *= (1.0 - smoothstep(kAntialiasingThreshold, 1.0, abs(v_length.y))); │ │ │ │ + color = vec4(mix(color.rgb, u_maskColor.rgb, u_maskColor.a), color.a); │ │ │ │ + v_FragColor = color; │ │ │ │ + #ifdef GL_ES │ │ │ │ + #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ + #define MAXPREC highp │ │ │ │ + #else │ │ │ │ + #define MAXPREC mediump │ │ │ │ + #endif │ │ │ │ + precision MAXPREC float; │ │ │ │ + #define LOW_P lowp │ │ │ │ + #define MEDIUM_P mediump │ │ │ │ + #define HIGH_P highp │ │ │ │ + #else │ │ │ │ + #define LOW_P │ │ │ │ + #define MEDIUM_P │ │ │ │ + #define HIGH_P │ │ │ │ + #endif │ │ │ │ + in vec2 v_colorTexCoord; │ │ │ │ + in vec2 v_maskTexCoord; │ │ │ │ + in float v_halfLength; │ │ │ │ + out vec4 v_FragColor; │ │ │ │ + uniform mat4 u_modelView; │ │ │ │ + uniform mat4 u_projection; │ │ │ │ + uniform mat4 u_pivotTransform; │ │ │ │ + uniform vec4 u_trafficParams; │ │ │ │ + uniform vec4 u_outlineColor; │ │ │ │ + uniform vec4 u_lightArrowColor; │ │ │ │ + uniform vec4 u_darkArrowColor; │ │ │ │ + uniform float u_outline; │ │ │ │ + uniform float u_opacity; │ │ │ │ uniform sampler2D u_colorTex; │ │ │ │ - const vec3 lightDir = vec3(0.316, 0.0, 0.948); │ │ │ │ + uniform sampler2D u_maskTex; │ │ │ │ + const float kAntialiasingThreshold = 0.92; │ │ │ │ + const float kOutlineThreshold1 = 0.8; │ │ │ │ + const float kOutlineThreshold2 = 0.5; │ │ │ │ + const float kMaskOpacity = 0.7; │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ void main() │ │ │ │ - float phongDiffuse = max(0.0, -dot(lightDir, v_normal)); │ │ │ │ - vec4 color = texture(u_colorTex, v_texCoords) * u_color; │ │ │ │ - v_FragColor = vec4((phongDiffuse * 0.5 + 0.5) * color.rgb, color.a); │ │ │ │ + vec4 color = texture(u_colorTex, v_colorTexCoord); │ │ │ │ + float alphaCode = color.a; │ │ │ │ + vec4 mask = texture(u_maskTex, v_maskTexCoord); │ │ │ │ + color.a = u_opacity * (1.0 - smoothstep(kAntialiasingThreshold, 1.0, abs(v_halfLength))); │ │ │ │ + color.rgb = mix(color.rgb, mask.rgb * mix(u_lightArrowColor.rgb, u_darkArrowColor.rgb, step(alphaCode, 0.6)), mask.a * kMaskOpacity); │ │ │ │ + if (u_outline > 0.0) │ │ │ │ + color.rgb = mix(color.rgb, u_outlineColor.rgb, step(kOutlineThreshold1, abs(v_halfLength))); │ │ │ │ + color.rgb = mix(color.rgb, u_outlineColor.rgb, smoothstep(kOutlineThreshold2, kOutlineThreshold1, abs(v_halfLength))); │ │ │ │ + v_FragColor = color; │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -26790,23 +26799,21 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ - in vec3 a_pos; │ │ │ │ - in vec3 a_normal; │ │ │ │ - in vec2 a_texCoords; │ │ │ │ - out vec3 v_normal; │ │ │ │ - out vec2 v_texCoords; │ │ │ │ - uniform mat4 u_transform; │ │ │ │ - uniform mat4 u_normalTransform; │ │ │ │ - uniform vec4 u_color; │ │ │ │ - uniform vec2 u_texCoordFlipping; │ │ │ │ + in vec2 a_pos; │ │ │ │ + in vec2 a_tcoord; │ │ │ │ + out vec2 v_colorTexCoords; │ │ │ │ + out vec4 v_offset0; │ │ │ │ + out vec4 v_offset1; │ │ │ │ + out vec4 v_offset2; │ │ │ │ + uniform vec4 u_framebufferMetrics; │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ vec4 applyPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ) │ │ │ │ vec4 transformedPivot = pivot; │ │ │ │ float w = transformedPivot.w; │ │ │ │ transformedPivot.xyw = (pivotTransform * vec4(transformedPivot.xy, pivotRealZ, w)).xyw; │ │ │ │ transformedPivot.z *= transformedPivot.w / w; │ │ │ │ #ifdef VULKAN │ │ │ │ @@ -26828,22 +26835,19 @@ │ │ │ │ vec2 p = (vec4(shiftedPos, 0.0, 1.0) * modelView).xy; │ │ │ │ vec2 d = p - originalAxisPos; │ │ │ │ if (dot(d, d) != 0.0) │ │ │ │ return originalAxisPos + normalize(d) * halfWidth; │ │ │ │ else │ │ │ │ return originalAxisPos; │ │ │ │ void main() │ │ │ │ - vec4 position = u_transform * vec4(a_pos, 1.0); │ │ │ │ - v_normal = normalize((u_normalTransform * vec4(a_normal, 0.0)).xyz); │ │ │ │ - v_texCoords = mix(a_texCoords, 1.0 - a_texCoords, u_texCoordFlipping); │ │ │ │ - gl_Position = position; │ │ │ │ - #ifdef VULKAN │ │ │ │ - gl_Position.y = -gl_Position.y; │ │ │ │ - gl_Position.z = (gl_Position.z + gl_Position.w) * 0.5; │ │ │ │ - #endif │ │ │ │ + v_colorTexCoords = a_tcoord; │ │ │ │ + v_offset0 = u_framebufferMetrics.xyxy * vec4(-1.0, 0.0, 0.0, -1.0) + a_tcoord.xyxy; │ │ │ │ + v_offset1 = u_framebufferMetrics.xyxy * vec4( 1.0, 0.0, 0.0, 1.0) + a_tcoord.xyxy; │ │ │ │ + v_offset2 = u_framebufferMetrics.xyxy * vec4(-2.0, 0.0, 0.0, -2.0) + a_tcoord.xyxy; │ │ │ │ + gl_Position = vec4(a_pos, 0.0, 1.0); │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -26857,36 +26861,31 @@ │ │ │ │ #endif │ │ │ │ #ifdef ENABLE_VTF │ │ │ │ in LOW_P vec4 v_color; │ │ │ │ #else │ │ │ │ in vec2 v_colorTexCoords; │ │ │ │ uniform sampler2D u_colorTex; │ │ │ │ #endif │ │ │ │ - in vec3 v_radius; │ │ │ │ out vec4 v_FragColor; │ │ │ │ uniform mat4 u_modelView; │ │ │ │ uniform mat4 u_projection; │ │ │ │ uniform mat4 u_pivotTransform; │ │ │ │ uniform vec2 u_contrastGamma; │ │ │ │ uniform float u_opacity; │ │ │ │ uniform float u_zScale; │ │ │ │ uniform float u_interpolation; │ │ │ │ uniform float u_isOutlinePass; │ │ │ │ - const float aaPixelsCount = 2.5; │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ void main() │ │ │ │ #ifdef ENABLE_VTF │ │ │ │ LOW_P vec4 finalColor = v_color; │ │ │ │ #else │ │ │ │ LOW_P vec4 finalColor = texture(u_colorTex, v_colorTexCoords); │ │ │ │ #endif │ │ │ │ - float smallRadius = v_radius.z - aaPixelsCount; │ │ │ │ - float stepValue = smoothstep(smallRadius * smallRadius, v_radius.z * v_radius.z, │ │ │ │ - v_radius.x * v_radius.x + v_radius.y * v_radius.y); │ │ │ │ - finalColor.a = finalColor.a * u_opacity * (1.0 - stepValue); │ │ │ │ + finalColor.a *= u_opacity; │ │ │ │ v_FragColor = finalColor; │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ @@ -26895,87 +26894,14 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ - in vec3 a_position; │ │ │ │ - in vec3 a_normal; │ │ │ │ - in vec2 a_colorTexCoords; │ │ │ │ - #ifdef ENABLE_VTF │ │ │ │ - out LOW_P vec4 v_color; │ │ │ │ - #else │ │ │ │ - out vec2 v_colorTexCoords; │ │ │ │ - #endif │ │ │ │ - out vec3 v_radius; │ │ │ │ - uniform mat4 u_modelView; │ │ │ │ - uniform mat4 u_projection; │ │ │ │ - uniform mat4 u_pivotTransform; │ │ │ │ - uniform vec2 u_contrastGamma; │ │ │ │ - uniform float u_opacity; │ │ │ │ - uniform float u_zScale; │ │ │ │ - uniform float u_interpolation; │ │ │ │ - uniform float u_isOutlinePass; │ │ │ │ - #ifdef ENABLE_VTF │ │ │ │ - uniform sampler2D u_colorTex; │ │ │ │ - #endif │ │ │ │ - const float kShapeCoordScalar = 1000.0; │ │ │ │ - vec4 applyPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ) │ │ │ │ - vec4 transformedPivot = pivot; │ │ │ │ - float w = transformedPivot.w; │ │ │ │ - transformedPivot.xyw = (pivotTransform * vec4(transformedPivot.xy, pivotRealZ, w)).xyw; │ │ │ │ - transformedPivot.z *= transformedPivot.w / w; │ │ │ │ - #ifdef VULKAN │ │ │ │ - transformedPivot.y = -transformedPivot.y; │ │ │ │ - transformedPivot.z = (transformedPivot.z + transformedPivot.w) / 2.0; │ │ │ │ - #endif │ │ │ │ - return transformedPivot; │ │ │ │ - vec4 applyBillboardPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ, vec2 offset) │ │ │ │ - float logicZ = pivot.z / pivot.w; │ │ │ │ - vec4 transformedPivot = pivotTransform * vec4(pivot.xy, pivotRealZ, pivot.w); │ │ │ │ - vec4 scale = pivotTransform * vec4(1.0, -1.0, 0.0, 1.0); │ │ │ │ - vec4 position = vec4(transformedPivot.xy / transformedPivot.w, logicZ, 1.0) + vec4(offset / scale.w * scale.x, 0.0, 0.0); │ │ │ │ - #ifdef VULKAN │ │ │ │ - position.y = -position.y; │ │ │ │ - position.z = (position.z + position.w) / 2.0; │ │ │ │ - #endif │ │ │ │ - return position; │ │ │ │ - vec2 calcLineTransformedAxisPos(vec2 originalAxisPos, vec2 shiftedPos, mat4 modelView, float halfWidth) │ │ │ │ - vec2 p = (vec4(shiftedPos, 0.0, 1.0) * modelView).xy; │ │ │ │ - vec2 d = p - originalAxisPos; │ │ │ │ - if (dot(d, d) != 0.0) │ │ │ │ - return originalAxisPos + normalize(d) * halfWidth; │ │ │ │ - else │ │ │ │ - return originalAxisPos; │ │ │ │ - void main() │ │ │ │ - vec4 p = vec4(a_position, 1) * u_modelView; │ │ │ │ - vec4 pos = vec4(a_normal.xy, 0, 0) + p; │ │ │ │ - gl_Position = applyPivotTransform(pos * u_projection, u_pivotTransform, 0.0); │ │ │ │ - #ifdef ENABLE_VTF │ │ │ │ - v_color = texture(u_colorTex, a_colorTexCoords); │ │ │ │ - #else │ │ │ │ - v_colorTexCoords = a_colorTexCoords; │ │ │ │ - #endif │ │ │ │ - v_radius = a_normal; │ │ │ │ - #ifdef GL_ES │ │ │ │ - #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ - #define MAXPREC highp │ │ │ │ - #else │ │ │ │ - #define MAXPREC mediump │ │ │ │ - #endif │ │ │ │ - precision MAXPREC float; │ │ │ │ - #define LOW_P lowp │ │ │ │ - #define MEDIUM_P mediump │ │ │ │ - #define HIGH_P highp │ │ │ │ - #else │ │ │ │ - #define LOW_P │ │ │ │ - #define MEDIUM_P │ │ │ │ - #define HIGH_P │ │ │ │ - #endif │ │ │ │ in vec3 v_radius; │ │ │ │ in vec4 v_color; │ │ │ │ out vec4 v_FragColor; │ │ │ │ uniform mat4 u_modelView; │ │ │ │ uniform mat4 u_projection; │ │ │ │ uniform mat4 u_pivotTransform; │ │ │ │ uniform vec2 u_contrastGamma; │ │ │ │ @@ -27003,27 +26929,26 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ - in vec3 a_normal; │ │ │ │ in vec3 a_position; │ │ │ │ - in vec4 a_color; │ │ │ │ - out vec3 v_radius; │ │ │ │ - out vec4 v_color; │ │ │ │ + in vec2 a_colorTexCoord; │ │ │ │ + out vec2 v_colorTexCoord; │ │ │ │ uniform mat4 u_modelView; │ │ │ │ uniform mat4 u_projection; │ │ │ │ uniform mat4 u_pivotTransform; │ │ │ │ - uniform vec2 u_contrastGamma; │ │ │ │ + uniform vec4 u_trafficParams; │ │ │ │ + uniform vec4 u_outlineColor; │ │ │ │ + uniform vec4 u_lightArrowColor; │ │ │ │ + uniform vec4 u_darkArrowColor; │ │ │ │ + uniform float u_outline; │ │ │ │ uniform float u_opacity; │ │ │ │ - uniform float u_zScale; │ │ │ │ - uniform float u_interpolation; │ │ │ │ - uniform float u_isOutlinePass; │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ vec4 applyPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ) │ │ │ │ vec4 transformedPivot = pivot; │ │ │ │ float w = transformedPivot.w; │ │ │ │ transformedPivot.xyw = (pivotTransform * vec4(transformedPivot.xy, pivotRealZ, w)).xyw; │ │ │ │ transformedPivot.z *= transformedPivot.w / w; │ │ │ │ #ifdef VULKAN │ │ │ │ @@ -27045,20 +26970,18 @@ │ │ │ │ vec2 p = (vec4(shiftedPos, 0.0, 1.0) * modelView).xy; │ │ │ │ vec2 d = p - originalAxisPos; │ │ │ │ if (dot(d, d) != 0.0) │ │ │ │ return originalAxisPos + normalize(d) * halfWidth; │ │ │ │ else │ │ │ │ return originalAxisPos; │ │ │ │ void main() │ │ │ │ - vec3 radius = a_normal * a_position.z; │ │ │ │ - vec4 pos = vec4(a_position.xy, 0, 1) * u_modelView; │ │ │ │ - vec4 shiftedPos = vec4(radius.xy, 0, 0) + pos; │ │ │ │ - gl_Position = applyPivotTransform(shiftedPos * u_projection, u_pivotTransform, 0.0); │ │ │ │ - v_radius = radius; │ │ │ │ - v_color = a_color; │ │ │ │ + vec2 transformedAxisPos = (vec4(a_position.xy, 0.0, 1.0) * u_modelView).xy; │ │ │ │ + vec4 pos = vec4(transformedAxisPos, a_position.z, 1.0) * u_projection; │ │ │ │ + v_colorTexCoord = a_colorTexCoord; │ │ │ │ + gl_Position = applyPivotTransform(pos, u_pivotTransform, 0.0); │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -27066,46 +26989,42 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ - in vec4 v_normal; │ │ │ │ #ifdef ENABLE_VTF │ │ │ │ in LOW_P vec4 v_color; │ │ │ │ #else │ │ │ │ in vec2 v_colorTexCoords; │ │ │ │ uniform sampler2D u_colorTex; │ │ │ │ #endif │ │ │ │ + in vec3 v_radius; │ │ │ │ out vec4 v_FragColor; │ │ │ │ uniform mat4 u_modelView; │ │ │ │ uniform mat4 u_projection; │ │ │ │ uniform mat4 u_pivotTransform; │ │ │ │ uniform vec2 u_contrastGamma; │ │ │ │ uniform float u_opacity; │ │ │ │ uniform float u_zScale; │ │ │ │ uniform float u_interpolation; │ │ │ │ uniform float u_isOutlinePass; │ │ │ │ const float aaPixelsCount = 2.5; │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ void main() │ │ │ │ #ifdef ENABLE_VTF │ │ │ │ - LOW_P vec4 color = v_color; │ │ │ │ + LOW_P vec4 finalColor = v_color; │ │ │ │ #else │ │ │ │ - LOW_P vec4 color = texture(u_colorTex, v_colorTexCoords); │ │ │ │ + LOW_P vec4 finalColor = texture(u_colorTex, v_colorTexCoords); │ │ │ │ #endif │ │ │ │ - float r1 = (v_normal.z - aaPixelsCount) * (v_normal.z - aaPixelsCount); │ │ │ │ - float r2 = v_normal.x * v_normal.x + v_normal.y * v_normal.y; │ │ │ │ - float r3 = v_normal.z * v_normal.z; │ │ │ │ - float alpha = mix(step(r3, r2), smoothstep(r1, r3, r2), v_normal.w); │ │ │ │ - LOW_P vec4 finalColor = color; │ │ │ │ - finalColor.a = finalColor.a * u_opacity * (1.0 - alpha); │ │ │ │ - if (finalColor.a == 0.0) │ │ │ │ - discard; │ │ │ │ + float smallRadius = v_radius.z - aaPixelsCount; │ │ │ │ + float stepValue = smoothstep(smallRadius * smallRadius, v_radius.z * v_radius.z, │ │ │ │ + v_radius.x * v_radius.x + v_radius.y * v_radius.y); │ │ │ │ + finalColor.a = finalColor.a * u_opacity * (1.0 - stepValue); │ │ │ │ v_FragColor = finalColor; │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ @@ -27114,34 +27033,28 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ - in vec3 a_position; │ │ │ │ - in vec4 a_normal; │ │ │ │ - in vec4 a_colorTexCoords; │ │ │ │ - out vec4 v_normal; │ │ │ │ - #ifdef ENABLE_VTF │ │ │ │ - out LOW_P vec4 v_color; │ │ │ │ - #else │ │ │ │ + in vec4 a_position; │ │ │ │ + in vec2 a_normal; │ │ │ │ + in vec2 a_colorTexCoords; │ │ │ │ + in vec2 a_maskTexCoords; │ │ │ │ out vec2 v_colorTexCoords; │ │ │ │ - #endif │ │ │ │ + out vec2 v_maskTexCoords; │ │ │ │ uniform mat4 u_modelView; │ │ │ │ uniform mat4 u_projection; │ │ │ │ uniform mat4 u_pivotTransform; │ │ │ │ uniform vec2 u_contrastGamma; │ │ │ │ uniform float u_opacity; │ │ │ │ uniform float u_zScale; │ │ │ │ uniform float u_interpolation; │ │ │ │ uniform float u_isOutlinePass; │ │ │ │ - #ifdef ENABLE_VTF │ │ │ │ - uniform sampler2D u_colorTex; │ │ │ │ - #endif │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ vec4 applyPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ) │ │ │ │ vec4 transformedPivot = pivot; │ │ │ │ float w = transformedPivot.w; │ │ │ │ transformedPivot.xyw = (pivotTransform * vec4(transformedPivot.xy, pivotRealZ, w)).xyw; │ │ │ │ transformedPivot.z *= transformedPivot.w / w; │ │ │ │ #ifdef VULKAN │ │ │ │ @@ -27163,23 +27076,19 @@ │ │ │ │ vec2 p = (vec4(shiftedPos, 0.0, 1.0) * modelView).xy; │ │ │ │ vec2 d = p - originalAxisPos; │ │ │ │ if (dot(d, d) != 0.0) │ │ │ │ return originalAxisPos + normalize(d) * halfWidth; │ │ │ │ else │ │ │ │ return originalAxisPos; │ │ │ │ void main() │ │ │ │ - vec4 p = vec4(a_position, 1) * u_modelView; │ │ │ │ - vec4 pos = vec4(a_normal.xy + a_colorTexCoords.zw, 0, 0) + p; │ │ │ │ - gl_Position = applyPivotTransform(pos * u_projection, u_pivotTransform, 0.0); │ │ │ │ - #ifdef ENABLE_VTF │ │ │ │ - v_color = texture(u_colorTex, a_colorTexCoords.xy); │ │ │ │ - #else │ │ │ │ - v_colorTexCoords = a_colorTexCoords.xy; │ │ │ │ - #endif │ │ │ │ - v_normal = a_normal; │ │ │ │ + vec4 pos = vec4(a_position.xyz, 1) * u_modelView; │ │ │ │ + vec4 shiftedPos = vec4(a_normal, 0, 0) + pos; │ │ │ │ + gl_Position = applyPivotTransform(shiftedPos * u_projection, u_pivotTransform, 0.0); │ │ │ │ + v_colorTexCoords = a_colorTexCoords; │ │ │ │ + v_maskTexCoords = a_maskTexCoords; │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -27187,34 +27096,26 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ - in vec3 a_position; │ │ │ │ - in vec4 a_normal; │ │ │ │ - in vec4 a_colorTexCoords; │ │ │ │ - out vec4 v_normal; │ │ │ │ - #ifdef ENABLE_VTF │ │ │ │ - out LOW_P vec4 v_color; │ │ │ │ - #else │ │ │ │ + in vec2 a_normal; │ │ │ │ + in vec2 a_colorTexCoords; │ │ │ │ out vec2 v_colorTexCoords; │ │ │ │ - #endif │ │ │ │ uniform mat4 u_modelView; │ │ │ │ uniform mat4 u_projection; │ │ │ │ uniform mat4 u_pivotTransform; │ │ │ │ - uniform vec2 u_contrastGamma; │ │ │ │ - uniform float u_opacity; │ │ │ │ + uniform vec4 u_position; │ │ │ │ + uniform vec2 u_lineParams; │ │ │ │ + uniform float u_accuracy; │ │ │ │ uniform float u_zScale; │ │ │ │ - uniform float u_interpolation; │ │ │ │ - uniform float u_isOutlinePass; │ │ │ │ - #ifdef ENABLE_VTF │ │ │ │ - uniform sampler2D u_colorTex; │ │ │ │ - #endif │ │ │ │ + uniform float u_opacity; │ │ │ │ + uniform float u_azimut; │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ vec4 applyPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ) │ │ │ │ vec4 transformedPivot = pivot; │ │ │ │ float w = transformedPivot.w; │ │ │ │ transformedPivot.xyw = (pivotTransform * vec4(transformedPivot.xy, pivotRealZ, w)).xyw; │ │ │ │ transformedPivot.z *= transformedPivot.w / w; │ │ │ │ #ifdef VULKAN │ │ │ │ @@ -27236,23 +27137,26 @@ │ │ │ │ vec2 p = (vec4(shiftedPos, 0.0, 1.0) * modelView).xy; │ │ │ │ vec2 d = p - originalAxisPos; │ │ │ │ if (dot(d, d) != 0.0) │ │ │ │ return originalAxisPos + normalize(d) * halfWidth; │ │ │ │ else │ │ │ │ return originalAxisPos; │ │ │ │ void main() │ │ │ │ - vec4 pivot = vec4(a_position.xyz, 1.0) * u_modelView; │ │ │ │ - vec4 offset = vec4(a_normal.xy + a_colorTexCoords.zw, 0.0, 0.0) * u_projection; │ │ │ │ - gl_Position = applyBillboardPivotTransform(pivot * u_projection, u_pivotTransform, 0.0, offset.xy); │ │ │ │ - #ifdef ENABLE_VTF │ │ │ │ - v_color = texture(u_colorTex, a_colorTexCoords.xy); │ │ │ │ - #else │ │ │ │ - v_colorTexCoords = a_colorTexCoords.xy; │ │ │ │ - #endif │ │ │ │ - v_normal = a_normal; │ │ │ │ + float sinV = sin(u_azimut); │ │ │ │ + float cosV = cos(u_azimut); │ │ │ │ + mat4 rotation; │ │ │ │ + rotation[0] = vec4(cosV, sinV, 0.0, 0.0); │ │ │ │ + rotation[1] = vec4(-sinV, cosV, 0.0, 0.0); │ │ │ │ + rotation[2] = vec4(0.0, 0.0, 1.0, 0.0); │ │ │ │ + rotation[3] = vec4(0.0, 0.0, 0.0, 1.0); │ │ │ │ + vec4 pos = vec4(u_position.xyz, 1.0) * u_modelView; │ │ │ │ + vec4 normal = vec4(a_normal, 0, 0); │ │ │ │ + vec4 shiftedPos = normal * rotation + pos; │ │ │ │ + gl_Position = applyPivotTransform(shiftedPos * u_projection, u_pivotTransform, 0.0); │ │ │ │ + v_colorTexCoords = a_colorTexCoords; │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -27260,33 +27164,28 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ - in vec2 v_colorTexCoord; │ │ │ │ - in vec2 v_maskTexCoord; │ │ │ │ + in vec3 v_radius; │ │ │ │ + in vec4 v_color; │ │ │ │ out vec4 v_FragColor; │ │ │ │ - uniform mat4 u_modelView; │ │ │ │ - uniform mat4 u_projection; │ │ │ │ - uniform mat4 u_pivotTransform; │ │ │ │ - uniform vec2 u_contrastGamma; │ │ │ │ - uniform float u_opacity; │ │ │ │ - uniform float u_zScale; │ │ │ │ - uniform float u_interpolation; │ │ │ │ - uniform float u_isOutlinePass; │ │ │ │ - uniform sampler2D u_colorTex; │ │ │ │ - uniform sampler2D u_maskTex; │ │ │ │ + const float aaPixelsCount = 2.5; │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ void main() │ │ │ │ - vec4 color = texture(u_colorTex, v_colorTexCoord); │ │ │ │ - float mask = texture(u_maskTex, v_maskTexCoord).r; │ │ │ │ - color.a = color.a * mask * u_opacity; │ │ │ │ - v_FragColor = color; │ │ │ │ + vec4 finalColor = v_color; │ │ │ │ + float smallRadius = v_radius.z - aaPixelsCount; │ │ │ │ + float stepValue = smoothstep(smallRadius * smallRadius, v_radius.z * v_radius.z, │ │ │ │ + dot(v_radius.xy, v_radius.xy)); │ │ │ │ + finalColor.a = finalColor.a * (1.0 - stepValue); │ │ │ │ + if (finalColor.a < 0.01) │ │ │ │ + discard; │ │ │ │ + v_FragColor = finalColor; │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -27294,28 +27193,19 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ - in vec3 a_position; │ │ │ │ - in vec3 a_normal; │ │ │ │ - in vec2 a_colorTexCoord; │ │ │ │ - in vec4 a_maskTexCoord; │ │ │ │ - out vec2 v_colorTexCoord; │ │ │ │ - out vec2 v_maskTexCoord; │ │ │ │ - uniform mat4 u_modelView; │ │ │ │ - uniform mat4 u_projection; │ │ │ │ - uniform mat4 u_pivotTransform; │ │ │ │ - uniform vec2 u_contrastGamma; │ │ │ │ - uniform float u_opacity; │ │ │ │ - uniform float u_zScale; │ │ │ │ - uniform float u_interpolation; │ │ │ │ - uniform float u_isOutlinePass; │ │ │ │ + in vec2 a_pos; │ │ │ │ + in vec2 a_tcoord; │ │ │ │ + out vec2 v_colorTexCoords; │ │ │ │ + out vec4 v_offset; │ │ │ │ + uniform vec4 u_framebufferMetrics; │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ vec4 applyPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ) │ │ │ │ vec4 transformedPivot = pivot; │ │ │ │ float w = transformedPivot.w; │ │ │ │ transformedPivot.xyw = (pivotTransform * vec4(transformedPivot.xy, pivotRealZ, w)).xyw; │ │ │ │ transformedPivot.z *= transformedPivot.w / w; │ │ │ │ #ifdef VULKAN │ │ │ │ @@ -27337,25 +27227,17 @@ │ │ │ │ vec2 p = (vec4(shiftedPos, 0.0, 1.0) * modelView).xy; │ │ │ │ vec2 d = p - originalAxisPos; │ │ │ │ if (dot(d, d) != 0.0) │ │ │ │ return originalAxisPos + normalize(d) * halfWidth; │ │ │ │ else │ │ │ │ return originalAxisPos; │ │ │ │ void main() │ │ │ │ - vec2 normal = a_normal.xy; │ │ │ │ - float halfWidth = length(normal); │ │ │ │ - vec2 transformedAxisPos = (vec4(a_position.xy, 0.0, 1.0) * u_modelView).xy; │ │ │ │ - if (halfWidth != 0.0) │ │ │ │ - transformedAxisPos = calcLineTransformedAxisPos(transformedAxisPos, a_position.xy + normal, │ │ │ │ - u_modelView, halfWidth); │ │ │ │ - float uOffset = min(length(vec4(kShapeCoordScalar, 0, 0, 0) * u_modelView) * a_maskTexCoord.x, 1.0); │ │ │ │ - v_colorTexCoord = a_colorTexCoord; │ │ │ │ - v_maskTexCoord = vec2(a_maskTexCoord.y + uOffset * a_maskTexCoord.z, a_maskTexCoord.w); │ │ │ │ - vec4 pos = vec4(transformedAxisPos, a_position.z, 1.0) * u_projection; │ │ │ │ - gl_Position = applyPivotTransform(pos, u_pivotTransform, 0.0); │ │ │ │ + v_colorTexCoords = a_tcoord; │ │ │ │ + v_offset = u_framebufferMetrics.xyxy * vec4(1.0, 0.0, 0.0, 1.0) + a_tcoord.xyxy; │ │ │ │ + gl_Position = vec4(a_pos, 0.0, 1.0); │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -27363,19 +27245,19 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ + in vec4 v_color; │ │ │ │ out vec4 v_FragColor; │ │ │ │ - uniform vec4 u_color; │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ void main() │ │ │ │ - v_FragColor = u_color; │ │ │ │ + v_FragColor = v_color; │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -27383,15 +27265,36 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ - in vec2 a_position; │ │ │ │ + in vec3 a_position; │ │ │ │ + in vec2 a_colorTexCoord; │ │ │ │ + in vec2 a_outlineColorTexCoord; │ │ │ │ + in vec2 a_normal; │ │ │ │ + in vec2 a_maskTexCoord; │ │ │ │ + #ifdef ENABLE_VTF │ │ │ │ + out LOW_P vec4 v_color; │ │ │ │ + #else │ │ │ │ + out vec2 v_colorTexCoord; │ │ │ │ + #endif │ │ │ │ + out vec2 v_maskTexCoord; │ │ │ │ + uniform mat4 u_modelView; │ │ │ │ + uniform mat4 u_projection; │ │ │ │ + uniform vec2 u_contrastGamma; │ │ │ │ + uniform vec2 u_position; │ │ │ │ + uniform float u_isOutlinePass; │ │ │ │ + uniform float u_opacity; │ │ │ │ + uniform float u_length; │ │ │ │ + #ifdef ENABLE_VTF │ │ │ │ + uniform sampler2D u_colorTex; │ │ │ │ + #endif │ │ │ │ + const float kBaseDepthShift = -10.0; │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ vec4 applyPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ) │ │ │ │ vec4 transformedPivot = pivot; │ │ │ │ float w = transformedPivot.w; │ │ │ │ transformedPivot.xyw = (pivotTransform * vec4(transformedPivot.xy, pivotRealZ, w)).xyw; │ │ │ │ transformedPivot.z *= transformedPivot.w / w; │ │ │ │ #ifdef VULKAN │ │ │ │ @@ -27413,19 +27316,30 @@ │ │ │ │ vec2 p = (vec4(shiftedPos, 0.0, 1.0) * modelView).xy; │ │ │ │ vec2 d = p - originalAxisPos; │ │ │ │ if (dot(d, d) != 0.0) │ │ │ │ return originalAxisPos + normalize(d) * halfWidth; │ │ │ │ else │ │ │ │ return originalAxisPos; │ │ │ │ void main() │ │ │ │ - gl_Position = vec4(a_position, 0, 1); │ │ │ │ + float isOutline = step(0.5, u_isOutlinePass); │ │ │ │ + float depthShift = kBaseDepthShift * isOutline; │ │ │ │ + vec4 pos = (vec4(a_position, 1.0) + vec4(0.0, 0.0, depthShift, 0.0)) * u_modelView; │ │ │ │ + vec4 shiftedPos = vec4(a_normal, 0.0, 0.0) + pos; │ │ │ │ + gl_Position = shiftedPos * u_projection; │ │ │ │ #ifdef VULKAN │ │ │ │ gl_Position.y = -gl_Position.y; │ │ │ │ gl_Position.z = (gl_Position.z + gl_Position.w) * 0.5; │ │ │ │ #endif │ │ │ │ + vec2 colorTexCoord = mix(a_colorTexCoord, a_outlineColorTexCoord, isOutline); │ │ │ │ + #ifdef ENABLE_VTF │ │ │ │ + v_color = texture(u_colorTex, colorTexCoord); │ │ │ │ + #else │ │ │ │ + v_colorTexCoord = colorTexCoord; │ │ │ │ + #endif │ │ │ │ + v_maskTexCoord = a_maskTexCoord; │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -27433,41 +27347,29 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ - #ifdef ENABLE_VTF │ │ │ │ - in LOW_P vec4 v_color; │ │ │ │ - #else │ │ │ │ in vec2 v_colorTexCoords; │ │ │ │ - uniform sampler2D u_colorTex; │ │ │ │ - #endif │ │ │ │ - in vec2 v_maskTexCoords; │ │ │ │ out vec4 v_FragColor; │ │ │ │ uniform mat4 u_modelView; │ │ │ │ uniform mat4 u_projection; │ │ │ │ - uniform mat4 u_pivotTransform; │ │ │ │ uniform vec2 u_contrastGamma; │ │ │ │ - uniform float u_opacity; │ │ │ │ - uniform float u_zScale; │ │ │ │ - uniform float u_interpolation; │ │ │ │ + uniform vec2 u_position; │ │ │ │ uniform float u_isOutlinePass; │ │ │ │ - uniform sampler2D u_maskTex; │ │ │ │ + uniform float u_opacity; │ │ │ │ + uniform float u_length; │ │ │ │ + uniform sampler2D u_colorTex; │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ void main() │ │ │ │ - #ifdef ENABLE_VTF │ │ │ │ - LOW_P vec4 color = v_color; │ │ │ │ - #else │ │ │ │ - LOW_P vec4 color = texture(u_colorTex, v_colorTexCoords); │ │ │ │ - #endif │ │ │ │ - color *= texture(u_maskTex, v_maskTexCoords); │ │ │ │ - color.a *= u_opacity; │ │ │ │ - v_FragColor = color; │ │ │ │ + vec4 finalColor = texture(u_colorTex, v_colorTexCoords); │ │ │ │ + finalColor.a *= u_opacity; │ │ │ │ + v_FragColor = finalColor; │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -27475,34 +27377,54 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ - in vec3 a_position; │ │ │ │ - in vec2 a_colorTexCoords; │ │ │ │ - in vec2 a_maskTexCoords; │ │ │ │ - #ifdef ENABLE_VTF │ │ │ │ - out LOW_P vec4 v_color; │ │ │ │ + uniform sampler2D u_colorTex; │ │ │ │ + in vec3 v_texCoords; │ │ │ │ + out vec4 v_FragColor; │ │ │ │ + const float kShapeCoordScalar = 1000.0; │ │ │ │ + void main() │ │ │ │ + v_FragColor = texture(u_colorTex, v_texCoords.xy); │ │ │ │ + #ifdef GL_ES │ │ │ │ + #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ + #define MAXPREC highp │ │ │ │ + #else │ │ │ │ + #define MAXPREC mediump │ │ │ │ + #endif │ │ │ │ + precision MAXPREC float; │ │ │ │ + #define LOW_P lowp │ │ │ │ + #define MEDIUM_P mediump │ │ │ │ + #define HIGH_P highp │ │ │ │ #else │ │ │ │ - out vec2 v_colorTexCoords; │ │ │ │ + #define LOW_P │ │ │ │ + #define MEDIUM_P │ │ │ │ + #define HIGH_P │ │ │ │ #endif │ │ │ │ - out vec2 v_maskTexCoords; │ │ │ │ + in vec4 a_position; │ │ │ │ + in vec3 a_normal; │ │ │ │ + in vec4 a_color; │ │ │ │ + out vec4 v_radius; │ │ │ │ + out vec4 v_color; │ │ │ │ uniform mat4 u_modelView; │ │ │ │ uniform mat4 u_projection; │ │ │ │ uniform mat4 u_pivotTransform; │ │ │ │ - uniform vec2 u_contrastGamma; │ │ │ │ + uniform vec4 u_routeParams; │ │ │ │ + uniform vec4 u_color; │ │ │ │ + uniform vec4 u_maskColor; │ │ │ │ + uniform vec4 u_outlineColor; │ │ │ │ + uniform vec4 u_fakeColor; │ │ │ │ + uniform vec4 u_fakeOutlineColor; │ │ │ │ + uniform vec2 u_fakeBorders; │ │ │ │ + uniform vec2 u_pattern; │ │ │ │ + uniform vec2 u_angleCosSin; │ │ │ │ + uniform float u_arrowHalfWidth; │ │ │ │ uniform float u_opacity; │ │ │ │ - uniform float u_zScale; │ │ │ │ - uniform float u_interpolation; │ │ │ │ - uniform float u_isOutlinePass; │ │ │ │ - #ifdef ENABLE_VTF │ │ │ │ - uniform sampler2D u_colorTex; │ │ │ │ - #endif │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ vec4 applyPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ) │ │ │ │ vec4 transformedPivot = pivot; │ │ │ │ float w = transformedPivot.w; │ │ │ │ transformedPivot.xyw = (pivotTransform * vec4(transformedPivot.xy, pivotRealZ, w)).xyw; │ │ │ │ transformedPivot.z *= transformedPivot.w / w; │ │ │ │ #ifdef VULKAN │ │ │ │ @@ -27524,45 +27446,24 @@ │ │ │ │ vec2 p = (vec4(shiftedPos, 0.0, 1.0) * modelView).xy; │ │ │ │ vec2 d = p - originalAxisPos; │ │ │ │ if (dot(d, d) != 0.0) │ │ │ │ return originalAxisPos + normalize(d) * halfWidth; │ │ │ │ else │ │ │ │ return originalAxisPos; │ │ │ │ void main() │ │ │ │ - vec4 pos = vec4(a_position, 1) * u_modelView * u_projection; │ │ │ │ + float r = u_routeParams.x * a_normal.z; │ │ │ │ + vec2 normal = vec2(a_normal.x * u_angleCosSin.x - a_normal.y * u_angleCosSin.y, │ │ │ │ + a_normal.x * u_angleCosSin.y + a_normal.y * u_angleCosSin.x); │ │ │ │ + vec4 radius = vec4(normal.xy * r, r, a_position.w); │ │ │ │ + vec4 pos = vec4(a_position.xy, 0, 1) * u_modelView; │ │ │ │ + vec2 shiftedPos = radius.xy + pos.xy; │ │ │ │ + pos = vec4(shiftedPos, a_position.z, 1.0) * u_projection; │ │ │ │ gl_Position = applyPivotTransform(pos, u_pivotTransform, 0.0); │ │ │ │ - #ifdef ENABLE_VTF │ │ │ │ - v_color = texture(u_colorTex, a_colorTexCoords); │ │ │ │ - #else │ │ │ │ - v_colorTexCoords = a_colorTexCoords; │ │ │ │ - #endif │ │ │ │ - v_maskTexCoords = a_maskTexCoords; │ │ │ │ - #ifdef GL_ES │ │ │ │ - #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ - #define MAXPREC highp │ │ │ │ - #else │ │ │ │ - #define MAXPREC mediump │ │ │ │ - #endif │ │ │ │ - precision MAXPREC float; │ │ │ │ - #define LOW_P lowp │ │ │ │ - #define MEDIUM_P mediump │ │ │ │ - #define HIGH_P highp │ │ │ │ - #else │ │ │ │ - #define LOW_P │ │ │ │ - #define MEDIUM_P │ │ │ │ - #define HIGH_P │ │ │ │ - #endif │ │ │ │ - in vec2 v_texCoords; │ │ │ │ - in vec4 v_color; │ │ │ │ - out vec4 v_FragColor; │ │ │ │ - uniform sampler2D u_colorTex; │ │ │ │ - const float kShapeCoordScalar = 1000.0; │ │ │ │ - void main() │ │ │ │ - LOW_P vec4 color = texture(u_colorTex, v_texCoords); │ │ │ │ - v_FragColor = color * v_color; │ │ │ │ + v_radius = radius; │ │ │ │ + v_color = a_color; │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -27571,19 +27472,24 @@ │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ in vec2 a_position; │ │ │ │ - in vec2 a_texCoords; │ │ │ │ - in vec4 a_color; │ │ │ │ - out vec2 v_texCoords; │ │ │ │ - out vec4 v_color; │ │ │ │ + in vec2 a_normal; │ │ │ │ + in vec2 a_colorTexCoords; │ │ │ │ + out vec2 v_colorTexCoords; │ │ │ │ + uniform mat4 u_modelView; │ │ │ │ uniform mat4 u_projection; │ │ │ │ + uniform vec2 u_contrastGamma; │ │ │ │ + uniform vec2 u_position; │ │ │ │ + uniform float u_isOutlinePass; │ │ │ │ + uniform float u_opacity; │ │ │ │ + uniform float u_length; │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ vec4 applyPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ) │ │ │ │ vec4 transformedPivot = pivot; │ │ │ │ float w = transformedPivot.w; │ │ │ │ transformedPivot.xyw = (pivotTransform * vec4(transformedPivot.xy, pivotRealZ, w)).xyw; │ │ │ │ transformedPivot.z *= transformedPivot.w / w; │ │ │ │ #ifdef VULKAN │ │ │ │ @@ -27605,21 +27511,20 @@ │ │ │ │ vec2 p = (vec4(shiftedPos, 0.0, 1.0) * modelView).xy; │ │ │ │ vec2 d = p - originalAxisPos; │ │ │ │ if (dot(d, d) != 0.0) │ │ │ │ return originalAxisPos + normalize(d) * halfWidth; │ │ │ │ else │ │ │ │ return originalAxisPos; │ │ │ │ void main() │ │ │ │ - v_texCoords = a_texCoords; │ │ │ │ - v_color = a_color; │ │ │ │ - gl_Position = vec4(a_position, 0, 1) * u_projection; │ │ │ │ + gl_Position = vec4(u_position + a_position + u_length * a_normal, 0, 1) * u_projection; │ │ │ │ #ifdef VULKAN │ │ │ │ gl_Position.y = -gl_Position.y; │ │ │ │ gl_Position.z = (gl_Position.z + gl_Position.w) * 0.5; │ │ │ │ #endif │ │ │ │ + v_colorTexCoords = a_colorTexCoords; │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -27627,38 +27532,43 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ - #ifdef ENABLE_VTF │ │ │ │ - in LOW_P vec4 v_color; │ │ │ │ - #else │ │ │ │ - in vec2 v_colorTexCoord; │ │ │ │ - uniform sampler2D u_colorTex; │ │ │ │ - #endif │ │ │ │ + in vec2 v_colorTexCoords; │ │ │ │ + in vec4 v_offset; │ │ │ │ out vec4 v_FragColor; │ │ │ │ - uniform mat4 u_modelView; │ │ │ │ - uniform mat4 u_projection; │ │ │ │ - uniform mat4 u_pivotTransform; │ │ │ │ - uniform vec2 u_contrastGamma; │ │ │ │ - uniform float u_opacity; │ │ │ │ - uniform float u_zScale; │ │ │ │ - uniform float u_interpolation; │ │ │ │ - uniform float u_isOutlinePass; │ │ │ │ + uniform vec4 u_framebufferMetrics; │ │ │ │ + uniform sampler2D u_colorTex; │ │ │ │ + uniform sampler2D u_blendingWeightTex; │ │ │ │ + #define SMAASampleLevelZero(tex, coord) textureLod(tex, coord, 0.0) │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ void main() │ │ │ │ - #ifdef ENABLE_VTF │ │ │ │ - LOW_P vec4 color = v_color; │ │ │ │ - #else │ │ │ │ - LOW_P vec4 color = texture(u_colorTex, v_colorTexCoord); │ │ │ │ - #endif │ │ │ │ - color.a *= u_opacity; │ │ │ │ - v_FragColor = color; │ │ │ │ + vec4 a; │ │ │ │ + a.x = texture(u_blendingWeightTex, v_offset.xy).a; // Right │ │ │ │ + a.y = texture(u_blendingWeightTex, v_offset.zw).g; // Top │ │ │ │ + a.wz = texture(u_blendingWeightTex, v_colorTexCoords).xz; // Bottom / Left │ │ │ │ + if (dot(a, vec4(1.0, 1.0, 1.0, 1.0)) < 1e-5) │ │ │ │ + v_FragColor = texture(u_colorTex, v_colorTexCoords); │ │ │ │ + else │ │ │ │ + vec4 blendingOffset = vec4(0.0, a.y, 0.0, a.w); │ │ │ │ + vec2 blendingWeight = a.yw; │ │ │ │ + if (max(a.x, a.z) > max(a.y, a.w)) │ │ │ │ + { │ │ │ │ + blendingOffset = vec4(a.x, 0.0, a.z, 0.0); │ │ │ │ + blendingWeight = a.xz; │ │ │ │ + } │ │ │ │ + blendingWeight /= dot(blendingWeight, vec2(1.0, 1.0)); │ │ │ │ + vec4 bc = blendingOffset * vec4(u_framebufferMetrics.xy, -u_framebufferMetrics.xy); │ │ │ │ + bc += v_colorTexCoords.xyxy; │ │ │ │ + vec4 color = blendingWeight.x * SMAASampleLevelZero(u_colorTex, bc.xy); │ │ │ │ + color += blendingWeight.y * SMAASampleLevelZero(u_colorTex, bc.zw); │ │ │ │ + v_FragColor = color; │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -27668,20 +27578,21 @@ │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ in vec3 a_position; │ │ │ │ in vec3 a_normal; │ │ │ │ - in vec2 a_colorTexCoord; │ │ │ │ + in vec2 a_colorTexCoords; │ │ │ │ #ifdef ENABLE_VTF │ │ │ │ out LOW_P vec4 v_color; │ │ │ │ #else │ │ │ │ - out vec2 v_colorTexCoord; │ │ │ │ + out vec2 v_colorTexCoords; │ │ │ │ #endif │ │ │ │ + out vec3 v_radius; │ │ │ │ uniform mat4 u_modelView; │ │ │ │ uniform mat4 u_projection; │ │ │ │ uniform mat4 u_pivotTransform; │ │ │ │ uniform vec2 u_contrastGamma; │ │ │ │ uniform float u_opacity; │ │ │ │ uniform float u_zScale; │ │ │ │ uniform float u_interpolation; │ │ │ │ @@ -27714,27 +27625,23 @@ │ │ │ │ vec2 p = (vec4(shiftedPos, 0.0, 1.0) * modelView).xy; │ │ │ │ vec2 d = p - originalAxisPos; │ │ │ │ if (dot(d, d) != 0.0) │ │ │ │ return originalAxisPos + normalize(d) * halfWidth; │ │ │ │ else │ │ │ │ return originalAxisPos; │ │ │ │ void main() │ │ │ │ - vec2 normal = a_normal.xy; │ │ │ │ - float halfWidth = length(normal); │ │ │ │ - vec2 transformedAxisPos = (vec4(a_position.xy, 0.0, 1.0) * u_modelView).xy; │ │ │ │ - if (halfWidth != 0.0) │ │ │ │ - transformedAxisPos = calcLineTransformedAxisPos(transformedAxisPos, a_position.xy + normal, │ │ │ │ - u_modelView, halfWidth); │ │ │ │ + vec4 p = vec4(a_position, 1) * u_modelView; │ │ │ │ + vec4 pos = vec4(a_normal.xy, 0, 0) + p; │ │ │ │ + gl_Position = applyPivotTransform(pos * u_projection, u_pivotTransform, 0.0); │ │ │ │ #ifdef ENABLE_VTF │ │ │ │ - v_color = texture(u_colorTex, a_colorTexCoord); │ │ │ │ + v_color = texture(u_colorTex, a_colorTexCoords); │ │ │ │ #else │ │ │ │ - v_colorTexCoord = a_colorTexCoord; │ │ │ │ + v_colorTexCoords = a_colorTexCoords; │ │ │ │ #endif │ │ │ │ - vec4 pos = vec4(transformedAxisPos, a_position.z, 1.0) * u_projection; │ │ │ │ - gl_Position = applyPivotTransform(pos, u_pivotTransform, 0.0); │ │ │ │ + v_radius = a_normal; │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -27742,32 +27649,38 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ - in vec2 v_colorTexCoords; │ │ │ │ - in vec2 v_maskTexCoords; │ │ │ │ + #ifdef ENABLE_VTF │ │ │ │ + in LOW_P vec4 v_color; │ │ │ │ + #else │ │ │ │ + in vec2 v_colorTexCoord; │ │ │ │ + uniform sampler2D u_colorTex; │ │ │ │ + #endif │ │ │ │ out vec4 v_FragColor; │ │ │ │ uniform mat4 u_modelView; │ │ │ │ uniform mat4 u_projection; │ │ │ │ uniform mat4 u_pivotTransform; │ │ │ │ uniform vec2 u_contrastGamma; │ │ │ │ uniform float u_opacity; │ │ │ │ uniform float u_zScale; │ │ │ │ uniform float u_interpolation; │ │ │ │ uniform float u_isOutlinePass; │ │ │ │ - uniform sampler2D u_colorTex; │ │ │ │ - uniform sampler2D u_maskTex; │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ void main() │ │ │ │ - vec4 finalColor = texture(u_colorTex, v_colorTexCoords) * texture(u_maskTex, v_maskTexCoords); │ │ │ │ - finalColor.a *= u_opacity; │ │ │ │ - v_FragColor = finalColor; │ │ │ │ + #ifdef ENABLE_VTF │ │ │ │ + LOW_P vec4 color = v_color; │ │ │ │ + #else │ │ │ │ + LOW_P vec4 color = texture(u_colorTex, v_colorTexCoord); │ │ │ │ + #endif │ │ │ │ + color.a *= u_opacity; │ │ │ │ + v_FragColor = color; │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -27775,62 +27688,35 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ - in vec4 a_position; │ │ │ │ - in vec2 a_normal; │ │ │ │ - in vec2 a_colorTexCoords; │ │ │ │ - in vec2 a_maskTexCoords; │ │ │ │ - out vec2 v_colorTexCoords; │ │ │ │ - out vec2 v_maskTexCoords; │ │ │ │ + in vec4 v_texCoords; │ │ │ │ + in vec4 v_maskColor; │ │ │ │ + out vec4 v_FragColor; │ │ │ │ uniform mat4 u_modelView; │ │ │ │ uniform mat4 u_projection; │ │ │ │ uniform mat4 u_pivotTransform; │ │ │ │ uniform vec2 u_contrastGamma; │ │ │ │ uniform float u_opacity; │ │ │ │ uniform float u_zScale; │ │ │ │ uniform float u_interpolation; │ │ │ │ uniform float u_isOutlinePass; │ │ │ │ + uniform sampler2D u_colorTex; │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ - vec4 applyPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ) │ │ │ │ - vec4 transformedPivot = pivot; │ │ │ │ - float w = transformedPivot.w; │ │ │ │ - transformedPivot.xyw = (pivotTransform * vec4(transformedPivot.xy, pivotRealZ, w)).xyw; │ │ │ │ - transformedPivot.z *= transformedPivot.w / w; │ │ │ │ - #ifdef VULKAN │ │ │ │ - transformedPivot.y = -transformedPivot.y; │ │ │ │ - transformedPivot.z = (transformedPivot.z + transformedPivot.w) / 2.0; │ │ │ │ - #endif │ │ │ │ - return transformedPivot; │ │ │ │ - vec4 applyBillboardPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ, vec2 offset) │ │ │ │ - float logicZ = pivot.z / pivot.w; │ │ │ │ - vec4 transformedPivot = pivotTransform * vec4(pivot.xy, pivotRealZ, pivot.w); │ │ │ │ - vec4 scale = pivotTransform * vec4(1.0, -1.0, 0.0, 1.0); │ │ │ │ - vec4 position = vec4(transformedPivot.xy / transformedPivot.w, logicZ, 1.0) + vec4(offset / scale.w * scale.x, 0.0, 0.0); │ │ │ │ - #ifdef VULKAN │ │ │ │ - position.y = -position.y; │ │ │ │ - position.z = (position.z + position.w) / 2.0; │ │ │ │ - #endif │ │ │ │ - return position; │ │ │ │ - vec2 calcLineTransformedAxisPos(vec2 originalAxisPos, vec2 shiftedPos, mat4 modelView, float halfWidth) │ │ │ │ - vec2 p = (vec4(shiftedPos, 0.0, 1.0) * modelView).xy; │ │ │ │ - vec2 d = p - originalAxisPos; │ │ │ │ - if (dot(d, d) != 0.0) │ │ │ │ - return originalAxisPos + normalize(d) * halfWidth; │ │ │ │ - else │ │ │ │ - return originalAxisPos; │ │ │ │ void main() │ │ │ │ - vec4 pos = vec4(a_position.xyz, 1) * u_modelView; │ │ │ │ - vec4 shiftedPos = vec4(a_normal, 0, 0) + pos; │ │ │ │ - gl_Position = applyPivotTransform(shiftedPos * u_projection, u_pivotTransform, 0.0); │ │ │ │ - v_colorTexCoords = a_colorTexCoords; │ │ │ │ - v_maskTexCoords = a_maskTexCoords; │ │ │ │ + vec4 color = texture(u_colorTex, v_texCoords.xy); │ │ │ │ + vec4 bgColor = texture(u_colorTex, v_texCoords.zw) * vec4(v_maskColor.xyz, 1.0); │ │ │ │ + vec4 finalColor = mix(color, mix(bgColor, color, color.a), bgColor.a); │ │ │ │ + finalColor.a = clamp(color.a + bgColor.a, 0.0, 1.0) * u_opacity * v_maskColor.w; │ │ │ │ + if (finalColor.a < 0.01) │ │ │ │ + discard; │ │ │ │ + v_FragColor = finalColor; │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -27838,28 +27724,34 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ - in vec4 a_position; │ │ │ │ - in vec2 a_normal; │ │ │ │ + in vec3 a_position; │ │ │ │ in vec2 a_colorTexCoords; │ │ │ │ in vec2 a_maskTexCoords; │ │ │ │ + #ifdef ENABLE_VTF │ │ │ │ + out LOW_P vec4 v_color; │ │ │ │ + #else │ │ │ │ out vec2 v_colorTexCoords; │ │ │ │ + #endif │ │ │ │ out vec2 v_maskTexCoords; │ │ │ │ uniform mat4 u_modelView; │ │ │ │ uniform mat4 u_projection; │ │ │ │ uniform mat4 u_pivotTransform; │ │ │ │ uniform vec2 u_contrastGamma; │ │ │ │ uniform float u_opacity; │ │ │ │ uniform float u_zScale; │ │ │ │ uniform float u_interpolation; │ │ │ │ uniform float u_isOutlinePass; │ │ │ │ + #ifdef ENABLE_VTF │ │ │ │ + uniform sampler2D u_colorTex; │ │ │ │ + #endif │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ vec4 applyPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ) │ │ │ │ vec4 transformedPivot = pivot; │ │ │ │ float w = transformedPivot.w; │ │ │ │ transformedPivot.xyw = (pivotTransform * vec4(transformedPivot.xy, pivotRealZ, w)).xyw; │ │ │ │ transformedPivot.z *= transformedPivot.w / w; │ │ │ │ #ifdef VULKAN │ │ │ │ @@ -27881,19 +27773,21 @@ │ │ │ │ vec2 p = (vec4(shiftedPos, 0.0, 1.0) * modelView).xy; │ │ │ │ vec2 d = p - originalAxisPos; │ │ │ │ if (dot(d, d) != 0.0) │ │ │ │ return originalAxisPos + normalize(d) * halfWidth; │ │ │ │ else │ │ │ │ return originalAxisPos; │ │ │ │ void main() │ │ │ │ - vec4 pivot = vec4(a_position.xyz, 1.0) * u_modelView; │ │ │ │ - vec4 offset = vec4(a_normal, 0.0, 0.0) * u_projection; │ │ │ │ - gl_Position = applyBillboardPivotTransform(pivot * u_projection, u_pivotTransform, │ │ │ │ - a_position.w * u_zScale, offset.xy); │ │ │ │ + vec4 pos = vec4(a_position, 1) * u_modelView * u_projection; │ │ │ │ + gl_Position = applyPivotTransform(pos, u_pivotTransform, 0.0); │ │ │ │ + #ifdef ENABLE_VTF │ │ │ │ + v_color = texture(u_colorTex, a_colorTexCoords); │ │ │ │ + #else │ │ │ │ v_colorTexCoords = a_colorTexCoords; │ │ │ │ + #endif │ │ │ │ v_maskTexCoords = a_maskTexCoords; │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ @@ -27902,26 +27796,34 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ + in vec3 a_position; │ │ │ │ in vec2 a_normal; │ │ │ │ - in vec2 a_colorTexCoords; │ │ │ │ - out vec2 v_colorTexCoords; │ │ │ │ + in vec3 a_length; │ │ │ │ + in vec4 a_color; │ │ │ │ + out vec3 v_length; │ │ │ │ + out vec4 v_color; │ │ │ │ uniform mat4 u_modelView; │ │ │ │ uniform mat4 u_projection; │ │ │ │ uniform mat4 u_pivotTransform; │ │ │ │ - uniform vec4 u_position; │ │ │ │ - uniform vec2 u_lineParams; │ │ │ │ - uniform float u_accuracy; │ │ │ │ - uniform float u_zScale; │ │ │ │ + uniform vec4 u_routeParams; │ │ │ │ + uniform vec4 u_color; │ │ │ │ + uniform vec4 u_maskColor; │ │ │ │ + uniform vec4 u_outlineColor; │ │ │ │ + uniform vec4 u_fakeColor; │ │ │ │ + uniform vec4 u_fakeOutlineColor; │ │ │ │ + uniform vec2 u_fakeBorders; │ │ │ │ + uniform vec2 u_pattern; │ │ │ │ + uniform vec2 u_angleCosSin; │ │ │ │ + uniform float u_arrowHalfWidth; │ │ │ │ uniform float u_opacity; │ │ │ │ - uniform float u_azimut; │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ vec4 applyPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ) │ │ │ │ vec4 transformedPivot = pivot; │ │ │ │ float w = transformedPivot.w; │ │ │ │ transformedPivot.xyw = (pivotTransform * vec4(transformedPivot.xy, pivotRealZ, w)).xyw; │ │ │ │ transformedPivot.z *= transformedPivot.w / w; │ │ │ │ #ifdef VULKAN │ │ │ │ @@ -27943,26 +27845,26 @@ │ │ │ │ vec2 p = (vec4(shiftedPos, 0.0, 1.0) * modelView).xy; │ │ │ │ vec2 d = p - originalAxisPos; │ │ │ │ if (dot(d, d) != 0.0) │ │ │ │ return originalAxisPos + normalize(d) * halfWidth; │ │ │ │ else │ │ │ │ return originalAxisPos; │ │ │ │ void main() │ │ │ │ - float sinV = sin(u_azimut); │ │ │ │ - float cosV = cos(u_azimut); │ │ │ │ - mat4 rotation; │ │ │ │ - rotation[0] = vec4(cosV, sinV, 0.0, 0.0); │ │ │ │ - rotation[1] = vec4(-sinV, cosV, 0.0, 0.0); │ │ │ │ - rotation[2] = vec4(0.0, 0.0, 1.0, 0.0); │ │ │ │ - rotation[3] = vec4(0.0, 0.0, 0.0, 1.0); │ │ │ │ - vec4 pos = vec4(u_position.xyz, 1.0) * u_modelView; │ │ │ │ - vec4 normal = vec4(a_normal, 0, 0); │ │ │ │ - vec4 shiftedPos = normal * rotation + pos; │ │ │ │ - gl_Position = applyPivotTransform(shiftedPos * u_projection, u_pivotTransform, 0.0); │ │ │ │ - v_colorTexCoords = a_colorTexCoords; │ │ │ │ + vec2 transformedAxisPos = (vec4(a_position.xy, 0.0, 1.0) * u_modelView).xy; │ │ │ │ + vec2 len = vec2(a_length.x, a_length.z); │ │ │ │ + if (dot(a_normal, a_normal) != 0.0) │ │ │ │ + vec2 norm = a_normal * u_routeParams.x; │ │ │ │ + transformedAxisPos = calcLineTransformedAxisPos(transformedAxisPos, a_position.xy + norm, │ │ │ │ + u_modelView, length(norm)); │ │ │ │ + if (u_routeParams.y != 0.0) │ │ │ │ + len = vec2(a_length.x + a_length.y * u_routeParams.y, a_length.z); │ │ │ │ + v_length = vec3(len, u_routeParams.z); │ │ │ │ + v_color = a_color; │ │ │ │ + vec4 pos = vec4(transformedAxisPos, a_position.z, 1.0) * u_projection; │ │ │ │ + gl_Position = applyPivotTransform(pos, u_pivotTransform, 0.0); │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -27970,26 +27872,24 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ - in vec4 a_position; │ │ │ │ - in vec2 a_normal; │ │ │ │ - in vec2 a_colorTexCoords; │ │ │ │ - out vec2 v_colorTexCoords; │ │ │ │ - uniform mat4 u_modelView; │ │ │ │ - uniform mat4 u_projection; │ │ │ │ - uniform mat4 u_pivotTransform; │ │ │ │ - uniform vec2 u_contrastGamma; │ │ │ │ - uniform float u_opacity; │ │ │ │ - uniform float u_zScale; │ │ │ │ - uniform float u_interpolation; │ │ │ │ - uniform float u_isOutlinePass; │ │ │ │ + in vec2 a_pos; │ │ │ │ + in vec2 a_tcoord; │ │ │ │ + out vec4 v_coords; │ │ │ │ + out vec4 v_offset0; │ │ │ │ + out vec4 v_offset1; │ │ │ │ + out vec4 v_offset2; │ │ │ │ + uniform vec4 u_framebufferMetrics; │ │ │ │ + #define SMAA_MAX_SEARCH_STEPS 8.0 │ │ │ │ + const vec4 kMaxSearchSteps = vec4(-2.0 * SMAA_MAX_SEARCH_STEPS, 2.0 * SMAA_MAX_SEARCH_STEPS, │ │ │ │ + -2.0 * SMAA_MAX_SEARCH_STEPS, 2.0 * SMAA_MAX_SEARCH_STEPS); │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ vec4 applyPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ) │ │ │ │ vec4 transformedPivot = pivot; │ │ │ │ float w = transformedPivot.w; │ │ │ │ transformedPivot.xyw = (pivotTransform * vec4(transformedPivot.xy, pivotRealZ, w)).xyw; │ │ │ │ transformedPivot.z *= transformedPivot.w / w; │ │ │ │ #ifdef VULKAN │ │ │ │ @@ -28011,23 +27911,19 @@ │ │ │ │ vec2 p = (vec4(shiftedPos, 0.0, 1.0) * modelView).xy; │ │ │ │ vec2 d = p - originalAxisPos; │ │ │ │ if (dot(d, d) != 0.0) │ │ │ │ return originalAxisPos + normalize(d) * halfWidth; │ │ │ │ else │ │ │ │ return originalAxisPos; │ │ │ │ void main() │ │ │ │ - vec4 pos = vec4(a_position.xyz, 1) * u_modelView; │ │ │ │ - float normalLen = length(a_normal); │ │ │ │ - vec4 n = vec4(a_position.xy + a_normal * kShapeCoordScalar, 0.0, 0.0) * u_modelView; │ │ │ │ - vec4 norm = vec4(0.0, 0.0, 0.0, 0.0); │ │ │ │ - if (dot(n, n) != 0.0) │ │ │ │ - norm = normalize(n) * normalLen; │ │ │ │ - vec4 shiftedPos = norm + pos; │ │ │ │ - gl_Position = applyPivotTransform(shiftedPos * u_projection, u_pivotTransform, 0.0); │ │ │ │ - v_colorTexCoords = a_colorTexCoords; │ │ │ │ + v_coords = vec4(a_tcoord, a_tcoord * u_framebufferMetrics.zw); │ │ │ │ + v_offset0 = u_framebufferMetrics.xyxy * vec4(-0.25, -0.125, 1.25, -0.125) + a_tcoord.xyxy; │ │ │ │ + v_offset1 = u_framebufferMetrics.xyxy * vec4(-0.125, -0.25, -0.125, 1.25) + a_tcoord.xyxy; │ │ │ │ + v_offset2 = u_framebufferMetrics.xxyy * kMaxSearchSteps + vec4(v_offset0.xz, v_offset1.yw); │ │ │ │ + gl_Position = vec4(a_pos, 0.0, 1.0); │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -28035,26 +27931,21 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ - in vec2 a_normal; │ │ │ │ - in vec2 a_colorTexCoords; │ │ │ │ - out vec2 v_colorTexCoords; │ │ │ │ - uniform mat4 u_modelView; │ │ │ │ - uniform mat4 u_projection; │ │ │ │ - uniform mat4 u_pivotTransform; │ │ │ │ - uniform vec4 u_position; │ │ │ │ - uniform vec2 u_lineParams; │ │ │ │ - uniform float u_accuracy; │ │ │ │ - uniform float u_zScale; │ │ │ │ - uniform float u_opacity; │ │ │ │ - uniform float u_azimut; │ │ │ │ + in vec3 a_pos; │ │ │ │ + in vec2 a_texCoords; │ │ │ │ + out float v_intensity; │ │ │ │ + uniform mat4 u_transform; │ │ │ │ + uniform mat4 u_normalTransform; │ │ │ │ + uniform vec4 u_color; │ │ │ │ + uniform vec2 u_texCoordFlipping; │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ vec4 applyPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ) │ │ │ │ vec4 transformedPivot = pivot; │ │ │ │ float w = transformedPivot.w; │ │ │ │ transformedPivot.xyw = (pivotTransform * vec4(transformedPivot.xy, pivotRealZ, w)).xyw; │ │ │ │ transformedPivot.z *= transformedPivot.w / w; │ │ │ │ #ifdef VULKAN │ │ │ │ @@ -28076,19 +27967,21 @@ │ │ │ │ vec2 p = (vec4(shiftedPos, 0.0, 1.0) * modelView).xy; │ │ │ │ vec2 d = p - originalAxisPos; │ │ │ │ if (dot(d, d) != 0.0) │ │ │ │ return originalAxisPos + normalize(d) * halfWidth; │ │ │ │ else │ │ │ │ return originalAxisPos; │ │ │ │ void main() │ │ │ │ - vec4 position = vec4(u_position.xy, 0.0, 1.0) * u_modelView; │ │ │ │ - vec4 normal = vec4(a_normal * u_accuracy, 0.0, 0.0); │ │ │ │ - position = (position + normal) * u_projection; │ │ │ │ - gl_Position = applyPivotTransform(position, u_pivotTransform, u_position.z * u_zScale); │ │ │ │ - v_colorTexCoords = a_colorTexCoords; │ │ │ │ + vec4 position = u_transform * vec4(a_pos, 1.0); │ │ │ │ + v_intensity = a_texCoords.x; │ │ │ │ + gl_Position = position; │ │ │ │ + #ifdef VULKAN │ │ │ │ + gl_Position.y = -gl_Position.y; │ │ │ │ + gl_Position.z = (gl_Position.z + gl_Position.w) * 0.5; │ │ │ │ + #endif │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -28096,15 +27989,15 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ - in vec3 v_length; │ │ │ │ + in vec4 v_radius; │ │ │ │ in vec4 v_color; │ │ │ │ out vec4 v_FragColor; │ │ │ │ uniform mat4 u_modelView; │ │ │ │ uniform mat4 u_projection; │ │ │ │ uniform mat4 u_pivotTransform; │ │ │ │ uniform vec4 u_routeParams; │ │ │ │ uniform vec4 u_color; │ │ │ │ @@ -28113,33 +28006,26 @@ │ │ │ │ uniform vec4 u_fakeColor; │ │ │ │ uniform vec4 u_fakeOutlineColor; │ │ │ │ uniform vec2 u_fakeBorders; │ │ │ │ uniform vec2 u_pattern; │ │ │ │ uniform vec2 u_angleCosSin; │ │ │ │ uniform float u_arrowHalfWidth; │ │ │ │ uniform float u_opacity; │ │ │ │ - const float kAntialiasingThreshold = 0.92; │ │ │ │ - const float kOutlineThreshold1 = 0.81; │ │ │ │ - const float kOutlineThreshold2 = 0.71; │ │ │ │ + const float kAntialiasingPixelsCount = 2.5; │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ void main() │ │ │ │ - if (v_length.x < v_length.z) │ │ │ │ + vec4 finalColor = v_color; │ │ │ │ + float aaRadius = max(v_radius.z - kAntialiasingPixelsCount, 0.0); │ │ │ │ + float stepValue = smoothstep(aaRadius * aaRadius, v_radius.z * v_radius.z, │ │ │ │ + dot(v_radius.xy, v_radius.xy)); │ │ │ │ + finalColor.a = finalColor.a * u_opacity * (1.0 - stepValue); │ │ │ │ + if (finalColor.a < 0.01 || u_routeParams.y > v_radius.w) │ │ │ │ discard; │ │ │ │ - vec2 coefs = step(v_length.xx, u_fakeBorders); │ │ │ │ - coefs.y = 1.0 - coefs.y; │ │ │ │ - vec4 mainColor = mix(u_color, u_fakeColor, coefs.x); │ │ │ │ - mainColor = mix(mainColor, u_fakeColor, coefs.y); │ │ │ │ - vec4 mainOutlineColor = mix(u_outlineColor, u_fakeOutlineColor, coefs.x); │ │ │ │ - mainOutlineColor = mix(mainOutlineColor, u_fakeOutlineColor, coefs.y); │ │ │ │ - vec4 color = mix(mix(mainColor, vec4(v_color.rgb, 1.0), v_color.a), mainColor, step(u_routeParams.w, 0.0)); │ │ │ │ - color = mix(color, mainOutlineColor, step(kOutlineThreshold1, abs(v_length.y))); │ │ │ │ - color = mix(color, mainOutlineColor, smoothstep(kOutlineThreshold2, kOutlineThreshold1, abs(v_length.y))); │ │ │ │ - color.a *= (1.0 - smoothstep(kAntialiasingThreshold, 1.0, abs(v_length.y))); │ │ │ │ - color = vec4(mix(color.rgb, u_maskColor.rgb, u_maskColor.a), color.a); │ │ │ │ - v_FragColor = color; │ │ │ │ + finalColor = vec4(mix(finalColor.rgb, u_maskColor.rgb, u_maskColor.a), finalColor.a); │ │ │ │ + v_FragColor = finalColor; │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -28148,33 +28034,27 @@ │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ in vec3 a_position; │ │ │ │ - in vec2 a_normal; │ │ │ │ - in vec3 a_length; │ │ │ │ + in vec3 a_normalAndAnimateOrZ; │ │ │ │ + in vec4 a_texCoords; │ │ │ │ in vec4 a_color; │ │ │ │ - out vec3 v_length; │ │ │ │ - out vec4 v_color; │ │ │ │ + out vec4 v_texCoords; │ │ │ │ + out vec4 v_maskColor; │ │ │ │ uniform mat4 u_modelView; │ │ │ │ uniform mat4 u_projection; │ │ │ │ uniform mat4 u_pivotTransform; │ │ │ │ - uniform vec4 u_routeParams; │ │ │ │ - uniform vec4 u_color; │ │ │ │ - uniform vec4 u_maskColor; │ │ │ │ - uniform vec4 u_outlineColor; │ │ │ │ - uniform vec4 u_fakeColor; │ │ │ │ - uniform vec4 u_fakeOutlineColor; │ │ │ │ - uniform vec2 u_fakeBorders; │ │ │ │ - uniform vec2 u_pattern; │ │ │ │ - uniform vec2 u_angleCosSin; │ │ │ │ - uniform float u_arrowHalfWidth; │ │ │ │ + uniform vec2 u_contrastGamma; │ │ │ │ uniform float u_opacity; │ │ │ │ + uniform float u_zScale; │ │ │ │ + uniform float u_interpolation; │ │ │ │ + uniform float u_isOutlinePass; │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ vec4 applyPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ) │ │ │ │ vec4 transformedPivot = pivot; │ │ │ │ float w = transformedPivot.w; │ │ │ │ transformedPivot.xyw = (pivotTransform * vec4(transformedPivot.xy, pivotRealZ, w)).xyw; │ │ │ │ transformedPivot.z *= transformedPivot.w / w; │ │ │ │ #ifdef VULKAN │ │ │ │ @@ -28196,26 +28076,25 @@ │ │ │ │ vec2 p = (vec4(shiftedPos, 0.0, 1.0) * modelView).xy; │ │ │ │ vec2 d = p - originalAxisPos; │ │ │ │ if (dot(d, d) != 0.0) │ │ │ │ return originalAxisPos + normalize(d) * halfWidth; │ │ │ │ else │ │ │ │ return originalAxisPos; │ │ │ │ void main() │ │ │ │ - vec2 transformedAxisPos = (vec4(a_position.xy, 0.0, 1.0) * u_modelView).xy; │ │ │ │ - vec2 len = vec2(a_length.x, a_length.z); │ │ │ │ - if (dot(a_normal, a_normal) != 0.0) │ │ │ │ - vec2 norm = a_normal * u_routeParams.x; │ │ │ │ - transformedAxisPos = calcLineTransformedAxisPos(transformedAxisPos, a_position.xy + norm, │ │ │ │ - u_modelView, length(norm)); │ │ │ │ - if (u_routeParams.y != 0.0) │ │ │ │ - len = vec2(a_length.x + a_length.y * u_routeParams.y, a_length.z); │ │ │ │ - v_length = vec3(len, u_routeParams.z); │ │ │ │ - v_color = a_color; │ │ │ │ - vec4 pos = vec4(transformedAxisPos, a_position.z, 1.0) * u_projection; │ │ │ │ - gl_Position = applyPivotTransform(pos, u_pivotTransform, 0.0); │ │ │ │ + vec2 normal = a_normalAndAnimateOrZ.xy; │ │ │ │ + if (a_normalAndAnimateOrZ.z > 0.0) │ │ │ │ + normal = u_interpolation * normal; │ │ │ │ + vec4 p = vec4(a_position, 1.0) * u_modelView; │ │ │ │ + vec4 pos = vec4(normal, 0.0, 0.0) + p; │ │ │ │ + vec4 projectedPivot = p * u_projection; │ │ │ │ + gl_Position = applyPivotTransform(pos * u_projection, u_pivotTransform, 0.0); │ │ │ │ + float newZ = projectedPivot.y / projectedPivot.w * 0.5 + 0.5; │ │ │ │ + gl_Position.z = abs(a_normalAndAnimateOrZ.z) * newZ + (1.0 - abs(a_normalAndAnimateOrZ.z)) * gl_Position.z; │ │ │ │ + v_texCoords = a_texCoords; │ │ │ │ + v_maskColor = a_color; │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -28223,39 +28102,33 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ - in vec2 v_colorTexCoords; │ │ │ │ + in vec2 v_colorTexCoord; │ │ │ │ + in vec2 v_maskTexCoord; │ │ │ │ out vec4 v_FragColor; │ │ │ │ uniform mat4 u_modelView; │ │ │ │ uniform mat4 u_projection; │ │ │ │ uniform mat4 u_pivotTransform; │ │ │ │ - uniform vec4 u_routeParams; │ │ │ │ - uniform vec4 u_color; │ │ │ │ - uniform vec4 u_maskColor; │ │ │ │ - uniform vec4 u_outlineColor; │ │ │ │ - uniform vec4 u_fakeColor; │ │ │ │ - uniform vec4 u_fakeOutlineColor; │ │ │ │ - uniform vec2 u_fakeBorders; │ │ │ │ - uniform vec2 u_pattern; │ │ │ │ - uniform vec2 u_angleCosSin; │ │ │ │ - uniform float u_arrowHalfWidth; │ │ │ │ + uniform vec2 u_contrastGamma; │ │ │ │ uniform float u_opacity; │ │ │ │ + uniform float u_zScale; │ │ │ │ + uniform float u_interpolation; │ │ │ │ + uniform float u_isOutlinePass; │ │ │ │ uniform sampler2D u_colorTex; │ │ │ │ + uniform sampler2D u_maskTex; │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ void main() │ │ │ │ - vec4 finalColor = texture(u_colorTex, v_colorTexCoords); │ │ │ │ - finalColor.a *= u_opacity; │ │ │ │ - if (finalColor.a < 0.01) │ │ │ │ - discard; │ │ │ │ - finalColor = vec4(mix(finalColor.rgb, u_maskColor.rgb, u_maskColor.a), finalColor.a); │ │ │ │ - v_FragColor = finalColor; │ │ │ │ + vec4 color = texture(u_colorTex, v_colorTexCoord); │ │ │ │ + float mask = texture(u_maskTex, v_maskTexCoord).r; │ │ │ │ + color.a = color.a * mask * u_opacity; │ │ │ │ + v_FragColor = color; │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -28263,69 +28136,31 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ - in vec4 a_position; │ │ │ │ - in vec2 a_normal; │ │ │ │ - in vec2 a_colorTexCoords; │ │ │ │ - out vec2 v_colorTexCoords; │ │ │ │ + in vec2 v_colorTexCoords; │ │ │ │ + out vec4 v_FragColor; │ │ │ │ uniform mat4 u_modelView; │ │ │ │ uniform mat4 u_projection; │ │ │ │ uniform mat4 u_pivotTransform; │ │ │ │ - uniform vec4 u_routeParams; │ │ │ │ - uniform vec4 u_color; │ │ │ │ - uniform vec4 u_maskColor; │ │ │ │ - uniform vec4 u_outlineColor; │ │ │ │ - uniform vec4 u_fakeColor; │ │ │ │ - uniform vec4 u_fakeOutlineColor; │ │ │ │ - uniform vec2 u_fakeBorders; │ │ │ │ - uniform vec2 u_pattern; │ │ │ │ - uniform vec2 u_angleCosSin; │ │ │ │ - uniform float u_arrowHalfWidth; │ │ │ │ + uniform vec4 u_position; │ │ │ │ + uniform vec2 u_lineParams; │ │ │ │ + uniform float u_accuracy; │ │ │ │ + uniform float u_zScale; │ │ │ │ uniform float u_opacity; │ │ │ │ + uniform float u_azimut; │ │ │ │ + uniform sampler2D u_colorTex; │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ - vec4 applyPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ) │ │ │ │ - vec4 transformedPivot = pivot; │ │ │ │ - float w = transformedPivot.w; │ │ │ │ - transformedPivot.xyw = (pivotTransform * vec4(transformedPivot.xy, pivotRealZ, w)).xyw; │ │ │ │ - transformedPivot.z *= transformedPivot.w / w; │ │ │ │ - #ifdef VULKAN │ │ │ │ - transformedPivot.y = -transformedPivot.y; │ │ │ │ - transformedPivot.z = (transformedPivot.z + transformedPivot.w) / 2.0; │ │ │ │ - #endif │ │ │ │ - return transformedPivot; │ │ │ │ - vec4 applyBillboardPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ, vec2 offset) │ │ │ │ - float logicZ = pivot.z / pivot.w; │ │ │ │ - vec4 transformedPivot = pivotTransform * vec4(pivot.xy, pivotRealZ, pivot.w); │ │ │ │ - vec4 scale = pivotTransform * vec4(1.0, -1.0, 0.0, 1.0); │ │ │ │ - vec4 position = vec4(transformedPivot.xy / transformedPivot.w, logicZ, 1.0) + vec4(offset / scale.w * scale.x, 0.0, 0.0); │ │ │ │ - #ifdef VULKAN │ │ │ │ - position.y = -position.y; │ │ │ │ - position.z = (position.z + position.w) / 2.0; │ │ │ │ - #endif │ │ │ │ - return position; │ │ │ │ - vec2 calcLineTransformedAxisPos(vec2 originalAxisPos, vec2 shiftedPos, mat4 modelView, float halfWidth) │ │ │ │ - vec2 p = (vec4(shiftedPos, 0.0, 1.0) * modelView).xy; │ │ │ │ - vec2 d = p - originalAxisPos; │ │ │ │ - if (dot(d, d) != 0.0) │ │ │ │ - return originalAxisPos + normalize(d) * halfWidth; │ │ │ │ - else │ │ │ │ - return originalAxisPos; │ │ │ │ void main() │ │ │ │ - vec2 transformedAxisPos = (vec4(a_position.xy, 0.0, 1.0) * u_modelView).xy; │ │ │ │ - if (dot(a_normal, a_normal) != 0.0) │ │ │ │ - vec2 norm = a_normal * u_arrowHalfWidth; │ │ │ │ - transformedAxisPos = calcLineTransformedAxisPos(transformedAxisPos, a_position.xy + norm, │ │ │ │ - u_modelView, length(norm)); │ │ │ │ - v_colorTexCoords = a_colorTexCoords; │ │ │ │ - vec4 pos = vec4(transformedAxisPos, a_position.z, 1.0) * u_projection; │ │ │ │ - gl_Position = applyPivotTransform(pos, u_pivotTransform, 0.0); │ │ │ │ + vec4 finalColor = texture(u_colorTex, v_colorTexCoords); │ │ │ │ + finalColor.a *= u_opacity; │ │ │ │ + v_FragColor = finalColor; │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -28333,49 +28168,25 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ - in vec3 v_length; │ │ │ │ - in vec4 v_color; │ │ │ │ + in vec3 v_normal; │ │ │ │ out vec4 v_FragColor; │ │ │ │ - uniform mat4 u_modelView; │ │ │ │ - uniform mat4 u_projection; │ │ │ │ - uniform mat4 u_pivotTransform; │ │ │ │ - uniform vec4 u_routeParams; │ │ │ │ + uniform mat4 u_transform; │ │ │ │ + uniform mat4 u_normalTransform; │ │ │ │ uniform vec4 u_color; │ │ │ │ - uniform vec4 u_maskColor; │ │ │ │ - uniform vec4 u_outlineColor; │ │ │ │ - uniform vec4 u_fakeColor; │ │ │ │ - uniform vec4 u_fakeOutlineColor; │ │ │ │ - uniform vec2 u_fakeBorders; │ │ │ │ - uniform vec2 u_pattern; │ │ │ │ - uniform vec2 u_angleCosSin; │ │ │ │ - uniform float u_arrowHalfWidth; │ │ │ │ - uniform float u_opacity; │ │ │ │ - const float kAntialiasingThreshold = 0.92; │ │ │ │ - float alphaFromPattern(float curLen, float dashLen, float gapLen) │ │ │ │ - float len = dashLen + gapLen; │ │ │ │ - float offset = fract(curLen / len) * len; │ │ │ │ - return step(offset, dashLen); │ │ │ │ + uniform vec2 u_texCoordFlipping; │ │ │ │ + const vec3 lightDir = vec3(0.316, 0.0, 0.948); │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ void main() │ │ │ │ - if (v_length.x < v_length.z) │ │ │ │ - discard; │ │ │ │ - vec2 coefs = step(v_length.xx, u_fakeBorders); │ │ │ │ - coefs.y = 1.0 - coefs.y; │ │ │ │ - vec4 mainColor = mix(u_color, u_fakeColor, coefs.x); │ │ │ │ - mainColor = mix(mainColor, u_fakeColor, coefs.y); │ │ │ │ - vec4 color = mainColor + v_color; │ │ │ │ - color.a *= (1.0 - smoothstep(kAntialiasingThreshold, 1.0, abs(v_length.y))) * │ │ │ │ - alphaFromPattern(v_length.x, u_pattern.x, u_pattern.y); │ │ │ │ - color = vec4(mix(color.rgb, u_maskColor.rgb, u_maskColor.a), color.a); │ │ │ │ - v_FragColor = color; │ │ │ │ + float phongDiffuse = max(0.0, -dot(lightDir, v_normal)); │ │ │ │ + v_FragColor = vec4((phongDiffuse * 0.5 + 0.5) * u_color.rgb, u_color.a); │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -28383,77 +28194,37 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ - in vec4 v_radius; │ │ │ │ - in vec4 v_color; │ │ │ │ - out vec4 v_FragColor; │ │ │ │ - uniform mat4 u_modelView; │ │ │ │ - uniform mat4 u_projection; │ │ │ │ - uniform mat4 u_pivotTransform; │ │ │ │ - uniform vec4 u_routeParams; │ │ │ │ - uniform vec4 u_color; │ │ │ │ - uniform vec4 u_maskColor; │ │ │ │ - uniform vec4 u_outlineColor; │ │ │ │ - uniform vec4 u_fakeColor; │ │ │ │ - uniform vec4 u_fakeOutlineColor; │ │ │ │ - uniform vec2 u_fakeBorders; │ │ │ │ - uniform vec2 u_pattern; │ │ │ │ - uniform vec2 u_angleCosSin; │ │ │ │ - uniform float u_arrowHalfWidth; │ │ │ │ - uniform float u_opacity; │ │ │ │ - const float kAntialiasingPixelsCount = 2.5; │ │ │ │ - const float kShapeCoordScalar = 1000.0; │ │ │ │ - void main() │ │ │ │ - vec4 finalColor = v_color; │ │ │ │ - float aaRadius = max(v_radius.z - kAntialiasingPixelsCount, 0.0); │ │ │ │ - float stepValue = smoothstep(aaRadius * aaRadius, v_radius.z * v_radius.z, │ │ │ │ - dot(v_radius.xy, v_radius.xy)); │ │ │ │ - finalColor.a = finalColor.a * u_opacity * (1.0 - stepValue); │ │ │ │ - if (finalColor.a < 0.01 || u_routeParams.y > v_radius.w) │ │ │ │ - discard; │ │ │ │ - finalColor = vec4(mix(finalColor.rgb, u_maskColor.rgb, u_maskColor.a), finalColor.a); │ │ │ │ - v_FragColor = finalColor; │ │ │ │ - #ifdef GL_ES │ │ │ │ - #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ - #define MAXPREC highp │ │ │ │ - #else │ │ │ │ - #define MAXPREC mediump │ │ │ │ - #endif │ │ │ │ - precision MAXPREC float; │ │ │ │ - #define LOW_P lowp │ │ │ │ - #define MEDIUM_P mediump │ │ │ │ - #define HIGH_P highp │ │ │ │ + in vec3 a_position; │ │ │ │ + in vec2 a_normal; │ │ │ │ + in vec2 a_colorTexCoords; │ │ │ │ + in vec3 a_length; │ │ │ │ + #ifdef ENABLE_VTF │ │ │ │ + out LOW_P vec4 v_color; │ │ │ │ #else │ │ │ │ - #define LOW_P │ │ │ │ - #define MEDIUM_P │ │ │ │ - #define HIGH_P │ │ │ │ + out vec2 v_colorTexCoord; │ │ │ │ #endif │ │ │ │ - in vec4 a_position; │ │ │ │ - in vec3 a_normal; │ │ │ │ - in vec4 a_color; │ │ │ │ - out vec4 v_radius; │ │ │ │ - out vec4 v_color; │ │ │ │ + out float v_lengthY; │ │ │ │ uniform mat4 u_modelView; │ │ │ │ uniform mat4 u_projection; │ │ │ │ uniform mat4 u_pivotTransform; │ │ │ │ - uniform vec4 u_routeParams; │ │ │ │ - uniform vec4 u_color; │ │ │ │ - uniform vec4 u_maskColor; │ │ │ │ - uniform vec4 u_outlineColor; │ │ │ │ - uniform vec4 u_fakeColor; │ │ │ │ - uniform vec4 u_fakeOutlineColor; │ │ │ │ - uniform vec2 u_fakeBorders; │ │ │ │ - uniform vec2 u_pattern; │ │ │ │ - uniform vec2 u_angleCosSin; │ │ │ │ - uniform float u_arrowHalfWidth; │ │ │ │ + uniform vec4 u_position; │ │ │ │ + uniform vec2 u_lineParams; │ │ │ │ + uniform float u_accuracy; │ │ │ │ + uniform float u_zScale; │ │ │ │ uniform float u_opacity; │ │ │ │ + uniform float u_azimut; │ │ │ │ + #ifdef ENABLE_VTF │ │ │ │ + uniform sampler2D u_colorTex; │ │ │ │ + #endif │ │ │ │ + const float kAntialiasingThreshold = 0.92; │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ vec4 applyPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ) │ │ │ │ vec4 transformedPivot = pivot; │ │ │ │ float w = transformedPivot.w; │ │ │ │ transformedPivot.xyw = (pivotTransform * vec4(transformedPivot.xy, pivotRealZ, w)).xyw; │ │ │ │ transformedPivot.z *= transformedPivot.w / w; │ │ │ │ #ifdef VULKAN │ │ │ │ @@ -28475,54 +28246,30 @@ │ │ │ │ vec2 p = (vec4(shiftedPos, 0.0, 1.0) * modelView).xy; │ │ │ │ vec2 d = p - originalAxisPos; │ │ │ │ if (dot(d, d) != 0.0) │ │ │ │ return originalAxisPos + normalize(d) * halfWidth; │ │ │ │ else │ │ │ │ return originalAxisPos; │ │ │ │ void main() │ │ │ │ - float r = u_routeParams.x * a_normal.z; │ │ │ │ - vec2 normal = vec2(a_normal.x * u_angleCosSin.x - a_normal.y * u_angleCosSin.y, │ │ │ │ - a_normal.x * u_angleCosSin.y + a_normal.y * u_angleCosSin.x); │ │ │ │ - vec4 radius = vec4(normal.xy * r, r, a_position.w); │ │ │ │ - vec4 pos = vec4(a_position.xy, 0, 1) * u_modelView; │ │ │ │ - vec2 shiftedPos = radius.xy + pos.xy; │ │ │ │ - pos = vec4(shiftedPos, a_position.z, 1.0) * u_projection; │ │ │ │ - gl_Position = applyPivotTransform(pos, u_pivotTransform, 0.0); │ │ │ │ - v_radius = radius; │ │ │ │ - v_color = a_color; │ │ │ │ - #ifdef GL_ES │ │ │ │ - #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ - #define MAXPREC highp │ │ │ │ - #else │ │ │ │ - #define MAXPREC mediump │ │ │ │ - #endif │ │ │ │ - precision MAXPREC float; │ │ │ │ - #define LOW_P lowp │ │ │ │ - #define MEDIUM_P mediump │ │ │ │ - #define HIGH_P highp │ │ │ │ + vec2 transformedAxisPos = (vec4(a_position.xy, 0.0, 1.0) * u_modelView).xy; │ │ │ │ + vec2 len = vec2(a_length.x, a_length.z); │ │ │ │ + if (dot(a_normal, a_normal) != 0.0) │ │ │ │ + vec2 norm = a_normal * u_lineParams.x; │ │ │ │ + transformedAxisPos = calcLineTransformedAxisPos(transformedAxisPos, a_position.xy + norm, │ │ │ │ + u_modelView, length(norm)); │ │ │ │ + if (u_lineParams.y != 0.0) │ │ │ │ + len = vec2(a_length.x + a_length.y * u_lineParams.y, a_length.z); │ │ │ │ + #ifdef ENABLE_VTF │ │ │ │ + v_color = texture(u_colorTex, a_colorTexCoords); │ │ │ │ #else │ │ │ │ - #define LOW_P │ │ │ │ - #define MEDIUM_P │ │ │ │ - #define HIGH_P │ │ │ │ + v_colorTexCoord = a_colorTexCoords; │ │ │ │ #endif │ │ │ │ - in vec2 v_colorTexCoords; │ │ │ │ - out vec4 v_FragColor; │ │ │ │ - uniform mat4 u_modelView; │ │ │ │ - uniform mat4 u_projection; │ │ │ │ - uniform vec2 u_contrastGamma; │ │ │ │ - uniform vec2 u_position; │ │ │ │ - uniform float u_isOutlinePass; │ │ │ │ - uniform float u_opacity; │ │ │ │ - uniform float u_length; │ │ │ │ - uniform sampler2D u_colorTex; │ │ │ │ - const float kShapeCoordScalar = 1000.0; │ │ │ │ - void main() │ │ │ │ - vec4 finalColor = texture(u_colorTex, v_colorTexCoords); │ │ │ │ - finalColor.a *= u_opacity; │ │ │ │ - v_FragColor = finalColor; │ │ │ │ + v_lengthY = len.y; │ │ │ │ + vec4 pos = vec4(transformedAxisPos, a_position.z, 1.0) * u_projection; │ │ │ │ + gl_Position = applyPivotTransform(pos, u_pivotTransform, 0.0); │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -28530,25 +28277,21 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ - in vec2 a_position; │ │ │ │ - in vec2 a_normal; │ │ │ │ - in vec2 a_colorTexCoords; │ │ │ │ - out vec2 v_colorTexCoords; │ │ │ │ + #define TILE_BACKGROUND_MAX_COUNT 64 │ │ │ │ + out vec3 v_texCoords; │ │ │ │ + uniform vec4 u_tileCoordsMinMax[TILE_BACKGROUND_MAX_COUNT]; │ │ │ │ + uniform int u_textureIndex[TILE_BACKGROUND_MAX_COUNT]; │ │ │ │ uniform mat4 u_modelView; │ │ │ │ uniform mat4 u_projection; │ │ │ │ - uniform vec2 u_contrastGamma; │ │ │ │ - uniform vec2 u_position; │ │ │ │ - uniform float u_isOutlinePass; │ │ │ │ - uniform float u_opacity; │ │ │ │ - uniform float u_length; │ │ │ │ + uniform mat4 u_pivotTransform; │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ vec4 applyPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ) │ │ │ │ vec4 transformedPivot = pivot; │ │ │ │ float w = transformedPivot.w; │ │ │ │ transformedPivot.xyw = (pivotTransform * vec4(transformedPivot.xy, pivotRealZ, w)).xyw; │ │ │ │ transformedPivot.z *= transformedPivot.w / w; │ │ │ │ #ifdef VULKAN │ │ │ │ @@ -28570,20 +28313,20 @@ │ │ │ │ vec2 p = (vec4(shiftedPos, 0.0, 1.0) * modelView).xy; │ │ │ │ vec2 d = p - originalAxisPos; │ │ │ │ if (dot(d, d) != 0.0) │ │ │ │ return originalAxisPos + normalize(d) * halfWidth; │ │ │ │ else │ │ │ │ return originalAxisPos; │ │ │ │ void main() │ │ │ │ - gl_Position = vec4(u_position + a_position + u_length * a_normal, 0, 1) * u_projection; │ │ │ │ - #ifdef VULKAN │ │ │ │ - gl_Position.y = -gl_Position.y; │ │ │ │ - gl_Position.z = (gl_Position.z + gl_Position.w) * 0.5; │ │ │ │ - #endif │ │ │ │ - v_colorTexCoords = a_colorTexCoords; │ │ │ │ + vec2 quadVertex = vec2(gl_VertexID & 1, (gl_VertexID >> 1) & 1); │ │ │ │ + vec4 tileCoordsMinMax = u_tileCoordsMinMax[gl_InstanceID]; │ │ │ │ + vec2 worldPos = mix(tileCoordsMinMax.xy, tileCoordsMinMax.zw, quadVertex); │ │ │ │ + vec4 pos = vec4(worldPos, 0.0, 1.0) * u_modelView * u_projection; │ │ │ │ + gl_Position = applyPivotTransform(pos, u_pivotTransform, 0.0); │ │ │ │ + v_texCoords = vec3(quadVertex, float(u_textureIndex[gl_InstanceID])); │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -28591,41 +28334,30 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ - in vec2 v_colorTexCoords; │ │ │ │ - out vec4 v_FragColor; │ │ │ │ + in vec3 a_position; │ │ │ │ + in vec4 a_normal; │ │ │ │ + in vec4 a_colorTexCoord; │ │ │ │ + out vec2 v_colorTexCoord; │ │ │ │ + out vec2 v_maskTexCoord; │ │ │ │ + out float v_halfLength; │ │ │ │ + uniform mat4 u_modelView; │ │ │ │ + uniform mat4 u_projection; │ │ │ │ + uniform mat4 u_pivotTransform; │ │ │ │ + uniform vec4 u_trafficParams; │ │ │ │ + uniform vec4 u_outlineColor; │ │ │ │ + uniform vec4 u_lightArrowColor; │ │ │ │ + uniform vec4 u_darkArrowColor; │ │ │ │ + uniform float u_outline; │ │ │ │ uniform float u_opacity; │ │ │ │ - uniform sampler2D u_colorTex; │ │ │ │ - const float kShapeCoordScalar = 1000.0; │ │ │ │ - void main() │ │ │ │ - vec4 finalColor = texture(u_colorTex, v_colorTexCoords); │ │ │ │ - finalColor.a *= u_opacity; │ │ │ │ - v_FragColor = finalColor; │ │ │ │ - #ifdef GL_ES │ │ │ │ - #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ - #define MAXPREC highp │ │ │ │ - #else │ │ │ │ - #define MAXPREC mediump │ │ │ │ - #endif │ │ │ │ - precision MAXPREC float; │ │ │ │ - #define LOW_P lowp │ │ │ │ - #define MEDIUM_P mediump │ │ │ │ - #define HIGH_P highp │ │ │ │ - #else │ │ │ │ - #define LOW_P │ │ │ │ - #define MEDIUM_P │ │ │ │ - #define HIGH_P │ │ │ │ - #endif │ │ │ │ - in vec2 a_pos; │ │ │ │ - in vec2 a_tcoord; │ │ │ │ - out vec2 v_colorTexCoords; │ │ │ │ + const float kArrowVSize = 0.25; │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ vec4 applyPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ) │ │ │ │ vec4 transformedPivot = pivot; │ │ │ │ float w = transformedPivot.w; │ │ │ │ transformedPivot.xyw = (pivotTransform * vec4(transformedPivot.xy, pivotRealZ, w)).xyw; │ │ │ │ transformedPivot.z *= transformedPivot.w / w; │ │ │ │ #ifdef VULKAN │ │ │ │ @@ -28647,59 +28379,30 @@ │ │ │ │ vec2 p = (vec4(shiftedPos, 0.0, 1.0) * modelView).xy; │ │ │ │ vec2 d = p - originalAxisPos; │ │ │ │ if (dot(d, d) != 0.0) │ │ │ │ return originalAxisPos + normalize(d) * halfWidth; │ │ │ │ else │ │ │ │ return originalAxisPos; │ │ │ │ void main() │ │ │ │ - v_colorTexCoords = a_tcoord; │ │ │ │ - gl_Position = vec4(a_pos, 0.0, 1.0); │ │ │ │ - #ifdef GL_ES │ │ │ │ - #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ - #define MAXPREC highp │ │ │ │ - #else │ │ │ │ - #define MAXPREC mediump │ │ │ │ - #endif │ │ │ │ - precision MAXPREC float; │ │ │ │ - #define LOW_P lowp │ │ │ │ - #define MEDIUM_P mediump │ │ │ │ - #define HIGH_P highp │ │ │ │ - #else │ │ │ │ - #define LOW_P │ │ │ │ - #define MEDIUM_P │ │ │ │ - #define HIGH_P │ │ │ │ - #endif │ │ │ │ - #ifdef ENABLE_VTF │ │ │ │ - in LOW_P vec4 v_color; │ │ │ │ - #else │ │ │ │ - in vec2 v_colorTexCoord; │ │ │ │ - uniform sampler2D u_colorTex; │ │ │ │ - #endif │ │ │ │ - in float v_lengthY; │ │ │ │ - out vec4 v_FragColor; │ │ │ │ - uniform mat4 u_modelView; │ │ │ │ - uniform mat4 u_projection; │ │ │ │ - uniform mat4 u_pivotTransform; │ │ │ │ - uniform vec4 u_position; │ │ │ │ - uniform vec2 u_lineParams; │ │ │ │ - uniform float u_accuracy; │ │ │ │ - uniform float u_zScale; │ │ │ │ - uniform float u_opacity; │ │ │ │ - uniform float u_azimut; │ │ │ │ - const float kAntialiasingThreshold = 0.92; │ │ │ │ - const float kShapeCoordScalar = 1000.0; │ │ │ │ - void main() │ │ │ │ - #ifdef ENABLE_VTF │ │ │ │ - LOW_P vec4 color = v_color; │ │ │ │ - #else │ │ │ │ - LOW_P vec4 color = texture(u_colorTex, v_colorTexCoord); │ │ │ │ - #endif │ │ │ │ - color.a *= u_opacity; │ │ │ │ - color.a *= (1.0 - smoothstep(kAntialiasingThreshold, 1.0, abs(v_lengthY))); │ │ │ │ - v_FragColor = color; │ │ │ │ + vec2 normal = a_normal.xy; │ │ │ │ + vec2 transformedAxisPos = (vec4(a_position.xy, 0.0, 1.0) * u_modelView).xy; │ │ │ │ + if (dot(normal, normal) != 0.0) │ │ │ │ + vec2 norm = normal * u_trafficParams.x; │ │ │ │ + if (a_normal.z < 0.0) │ │ │ │ + norm = normal * u_trafficParams.y; │ │ │ │ + transformedAxisPos = calcLineTransformedAxisPos(transformedAxisPos, a_position.xy + norm, │ │ │ │ + u_modelView, length(norm)); │ │ │ │ + float uOffset = length(vec4(kShapeCoordScalar, 0, 0, 0) * u_modelView) * a_normal.w; │ │ │ │ + v_colorTexCoord = a_colorTexCoord.xy; │ │ │ │ + float v = mix(a_colorTexCoord.z, a_colorTexCoord.z + kArrowVSize, 0.5 * a_normal.z + 0.5); │ │ │ │ + v_maskTexCoord = vec2(uOffset * u_trafficParams.z, v) * u_trafficParams.w; │ │ │ │ + v_maskTexCoord.x *= step(a_colorTexCoord.w, v_maskTexCoord.x); │ │ │ │ + v_halfLength = a_normal.z; │ │ │ │ + vec4 pos = vec4(transformedAxisPos, a_position.z, 1.0) * u_projection; │ │ │ │ + gl_Position = applyPivotTransform(pos, u_pivotTransform, 0.0); │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -28707,37 +28410,32 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ - in vec3 a_position; │ │ │ │ + in vec4 a_position; │ │ │ │ in vec2 a_normal; │ │ │ │ in vec2 a_colorTexCoords; │ │ │ │ - in vec3 a_length; │ │ │ │ - #ifdef ENABLE_VTF │ │ │ │ - out LOW_P vec4 v_color; │ │ │ │ - #else │ │ │ │ - out vec2 v_colorTexCoord; │ │ │ │ - #endif │ │ │ │ - out float v_lengthY; │ │ │ │ + out vec2 v_colorTexCoords; │ │ │ │ uniform mat4 u_modelView; │ │ │ │ uniform mat4 u_projection; │ │ │ │ uniform mat4 u_pivotTransform; │ │ │ │ - uniform vec4 u_position; │ │ │ │ - uniform vec2 u_lineParams; │ │ │ │ - uniform float u_accuracy; │ │ │ │ - uniform float u_zScale; │ │ │ │ + uniform vec4 u_routeParams; │ │ │ │ + uniform vec4 u_color; │ │ │ │ + uniform vec4 u_maskColor; │ │ │ │ + uniform vec4 u_outlineColor; │ │ │ │ + uniform vec4 u_fakeColor; │ │ │ │ + uniform vec4 u_fakeOutlineColor; │ │ │ │ + uniform vec2 u_fakeBorders; │ │ │ │ + uniform vec2 u_pattern; │ │ │ │ + uniform vec2 u_angleCosSin; │ │ │ │ + uniform float u_arrowHalfWidth; │ │ │ │ uniform float u_opacity; │ │ │ │ - uniform float u_azimut; │ │ │ │ - #ifdef ENABLE_VTF │ │ │ │ - uniform sampler2D u_colorTex; │ │ │ │ - #endif │ │ │ │ - const float kAntialiasingThreshold = 0.92; │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ vec4 applyPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ) │ │ │ │ vec4 transformedPivot = pivot; │ │ │ │ float w = transformedPivot.w; │ │ │ │ transformedPivot.xyw = (pivotTransform * vec4(transformedPivot.xy, pivotRealZ, w)).xyw; │ │ │ │ transformedPivot.z *= transformedPivot.w / w; │ │ │ │ #ifdef VULKAN │ │ │ │ @@ -28760,27 +28458,19 @@ │ │ │ │ vec2 d = p - originalAxisPos; │ │ │ │ if (dot(d, d) != 0.0) │ │ │ │ return originalAxisPos + normalize(d) * halfWidth; │ │ │ │ else │ │ │ │ return originalAxisPos; │ │ │ │ void main() │ │ │ │ vec2 transformedAxisPos = (vec4(a_position.xy, 0.0, 1.0) * u_modelView).xy; │ │ │ │ - vec2 len = vec2(a_length.x, a_length.z); │ │ │ │ if (dot(a_normal, a_normal) != 0.0) │ │ │ │ - vec2 norm = a_normal * u_lineParams.x; │ │ │ │ + vec2 norm = a_normal * u_arrowHalfWidth; │ │ │ │ transformedAxisPos = calcLineTransformedAxisPos(transformedAxisPos, a_position.xy + norm, │ │ │ │ u_modelView, length(norm)); │ │ │ │ - if (u_lineParams.y != 0.0) │ │ │ │ - len = vec2(a_length.x + a_length.y * u_lineParams.y, a_length.z); │ │ │ │ - #ifdef ENABLE_VTF │ │ │ │ - v_color = texture(u_colorTex, a_colorTexCoords); │ │ │ │ - #else │ │ │ │ - v_colorTexCoord = a_colorTexCoords; │ │ │ │ - #endif │ │ │ │ - v_lengthY = len.y; │ │ │ │ + v_colorTexCoords = a_colorTexCoords; │ │ │ │ vec4 pos = vec4(transformedAxisPos, a_position.z, 1.0) * u_projection; │ │ │ │ gl_Position = applyPivotTransform(pos, u_pivotTransform, 0.0); │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ @@ -28790,137 +28480,24 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ - in vec4 v_coords; │ │ │ │ - in vec4 v_offset0; │ │ │ │ - in vec4 v_offset1; │ │ │ │ - in vec4 v_offset2; │ │ │ │ - out vec4 v_FragColor; │ │ │ │ - uniform vec4 u_framebufferMetrics; │ │ │ │ - uniform sampler2D u_colorTex; │ │ │ │ - uniform sampler2D u_smaaArea; │ │ │ │ - uniform sampler2D u_smaaSearch; │ │ │ │ - #define SMAA_SEARCHTEX_SIZE vec2(66.0, 33.0) │ │ │ │ - #define SMAA_SEARCHTEX_PACKED_SIZE vec2(64.0, 16.0) │ │ │ │ - #define SMAA_AREATEX_MAX_DISTANCE 16.0 │ │ │ │ - #define SMAA_AREATEX_PIXEL_SIZE (vec2(1.0 / 256.0, 1.0 / 1024.0)) │ │ │ │ - #define SMAALoopBegin(condition) while (condition) { │ │ │ │ - #define SMAALoopEnd } │ │ │ │ - #define SMAASampleLevelZero(tex, coord) textureLod(tex, coord, 0.0) │ │ │ │ - #define SMAASampleLevelZeroOffset(tex, coord, offset) textureLodOffset(tex, coord, 0.0, offset) │ │ │ │ - #define SMAARound(v) round((v)) │ │ │ │ - #define SMAAOffset(x,y) ivec2(x,y) │ │ │ │ - const vec2 kAreaTexMaxDistance = vec2(SMAA_AREATEX_MAX_DISTANCE, SMAA_AREATEX_MAX_DISTANCE); │ │ │ │ - const float kActivationThreshold = 0.8281; │ │ │ │ - float SMAASearchLength(vec2 e, float offset) │ │ │ │ - vec2 scale = SMAA_SEARCHTEX_SIZE * vec2(0.5, -1.0); │ │ │ │ - vec2 bias = SMAA_SEARCHTEX_SIZE * vec2(offset, 1.0); │ │ │ │ - scale += vec2(-1.0, 1.0); │ │ │ │ - bias += vec2( 0.5, -0.5); │ │ │ │ - scale *= 1.0 / SMAA_SEARCHTEX_PACKED_SIZE; │ │ │ │ - bias *= 1.0 / SMAA_SEARCHTEX_PACKED_SIZE; │ │ │ │ - return SMAASampleLevelZero(u_smaaSearch, scale * e + bias).r; │ │ │ │ - float SMAASearchXLeft(vec2 texcoord, float end) │ │ │ │ - vec2 e = vec2(0.0, 1.0); │ │ │ │ - SMAALoopBegin(texcoord.x > end && e.g > kActivationThreshold && e.r == 0.0) │ │ │ │ - e = SMAASampleLevelZero(u_colorTex, texcoord).rg; │ │ │ │ - texcoord = vec2(-2.0, 0.0) * u_framebufferMetrics.xy + texcoord; │ │ │ │ - SMAALoopEnd │ │ │ │ - float offset = 3.25 - (255.0 / 127.0) * SMAASearchLength(e, 0.0); │ │ │ │ - return u_framebufferMetrics.x * offset + texcoord.x; │ │ │ │ - float SMAASearchXRight(vec2 texcoord, float end) │ │ │ │ - vec2 e = vec2(0.0, 1.0); │ │ │ │ - SMAALoopBegin(texcoord.x < end && e.g > kActivationThreshold && e.r == 0.0) │ │ │ │ - e = SMAASampleLevelZero(u_colorTex, texcoord).rg; │ │ │ │ - texcoord = vec2(2.0, 0.0) * u_framebufferMetrics.xy + texcoord; │ │ │ │ - SMAALoopEnd │ │ │ │ - float offset = 3.25 - (255.0 / 127.0) * SMAASearchLength(e, 0.5); │ │ │ │ - return -u_framebufferMetrics.x * offset + texcoord.x; │ │ │ │ - float SMAASearchYUp(vec2 texcoord, float end) │ │ │ │ - vec2 e = vec2(1.0, 0.0); │ │ │ │ - SMAALoopBegin(texcoord.y > end && e.r > kActivationThreshold && e.g == 0.0) │ │ │ │ - e = SMAASampleLevelZero(u_colorTex, texcoord).rg; │ │ │ │ - texcoord = vec2(0.0, -2.0) * u_framebufferMetrics.xy + texcoord; │ │ │ │ - SMAALoopEnd │ │ │ │ - float offset = 3.25 - (255.0 / 127.0) * SMAASearchLength(e.gr, 0.0); │ │ │ │ - return u_framebufferMetrics.y * offset + texcoord.y; │ │ │ │ - float SMAASearchYDown(vec2 texcoord, float end) │ │ │ │ - vec2 e = vec2(1.0, 0.0); │ │ │ │ - SMAALoopBegin(texcoord.y < end && e.r > kActivationThreshold && e.g == 0.0) │ │ │ │ - e = SMAASampleLevelZero(u_colorTex, texcoord).rg; │ │ │ │ - texcoord = vec2(0.0, 2.0) * u_framebufferMetrics.xy + texcoord; │ │ │ │ - SMAALoopEnd │ │ │ │ - float offset = 3.25 - (255.0 / 127.0) * SMAASearchLength(e.gr, 0.5); │ │ │ │ - return -u_framebufferMetrics.y * offset + texcoord.y; │ │ │ │ - vec2 SMAAArea(vec2 dist, float e1, float e2) │ │ │ │ - vec2 texcoord = kAreaTexMaxDistance * SMAARound(4.0 * vec2(e1, e2)) + dist; │ │ │ │ - texcoord = SMAA_AREATEX_PIXEL_SIZE * (texcoord + 0.5); │ │ │ │ - return SMAASampleLevelZero(u_smaaArea, texcoord).rg; │ │ │ │ - const float kShapeCoordScalar = 1000.0; │ │ │ │ - void main() │ │ │ │ - vec4 weights = vec4(0.0, 0.0, 0.0, 0.0); │ │ │ │ - vec2 e = texture(u_colorTex, v_coords.xy).rg; │ │ │ │ - if (e.g > 0.0) // Edge at north │ │ │ │ - vec2 d; │ │ │ │ - vec3 coords; │ │ │ │ - coords.x = SMAASearchXLeft(v_offset0.xy, v_offset2.x); │ │ │ │ - coords.y = v_offset1.y; │ │ │ │ - d.x = coords.x; │ │ │ │ - float e1 = SMAASampleLevelZero(u_colorTex, coords.xy).r; │ │ │ │ - coords.z = SMAASearchXRight(v_offset0.zw, v_offset2.y); │ │ │ │ - d.y = coords.z; │ │ │ │ - vec2 zz = u_framebufferMetrics.zz; │ │ │ │ - d = abs(SMAARound(zz * d - v_coords.zz)); │ │ │ │ - vec2 sqrt_d = sqrt(d); │ │ │ │ - float e2 = SMAASampleLevelZeroOffset(u_colorTex, coords.zy, SMAAOffset(1, 0)).r; │ │ │ │ - weights.rg = SMAAArea(sqrt_d, e1, e2); │ │ │ │ - if (e.r > 0.0) // Edge at west │ │ │ │ - vec2 d; │ │ │ │ - vec3 coords; │ │ │ │ - coords.y = SMAASearchYUp(v_offset1.xy, v_offset2.z); │ │ │ │ - coords.x = v_offset0.x; │ │ │ │ - d.x = coords.y; │ │ │ │ - float e1 = SMAASampleLevelZero(u_colorTex, coords.xy).g; │ │ │ │ - coords.z = SMAASearchYDown(v_offset1.zw, v_offset2.w); │ │ │ │ - d.y = coords.z; │ │ │ │ - vec2 ww = u_framebufferMetrics.ww; │ │ │ │ - d = abs(SMAARound(ww * d - v_coords.ww)); │ │ │ │ - vec2 sqrt_d = sqrt(d); │ │ │ │ - float e2 = SMAASampleLevelZeroOffset(u_colorTex, coords.xz, SMAAOffset(0, 1)).g; │ │ │ │ - weights.ba = SMAAArea(sqrt_d, e1, e2); │ │ │ │ - v_FragColor = weights; │ │ │ │ - #ifdef GL_ES │ │ │ │ - #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ - #define MAXPREC highp │ │ │ │ - #else │ │ │ │ - #define MAXPREC mediump │ │ │ │ - #endif │ │ │ │ - precision MAXPREC float; │ │ │ │ - #define LOW_P lowp │ │ │ │ - #define MEDIUM_P mediump │ │ │ │ - #define HIGH_P highp │ │ │ │ - #else │ │ │ │ - #define LOW_P │ │ │ │ - #define MEDIUM_P │ │ │ │ - #define HIGH_P │ │ │ │ - #endif │ │ │ │ - in vec2 a_pos; │ │ │ │ - in vec2 a_tcoord; │ │ │ │ - out vec4 v_coords; │ │ │ │ - out vec4 v_offset0; │ │ │ │ - out vec4 v_offset1; │ │ │ │ - out vec4 v_offset2; │ │ │ │ - uniform vec4 u_framebufferMetrics; │ │ │ │ - #define SMAA_MAX_SEARCH_STEPS 8.0 │ │ │ │ - const vec4 kMaxSearchSteps = vec4(-2.0 * SMAA_MAX_SEARCH_STEPS, 2.0 * SMAA_MAX_SEARCH_STEPS, │ │ │ │ - -2.0 * SMAA_MAX_SEARCH_STEPS, 2.0 * SMAA_MAX_SEARCH_STEPS); │ │ │ │ + in vec3 a_position; │ │ │ │ + in vec4 a_normal; │ │ │ │ + in vec4 a_color; │ │ │ │ + out vec4 v_color; │ │ │ │ + uniform mat4 u_modelView; │ │ │ │ + uniform mat4 u_projection; │ │ │ │ + uniform mat4 u_pivotTransform; │ │ │ │ + uniform vec4 u_params; │ │ │ │ + uniform float u_lineHalfWidth; │ │ │ │ + uniform float u_maxRadius; │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ vec4 applyPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ) │ │ │ │ vec4 transformedPivot = pivot; │ │ │ │ float w = transformedPivot.w; │ │ │ │ transformedPivot.xyw = (pivotTransform * vec4(transformedPivot.xy, pivotRealZ, w)).xyw; │ │ │ │ transformedPivot.z *= transformedPivot.w / w; │ │ │ │ #ifdef VULKAN │ │ │ │ @@ -28942,19 +28519,23 @@ │ │ │ │ vec2 p = (vec4(shiftedPos, 0.0, 1.0) * modelView).xy; │ │ │ │ vec2 d = p - originalAxisPos; │ │ │ │ if (dot(d, d) != 0.0) │ │ │ │ return originalAxisPos + normalize(d) * halfWidth; │ │ │ │ else │ │ │ │ return originalAxisPos; │ │ │ │ void main() │ │ │ │ - v_coords = vec4(a_tcoord, a_tcoord * u_framebufferMetrics.zw); │ │ │ │ - v_offset0 = u_framebufferMetrics.xyxy * vec4(-0.25, -0.125, 1.25, -0.125) + a_tcoord.xyxy; │ │ │ │ - v_offset1 = u_framebufferMetrics.xyxy * vec4(-0.125, -0.25, -0.125, 1.25) + a_tcoord.xyxy; │ │ │ │ - v_offset2 = u_framebufferMetrics.xxyy * kMaxSearchSteps + vec4(v_offset0.xz, v_offset1.yw); │ │ │ │ - gl_Position = vec4(a_pos, 0.0, 1.0); │ │ │ │ + vec2 normal = a_normal.xy; │ │ │ │ + vec2 transformedAxisPos = (vec4(a_position.xy, 0.0, 1.0) * u_modelView).xy; │ │ │ │ + if (dot(normal, normal) != 0.0) │ │ │ │ + vec2 norm = normal * u_lineHalfWidth; │ │ │ │ + transformedAxisPos = calcLineTransformedAxisPos(transformedAxisPos, a_position.xy + norm, │ │ │ │ + u_modelView, length(norm)); │ │ │ │ + v_color = a_color; │ │ │ │ + vec4 pos = vec4(transformedAxisPos, a_position.z, 1.0) * u_projection; │ │ │ │ + gl_Position = applyPivotTransform(pos, u_pivotTransform, 0.0); │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -28963,44 +28544,28 @@ │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ in vec2 v_colorTexCoords; │ │ │ │ - in vec4 v_offset0; │ │ │ │ - in vec4 v_offset1; │ │ │ │ - in vec4 v_offset2; │ │ │ │ out vec4 v_FragColor; │ │ │ │ + uniform mat4 u_modelView; │ │ │ │ + uniform mat4 u_projection; │ │ │ │ + uniform vec2 u_contrastGamma; │ │ │ │ + uniform vec2 u_position; │ │ │ │ + uniform float u_isOutlinePass; │ │ │ │ + uniform float u_opacity; │ │ │ │ + uniform float u_length; │ │ │ │ uniform sampler2D u_colorTex; │ │ │ │ - #define SMAA_THRESHOLD 0.05 │ │ │ │ - const vec2 kThreshold = vec2(SMAA_THRESHOLD, SMAA_THRESHOLD); │ │ │ │ - #define SMAA_LOCAL_CONTRAST_ADAPTATION_FACTOR 2.0 │ │ │ │ - const vec3 kWeights = vec3(0.2126, 0.7152, 0.0722); │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ void main() │ │ │ │ - float L = dot(texture(u_colorTex, v_colorTexCoords).rgb, kWeights); │ │ │ │ - float Lleft = dot(texture(u_colorTex, v_offset0.xy).rgb, kWeights); │ │ │ │ - float Ltop = dot(texture(u_colorTex, v_offset0.zw).rgb, kWeights); │ │ │ │ - vec4 delta; │ │ │ │ - delta.xy = abs(L - vec2(Lleft, Ltop)); │ │ │ │ - vec2 edges = step(kThreshold, delta.xy); │ │ │ │ - if (dot(edges, vec2(1.0, 1.0)) == 0.0) │ │ │ │ - discard; │ │ │ │ - float Lright = dot(texture(u_colorTex, v_offset1.xy).rgb, kWeights); │ │ │ │ - float Lbottom = dot(texture(u_colorTex, v_offset1.zw).rgb, kWeights); │ │ │ │ - delta.zw = abs(L - vec2(Lright, Lbottom)); │ │ │ │ - vec2 maxDelta = max(delta.xy, delta.zw); │ │ │ │ - float Lleftleft = dot(texture(u_colorTex, v_offset2.xy).rgb, kWeights); │ │ │ │ - float Ltoptop = dot(texture(u_colorTex, v_offset2.zw).rgb, kWeights); │ │ │ │ - delta.zw = abs(vec2(Lleft, Ltop) - vec2(Lleftleft, Ltoptop)); │ │ │ │ - maxDelta = max(maxDelta.xy, delta.zw); │ │ │ │ - float finalDelta = max(maxDelta.x, maxDelta.y); │ │ │ │ - edges *= step(finalDelta, SMAA_LOCAL_CONTRAST_ADAPTATION_FACTOR * delta.xy); │ │ │ │ - v_FragColor = vec4(edges, 0.0, 1.0); │ │ │ │ + vec4 finalColor = texture(u_colorTex, v_colorTexCoords); │ │ │ │ + finalColor.a *= u_opacity; │ │ │ │ + v_FragColor = finalColor; │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -29008,21 +28573,28 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ - in vec2 a_pos; │ │ │ │ - in vec2 a_tcoord; │ │ │ │ - out vec2 v_colorTexCoords; │ │ │ │ - out vec4 v_offset0; │ │ │ │ - out vec4 v_offset1; │ │ │ │ - out vec4 v_offset2; │ │ │ │ - uniform vec4 u_framebufferMetrics; │ │ │ │ + in vec4 a_position; │ │ │ │ + in vec4 a_normal; │ │ │ │ + in vec2 a_colorTexCoord; │ │ │ │ + out vec2 v_colorTexCoord; │ │ │ │ + out vec3 v_radius; │ │ │ │ + uniform mat4 u_modelView; │ │ │ │ + uniform mat4 u_projection; │ │ │ │ + uniform mat4 u_pivotTransform; │ │ │ │ + uniform vec4 u_trafficParams; │ │ │ │ + uniform vec4 u_outlineColor; │ │ │ │ + uniform vec4 u_lightArrowColor; │ │ │ │ + uniform vec4 u_darkArrowColor; │ │ │ │ + uniform float u_outline; │ │ │ │ + uniform float u_opacity; │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ vec4 applyPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ) │ │ │ │ vec4 transformedPivot = pivot; │ │ │ │ float w = transformedPivot.w; │ │ │ │ transformedPivot.xyw = (pivotTransform * vec4(transformedPivot.xy, pivotRealZ, w)).xyw; │ │ │ │ transformedPivot.z *= transformedPivot.w / w; │ │ │ │ #ifdef VULKAN │ │ │ │ @@ -29044,63 +28616,28 @@ │ │ │ │ vec2 p = (vec4(shiftedPos, 0.0, 1.0) * modelView).xy; │ │ │ │ vec2 d = p - originalAxisPos; │ │ │ │ if (dot(d, d) != 0.0) │ │ │ │ return originalAxisPos + normalize(d) * halfWidth; │ │ │ │ else │ │ │ │ return originalAxisPos; │ │ │ │ void main() │ │ │ │ - v_colorTexCoords = a_tcoord; │ │ │ │ - v_offset0 = u_framebufferMetrics.xyxy * vec4(-1.0, 0.0, 0.0, -1.0) + a_tcoord.xyxy; │ │ │ │ - v_offset1 = u_framebufferMetrics.xyxy * vec4( 1.0, 0.0, 0.0, 1.0) + a_tcoord.xyxy; │ │ │ │ - v_offset2 = u_framebufferMetrics.xyxy * vec4(-2.0, 0.0, 0.0, -2.0) + a_tcoord.xyxy; │ │ │ │ - gl_Position = vec4(a_pos, 0.0, 1.0); │ │ │ │ - #ifdef GL_ES │ │ │ │ - #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ - #define MAXPREC highp │ │ │ │ - #else │ │ │ │ - #define MAXPREC mediump │ │ │ │ - #endif │ │ │ │ - precision MAXPREC float; │ │ │ │ - #define LOW_P lowp │ │ │ │ - #define MEDIUM_P mediump │ │ │ │ - #define HIGH_P highp │ │ │ │ - #else │ │ │ │ - #define LOW_P │ │ │ │ - #define MEDIUM_P │ │ │ │ - #define HIGH_P │ │ │ │ - #endif │ │ │ │ - in vec2 v_colorTexCoords; │ │ │ │ - in vec4 v_offset; │ │ │ │ - out vec4 v_FragColor; │ │ │ │ - uniform vec4 u_framebufferMetrics; │ │ │ │ - uniform sampler2D u_colorTex; │ │ │ │ - uniform sampler2D u_blendingWeightTex; │ │ │ │ - #define SMAASampleLevelZero(tex, coord) textureLod(tex, coord, 0.0) │ │ │ │ - const float kShapeCoordScalar = 1000.0; │ │ │ │ - void main() │ │ │ │ - vec4 a; │ │ │ │ - a.x = texture(u_blendingWeightTex, v_offset.xy).a; // Right │ │ │ │ - a.y = texture(u_blendingWeightTex, v_offset.zw).g; // Top │ │ │ │ - a.wz = texture(u_blendingWeightTex, v_colorTexCoords).xz; // Bottom / Left │ │ │ │ - if (dot(a, vec4(1.0, 1.0, 1.0, 1.0)) < 1e-5) │ │ │ │ - v_FragColor = texture(u_colorTex, v_colorTexCoords); │ │ │ │ - else │ │ │ │ - vec4 blendingOffset = vec4(0.0, a.y, 0.0, a.w); │ │ │ │ - vec2 blendingWeight = a.yw; │ │ │ │ - if (max(a.x, a.z) > max(a.y, a.w)) │ │ │ │ - { │ │ │ │ - blendingOffset = vec4(a.x, 0.0, a.z, 0.0); │ │ │ │ - blendingWeight = a.xz; │ │ │ │ - } │ │ │ │ - blendingWeight /= dot(blendingWeight, vec2(1.0, 1.0)); │ │ │ │ - vec4 bc = blendingOffset * vec4(u_framebufferMetrics.xy, -u_framebufferMetrics.xy); │ │ │ │ - bc += v_colorTexCoords.xyxy; │ │ │ │ - vec4 color = blendingWeight.x * SMAASampleLevelZero(u_colorTex, bc.xy); │ │ │ │ - color += blendingWeight.y * SMAASampleLevelZero(u_colorTex, bc.zw); │ │ │ │ - v_FragColor = color; │ │ │ │ + vec2 normal = a_normal.xy; │ │ │ │ + vec2 transformedAxisPos = (vec4(a_position.xy, 0.0, 1.0) * u_modelView).xy; │ │ │ │ + int index = int(a_position.w); │ │ │ │ + float leftSize = u_lightArrowColor[index]; │ │ │ │ + float rightSize = u_darkArrowColor[index]; │ │ │ │ + if (dot(normal, normal) != 0.0) │ │ │ │ + vec2 norm = normal * 0.5 * (rightSize - leftSize); │ │ │ │ + transformedAxisPos = calcLineTransformedAxisPos(transformedAxisPos, a_position.xy + norm, │ │ │ │ + u_modelView, length(norm)); │ │ │ │ + v_radius = vec3(a_normal.zw, 1.0) * 0.5 * (leftSize + rightSize); │ │ │ │ + vec2 finalPos = transformedAxisPos + v_radius.xy; │ │ │ │ + v_colorTexCoord = a_colorTexCoord; │ │ │ │ + vec4 pos = vec4(finalPos, a_position.z, 1.0) * u_projection; │ │ │ │ + gl_Position = applyPivotTransform(pos, u_pivotTransform, 0.0); │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -29108,19 +28645,28 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ - in vec2 a_pos; │ │ │ │ - in vec2 a_tcoord; │ │ │ │ - out vec2 v_colorTexCoords; │ │ │ │ - out vec4 v_offset; │ │ │ │ - uniform vec4 u_framebufferMetrics; │ │ │ │ + in vec3 a_position; │ │ │ │ + in vec3 a_normal; │ │ │ │ + in vec2 a_colorTexCoord; │ │ │ │ + in vec4 a_maskTexCoord; │ │ │ │ + out vec2 v_colorTexCoord; │ │ │ │ + out vec2 v_maskTexCoord; │ │ │ │ + uniform mat4 u_modelView; │ │ │ │ + uniform mat4 u_projection; │ │ │ │ + uniform mat4 u_pivotTransform; │ │ │ │ + uniform vec2 u_contrastGamma; │ │ │ │ + uniform float u_opacity; │ │ │ │ + uniform float u_zScale; │ │ │ │ + uniform float u_interpolation; │ │ │ │ + uniform float u_isOutlinePass; │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ vec4 applyPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ) │ │ │ │ vec4 transformedPivot = pivot; │ │ │ │ float w = transformedPivot.w; │ │ │ │ transformedPivot.xyw = (pivotTransform * vec4(transformedPivot.xy, pivotRealZ, w)).xyw; │ │ │ │ transformedPivot.z *= transformedPivot.w / w; │ │ │ │ #ifdef VULKAN │ │ │ │ @@ -29142,17 +28688,25 @@ │ │ │ │ vec2 p = (vec4(shiftedPos, 0.0, 1.0) * modelView).xy; │ │ │ │ vec2 d = p - originalAxisPos; │ │ │ │ if (dot(d, d) != 0.0) │ │ │ │ return originalAxisPos + normalize(d) * halfWidth; │ │ │ │ else │ │ │ │ return originalAxisPos; │ │ │ │ void main() │ │ │ │ - v_colorTexCoords = a_tcoord; │ │ │ │ - v_offset = u_framebufferMetrics.xyxy * vec4(1.0, 0.0, 0.0, 1.0) + a_tcoord.xyxy; │ │ │ │ - gl_Position = vec4(a_pos, 0.0, 1.0); │ │ │ │ + vec2 normal = a_normal.xy; │ │ │ │ + float halfWidth = length(normal); │ │ │ │ + vec2 transformedAxisPos = (vec4(a_position.xy, 0.0, 1.0) * u_modelView).xy; │ │ │ │ + if (halfWidth != 0.0) │ │ │ │ + transformedAxisPos = calcLineTransformedAxisPos(transformedAxisPos, a_position.xy + normal, │ │ │ │ + u_modelView, halfWidth); │ │ │ │ + float uOffset = min(length(vec4(kShapeCoordScalar, 0, 0, 0) * u_modelView) * a_maskTexCoord.x, 1.0); │ │ │ │ + v_colorTexCoord = a_colorTexCoord; │ │ │ │ + v_maskTexCoord = vec2(a_maskTexCoord.y + uOffset * a_maskTexCoord.z, a_maskTexCoord.w); │ │ │ │ + vec4 pos = vec4(transformedAxisPos, a_position.z, 1.0) * u_projection; │ │ │ │ + gl_Position = applyPivotTransform(pos, u_pivotTransform, 0.0); │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -29160,81 +28714,59 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ - #ifdef ENABLE_VTF │ │ │ │ - in LOW_P vec4 v_color; │ │ │ │ - #else │ │ │ │ - in vec2 v_colorTexCoords; │ │ │ │ - uniform sampler2D u_colorTex; │ │ │ │ - #endif │ │ │ │ - out vec4 v_FragColor; │ │ │ │ + in vec2 a_position; │ │ │ │ + in vec2 a_colorTexCoords; │ │ │ │ + out vec2 v_colorTexCoords; │ │ │ │ uniform mat4 u_modelView; │ │ │ │ uniform mat4 u_projection; │ │ │ │ - uniform mat4 u_pivotTransform; │ │ │ │ uniform vec2 u_contrastGamma; │ │ │ │ - uniform float u_opacity; │ │ │ │ - uniform float u_zScale; │ │ │ │ - uniform float u_interpolation; │ │ │ │ + uniform vec2 u_position; │ │ │ │ uniform float u_isOutlinePass; │ │ │ │ + uniform float u_opacity; │ │ │ │ + uniform float u_length; │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ - void main() │ │ │ │ - #ifdef ENABLE_VTF │ │ │ │ - LOW_P vec4 finalColor = v_color; │ │ │ │ - #else │ │ │ │ - LOW_P vec4 finalColor = texture(u_colorTex, v_colorTexCoords); │ │ │ │ - #endif │ │ │ │ - finalColor.a *= u_opacity; │ │ │ │ - v_FragColor = finalColor; │ │ │ │ - #ifdef GL_ES │ │ │ │ - #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ - #define MAXPREC highp │ │ │ │ - #else │ │ │ │ - #define MAXPREC mediump │ │ │ │ - #endif │ │ │ │ - precision MAXPREC float; │ │ │ │ - #define LOW_P lowp │ │ │ │ - #define MEDIUM_P mediump │ │ │ │ - #define HIGH_P highp │ │ │ │ - #else │ │ │ │ - #define LOW_P │ │ │ │ - #define MEDIUM_P │ │ │ │ - #define HIGH_P │ │ │ │ + vec4 applyPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ) │ │ │ │ + vec4 transformedPivot = pivot; │ │ │ │ + float w = transformedPivot.w; │ │ │ │ + transformedPivot.xyw = (pivotTransform * vec4(transformedPivot.xy, pivotRealZ, w)).xyw; │ │ │ │ + transformedPivot.z *= transformedPivot.w / w; │ │ │ │ + #ifdef VULKAN │ │ │ │ + transformedPivot.y = -transformedPivot.y; │ │ │ │ + transformedPivot.z = (transformedPivot.z + transformedPivot.w) / 2.0; │ │ │ │ #endif │ │ │ │ - #ifdef ENABLE_VTF │ │ │ │ - in LOW_P vec4 v_color; │ │ │ │ - #else │ │ │ │ - in vec2 v_colorTexCoord; │ │ │ │ - uniform sampler2D u_colorTex; │ │ │ │ + return transformedPivot; │ │ │ │ + vec4 applyBillboardPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ, vec2 offset) │ │ │ │ + float logicZ = pivot.z / pivot.w; │ │ │ │ + vec4 transformedPivot = pivotTransform * vec4(pivot.xy, pivotRealZ, pivot.w); │ │ │ │ + vec4 scale = pivotTransform * vec4(1.0, -1.0, 0.0, 1.0); │ │ │ │ + vec4 position = vec4(transformedPivot.xy / transformedPivot.w, logicZ, 1.0) + vec4(offset / scale.w * scale.x, 0.0, 0.0); │ │ │ │ + #ifdef VULKAN │ │ │ │ + position.y = -position.y; │ │ │ │ + position.z = (position.z + position.w) / 2.0; │ │ │ │ #endif │ │ │ │ - in vec2 v_maskTexCoord; │ │ │ │ - out vec4 v_FragColor; │ │ │ │ - uniform mat4 u_modelView; │ │ │ │ - uniform mat4 u_projection; │ │ │ │ - uniform mat4 u_pivotTransform; │ │ │ │ - uniform vec2 u_contrastGamma; │ │ │ │ - uniform float u_opacity; │ │ │ │ - uniform float u_zScale; │ │ │ │ - uniform float u_interpolation; │ │ │ │ - uniform float u_isOutlinePass; │ │ │ │ - uniform sampler2D u_maskTex; │ │ │ │ - const float kShapeCoordScalar = 1000.0; │ │ │ │ + return position; │ │ │ │ + vec2 calcLineTransformedAxisPos(vec2 originalAxisPos, vec2 shiftedPos, mat4 modelView, float halfWidth) │ │ │ │ + vec2 p = (vec4(shiftedPos, 0.0, 1.0) * modelView).xy; │ │ │ │ + vec2 d = p - originalAxisPos; │ │ │ │ + if (dot(d, d) != 0.0) │ │ │ │ + return originalAxisPos + normalize(d) * halfWidth; │ │ │ │ + else │ │ │ │ + return originalAxisPos; │ │ │ │ void main() │ │ │ │ - #ifdef ENABLE_VTF │ │ │ │ - LOW_P vec4 glyphColor = v_color; │ │ │ │ - #else │ │ │ │ - LOW_P vec4 glyphColor = texture(u_colorTex, v_colorTexCoord); │ │ │ │ + gl_Position = vec4(a_position, 0, 1) * u_modelView * u_projection; │ │ │ │ + #ifdef VULKAN │ │ │ │ + gl_Position.y = -gl_Position.y; │ │ │ │ + gl_Position.z = (gl_Position.z + gl_Position.w) * 0.5; │ │ │ │ #endif │ │ │ │ - float dist = texture(u_maskTex, v_maskTexCoord).r; │ │ │ │ - float alpha = smoothstep(u_contrastGamma.x - u_contrastGamma.y, u_contrastGamma.x + u_contrastGamma.y, dist) * u_opacity; │ │ │ │ - glyphColor.a *= alpha; │ │ │ │ - v_FragColor = glyphColor; │ │ │ │ + v_colorTexCoords = a_colorTexCoords; │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -29243,14 +28775,15 @@ │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ in vec2 a_colorTexCoord; │ │ │ │ + in vec2 a_outlineColorTexCoord; │ │ │ │ in vec2 a_maskTexCoord; │ │ │ │ in vec4 a_position; │ │ │ │ in vec2 a_normal; │ │ │ │ #ifdef ENABLE_VTF │ │ │ │ out LOW_P vec4 v_color; │ │ │ │ #else │ │ │ │ out vec2 v_colorTexCoord; │ │ │ │ @@ -29260,17 +28793,16 @@ │ │ │ │ uniform mat4 u_projection; │ │ │ │ uniform mat4 u_pivotTransform; │ │ │ │ uniform vec2 u_contrastGamma; │ │ │ │ uniform float u_opacity; │ │ │ │ uniform float u_zScale; │ │ │ │ uniform float u_interpolation; │ │ │ │ uniform float u_isOutlinePass; │ │ │ │ - #ifdef ENABLE_VTF │ │ │ │ uniform sampler2D u_colorTex; │ │ │ │ - #endif │ │ │ │ + const float kBaseDepthShift = -10.0; │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ vec4 applyPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ) │ │ │ │ vec4 transformedPivot = pivot; │ │ │ │ float w = transformedPivot.w; │ │ │ │ transformedPivot.xyw = (pivotTransform * vec4(transformedPivot.xy, pivotRealZ, w)).xyw; │ │ │ │ transformedPivot.z *= transformedPivot.w / w; │ │ │ │ #ifdef VULKAN │ │ │ │ @@ -29292,21 +28824,25 @@ │ │ │ │ vec2 p = (vec4(shiftedPos, 0.0, 1.0) * modelView).xy; │ │ │ │ vec2 d = p - originalAxisPos; │ │ │ │ if (dot(d, d) != 0.0) │ │ │ │ return originalAxisPos + normalize(d) * halfWidth; │ │ │ │ else │ │ │ │ return originalAxisPos; │ │ │ │ void main() │ │ │ │ - vec4 pos = vec4(a_position.xyz, 1) * u_modelView; │ │ │ │ - vec4 shiftedPos = vec4(a_normal, 0.0, 0.0) + pos; │ │ │ │ - gl_Position = applyPivotTransform(shiftedPos * u_projection, u_pivotTransform, 0.0); │ │ │ │ + float isOutline = step(0.5, u_isOutlinePass); │ │ │ │ + float depthShift = kBaseDepthShift * isOutline; │ │ │ │ + vec4 pivot = (vec4(a_position.xyz, 1.0) + vec4(0.0, 0.0, depthShift, 0.0)) * u_modelView; │ │ │ │ + vec4 offset = vec4(a_normal, 0.0, 0.0) * u_projection; │ │ │ │ + gl_Position = applyBillboardPivotTransform(pivot * u_projection, u_pivotTransform, │ │ │ │ + a_position.w * u_zScale, offset.xy); │ │ │ │ + vec2 colorTexCoord = mix(a_colorTexCoord, a_outlineColorTexCoord, isOutline); │ │ │ │ #ifdef ENABLE_VTF │ │ │ │ - v_color = texture(u_colorTex, a_colorTexCoord); │ │ │ │ + v_color = texture(u_colorTex, colorTexCoord); │ │ │ │ #else │ │ │ │ - v_colorTexCoord = a_colorTexCoord; │ │ │ │ + v_colorTexCoord = colorTexCoord; │ │ │ │ #endif │ │ │ │ v_maskTexCoord = a_maskTexCoord; │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ @@ -29316,33 +28852,21 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ - in vec2 a_colorTexCoord; │ │ │ │ - in vec2 a_maskTexCoord; │ │ │ │ - in vec4 a_position; │ │ │ │ - in vec2 a_normal; │ │ │ │ - #ifdef ENABLE_VTF │ │ │ │ - out LOW_P vec4 v_color; │ │ │ │ - #else │ │ │ │ - out vec2 v_colorTexCoord; │ │ │ │ - #endif │ │ │ │ - out vec2 v_maskTexCoord; │ │ │ │ - uniform mat4 u_modelView; │ │ │ │ - uniform mat4 u_projection; │ │ │ │ - uniform mat4 u_pivotTransform; │ │ │ │ - uniform vec2 u_contrastGamma; │ │ │ │ - uniform float u_opacity; │ │ │ │ - uniform float u_zScale; │ │ │ │ - uniform float u_interpolation; │ │ │ │ - uniform float u_isOutlinePass; │ │ │ │ - uniform sampler2D u_colorTex; │ │ │ │ + in vec3 a_pos; │ │ │ │ + in vec3 a_normal; │ │ │ │ + out vec3 v_normal; │ │ │ │ + uniform mat4 u_transform; │ │ │ │ + uniform mat4 u_normalTransform; │ │ │ │ + uniform vec4 u_color; │ │ │ │ + uniform vec2 u_texCoordFlipping; │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ vec4 applyPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ) │ │ │ │ vec4 transformedPivot = pivot; │ │ │ │ float w = transformedPivot.w; │ │ │ │ transformedPivot.xyw = (pivotTransform * vec4(transformedPivot.xy, pivotRealZ, w)).xyw; │ │ │ │ transformedPivot.z *= transformedPivot.w / w; │ │ │ │ #ifdef VULKAN │ │ │ │ @@ -29364,24 +28888,21 @@ │ │ │ │ vec2 p = (vec4(shiftedPos, 0.0, 1.0) * modelView).xy; │ │ │ │ vec2 d = p - originalAxisPos; │ │ │ │ if (dot(d, d) != 0.0) │ │ │ │ return originalAxisPos + normalize(d) * halfWidth; │ │ │ │ else │ │ │ │ return originalAxisPos; │ │ │ │ void main() │ │ │ │ - vec4 pivot = vec4(a_position.xyz, 1.0) * u_modelView; │ │ │ │ - vec4 offset = vec4(a_normal, 0.0, 0.0) * u_projection; │ │ │ │ - gl_Position = applyBillboardPivotTransform(pivot * u_projection, u_pivotTransform, │ │ │ │ - a_position.w * u_zScale, offset.xy); │ │ │ │ - #ifdef ENABLE_VTF │ │ │ │ - v_color = texture(u_colorTex, a_colorTexCoord); │ │ │ │ - #else │ │ │ │ - v_colorTexCoord = a_colorTexCoord; │ │ │ │ + vec4 position = u_transform * vec4(a_pos, 1.0); │ │ │ │ + v_normal = normalize((u_normalTransform * vec4(a_normal, 0.0)).xyz); │ │ │ │ + gl_Position = position; │ │ │ │ + #ifdef VULKAN │ │ │ │ + gl_Position.y = -gl_Position.y; │ │ │ │ + gl_Position.z = (gl_Position.z + gl_Position.w) * 0.5; │ │ │ │ #endif │ │ │ │ - v_maskTexCoord = a_maskTexCoord; │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -29390,15 +28911,14 @@ │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ in vec2 a_colorTexCoord; │ │ │ │ - in vec2 a_outlineColorTexCoord; │ │ │ │ in vec2 a_maskTexCoord; │ │ │ │ in vec4 a_position; │ │ │ │ in vec2 a_normal; │ │ │ │ #ifdef ENABLE_VTF │ │ │ │ out LOW_P vec4 v_color; │ │ │ │ #else │ │ │ │ out vec2 v_colorTexCoord; │ │ │ │ @@ -29408,18 +28928,15 @@ │ │ │ │ uniform mat4 u_projection; │ │ │ │ uniform mat4 u_pivotTransform; │ │ │ │ uniform vec2 u_contrastGamma; │ │ │ │ uniform float u_opacity; │ │ │ │ uniform float u_zScale; │ │ │ │ uniform float u_interpolation; │ │ │ │ uniform float u_isOutlinePass; │ │ │ │ - #ifdef ENABLE_VTF │ │ │ │ uniform sampler2D u_colorTex; │ │ │ │ - #endif │ │ │ │ - const float BaseDepthShift = -10.0; │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ vec4 applyPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ) │ │ │ │ vec4 transformedPivot = pivot; │ │ │ │ float w = transformedPivot.w; │ │ │ │ transformedPivot.xyw = (pivotTransform * vec4(transformedPivot.xy, pivotRealZ, w)).xyw; │ │ │ │ transformedPivot.z *= transformedPivot.w / w; │ │ │ │ #ifdef VULKAN │ │ │ │ @@ -29441,25 +28958,22 @@ │ │ │ │ vec2 p = (vec4(shiftedPos, 0.0, 1.0) * modelView).xy; │ │ │ │ vec2 d = p - originalAxisPos; │ │ │ │ if (dot(d, d) != 0.0) │ │ │ │ return originalAxisPos + normalize(d) * halfWidth; │ │ │ │ else │ │ │ │ return originalAxisPos; │ │ │ │ void main() │ │ │ │ - float isOutline = step(0.5, u_isOutlinePass); │ │ │ │ - float notOutline = 1.0 - isOutline; │ │ │ │ - float depthShift = BaseDepthShift * isOutline; │ │ │ │ - vec4 pos = (vec4(a_position.xyz, 1) + vec4(0.0, 0.0, depthShift, 0.0)) * u_modelView; │ │ │ │ - vec4 shiftedPos = vec4(a_normal, 0.0, 0.0) + pos; │ │ │ │ - gl_Position = applyPivotTransform(shiftedPos * u_projection, u_pivotTransform, 0.0); │ │ │ │ - vec2 colorTexCoord = a_colorTexCoord * notOutline + a_outlineColorTexCoord * isOutline; │ │ │ │ + vec4 pivot = vec4(a_position.xyz, 1.0) * u_modelView; │ │ │ │ + vec4 offset = vec4(a_normal, 0.0, 0.0) * u_projection; │ │ │ │ + gl_Position = applyBillboardPivotTransform(pivot * u_projection, u_pivotTransform, │ │ │ │ + a_position.w * u_zScale, offset.xy); │ │ │ │ #ifdef ENABLE_VTF │ │ │ │ - v_color = texture(u_colorTex, colorTexCoord); │ │ │ │ + v_color = texture(u_colorTex, a_colorTexCoord); │ │ │ │ #else │ │ │ │ - v_colorTexCoord = colorTexCoord; │ │ │ │ + v_colorTexCoord = a_colorTexCoord; │ │ │ │ #endif │ │ │ │ v_maskTexCoord = a_maskTexCoord; │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ @@ -29488,16 +29002,18 @@ │ │ │ │ uniform mat4 u_projection; │ │ │ │ uniform mat4 u_pivotTransform; │ │ │ │ uniform vec2 u_contrastGamma; │ │ │ │ uniform float u_opacity; │ │ │ │ uniform float u_zScale; │ │ │ │ uniform float u_interpolation; │ │ │ │ uniform float u_isOutlinePass; │ │ │ │ + #ifdef ENABLE_VTF │ │ │ │ uniform sampler2D u_colorTex; │ │ │ │ - const float kBaseDepthShift = -10.0; │ │ │ │ + #endif │ │ │ │ + const float BaseDepthShift = -10.0; │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ vec4 applyPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ) │ │ │ │ vec4 transformedPivot = pivot; │ │ │ │ float w = transformedPivot.w; │ │ │ │ transformedPivot.xyw = (pivotTransform * vec4(transformedPivot.xy, pivotRealZ, w)).xyw; │ │ │ │ transformedPivot.z *= transformedPivot.w / w; │ │ │ │ #ifdef VULKAN │ │ │ │ @@ -29520,20 +29036,20 @@ │ │ │ │ vec2 d = p - originalAxisPos; │ │ │ │ if (dot(d, d) != 0.0) │ │ │ │ return originalAxisPos + normalize(d) * halfWidth; │ │ │ │ else │ │ │ │ return originalAxisPos; │ │ │ │ void main() │ │ │ │ float isOutline = step(0.5, u_isOutlinePass); │ │ │ │ - float depthShift = kBaseDepthShift * isOutline; │ │ │ │ - vec4 pivot = (vec4(a_position.xyz, 1.0) + vec4(0.0, 0.0, depthShift, 0.0)) * u_modelView; │ │ │ │ - vec4 offset = vec4(a_normal, 0.0, 0.0) * u_projection; │ │ │ │ - gl_Position = applyBillboardPivotTransform(pivot * u_projection, u_pivotTransform, │ │ │ │ - a_position.w * u_zScale, offset.xy); │ │ │ │ - vec2 colorTexCoord = mix(a_colorTexCoord, a_outlineColorTexCoord, isOutline); │ │ │ │ + float notOutline = 1.0 - isOutline; │ │ │ │ + float depthShift = BaseDepthShift * isOutline; │ │ │ │ + vec4 pos = (vec4(a_position.xyz, 1) + vec4(0.0, 0.0, depthShift, 0.0)) * u_modelView; │ │ │ │ + vec4 shiftedPos = vec4(a_normal, 0.0, 0.0) + pos; │ │ │ │ + gl_Position = applyPivotTransform(shiftedPos * u_projection, u_pivotTransform, 0.0); │ │ │ │ + vec2 colorTexCoord = a_colorTexCoord * notOutline + a_outlineColorTexCoord * isOutline; │ │ │ │ #ifdef ENABLE_VTF │ │ │ │ v_color = texture(u_colorTex, colorTexCoord); │ │ │ │ #else │ │ │ │ v_colorTexCoord = colorTexCoord; │ │ │ │ #endif │ │ │ │ v_maskTexCoord = a_maskTexCoord; │ │ │ │ #ifdef GL_ES │ │ │ │ @@ -29553,35 +29069,36 @@ │ │ │ │ #endif │ │ │ │ #ifdef ENABLE_VTF │ │ │ │ in LOW_P vec4 v_color; │ │ │ │ #else │ │ │ │ in vec2 v_colorTexCoord; │ │ │ │ uniform sampler2D u_colorTex; │ │ │ │ #endif │ │ │ │ - in vec2 v_maskTexCoord; │ │ │ │ + in float v_lengthY; │ │ │ │ out vec4 v_FragColor; │ │ │ │ uniform mat4 u_modelView; │ │ │ │ uniform mat4 u_projection; │ │ │ │ - uniform vec2 u_contrastGamma; │ │ │ │ - uniform vec2 u_position; │ │ │ │ - uniform float u_isOutlinePass; │ │ │ │ + uniform mat4 u_pivotTransform; │ │ │ │ + uniform vec4 u_position; │ │ │ │ + uniform vec2 u_lineParams; │ │ │ │ + uniform float u_accuracy; │ │ │ │ + uniform float u_zScale; │ │ │ │ uniform float u_opacity; │ │ │ │ - uniform float u_length; │ │ │ │ - uniform sampler2D u_maskTex; │ │ │ │ + uniform float u_azimut; │ │ │ │ + const float kAntialiasingThreshold = 0.92; │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ void main() │ │ │ │ #ifdef ENABLE_VTF │ │ │ │ - LOW_P vec4 glyphColor = v_color; │ │ │ │ + LOW_P vec4 color = v_color; │ │ │ │ #else │ │ │ │ - LOW_P vec4 glyphColor = texture(u_colorTex, v_colorTexCoord); │ │ │ │ + LOW_P vec4 color = texture(u_colorTex, v_colorTexCoord); │ │ │ │ #endif │ │ │ │ - float dist = texture(u_maskTex, v_maskTexCoord).r; │ │ │ │ - float alpha = smoothstep(u_contrastGamma.x - u_contrastGamma.y, u_contrastGamma.x + u_contrastGamma.y, dist) * u_opacity; │ │ │ │ - glyphColor.a *= alpha; │ │ │ │ - v_FragColor = glyphColor; │ │ │ │ + color.a *= u_opacity; │ │ │ │ + color.a *= (1.0 - smoothstep(kAntialiasingThreshold, 1.0, abs(v_lengthY))); │ │ │ │ + v_FragColor = color; │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -29590,35 +29107,24 @@ │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ in vec3 a_position; │ │ │ │ - in vec2 a_colorTexCoord; │ │ │ │ - in vec2 a_outlineColorTexCoord; │ │ │ │ - in vec2 a_normal; │ │ │ │ - in vec2 a_maskTexCoord; │ │ │ │ - #ifdef ENABLE_VTF │ │ │ │ - out LOW_P vec4 v_color; │ │ │ │ - #else │ │ │ │ - out vec2 v_colorTexCoord; │ │ │ │ - #endif │ │ │ │ - out vec2 v_maskTexCoord; │ │ │ │ + in vec4 a_normal; │ │ │ │ + in vec4 a_color; │ │ │ │ + out vec3 v_radius; │ │ │ │ + out vec4 v_color; │ │ │ │ uniform mat4 u_modelView; │ │ │ │ uniform mat4 u_projection; │ │ │ │ - uniform vec2 u_contrastGamma; │ │ │ │ - uniform vec2 u_position; │ │ │ │ - uniform float u_isOutlinePass; │ │ │ │ - uniform float u_opacity; │ │ │ │ - uniform float u_length; │ │ │ │ - #ifdef ENABLE_VTF │ │ │ │ - uniform sampler2D u_colorTex; │ │ │ │ - #endif │ │ │ │ - const float kBaseDepthShift = -10.0; │ │ │ │ + uniform mat4 u_pivotTransform; │ │ │ │ + uniform vec4 u_params; │ │ │ │ + uniform float u_lineHalfWidth; │ │ │ │ + uniform float u_maxRadius; │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ vec4 applyPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ) │ │ │ │ vec4 transformedPivot = pivot; │ │ │ │ float w = transformedPivot.w; │ │ │ │ transformedPivot.xyw = (pivotTransform * vec4(transformedPivot.xy, pivotRealZ, w)).xyw; │ │ │ │ transformedPivot.z *= transformedPivot.w / w; │ │ │ │ #ifdef VULKAN │ │ │ │ @@ -29640,30 +29146,46 @@ │ │ │ │ vec2 p = (vec4(shiftedPos, 0.0, 1.0) * modelView).xy; │ │ │ │ vec2 d = p - originalAxisPos; │ │ │ │ if (dot(d, d) != 0.0) │ │ │ │ return originalAxisPos + normalize(d) * halfWidth; │ │ │ │ else │ │ │ │ return originalAxisPos; │ │ │ │ void main() │ │ │ │ - float isOutline = step(0.5, u_isOutlinePass); │ │ │ │ - float depthShift = kBaseDepthShift * isOutline; │ │ │ │ - vec4 pos = (vec4(a_position, 1.0) + vec4(0.0, 0.0, depthShift, 0.0)) * u_modelView; │ │ │ │ - vec4 shiftedPos = vec4(a_normal, 0.0, 0.0) + pos; │ │ │ │ - gl_Position = shiftedPos * u_projection; │ │ │ │ - #ifdef VULKAN │ │ │ │ - gl_Position.y = -gl_Position.y; │ │ │ │ - gl_Position.z = (gl_Position.z + gl_Position.w) * 0.5; │ │ │ │ - #endif │ │ │ │ - vec2 colorTexCoord = mix(a_colorTexCoord, a_outlineColorTexCoord, isOutline); │ │ │ │ - #ifdef ENABLE_VTF │ │ │ │ - v_color = texture(u_colorTex, colorTexCoord); │ │ │ │ + vec2 normal = a_normal.xy; │ │ │ │ + vec2 transformedAxisPos = (vec4(a_position.xy, 0.0, 1.0) * u_modelView).xy; │ │ │ │ + if (dot(normal, normal) != 0.0) │ │ │ │ + vec2 norm = normal * u_lineHalfWidth; │ │ │ │ + transformedAxisPos = calcLineTransformedAxisPos(transformedAxisPos, a_position.xy + norm, │ │ │ │ + u_modelView, length(norm)); │ │ │ │ + transformedAxisPos += a_normal.zw * u_lineHalfWidth; │ │ │ │ + vec4 pos = vec4(transformedAxisPos, a_position.z, 1.0) * u_projection; │ │ │ │ + gl_Position = applyPivotTransform(pos, u_pivotTransform, 0.0); │ │ │ │ + v_color = a_color; │ │ │ │ + v_radius = vec3(a_normal.zw, u_maxRadius) * u_lineHalfWidth; │ │ │ │ + #ifdef GL_ES │ │ │ │ + #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ + #define MAXPREC highp │ │ │ │ + #else │ │ │ │ + #define MAXPREC mediump │ │ │ │ + #endif │ │ │ │ + precision MAXPREC float; │ │ │ │ + #define LOW_P lowp │ │ │ │ + #define MEDIUM_P mediump │ │ │ │ + #define HIGH_P highp │ │ │ │ #else │ │ │ │ - v_colorTexCoord = colorTexCoord; │ │ │ │ + #define LOW_P │ │ │ │ + #define MEDIUM_P │ │ │ │ + #define HIGH_P │ │ │ │ #endif │ │ │ │ - v_maskTexCoord = a_maskTexCoord; │ │ │ │ + uniform MEDIUM_P sampler2DArray u_colorTex; │ │ │ │ + in vec3 v_texCoords; │ │ │ │ + out vec4 v_FragColor; │ │ │ │ + const float kShapeCoordScalar = 1000.0; │ │ │ │ + void main() │ │ │ │ + v_FragColor = texture(u_colorTex, v_texCoords); │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -29671,30 +29193,62 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ - in vec2 v_colorTexCoords; │ │ │ │ - out vec4 v_FragColor; │ │ │ │ + in vec3 a_normal; │ │ │ │ + in vec3 a_position; │ │ │ │ + in vec4 a_color; │ │ │ │ + out vec3 v_radius; │ │ │ │ + out vec4 v_color; │ │ │ │ uniform mat4 u_modelView; │ │ │ │ uniform mat4 u_projection; │ │ │ │ uniform mat4 u_pivotTransform; │ │ │ │ uniform vec2 u_contrastGamma; │ │ │ │ uniform float u_opacity; │ │ │ │ uniform float u_zScale; │ │ │ │ uniform float u_interpolation; │ │ │ │ uniform float u_isOutlinePass; │ │ │ │ - uniform sampler2D u_colorTex; │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ + vec4 applyPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ) │ │ │ │ + vec4 transformedPivot = pivot; │ │ │ │ + float w = transformedPivot.w; │ │ │ │ + transformedPivot.xyw = (pivotTransform * vec4(transformedPivot.xy, pivotRealZ, w)).xyw; │ │ │ │ + transformedPivot.z *= transformedPivot.w / w; │ │ │ │ + #ifdef VULKAN │ │ │ │ + transformedPivot.y = -transformedPivot.y; │ │ │ │ + transformedPivot.z = (transformedPivot.z + transformedPivot.w) / 2.0; │ │ │ │ + #endif │ │ │ │ + return transformedPivot; │ │ │ │ + vec4 applyBillboardPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ, vec2 offset) │ │ │ │ + float logicZ = pivot.z / pivot.w; │ │ │ │ + vec4 transformedPivot = pivotTransform * vec4(pivot.xy, pivotRealZ, pivot.w); │ │ │ │ + vec4 scale = pivotTransform * vec4(1.0, -1.0, 0.0, 1.0); │ │ │ │ + vec4 position = vec4(transformedPivot.xy / transformedPivot.w, logicZ, 1.0) + vec4(offset / scale.w * scale.x, 0.0, 0.0); │ │ │ │ + #ifdef VULKAN │ │ │ │ + position.y = -position.y; │ │ │ │ + position.z = (position.z + position.w) / 2.0; │ │ │ │ + #endif │ │ │ │ + return position; │ │ │ │ + vec2 calcLineTransformedAxisPos(vec2 originalAxisPos, vec2 shiftedPos, mat4 modelView, float halfWidth) │ │ │ │ + vec2 p = (vec4(shiftedPos, 0.0, 1.0) * modelView).xy; │ │ │ │ + vec2 d = p - originalAxisPos; │ │ │ │ + if (dot(d, d) != 0.0) │ │ │ │ + return originalAxisPos + normalize(d) * halfWidth; │ │ │ │ + else │ │ │ │ + return originalAxisPos; │ │ │ │ void main() │ │ │ │ - vec4 finalColor = texture(u_colorTex, v_colorTexCoords); │ │ │ │ - finalColor.a *= u_opacity; │ │ │ │ - v_FragColor = finalColor; │ │ │ │ + vec3 radius = a_normal * a_position.z; │ │ │ │ + vec4 pos = vec4(a_position.xy, 0, 1) * u_modelView; │ │ │ │ + vec4 shiftedPos = vec4(radius.xy, 0, 0) + pos; │ │ │ │ + gl_Position = applyPivotTransform(shiftedPos * u_projection, u_pivotTransform, 0.0); │ │ │ │ + v_radius = radius; │ │ │ │ + v_color = a_color; │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -29702,18 +29256,20 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ - in vec4 a_position; │ │ │ │ - in vec2 a_normal; │ │ │ │ - in vec2 a_colorTexCoords; │ │ │ │ - out vec2 v_colorTexCoords; │ │ │ │ + in vec3 a_position; │ │ │ │ + in vec3 a_normalAndAnimateOrZ; │ │ │ │ + in vec4 a_texCoords; │ │ │ │ + in vec4 a_color; │ │ │ │ + out vec4 v_texCoords; │ │ │ │ + out vec4 v_maskColor; │ │ │ │ uniform mat4 u_modelView; │ │ │ │ uniform mat4 u_projection; │ │ │ │ uniform mat4 u_pivotTransform; │ │ │ │ uniform vec2 u_contrastGamma; │ │ │ │ uniform float u_opacity; │ │ │ │ uniform float u_zScale; │ │ │ │ uniform float u_interpolation; │ │ │ │ @@ -29743,18 +29299,25 @@ │ │ │ │ vec2 p = (vec4(shiftedPos, 0.0, 1.0) * modelView).xy; │ │ │ │ vec2 d = p - originalAxisPos; │ │ │ │ if (dot(d, d) != 0.0) │ │ │ │ return originalAxisPos + normalize(d) * halfWidth; │ │ │ │ else │ │ │ │ return originalAxisPos; │ │ │ │ void main() │ │ │ │ - vec4 pos = vec4(a_position.xyz, 1) * u_modelView; │ │ │ │ - vec4 shiftedPos = vec4(a_normal, 0, 0) + pos; │ │ │ │ - gl_Position = applyPivotTransform(shiftedPos * u_projection, u_pivotTransform, 0.0); │ │ │ │ - v_colorTexCoords = a_colorTexCoords; │ │ │ │ + vec2 normal = a_normalAndAnimateOrZ.xy; │ │ │ │ + if (a_normalAndAnimateOrZ.z > 0.0) │ │ │ │ + normal = u_interpolation * normal; │ │ │ │ + vec4 pivot = vec4(a_position, 1.0) * u_modelView; │ │ │ │ + vec4 offset = vec4(normal, 0.0, 0.0) * u_projection; │ │ │ │ + vec4 projectedPivot = pivot * u_projection; │ │ │ │ + gl_Position = applyBillboardPivotTransform(projectedPivot, u_pivotTransform, 0.0, offset.xy); │ │ │ │ + float newZ = projectedPivot.y / projectedPivot.w * 0.5 + 0.5; │ │ │ │ + gl_Position.z = abs(a_normalAndAnimateOrZ.z) * newZ + (1.0 - abs(a_normalAndAnimateOrZ.z)) * gl_Position.z; │ │ │ │ + v_texCoords = a_texCoords; │ │ │ │ + v_maskColor = a_color; │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -29762,30 +29325,41 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ + #ifdef ENABLE_VTF │ │ │ │ + in LOW_P vec4 v_color; │ │ │ │ + #else │ │ │ │ in vec2 v_colorTexCoords; │ │ │ │ - in float v_intensity; │ │ │ │ + uniform sampler2D u_colorTex; │ │ │ │ + #endif │ │ │ │ + in vec2 v_maskTexCoords; │ │ │ │ out vec4 v_FragColor; │ │ │ │ uniform mat4 u_modelView; │ │ │ │ uniform mat4 u_projection; │ │ │ │ uniform mat4 u_pivotTransform; │ │ │ │ uniform vec2 u_contrastGamma; │ │ │ │ uniform float u_opacity; │ │ │ │ uniform float u_zScale; │ │ │ │ uniform float u_interpolation; │ │ │ │ uniform float u_isOutlinePass; │ │ │ │ - uniform sampler2D u_colorTex; │ │ │ │ + uniform sampler2D u_maskTex; │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ void main() │ │ │ │ - vec4 finalColor = vec4(texture(u_colorTex, v_colorTexCoords).rgb, u_opacity); │ │ │ │ - v_FragColor = vec4((v_intensity * 0.2 + 0.8) * finalColor.rgb, finalColor.a); │ │ │ │ + #ifdef ENABLE_VTF │ │ │ │ + LOW_P vec4 color = v_color; │ │ │ │ + #else │ │ │ │ + LOW_P vec4 color = texture(u_colorTex, v_colorTexCoords); │ │ │ │ + #endif │ │ │ │ + color *= texture(u_maskTex, v_maskTexCoords); │ │ │ │ + color.a *= u_opacity; │ │ │ │ + v_FragColor = color; │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -29858,19 +29432,20 @@ │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ in vec2 v_colorTexCoords; │ │ │ │ out vec4 v_FragColor; │ │ │ │ uniform mat4 u_modelView; │ │ │ │ uniform mat4 u_projection; │ │ │ │ + uniform mat4 u_pivotTransform; │ │ │ │ uniform vec2 u_contrastGamma; │ │ │ │ - uniform vec2 u_position; │ │ │ │ - uniform float u_isOutlinePass; │ │ │ │ uniform float u_opacity; │ │ │ │ - uniform float u_length; │ │ │ │ + uniform float u_zScale; │ │ │ │ + uniform float u_interpolation; │ │ │ │ + uniform float u_isOutlinePass; │ │ │ │ uniform sampler2D u_colorTex; │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ void main() │ │ │ │ vec4 finalColor = texture(u_colorTex, v_colorTexCoords); │ │ │ │ finalColor.a *= u_opacity; │ │ │ │ v_FragColor = finalColor; │ │ │ │ #ifdef GL_ES │ │ │ │ @@ -29884,59 +29459,206 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ - in vec2 a_position; │ │ │ │ - in vec2 a_colorTexCoords; │ │ │ │ - out vec2 v_colorTexCoords; │ │ │ │ + in vec2 v_colorTexCoord; │ │ │ │ + in vec3 v_radius; │ │ │ │ + out vec4 v_FragColor; │ │ │ │ + uniform mat4 u_modelView; │ │ │ │ + uniform mat4 u_projection; │ │ │ │ + uniform mat4 u_pivotTransform; │ │ │ │ + uniform vec4 u_trafficParams; │ │ │ │ + uniform vec4 u_outlineColor; │ │ │ │ + uniform vec4 u_lightArrowColor; │ │ │ │ + uniform vec4 u_darkArrowColor; │ │ │ │ + uniform float u_outline; │ │ │ │ + uniform float u_opacity; │ │ │ │ + uniform sampler2D u_colorTex; │ │ │ │ + const float kAntialiasingThreshold = 0.92; │ │ │ │ + const float kShapeCoordScalar = 1000.0; │ │ │ │ + void main() │ │ │ │ + vec4 color = texture(u_colorTex, v_colorTexCoord); │ │ │ │ + float smallRadius = v_radius.z * kAntialiasingThreshold; │ │ │ │ + float stepValue = smoothstep(smallRadius * smallRadius, v_radius.z * v_radius.z, │ │ │ │ + v_radius.x * v_radius.x + v_radius.y * v_radius.y); │ │ │ │ + color.a = u_opacity * (1.0 - stepValue); │ │ │ │ + if (color.a < 0.01) │ │ │ │ + discard; │ │ │ │ + v_FragColor = color; │ │ │ │ + #ifdef GL_ES │ │ │ │ + #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ + #define MAXPREC highp │ │ │ │ + #else │ │ │ │ + #define MAXPREC mediump │ │ │ │ + #endif │ │ │ │ + precision MAXPREC float; │ │ │ │ + #define LOW_P lowp │ │ │ │ + #define MEDIUM_P mediump │ │ │ │ + #define HIGH_P highp │ │ │ │ + #else │ │ │ │ + #define LOW_P │ │ │ │ + #define MEDIUM_P │ │ │ │ + #define HIGH_P │ │ │ │ + #endif │ │ │ │ + in vec3 v_length; │ │ │ │ + in vec4 v_color; │ │ │ │ + out vec4 v_FragColor; │ │ │ │ uniform mat4 u_modelView; │ │ │ │ uniform mat4 u_projection; │ │ │ │ + uniform mat4 u_pivotTransform; │ │ │ │ + uniform vec4 u_routeParams; │ │ │ │ + uniform vec4 u_color; │ │ │ │ + uniform vec4 u_maskColor; │ │ │ │ + uniform vec4 u_outlineColor; │ │ │ │ + uniform vec4 u_fakeColor; │ │ │ │ + uniform vec4 u_fakeOutlineColor; │ │ │ │ + uniform vec2 u_fakeBorders; │ │ │ │ + uniform vec2 u_pattern; │ │ │ │ + uniform vec2 u_angleCosSin; │ │ │ │ + uniform float u_arrowHalfWidth; │ │ │ │ + uniform float u_opacity; │ │ │ │ + const float kAntialiasingThreshold = 0.92; │ │ │ │ + float alphaFromPattern(float curLen, float dashLen, float gapLen) │ │ │ │ + float len = dashLen + gapLen; │ │ │ │ + float offset = fract(curLen / len) * len; │ │ │ │ + return step(offset, dashLen); │ │ │ │ + const float kShapeCoordScalar = 1000.0; │ │ │ │ + void main() │ │ │ │ + if (v_length.x < v_length.z) │ │ │ │ + discard; │ │ │ │ + vec2 coefs = step(v_length.xx, u_fakeBorders); │ │ │ │ + coefs.y = 1.0 - coefs.y; │ │ │ │ + vec4 mainColor = mix(u_color, u_fakeColor, coefs.x); │ │ │ │ + mainColor = mix(mainColor, u_fakeColor, coefs.y); │ │ │ │ + vec4 color = mainColor + v_color; │ │ │ │ + color.a *= (1.0 - smoothstep(kAntialiasingThreshold, 1.0, abs(v_length.y))) * │ │ │ │ + alphaFromPattern(v_length.x, u_pattern.x, u_pattern.y); │ │ │ │ + color = vec4(mix(color.rgb, u_maskColor.rgb, u_maskColor.a), color.a); │ │ │ │ + v_FragColor = color; │ │ │ │ + #ifdef GL_ES │ │ │ │ + #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ + #define MAXPREC highp │ │ │ │ + #else │ │ │ │ + #define MAXPREC mediump │ │ │ │ + #endif │ │ │ │ + precision MAXPREC float; │ │ │ │ + #define LOW_P lowp │ │ │ │ + #define MEDIUM_P mediump │ │ │ │ + #define HIGH_P highp │ │ │ │ + #else │ │ │ │ + #define LOW_P │ │ │ │ + #define MEDIUM_P │ │ │ │ + #define HIGH_P │ │ │ │ + #endif │ │ │ │ + #ifdef ENABLE_VTF │ │ │ │ + in LOW_P vec4 v_color; │ │ │ │ + #else │ │ │ │ + in vec2 v_colorTexCoord; │ │ │ │ + uniform sampler2D u_colorTex; │ │ │ │ + #endif │ │ │ │ + in vec2 v_maskTexCoord; │ │ │ │ + out vec4 v_FragColor; │ │ │ │ + uniform mat4 u_modelView; │ │ │ │ + uniform mat4 u_projection; │ │ │ │ + uniform mat4 u_pivotTransform; │ │ │ │ uniform vec2 u_contrastGamma; │ │ │ │ - uniform vec2 u_position; │ │ │ │ - uniform float u_isOutlinePass; │ │ │ │ uniform float u_opacity; │ │ │ │ - uniform float u_length; │ │ │ │ + uniform float u_zScale; │ │ │ │ + uniform float u_interpolation; │ │ │ │ + uniform float u_isOutlinePass; │ │ │ │ + uniform sampler2D u_maskTex; │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ - vec4 applyPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ) │ │ │ │ - vec4 transformedPivot = pivot; │ │ │ │ - float w = transformedPivot.w; │ │ │ │ - transformedPivot.xyw = (pivotTransform * vec4(transformedPivot.xy, pivotRealZ, w)).xyw; │ │ │ │ - transformedPivot.z *= transformedPivot.w / w; │ │ │ │ - #ifdef VULKAN │ │ │ │ - transformedPivot.y = -transformedPivot.y; │ │ │ │ - transformedPivot.z = (transformedPivot.z + transformedPivot.w) / 2.0; │ │ │ │ + void main() │ │ │ │ + #ifdef ENABLE_VTF │ │ │ │ + LOW_P vec4 glyphColor = v_color; │ │ │ │ + #else │ │ │ │ + LOW_P vec4 glyphColor = texture(u_colorTex, v_colorTexCoord); │ │ │ │ #endif │ │ │ │ - return transformedPivot; │ │ │ │ - vec4 applyBillboardPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ, vec2 offset) │ │ │ │ - float logicZ = pivot.z / pivot.w; │ │ │ │ - vec4 transformedPivot = pivotTransform * vec4(pivot.xy, pivotRealZ, pivot.w); │ │ │ │ - vec4 scale = pivotTransform * vec4(1.0, -1.0, 0.0, 1.0); │ │ │ │ - vec4 position = vec4(transformedPivot.xy / transformedPivot.w, logicZ, 1.0) + vec4(offset / scale.w * scale.x, 0.0, 0.0); │ │ │ │ - #ifdef VULKAN │ │ │ │ - position.y = -position.y; │ │ │ │ - position.z = (position.z + position.w) / 2.0; │ │ │ │ + float dist = texture(u_maskTex, v_maskTexCoord).r; │ │ │ │ + float alpha = smoothstep(u_contrastGamma.x - u_contrastGamma.y, u_contrastGamma.x + u_contrastGamma.y, dist) * u_opacity; │ │ │ │ + glyphColor.a *= alpha; │ │ │ │ + v_FragColor = glyphColor; │ │ │ │ + #ifdef GL_ES │ │ │ │ + #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ + #define MAXPREC highp │ │ │ │ + #else │ │ │ │ + #define MAXPREC mediump │ │ │ │ + #endif │ │ │ │ + precision MAXPREC float; │ │ │ │ + #define LOW_P lowp │ │ │ │ + #define MEDIUM_P mediump │ │ │ │ + #define HIGH_P highp │ │ │ │ + #else │ │ │ │ + #define LOW_P │ │ │ │ + #define MEDIUM_P │ │ │ │ + #define HIGH_P │ │ │ │ #endif │ │ │ │ - return position; │ │ │ │ - vec2 calcLineTransformedAxisPos(vec2 originalAxisPos, vec2 shiftedPos, mat4 modelView, float halfWidth) │ │ │ │ - vec2 p = (vec4(shiftedPos, 0.0, 1.0) * modelView).xy; │ │ │ │ - vec2 d = p - originalAxisPos; │ │ │ │ - if (dot(d, d) != 0.0) │ │ │ │ - return originalAxisPos + normalize(d) * halfWidth; │ │ │ │ - else │ │ │ │ - return originalAxisPos; │ │ │ │ + in vec2 v_colorTexCoords; │ │ │ │ + in vec4 v_offset0; │ │ │ │ + in vec4 v_offset1; │ │ │ │ + in vec4 v_offset2; │ │ │ │ + out vec4 v_FragColor; │ │ │ │ + uniform sampler2D u_colorTex; │ │ │ │ + #define SMAA_THRESHOLD 0.05 │ │ │ │ + const vec2 kThreshold = vec2(SMAA_THRESHOLD, SMAA_THRESHOLD); │ │ │ │ + #define SMAA_LOCAL_CONTRAST_ADAPTATION_FACTOR 2.0 │ │ │ │ + const vec3 kWeights = vec3(0.2126, 0.7152, 0.0722); │ │ │ │ + const float kShapeCoordScalar = 1000.0; │ │ │ │ void main() │ │ │ │ - gl_Position = vec4(a_position, 0, 1) * u_modelView * u_projection; │ │ │ │ - #ifdef VULKAN │ │ │ │ - gl_Position.y = -gl_Position.y; │ │ │ │ - gl_Position.z = (gl_Position.z + gl_Position.w) * 0.5; │ │ │ │ + float L = dot(texture(u_colorTex, v_colorTexCoords).rgb, kWeights); │ │ │ │ + float Lleft = dot(texture(u_colorTex, v_offset0.xy).rgb, kWeights); │ │ │ │ + float Ltop = dot(texture(u_colorTex, v_offset0.zw).rgb, kWeights); │ │ │ │ + vec4 delta; │ │ │ │ + delta.xy = abs(L - vec2(Lleft, Ltop)); │ │ │ │ + vec2 edges = step(kThreshold, delta.xy); │ │ │ │ + if (dot(edges, vec2(1.0, 1.0)) == 0.0) │ │ │ │ + discard; │ │ │ │ + float Lright = dot(texture(u_colorTex, v_offset1.xy).rgb, kWeights); │ │ │ │ + float Lbottom = dot(texture(u_colorTex, v_offset1.zw).rgb, kWeights); │ │ │ │ + delta.zw = abs(L - vec2(Lright, Lbottom)); │ │ │ │ + vec2 maxDelta = max(delta.xy, delta.zw); │ │ │ │ + float Lleftleft = dot(texture(u_colorTex, v_offset2.xy).rgb, kWeights); │ │ │ │ + float Ltoptop = dot(texture(u_colorTex, v_offset2.zw).rgb, kWeights); │ │ │ │ + delta.zw = abs(vec2(Lleft, Ltop) - vec2(Lleftleft, Ltoptop)); │ │ │ │ + maxDelta = max(maxDelta.xy, delta.zw); │ │ │ │ + float finalDelta = max(maxDelta.x, maxDelta.y); │ │ │ │ + edges *= step(finalDelta, SMAA_LOCAL_CONTRAST_ADAPTATION_FACTOR * delta.xy); │ │ │ │ + v_FragColor = vec4(edges, 0.0, 1.0); │ │ │ │ + #ifdef GL_ES │ │ │ │ + #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ + #define MAXPREC highp │ │ │ │ + #else │ │ │ │ + #define MAXPREC mediump │ │ │ │ + #endif │ │ │ │ + precision MAXPREC float; │ │ │ │ + #define LOW_P lowp │ │ │ │ + #define MEDIUM_P mediump │ │ │ │ + #define HIGH_P highp │ │ │ │ + #else │ │ │ │ + #define LOW_P │ │ │ │ + #define MEDIUM_P │ │ │ │ + #define HIGH_P │ │ │ │ #endif │ │ │ │ - v_colorTexCoords = a_colorTexCoords; │ │ │ │ + in vec4 v_offsets; │ │ │ │ + in vec4 v_color; │ │ │ │ + out vec4 v_FragColor; │ │ │ │ + const float kShapeCoordScalar = 1000.0; │ │ │ │ + void main() │ │ │ │ + vec4 finalColor = v_color; │ │ │ │ + vec2 radius; │ │ │ │ + radius.x = max(0.0, abs(v_offsets.x) - v_offsets.z); │ │ │ │ + radius.y = max(0.0, abs(v_offsets.y) - v_offsets.w); │ │ │ │ + float maxRadius = 1.0; │ │ │ │ + float aaRadius = 0.9; │ │ │ │ + float stepValue = smoothstep(aaRadius * aaRadius, maxRadius * maxRadius, dot(radius.xy, radius.xy)); │ │ │ │ + finalColor.a = finalColor.a * (1.0 - stepValue); │ │ │ │ + v_FragColor = finalColor; │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -29945,28 +29667,29 @@ │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ in vec2 v_colorTexCoords; │ │ │ │ + in vec2 v_maskTexCoords; │ │ │ │ out vec4 v_FragColor; │ │ │ │ uniform mat4 u_modelView; │ │ │ │ uniform mat4 u_projection; │ │ │ │ uniform mat4 u_pivotTransform; │ │ │ │ - uniform vec4 u_position; │ │ │ │ - uniform vec2 u_lineParams; │ │ │ │ - uniform float u_accuracy; │ │ │ │ - uniform float u_zScale; │ │ │ │ + uniform vec2 u_contrastGamma; │ │ │ │ uniform float u_opacity; │ │ │ │ - uniform float u_azimut; │ │ │ │ + uniform float u_zScale; │ │ │ │ + uniform float u_interpolation; │ │ │ │ + uniform float u_isOutlinePass; │ │ │ │ uniform sampler2D u_colorTex; │ │ │ │ + uniform sampler2D u_maskTex; │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ void main() │ │ │ │ - vec4 finalColor = texture(u_colorTex, v_colorTexCoords); │ │ │ │ + vec4 finalColor = texture(u_colorTex, v_colorTexCoords) * texture(u_maskTex, v_maskTexCoords); │ │ │ │ finalColor.a *= u_opacity; │ │ │ │ v_FragColor = finalColor; │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ @@ -29976,20 +29699,71 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ + in vec4 v_normal; │ │ │ │ + #ifdef ENABLE_VTF │ │ │ │ + in LOW_P vec4 v_color; │ │ │ │ + #else │ │ │ │ + in vec2 v_colorTexCoords; │ │ │ │ uniform sampler2D u_colorTex; │ │ │ │ - in vec3 v_texCoords; │ │ │ │ + #endif │ │ │ │ + out vec4 v_FragColor; │ │ │ │ + uniform mat4 u_modelView; │ │ │ │ + uniform mat4 u_projection; │ │ │ │ + uniform mat4 u_pivotTransform; │ │ │ │ + uniform vec2 u_contrastGamma; │ │ │ │ + uniform float u_opacity; │ │ │ │ + uniform float u_zScale; │ │ │ │ + uniform float u_interpolation; │ │ │ │ + uniform float u_isOutlinePass; │ │ │ │ + const float aaPixelsCount = 2.5; │ │ │ │ + const float kShapeCoordScalar = 1000.0; │ │ │ │ + void main() │ │ │ │ + #ifdef ENABLE_VTF │ │ │ │ + LOW_P vec4 color = v_color; │ │ │ │ + #else │ │ │ │ + LOW_P vec4 color = texture(u_colorTex, v_colorTexCoords); │ │ │ │ + #endif │ │ │ │ + float r1 = (v_normal.z - aaPixelsCount) * (v_normal.z - aaPixelsCount); │ │ │ │ + float r2 = v_normal.x * v_normal.x + v_normal.y * v_normal.y; │ │ │ │ + float r3 = v_normal.z * v_normal.z; │ │ │ │ + float alpha = mix(step(r3, r2), smoothstep(r1, r3, r2), v_normal.w); │ │ │ │ + LOW_P vec4 finalColor = color; │ │ │ │ + finalColor.a = finalColor.a * u_opacity * (1.0 - alpha); │ │ │ │ + if (finalColor.a == 0.0) │ │ │ │ + discard; │ │ │ │ + v_FragColor = finalColor; │ │ │ │ + #ifdef GL_ES │ │ │ │ + #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ + #define MAXPREC highp │ │ │ │ + #else │ │ │ │ + #define MAXPREC mediump │ │ │ │ + #endif │ │ │ │ + precision MAXPREC float; │ │ │ │ + #define LOW_P lowp │ │ │ │ + #define MEDIUM_P mediump │ │ │ │ + #define HIGH_P highp │ │ │ │ + #else │ │ │ │ + #define LOW_P │ │ │ │ + #define MEDIUM_P │ │ │ │ + #define HIGH_P │ │ │ │ + #endif │ │ │ │ + in float v_intensity; │ │ │ │ out vec4 v_FragColor; │ │ │ │ + uniform mat4 u_transform; │ │ │ │ + uniform mat4 u_normalTransform; │ │ │ │ + uniform vec4 u_color; │ │ │ │ + uniform vec2 u_texCoordFlipping; │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ void main() │ │ │ │ - v_FragColor = texture(u_colorTex, v_texCoords.xy); │ │ │ │ + v_FragColor = vec4(u_color.rgb, u_color.a * v_intensity); │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -29997,21 +29771,34 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ - #define TILE_BACKGROUND_MAX_COUNT 64 │ │ │ │ - out vec3 v_texCoords; │ │ │ │ - uniform vec4 u_tileCoordsMinMax[TILE_BACKGROUND_MAX_COUNT]; │ │ │ │ - uniform int u_textureIndex[TILE_BACKGROUND_MAX_COUNT]; │ │ │ │ + in vec3 a_position; │ │ │ │ + in vec4 a_normal; │ │ │ │ + in vec4 a_colorTexCoords; │ │ │ │ + out vec4 v_normal; │ │ │ │ + #ifdef ENABLE_VTF │ │ │ │ + out LOW_P vec4 v_color; │ │ │ │ + #else │ │ │ │ + out vec2 v_colorTexCoords; │ │ │ │ + #endif │ │ │ │ uniform mat4 u_modelView; │ │ │ │ uniform mat4 u_projection; │ │ │ │ uniform mat4 u_pivotTransform; │ │ │ │ + uniform vec2 u_contrastGamma; │ │ │ │ + uniform float u_opacity; │ │ │ │ + uniform float u_zScale; │ │ │ │ + uniform float u_interpolation; │ │ │ │ + uniform float u_isOutlinePass; │ │ │ │ + #ifdef ENABLE_VTF │ │ │ │ + uniform sampler2D u_colorTex; │ │ │ │ + #endif │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ vec4 applyPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ) │ │ │ │ vec4 transformedPivot = pivot; │ │ │ │ float w = transformedPivot.w; │ │ │ │ transformedPivot.xyw = (pivotTransform * vec4(transformedPivot.xy, pivotRealZ, w)).xyw; │ │ │ │ transformedPivot.z *= transformedPivot.w / w; │ │ │ │ #ifdef VULKAN │ │ │ │ @@ -30033,20 +29820,23 @@ │ │ │ │ vec2 p = (vec4(shiftedPos, 0.0, 1.0) * modelView).xy; │ │ │ │ vec2 d = p - originalAxisPos; │ │ │ │ if (dot(d, d) != 0.0) │ │ │ │ return originalAxisPos + normalize(d) * halfWidth; │ │ │ │ else │ │ │ │ return originalAxisPos; │ │ │ │ void main() │ │ │ │ - vec2 quadVertex = vec2(gl_VertexID & 1, (gl_VertexID >> 1) & 1); │ │ │ │ - vec4 tileCoordsMinMax = u_tileCoordsMinMax[gl_InstanceID]; │ │ │ │ - vec2 worldPos = mix(tileCoordsMinMax.xy, tileCoordsMinMax.zw, quadVertex); │ │ │ │ - vec4 pos = vec4(worldPos, 0.0, 1.0) * u_modelView * u_projection; │ │ │ │ - gl_Position = applyPivotTransform(pos, u_pivotTransform, 0.0); │ │ │ │ - v_texCoords = vec3(quadVertex, float(u_textureIndex[gl_InstanceID])); │ │ │ │ + vec4 p = vec4(a_position, 1) * u_modelView; │ │ │ │ + vec4 pos = vec4(a_normal.xy + a_colorTexCoords.zw, 0, 0) + p; │ │ │ │ + gl_Position = applyPivotTransform(pos * u_projection, u_pivotTransform, 0.0); │ │ │ │ + #ifdef ENABLE_VTF │ │ │ │ + v_color = texture(u_colorTex, a_colorTexCoords.xy); │ │ │ │ + #else │ │ │ │ + v_colorTexCoords = a_colorTexCoords.xy; │ │ │ │ + #endif │ │ │ │ + v_normal = a_normal; │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -30054,20 +29844,23 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ - uniform MEDIUM_P sampler2DArray u_colorTex; │ │ │ │ - in vec3 v_texCoords; │ │ │ │ + in float v_intensity; │ │ │ │ out vec4 v_FragColor; │ │ │ │ + uniform mat4 u_transform; │ │ │ │ + uniform mat4 u_normalTransform; │ │ │ │ + uniform vec4 u_color; │ │ │ │ + uniform vec2 u_texCoordFlipping; │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ void main() │ │ │ │ - v_FragColor = texture(u_colorTex, v_texCoords); │ │ │ │ + v_FragColor = vec4(u_color.rgb, u_color.a * smoothstep(0.7, 1.0, v_intensity)); │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -30075,44 +29868,59 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ - in vec2 v_colorTexCoord; │ │ │ │ - in vec2 v_maskTexCoord; │ │ │ │ - in float v_halfLength; │ │ │ │ - out vec4 v_FragColor; │ │ │ │ + in vec4 a_position; │ │ │ │ + in vec2 a_normal; │ │ │ │ + in vec2 a_colorTexCoords; │ │ │ │ + out vec2 v_colorTexCoords; │ │ │ │ uniform mat4 u_modelView; │ │ │ │ uniform mat4 u_projection; │ │ │ │ uniform mat4 u_pivotTransform; │ │ │ │ - uniform vec4 u_trafficParams; │ │ │ │ - uniform vec4 u_outlineColor; │ │ │ │ - uniform vec4 u_lightArrowColor; │ │ │ │ - uniform vec4 u_darkArrowColor; │ │ │ │ - uniform float u_outline; │ │ │ │ + uniform vec2 u_contrastGamma; │ │ │ │ uniform float u_opacity; │ │ │ │ - uniform sampler2D u_colorTex; │ │ │ │ - uniform sampler2D u_maskTex; │ │ │ │ - const float kAntialiasingThreshold = 0.92; │ │ │ │ - const float kOutlineThreshold1 = 0.8; │ │ │ │ - const float kOutlineThreshold2 = 0.5; │ │ │ │ - const float kMaskOpacity = 0.7; │ │ │ │ + uniform float u_zScale; │ │ │ │ + uniform float u_interpolation; │ │ │ │ + uniform float u_isOutlinePass; │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ + vec4 applyPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ) │ │ │ │ + vec4 transformedPivot = pivot; │ │ │ │ + float w = transformedPivot.w; │ │ │ │ + transformedPivot.xyw = (pivotTransform * vec4(transformedPivot.xy, pivotRealZ, w)).xyw; │ │ │ │ + transformedPivot.z *= transformedPivot.w / w; │ │ │ │ + #ifdef VULKAN │ │ │ │ + transformedPivot.y = -transformedPivot.y; │ │ │ │ + transformedPivot.z = (transformedPivot.z + transformedPivot.w) / 2.0; │ │ │ │ + #endif │ │ │ │ + return transformedPivot; │ │ │ │ + vec4 applyBillboardPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ, vec2 offset) │ │ │ │ + float logicZ = pivot.z / pivot.w; │ │ │ │ + vec4 transformedPivot = pivotTransform * vec4(pivot.xy, pivotRealZ, pivot.w); │ │ │ │ + vec4 scale = pivotTransform * vec4(1.0, -1.0, 0.0, 1.0); │ │ │ │ + vec4 position = vec4(transformedPivot.xy / transformedPivot.w, logicZ, 1.0) + vec4(offset / scale.w * scale.x, 0.0, 0.0); │ │ │ │ + #ifdef VULKAN │ │ │ │ + position.y = -position.y; │ │ │ │ + position.z = (position.z + position.w) / 2.0; │ │ │ │ + #endif │ │ │ │ + return position; │ │ │ │ + vec2 calcLineTransformedAxisPos(vec2 originalAxisPos, vec2 shiftedPos, mat4 modelView, float halfWidth) │ │ │ │ + vec2 p = (vec4(shiftedPos, 0.0, 1.0) * modelView).xy; │ │ │ │ + vec2 d = p - originalAxisPos; │ │ │ │ + if (dot(d, d) != 0.0) │ │ │ │ + return originalAxisPos + normalize(d) * halfWidth; │ │ │ │ + else │ │ │ │ + return originalAxisPos; │ │ │ │ void main() │ │ │ │ - vec4 color = texture(u_colorTex, v_colorTexCoord); │ │ │ │ - float alphaCode = color.a; │ │ │ │ - vec4 mask = texture(u_maskTex, v_maskTexCoord); │ │ │ │ - color.a = u_opacity * (1.0 - smoothstep(kAntialiasingThreshold, 1.0, abs(v_halfLength))); │ │ │ │ - color.rgb = mix(color.rgb, mask.rgb * mix(u_lightArrowColor.rgb, u_darkArrowColor.rgb, step(alphaCode, 0.6)), mask.a * kMaskOpacity); │ │ │ │ - if (u_outline > 0.0) │ │ │ │ - color.rgb = mix(color.rgb, u_outlineColor.rgb, step(kOutlineThreshold1, abs(v_halfLength))); │ │ │ │ - color.rgb = mix(color.rgb, u_outlineColor.rgb, smoothstep(kOutlineThreshold2, kOutlineThreshold1, abs(v_halfLength))); │ │ │ │ - v_FragColor = color; │ │ │ │ + vec4 pos = vec4(a_position.xyz, 1) * u_modelView; │ │ │ │ + vec4 shiftedPos = vec4(a_normal, 0, 0) + pos; │ │ │ │ + gl_Position = applyPivotTransform(shiftedPos * u_projection, u_pivotTransform, 0.0); │ │ │ │ + v_colorTexCoords = a_colorTexCoords; │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -30121,29 +29929,32 @@ │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ in vec3 a_position; │ │ │ │ - in vec4 a_normal; │ │ │ │ - in vec4 a_colorTexCoord; │ │ │ │ + in vec3 a_normal; │ │ │ │ + in vec2 a_colorTexCoord; │ │ │ │ + #ifdef ENABLE_VTF │ │ │ │ + out LOW_P vec4 v_color; │ │ │ │ + #else │ │ │ │ out vec2 v_colorTexCoord; │ │ │ │ - out vec2 v_maskTexCoord; │ │ │ │ - out float v_halfLength; │ │ │ │ + #endif │ │ │ │ uniform mat4 u_modelView; │ │ │ │ uniform mat4 u_projection; │ │ │ │ uniform mat4 u_pivotTransform; │ │ │ │ - uniform vec4 u_trafficParams; │ │ │ │ - uniform vec4 u_outlineColor; │ │ │ │ - uniform vec4 u_lightArrowColor; │ │ │ │ - uniform vec4 u_darkArrowColor; │ │ │ │ - uniform float u_outline; │ │ │ │ + uniform vec2 u_contrastGamma; │ │ │ │ uniform float u_opacity; │ │ │ │ - const float kArrowVSize = 0.25; │ │ │ │ + uniform float u_zScale; │ │ │ │ + uniform float u_interpolation; │ │ │ │ + uniform float u_isOutlinePass; │ │ │ │ + #ifdef ENABLE_VTF │ │ │ │ + uniform sampler2D u_colorTex; │ │ │ │ + #endif │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ vec4 applyPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ) │ │ │ │ vec4 transformedPivot = pivot; │ │ │ │ float w = transformedPivot.w; │ │ │ │ transformedPivot.xyw = (pivotTransform * vec4(transformedPivot.xy, pivotRealZ, w)).xyw; │ │ │ │ transformedPivot.z *= transformedPivot.w / w; │ │ │ │ #ifdef VULKAN │ │ │ │ @@ -30166,27 +29977,24 @@ │ │ │ │ vec2 d = p - originalAxisPos; │ │ │ │ if (dot(d, d) != 0.0) │ │ │ │ return originalAxisPos + normalize(d) * halfWidth; │ │ │ │ else │ │ │ │ return originalAxisPos; │ │ │ │ void main() │ │ │ │ vec2 normal = a_normal.xy; │ │ │ │ + float halfWidth = length(normal); │ │ │ │ vec2 transformedAxisPos = (vec4(a_position.xy, 0.0, 1.0) * u_modelView).xy; │ │ │ │ - if (dot(normal, normal) != 0.0) │ │ │ │ - vec2 norm = normal * u_trafficParams.x; │ │ │ │ - if (a_normal.z < 0.0) │ │ │ │ - norm = normal * u_trafficParams.y; │ │ │ │ - transformedAxisPos = calcLineTransformedAxisPos(transformedAxisPos, a_position.xy + norm, │ │ │ │ - u_modelView, length(norm)); │ │ │ │ - float uOffset = length(vec4(kShapeCoordScalar, 0, 0, 0) * u_modelView) * a_normal.w; │ │ │ │ - v_colorTexCoord = a_colorTexCoord.xy; │ │ │ │ - float v = mix(a_colorTexCoord.z, a_colorTexCoord.z + kArrowVSize, 0.5 * a_normal.z + 0.5); │ │ │ │ - v_maskTexCoord = vec2(uOffset * u_trafficParams.z, v) * u_trafficParams.w; │ │ │ │ - v_maskTexCoord.x *= step(a_colorTexCoord.w, v_maskTexCoord.x); │ │ │ │ - v_halfLength = a_normal.z; │ │ │ │ + if (halfWidth != 0.0) │ │ │ │ + transformedAxisPos = calcLineTransformedAxisPos(transformedAxisPos, a_position.xy + normal, │ │ │ │ + u_modelView, halfWidth); │ │ │ │ + #ifdef ENABLE_VTF │ │ │ │ + v_color = texture(u_colorTex, a_colorTexCoord); │ │ │ │ + #else │ │ │ │ + v_colorTexCoord = a_colorTexCoord; │ │ │ │ + #endif │ │ │ │ vec4 pos = vec4(transformedAxisPos, a_position.z, 1.0) * u_projection; │ │ │ │ gl_Position = applyPivotTransform(pos, u_pivotTransform, 0.0); │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ @@ -30196,67 +30004,32 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ - in vec2 v_colorTexCoord; │ │ │ │ - in vec3 v_radius; │ │ │ │ - out vec4 v_FragColor; │ │ │ │ - uniform mat4 u_modelView; │ │ │ │ - uniform mat4 u_projection; │ │ │ │ - uniform mat4 u_pivotTransform; │ │ │ │ - uniform vec4 u_trafficParams; │ │ │ │ - uniform vec4 u_outlineColor; │ │ │ │ - uniform vec4 u_lightArrowColor; │ │ │ │ - uniform vec4 u_darkArrowColor; │ │ │ │ - uniform float u_outline; │ │ │ │ - uniform float u_opacity; │ │ │ │ - uniform sampler2D u_colorTex; │ │ │ │ - const float kAntialiasingThreshold = 0.92; │ │ │ │ - const float kShapeCoordScalar = 1000.0; │ │ │ │ - void main() │ │ │ │ - vec4 color = texture(u_colorTex, v_colorTexCoord); │ │ │ │ - float smallRadius = v_radius.z * kAntialiasingThreshold; │ │ │ │ - float stepValue = smoothstep(smallRadius * smallRadius, v_radius.z * v_radius.z, │ │ │ │ - v_radius.x * v_radius.x + v_radius.y * v_radius.y); │ │ │ │ - color.a = u_opacity * (1.0 - stepValue); │ │ │ │ - if (color.a < 0.01) │ │ │ │ - discard; │ │ │ │ - v_FragColor = color; │ │ │ │ - #ifdef GL_ES │ │ │ │ - #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ - #define MAXPREC highp │ │ │ │ - #else │ │ │ │ - #define MAXPREC mediump │ │ │ │ - #endif │ │ │ │ - precision MAXPREC float; │ │ │ │ - #define LOW_P lowp │ │ │ │ - #define MEDIUM_P mediump │ │ │ │ - #define HIGH_P highp │ │ │ │ + in vec3 a_position; │ │ │ │ + in vec2 a_colorTexCoords; │ │ │ │ + #ifdef ENABLE_VTF │ │ │ │ + out LOW_P vec4 v_color; │ │ │ │ #else │ │ │ │ - #define LOW_P │ │ │ │ - #define MEDIUM_P │ │ │ │ - #define HIGH_P │ │ │ │ + out vec2 v_colorTexCoords; │ │ │ │ #endif │ │ │ │ - in vec4 a_position; │ │ │ │ - in vec4 a_normal; │ │ │ │ - in vec2 a_colorTexCoord; │ │ │ │ - out vec2 v_colorTexCoord; │ │ │ │ - out vec3 v_radius; │ │ │ │ uniform mat4 u_modelView; │ │ │ │ uniform mat4 u_projection; │ │ │ │ uniform mat4 u_pivotTransform; │ │ │ │ - uniform vec4 u_trafficParams; │ │ │ │ - uniform vec4 u_outlineColor; │ │ │ │ - uniform vec4 u_lightArrowColor; │ │ │ │ - uniform vec4 u_darkArrowColor; │ │ │ │ - uniform float u_outline; │ │ │ │ + uniform vec2 u_contrastGamma; │ │ │ │ uniform float u_opacity; │ │ │ │ + uniform float u_zScale; │ │ │ │ + uniform float u_interpolation; │ │ │ │ + uniform float u_isOutlinePass; │ │ │ │ + #ifdef ENABLE_VTF │ │ │ │ + uniform sampler2D u_colorTex; │ │ │ │ + #endif │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ vec4 applyPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ) │ │ │ │ vec4 transformedPivot = pivot; │ │ │ │ float w = transformedPivot.w; │ │ │ │ transformedPivot.xyw = (pivotTransform * vec4(transformedPivot.xy, pivotRealZ, w)).xyw; │ │ │ │ transformedPivot.z *= transformedPivot.w / w; │ │ │ │ #ifdef VULKAN │ │ │ │ @@ -30278,28 +30051,21 @@ │ │ │ │ vec2 p = (vec4(shiftedPos, 0.0, 1.0) * modelView).xy; │ │ │ │ vec2 d = p - originalAxisPos; │ │ │ │ if (dot(d, d) != 0.0) │ │ │ │ return originalAxisPos + normalize(d) * halfWidth; │ │ │ │ else │ │ │ │ return originalAxisPos; │ │ │ │ void main() │ │ │ │ - vec2 normal = a_normal.xy; │ │ │ │ - vec2 transformedAxisPos = (vec4(a_position.xy, 0.0, 1.0) * u_modelView).xy; │ │ │ │ - int index = int(a_position.w); │ │ │ │ - float leftSize = u_lightArrowColor[index]; │ │ │ │ - float rightSize = u_darkArrowColor[index]; │ │ │ │ - if (dot(normal, normal) != 0.0) │ │ │ │ - vec2 norm = normal * 0.5 * (rightSize - leftSize); │ │ │ │ - transformedAxisPos = calcLineTransformedAxisPos(transformedAxisPos, a_position.xy + norm, │ │ │ │ - u_modelView, length(norm)); │ │ │ │ - v_radius = vec3(a_normal.zw, 1.0) * 0.5 * (leftSize + rightSize); │ │ │ │ - vec2 finalPos = transformedAxisPos + v_radius.xy; │ │ │ │ - v_colorTexCoord = a_colorTexCoord; │ │ │ │ - vec4 pos = vec4(finalPos, a_position.z, 1.0) * u_projection; │ │ │ │ + vec4 pos = vec4(a_position, 1) * u_modelView * u_projection; │ │ │ │ gl_Position = applyPivotTransform(pos, u_pivotTransform, 0.0); │ │ │ │ + #ifdef ENABLE_VTF │ │ │ │ + v_color = texture(u_colorTex, a_colorTexCoords); │ │ │ │ + #else │ │ │ │ + v_colorTexCoords = a_colorTexCoords; │ │ │ │ + #endif │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -30307,30 +30073,112 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ - in vec2 v_colorTexCoord; │ │ │ │ + in vec4 v_coords; │ │ │ │ + in vec4 v_offset0; │ │ │ │ + in vec4 v_offset1; │ │ │ │ + in vec4 v_offset2; │ │ │ │ out vec4 v_FragColor; │ │ │ │ - uniform mat4 u_modelView; │ │ │ │ - uniform mat4 u_projection; │ │ │ │ - uniform mat4 u_pivotTransform; │ │ │ │ - uniform vec4 u_trafficParams; │ │ │ │ - uniform vec4 u_outlineColor; │ │ │ │ - uniform vec4 u_lightArrowColor; │ │ │ │ - uniform vec4 u_darkArrowColor; │ │ │ │ - uniform float u_outline; │ │ │ │ - uniform float u_opacity; │ │ │ │ + uniform vec4 u_framebufferMetrics; │ │ │ │ uniform sampler2D u_colorTex; │ │ │ │ + uniform sampler2D u_smaaArea; │ │ │ │ + uniform sampler2D u_smaaSearch; │ │ │ │ + #define SMAA_SEARCHTEX_SIZE vec2(66.0, 33.0) │ │ │ │ + #define SMAA_SEARCHTEX_PACKED_SIZE vec2(64.0, 16.0) │ │ │ │ + #define SMAA_AREATEX_MAX_DISTANCE 16.0 │ │ │ │ + #define SMAA_AREATEX_PIXEL_SIZE (vec2(1.0 / 256.0, 1.0 / 1024.0)) │ │ │ │ + #define SMAALoopBegin(condition) while (condition) { │ │ │ │ + #define SMAALoopEnd } │ │ │ │ + #define SMAASampleLevelZero(tex, coord) textureLod(tex, coord, 0.0) │ │ │ │ + #define SMAASampleLevelZeroOffset(tex, coord, offset) textureLodOffset(tex, coord, 0.0, offset) │ │ │ │ + #define SMAARound(v) round((v)) │ │ │ │ + #define SMAAOffset(x,y) ivec2(x,y) │ │ │ │ + const vec2 kAreaTexMaxDistance = vec2(SMAA_AREATEX_MAX_DISTANCE, SMAA_AREATEX_MAX_DISTANCE); │ │ │ │ + const float kActivationThreshold = 0.8281; │ │ │ │ + float SMAASearchLength(vec2 e, float offset) │ │ │ │ + vec2 scale = SMAA_SEARCHTEX_SIZE * vec2(0.5, -1.0); │ │ │ │ + vec2 bias = SMAA_SEARCHTEX_SIZE * vec2(offset, 1.0); │ │ │ │ + scale += vec2(-1.0, 1.0); │ │ │ │ + bias += vec2( 0.5, -0.5); │ │ │ │ + scale *= 1.0 / SMAA_SEARCHTEX_PACKED_SIZE; │ │ │ │ + bias *= 1.0 / SMAA_SEARCHTEX_PACKED_SIZE; │ │ │ │ + return SMAASampleLevelZero(u_smaaSearch, scale * e + bias).r; │ │ │ │ + float SMAASearchXLeft(vec2 texcoord, float end) │ │ │ │ + vec2 e = vec2(0.0, 1.0); │ │ │ │ + SMAALoopBegin(texcoord.x > end && e.g > kActivationThreshold && e.r == 0.0) │ │ │ │ + e = SMAASampleLevelZero(u_colorTex, texcoord).rg; │ │ │ │ + texcoord = vec2(-2.0, 0.0) * u_framebufferMetrics.xy + texcoord; │ │ │ │ + SMAALoopEnd │ │ │ │ + float offset = 3.25 - (255.0 / 127.0) * SMAASearchLength(e, 0.0); │ │ │ │ + return u_framebufferMetrics.x * offset + texcoord.x; │ │ │ │ + float SMAASearchXRight(vec2 texcoord, float end) │ │ │ │ + vec2 e = vec2(0.0, 1.0); │ │ │ │ + SMAALoopBegin(texcoord.x < end && e.g > kActivationThreshold && e.r == 0.0) │ │ │ │ + e = SMAASampleLevelZero(u_colorTex, texcoord).rg; │ │ │ │ + texcoord = vec2(2.0, 0.0) * u_framebufferMetrics.xy + texcoord; │ │ │ │ + SMAALoopEnd │ │ │ │ + float offset = 3.25 - (255.0 / 127.0) * SMAASearchLength(e, 0.5); │ │ │ │ + return -u_framebufferMetrics.x * offset + texcoord.x; │ │ │ │ + float SMAASearchYUp(vec2 texcoord, float end) │ │ │ │ + vec2 e = vec2(1.0, 0.0); │ │ │ │ + SMAALoopBegin(texcoord.y > end && e.r > kActivationThreshold && e.g == 0.0) │ │ │ │ + e = SMAASampleLevelZero(u_colorTex, texcoord).rg; │ │ │ │ + texcoord = vec2(0.0, -2.0) * u_framebufferMetrics.xy + texcoord; │ │ │ │ + SMAALoopEnd │ │ │ │ + float offset = 3.25 - (255.0 / 127.0) * SMAASearchLength(e.gr, 0.0); │ │ │ │ + return u_framebufferMetrics.y * offset + texcoord.y; │ │ │ │ + float SMAASearchYDown(vec2 texcoord, float end) │ │ │ │ + vec2 e = vec2(1.0, 0.0); │ │ │ │ + SMAALoopBegin(texcoord.y < end && e.r > kActivationThreshold && e.g == 0.0) │ │ │ │ + e = SMAASampleLevelZero(u_colorTex, texcoord).rg; │ │ │ │ + texcoord = vec2(0.0, 2.0) * u_framebufferMetrics.xy + texcoord; │ │ │ │ + SMAALoopEnd │ │ │ │ + float offset = 3.25 - (255.0 / 127.0) * SMAASearchLength(e.gr, 0.5); │ │ │ │ + return -u_framebufferMetrics.y * offset + texcoord.y; │ │ │ │ + vec2 SMAAArea(vec2 dist, float e1, float e2) │ │ │ │ + vec2 texcoord = kAreaTexMaxDistance * SMAARound(4.0 * vec2(e1, e2)) + dist; │ │ │ │ + texcoord = SMAA_AREATEX_PIXEL_SIZE * (texcoord + 0.5); │ │ │ │ + return SMAASampleLevelZero(u_smaaArea, texcoord).rg; │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ void main() │ │ │ │ - vec4 color = texture(u_colorTex, v_colorTexCoord); │ │ │ │ - v_FragColor = vec4(color.rgb, u_opacity); │ │ │ │ + vec4 weights = vec4(0.0, 0.0, 0.0, 0.0); │ │ │ │ + vec2 e = texture(u_colorTex, v_coords.xy).rg; │ │ │ │ + if (e.g > 0.0) // Edge at north │ │ │ │ + vec2 d; │ │ │ │ + vec3 coords; │ │ │ │ + coords.x = SMAASearchXLeft(v_offset0.xy, v_offset2.x); │ │ │ │ + coords.y = v_offset1.y; │ │ │ │ + d.x = coords.x; │ │ │ │ + float e1 = SMAASampleLevelZero(u_colorTex, coords.xy).r; │ │ │ │ + coords.z = SMAASearchXRight(v_offset0.zw, v_offset2.y); │ │ │ │ + d.y = coords.z; │ │ │ │ + vec2 zz = u_framebufferMetrics.zz; │ │ │ │ + d = abs(SMAARound(zz * d - v_coords.zz)); │ │ │ │ + vec2 sqrt_d = sqrt(d); │ │ │ │ + float e2 = SMAASampleLevelZeroOffset(u_colorTex, coords.zy, SMAAOffset(1, 0)).r; │ │ │ │ + weights.rg = SMAAArea(sqrt_d, e1, e2); │ │ │ │ + if (e.r > 0.0) // Edge at west │ │ │ │ + vec2 d; │ │ │ │ + vec3 coords; │ │ │ │ + coords.y = SMAASearchYUp(v_offset1.xy, v_offset2.z); │ │ │ │ + coords.x = v_offset0.x; │ │ │ │ + d.x = coords.y; │ │ │ │ + float e1 = SMAASampleLevelZero(u_colorTex, coords.xy).g; │ │ │ │ + coords.z = SMAASearchYDown(v_offset1.zw, v_offset2.w); │ │ │ │ + d.y = coords.z; │ │ │ │ + vec2 ww = u_framebufferMetrics.ww; │ │ │ │ + d = abs(SMAARound(ww * d - v_coords.ww)); │ │ │ │ + vec2 sqrt_d = sqrt(d); │ │ │ │ + float e2 = SMAASampleLevelZeroOffset(u_colorTex, coords.xz, SMAAOffset(0, 1)).g; │ │ │ │ + weights.ba = SMAAArea(sqrt_d, e1, e2); │ │ │ │ + v_FragColor = weights; │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -30339,25 +30187,27 @@ │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ in vec3 a_position; │ │ │ │ - in vec2 a_colorTexCoord; │ │ │ │ - out vec2 v_colorTexCoord; │ │ │ │ + in vec3 a_normal; │ │ │ │ + in vec2 a_colorTexCoords; │ │ │ │ + out vec2 v_colorTexCoords; │ │ │ │ + out float v_intensity; │ │ │ │ uniform mat4 u_modelView; │ │ │ │ uniform mat4 u_projection; │ │ │ │ uniform mat4 u_pivotTransform; │ │ │ │ - uniform vec4 u_trafficParams; │ │ │ │ - uniform vec4 u_outlineColor; │ │ │ │ - uniform vec4 u_lightArrowColor; │ │ │ │ - uniform vec4 u_darkArrowColor; │ │ │ │ - uniform float u_outline; │ │ │ │ + uniform vec2 u_contrastGamma; │ │ │ │ uniform float u_opacity; │ │ │ │ + uniform float u_zScale; │ │ │ │ + uniform float u_interpolation; │ │ │ │ + uniform float u_isOutlinePass; │ │ │ │ + const vec4 kNormalizedLightDir = vec4(0.3162, 0.0, 0.9486, 0.0); │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ vec4 applyPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ) │ │ │ │ vec4 transformedPivot = pivot; │ │ │ │ float w = transformedPivot.w; │ │ │ │ transformedPivot.xyw = (pivotTransform * vec4(transformedPivot.xy, pivotRealZ, w)).xyw; │ │ │ │ transformedPivot.z *= transformedPivot.w / w; │ │ │ │ #ifdef VULKAN │ │ │ │ @@ -30379,18 +30229,31 @@ │ │ │ │ vec2 p = (vec4(shiftedPos, 0.0, 1.0) * modelView).xy; │ │ │ │ vec2 d = p - originalAxisPos; │ │ │ │ if (dot(d, d) != 0.0) │ │ │ │ return originalAxisPos + normalize(d) * halfWidth; │ │ │ │ else │ │ │ │ return originalAxisPos; │ │ │ │ void main() │ │ │ │ - vec2 transformedAxisPos = (vec4(a_position.xy, 0.0, 1.0) * u_modelView).xy; │ │ │ │ - vec4 pos = vec4(transformedAxisPos, a_position.z, 1.0) * u_projection; │ │ │ │ - v_colorTexCoord = a_colorTexCoord; │ │ │ │ - gl_Position = applyPivotTransform(pos, u_pivotTransform, 0.0); │ │ │ │ + vec4 pos = vec4(a_position, 1.0) * u_modelView; │ │ │ │ + vec4 normal = vec4(a_position + a_normal, 1.0) * u_modelView; │ │ │ │ + normal.xyw = (normal * u_projection).xyw; │ │ │ │ + normal.z = normal.z * u_zScale; │ │ │ │ + pos.xyw = (pos * u_projection).xyw; │ │ │ │ + pos.z = a_position.z * u_zScale; │ │ │ │ + vec4 normDir = normal - pos; │ │ │ │ + if (dot(normDir, normDir) != 0.0) │ │ │ │ + v_intensity = max(0.0, -dot(kNormalizedLightDir, normalize(normDir))); │ │ │ │ + else │ │ │ │ + v_intensity = 0.0; │ │ │ │ + gl_Position = u_pivotTransform * pos; │ │ │ │ + #ifdef VULKAN │ │ │ │ + gl_Position.y = -gl_Position.y; │ │ │ │ + gl_Position.z = (gl_Position.z + gl_Position.w) * 0.5; │ │ │ │ + #endif │ │ │ │ + v_colorTexCoords = a_colorTexCoords; │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -30398,19 +30261,50 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ - in vec4 v_color; │ │ │ │ out vec4 v_FragColor; │ │ │ │ + uniform vec4 u_color; │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ void main() │ │ │ │ - v_FragColor = v_color; │ │ │ │ + v_FragColor = u_color; │ │ │ │ + #ifdef GL_ES │ │ │ │ + #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ + #define MAXPREC highp │ │ │ │ + #else │ │ │ │ + #define MAXPREC mediump │ │ │ │ + #endif │ │ │ │ + precision MAXPREC float; │ │ │ │ + #define LOW_P lowp │ │ │ │ + #define MEDIUM_P mediump │ │ │ │ + #define HIGH_P highp │ │ │ │ + #else │ │ │ │ + #define LOW_P │ │ │ │ + #define MEDIUM_P │ │ │ │ + #define HIGH_P │ │ │ │ + #endif │ │ │ │ + in vec2 v_colorTexCoords; │ │ │ │ + in float v_intensity; │ │ │ │ + out vec4 v_FragColor; │ │ │ │ + uniform mat4 u_modelView; │ │ │ │ + uniform mat4 u_projection; │ │ │ │ + uniform mat4 u_pivotTransform; │ │ │ │ + uniform vec2 u_contrastGamma; │ │ │ │ + uniform float u_opacity; │ │ │ │ + uniform float u_zScale; │ │ │ │ + uniform float u_interpolation; │ │ │ │ + uniform float u_isOutlinePass; │ │ │ │ + uniform sampler2D u_colorTex; │ │ │ │ + const float kShapeCoordScalar = 1000.0; │ │ │ │ + void main() │ │ │ │ + vec4 finalColor = vec4(texture(u_colorTex, v_colorTexCoords).rgb, u_opacity); │ │ │ │ + v_FragColor = vec4((v_intensity * 0.2 + 0.8) * finalColor.rgb, finalColor.a); │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -30419,23 +30313,31 @@ │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ in vec3 a_position; │ │ │ │ - in vec4 a_normal; │ │ │ │ - in vec4 a_color; │ │ │ │ - out vec4 v_color; │ │ │ │ + in vec2 a_colorTexCoords; │ │ │ │ + #ifdef ENABLE_VTF │ │ │ │ + out LOW_P vec4 v_color; │ │ │ │ + #else │ │ │ │ + out vec2 v_colorTexCoords; │ │ │ │ + #endif │ │ │ │ uniform mat4 u_modelView; │ │ │ │ uniform mat4 u_projection; │ │ │ │ uniform mat4 u_pivotTransform; │ │ │ │ - uniform vec4 u_params; │ │ │ │ - uniform float u_lineHalfWidth; │ │ │ │ - uniform float u_maxRadius; │ │ │ │ + uniform vec2 u_contrastGamma; │ │ │ │ + uniform float u_opacity; │ │ │ │ + uniform float u_zScale; │ │ │ │ + uniform float u_interpolation; │ │ │ │ + uniform float u_isOutlinePass; │ │ │ │ + #ifdef ENABLE_VTF │ │ │ │ + uniform sampler2D u_colorTex; │ │ │ │ + #endif │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ vec4 applyPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ) │ │ │ │ vec4 transformedPivot = pivot; │ │ │ │ float w = transformedPivot.w; │ │ │ │ transformedPivot.xyw = (pivotTransform * vec4(transformedPivot.xy, pivotRealZ, w)).xyw; │ │ │ │ transformedPivot.z *= transformedPivot.w / w; │ │ │ │ #ifdef VULKAN │ │ │ │ @@ -30457,23 +30359,27 @@ │ │ │ │ vec2 p = (vec4(shiftedPos, 0.0, 1.0) * modelView).xy; │ │ │ │ vec2 d = p - originalAxisPos; │ │ │ │ if (dot(d, d) != 0.0) │ │ │ │ return originalAxisPos + normalize(d) * halfWidth; │ │ │ │ else │ │ │ │ return originalAxisPos; │ │ │ │ void main() │ │ │ │ - vec2 normal = a_normal.xy; │ │ │ │ - vec2 transformedAxisPos = (vec4(a_position.xy, 0.0, 1.0) * u_modelView).xy; │ │ │ │ - if (dot(normal, normal) != 0.0) │ │ │ │ - vec2 norm = normal * u_lineHalfWidth; │ │ │ │ - transformedAxisPos = calcLineTransformedAxisPos(transformedAxisPos, a_position.xy + norm, │ │ │ │ - u_modelView, length(norm)); │ │ │ │ - v_color = a_color; │ │ │ │ - vec4 pos = vec4(transformedAxisPos, a_position.z, 1.0) * u_projection; │ │ │ │ - gl_Position = applyPivotTransform(pos, u_pivotTransform, 0.0); │ │ │ │ + vec4 pos = vec4(a_position, 1.0) * u_modelView; │ │ │ │ + pos.xyw = (pos * u_projection).xyw; │ │ │ │ + pos.z = a_position.z * u_zScale; │ │ │ │ + gl_Position = u_pivotTransform * pos; │ │ │ │ + #ifdef VULKAN │ │ │ │ + gl_Position.y = -gl_Position.y; │ │ │ │ + gl_Position.z = (gl_Position.z + gl_Position.w) * 0.5; │ │ │ │ + #endif │ │ │ │ + #ifdef ENABLE_VTF │ │ │ │ + v_color = texture(u_colorTex, a_colorTexCoords); │ │ │ │ + #else │ │ │ │ + v_colorTexCoords = a_colorTexCoords; │ │ │ │ + #endif │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -30481,28 +30387,72 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ - in vec3 v_radius; │ │ │ │ - in vec4 v_color; │ │ │ │ - out vec4 v_FragColor; │ │ │ │ - const float aaPixelsCount = 2.5; │ │ │ │ + in vec3 a_position; │ │ │ │ + in vec4 a_normal; │ │ │ │ + in vec4 a_colorTexCoords; │ │ │ │ + out vec4 v_normal; │ │ │ │ + #ifdef ENABLE_VTF │ │ │ │ + out LOW_P vec4 v_color; │ │ │ │ + #else │ │ │ │ + out vec2 v_colorTexCoords; │ │ │ │ + #endif │ │ │ │ + uniform mat4 u_modelView; │ │ │ │ + uniform mat4 u_projection; │ │ │ │ + uniform mat4 u_pivotTransform; │ │ │ │ + uniform vec2 u_contrastGamma; │ │ │ │ + uniform float u_opacity; │ │ │ │ + uniform float u_zScale; │ │ │ │ + uniform float u_interpolation; │ │ │ │ + uniform float u_isOutlinePass; │ │ │ │ + #ifdef ENABLE_VTF │ │ │ │ + uniform sampler2D u_colorTex; │ │ │ │ + #endif │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ + vec4 applyPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ) │ │ │ │ + vec4 transformedPivot = pivot; │ │ │ │ + float w = transformedPivot.w; │ │ │ │ + transformedPivot.xyw = (pivotTransform * vec4(transformedPivot.xy, pivotRealZ, w)).xyw; │ │ │ │ + transformedPivot.z *= transformedPivot.w / w; │ │ │ │ + #ifdef VULKAN │ │ │ │ + transformedPivot.y = -transformedPivot.y; │ │ │ │ + transformedPivot.z = (transformedPivot.z + transformedPivot.w) / 2.0; │ │ │ │ + #endif │ │ │ │ + return transformedPivot; │ │ │ │ + vec4 applyBillboardPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ, vec2 offset) │ │ │ │ + float logicZ = pivot.z / pivot.w; │ │ │ │ + vec4 transformedPivot = pivotTransform * vec4(pivot.xy, pivotRealZ, pivot.w); │ │ │ │ + vec4 scale = pivotTransform * vec4(1.0, -1.0, 0.0, 1.0); │ │ │ │ + vec4 position = vec4(transformedPivot.xy / transformedPivot.w, logicZ, 1.0) + vec4(offset / scale.w * scale.x, 0.0, 0.0); │ │ │ │ + #ifdef VULKAN │ │ │ │ + position.y = -position.y; │ │ │ │ + position.z = (position.z + position.w) / 2.0; │ │ │ │ + #endif │ │ │ │ + return position; │ │ │ │ + vec2 calcLineTransformedAxisPos(vec2 originalAxisPos, vec2 shiftedPos, mat4 modelView, float halfWidth) │ │ │ │ + vec2 p = (vec4(shiftedPos, 0.0, 1.0) * modelView).xy; │ │ │ │ + vec2 d = p - originalAxisPos; │ │ │ │ + if (dot(d, d) != 0.0) │ │ │ │ + return originalAxisPos + normalize(d) * halfWidth; │ │ │ │ + else │ │ │ │ + return originalAxisPos; │ │ │ │ void main() │ │ │ │ - vec4 finalColor = v_color; │ │ │ │ - float smallRadius = v_radius.z - aaPixelsCount; │ │ │ │ - float stepValue = smoothstep(smallRadius * smallRadius, v_radius.z * v_radius.z, │ │ │ │ - dot(v_radius.xy, v_radius.xy)); │ │ │ │ - finalColor.a = finalColor.a * (1.0 - stepValue); │ │ │ │ - if (finalColor.a < 0.01) │ │ │ │ - discard; │ │ │ │ - v_FragColor = finalColor; │ │ │ │ + vec4 pivot = vec4(a_position.xyz, 1.0) * u_modelView; │ │ │ │ + vec4 offset = vec4(a_normal.xy + a_colorTexCoords.zw, 0.0, 0.0) * u_projection; │ │ │ │ + gl_Position = applyBillboardPivotTransform(pivot * u_projection, u_pivotTransform, 0.0, offset.xy); │ │ │ │ + #ifdef ENABLE_VTF │ │ │ │ + v_color = texture(u_colorTex, a_colorTexCoords.xy); │ │ │ │ + #else │ │ │ │ + v_colorTexCoords = a_colorTexCoords.xy; │ │ │ │ + #endif │ │ │ │ + v_normal = a_normal; │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -30510,25 +30460,23 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ - in vec3 a_position; │ │ │ │ - in vec4 a_normal; │ │ │ │ - in vec4 a_color; │ │ │ │ - out vec3 v_radius; │ │ │ │ - out vec4 v_color; │ │ │ │ - uniform mat4 u_modelView; │ │ │ │ - uniform mat4 u_projection; │ │ │ │ - uniform mat4 u_pivotTransform; │ │ │ │ - uniform vec4 u_params; │ │ │ │ - uniform float u_lineHalfWidth; │ │ │ │ - uniform float u_maxRadius; │ │ │ │ + in vec3 a_pos; │ │ │ │ + in vec3 a_normal; │ │ │ │ + in vec2 a_texCoords; │ │ │ │ + out vec3 v_normal; │ │ │ │ + out vec2 v_texCoords; │ │ │ │ + uniform mat4 u_transform; │ │ │ │ + uniform mat4 u_normalTransform; │ │ │ │ + uniform vec4 u_color; │ │ │ │ + uniform vec2 u_texCoordFlipping; │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ vec4 applyPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ) │ │ │ │ vec4 transformedPivot = pivot; │ │ │ │ float w = transformedPivot.w; │ │ │ │ transformedPivot.xyw = (pivotTransform * vec4(transformedPivot.xy, pivotRealZ, w)).xyw; │ │ │ │ transformedPivot.z *= transformedPivot.w / w; │ │ │ │ #ifdef VULKAN │ │ │ │ @@ -30550,25 +30498,22 @@ │ │ │ │ vec2 p = (vec4(shiftedPos, 0.0, 1.0) * modelView).xy; │ │ │ │ vec2 d = p - originalAxisPos; │ │ │ │ if (dot(d, d) != 0.0) │ │ │ │ return originalAxisPos + normalize(d) * halfWidth; │ │ │ │ else │ │ │ │ return originalAxisPos; │ │ │ │ void main() │ │ │ │ - vec2 normal = a_normal.xy; │ │ │ │ - vec2 transformedAxisPos = (vec4(a_position.xy, 0.0, 1.0) * u_modelView).xy; │ │ │ │ - if (dot(normal, normal) != 0.0) │ │ │ │ - vec2 norm = normal * u_lineHalfWidth; │ │ │ │ - transformedAxisPos = calcLineTransformedAxisPos(transformedAxisPos, a_position.xy + norm, │ │ │ │ - u_modelView, length(norm)); │ │ │ │ - transformedAxisPos += a_normal.zw * u_lineHalfWidth; │ │ │ │ - vec4 pos = vec4(transformedAxisPos, a_position.z, 1.0) * u_projection; │ │ │ │ - gl_Position = applyPivotTransform(pos, u_pivotTransform, 0.0); │ │ │ │ - v_color = a_color; │ │ │ │ - v_radius = vec3(a_normal.zw, u_maxRadius) * u_lineHalfWidth; │ │ │ │ + vec4 position = u_transform * vec4(a_pos, 1.0); │ │ │ │ + v_normal = normalize((u_normalTransform * vec4(a_normal, 0.0)).xyz); │ │ │ │ + v_texCoords = mix(a_texCoords, 1.0 - a_texCoords, u_texCoordFlipping); │ │ │ │ + gl_Position = position; │ │ │ │ + #ifdef VULKAN │ │ │ │ + gl_Position.y = -gl_Position.y; │ │ │ │ + gl_Position.z = (gl_Position.z + gl_Position.w) * 0.5; │ │ │ │ + #endif │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -30576,28 +30521,64 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ - in vec4 v_offsets; │ │ │ │ - in vec4 v_color; │ │ │ │ - out vec4 v_FragColor; │ │ │ │ + in vec4 a_position; │ │ │ │ + in vec2 a_normal; │ │ │ │ + in vec2 a_colorTexCoords; │ │ │ │ + out vec2 v_colorTexCoords; │ │ │ │ + uniform mat4 u_modelView; │ │ │ │ + uniform mat4 u_projection; │ │ │ │ + uniform mat4 u_pivotTransform; │ │ │ │ + uniform vec2 u_contrastGamma; │ │ │ │ + uniform float u_opacity; │ │ │ │ + uniform float u_zScale; │ │ │ │ + uniform float u_interpolation; │ │ │ │ + uniform float u_isOutlinePass; │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ + vec4 applyPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ) │ │ │ │ + vec4 transformedPivot = pivot; │ │ │ │ + float w = transformedPivot.w; │ │ │ │ + transformedPivot.xyw = (pivotTransform * vec4(transformedPivot.xy, pivotRealZ, w)).xyw; │ │ │ │ + transformedPivot.z *= transformedPivot.w / w; │ │ │ │ + #ifdef VULKAN │ │ │ │ + transformedPivot.y = -transformedPivot.y; │ │ │ │ + transformedPivot.z = (transformedPivot.z + transformedPivot.w) / 2.0; │ │ │ │ + #endif │ │ │ │ + return transformedPivot; │ │ │ │ + vec4 applyBillboardPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ, vec2 offset) │ │ │ │ + float logicZ = pivot.z / pivot.w; │ │ │ │ + vec4 transformedPivot = pivotTransform * vec4(pivot.xy, pivotRealZ, pivot.w); │ │ │ │ + vec4 scale = pivotTransform * vec4(1.0, -1.0, 0.0, 1.0); │ │ │ │ + vec4 position = vec4(transformedPivot.xy / transformedPivot.w, logicZ, 1.0) + vec4(offset / scale.w * scale.x, 0.0, 0.0); │ │ │ │ + #ifdef VULKAN │ │ │ │ + position.y = -position.y; │ │ │ │ + position.z = (position.z + position.w) / 2.0; │ │ │ │ + #endif │ │ │ │ + return position; │ │ │ │ + vec2 calcLineTransformedAxisPos(vec2 originalAxisPos, vec2 shiftedPos, mat4 modelView, float halfWidth) │ │ │ │ + vec2 p = (vec4(shiftedPos, 0.0, 1.0) * modelView).xy; │ │ │ │ + vec2 d = p - originalAxisPos; │ │ │ │ + if (dot(d, d) != 0.0) │ │ │ │ + return originalAxisPos + normalize(d) * halfWidth; │ │ │ │ + else │ │ │ │ + return originalAxisPos; │ │ │ │ void main() │ │ │ │ - vec4 finalColor = v_color; │ │ │ │ - vec2 radius; │ │ │ │ - radius.x = max(0.0, abs(v_offsets.x) - v_offsets.z); │ │ │ │ - radius.y = max(0.0, abs(v_offsets.y) - v_offsets.w); │ │ │ │ - float maxRadius = 1.0; │ │ │ │ - float aaRadius = 0.9; │ │ │ │ - float stepValue = smoothstep(aaRadius * aaRadius, maxRadius * maxRadius, dot(radius.xy, radius.xy)); │ │ │ │ - finalColor.a = finalColor.a * (1.0 - stepValue); │ │ │ │ - v_FragColor = finalColor; │ │ │ │ + vec4 pos = vec4(a_position.xyz, 1) * u_modelView; │ │ │ │ + float normalLen = length(a_normal); │ │ │ │ + vec4 n = vec4(a_position.xy + a_normal * kShapeCoordScalar, 0.0, 0.0) * u_modelView; │ │ │ │ + vec4 norm = vec4(0.0, 0.0, 0.0, 0.0); │ │ │ │ + if (dot(n, n) != 0.0) │ │ │ │ + norm = normalize(n) * normalLen; │ │ │ │ + vec4 shiftedPos = norm + pos; │ │ │ │ + gl_Position = applyPivotTransform(shiftedPos * u_projection, u_pivotTransform, 0.0); │ │ │ │ + v_colorTexCoords = a_colorTexCoords; │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -30605,25 +30586,15 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ - in vec3 a_position; │ │ │ │ - in vec4 a_normal; │ │ │ │ - in vec4 a_color; │ │ │ │ - out vec4 v_offsets; │ │ │ │ - out vec4 v_color; │ │ │ │ - uniform mat4 u_modelView; │ │ │ │ - uniform mat4 u_projection; │ │ │ │ - uniform mat4 u_pivotTransform; │ │ │ │ - uniform vec4 u_params; │ │ │ │ - uniform float u_lineHalfWidth; │ │ │ │ - uniform float u_maxRadius; │ │ │ │ + in vec2 a_position; │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ vec4 applyPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ) │ │ │ │ vec4 transformedPivot = pivot; │ │ │ │ float w = transformedPivot.w; │ │ │ │ transformedPivot.xyw = (pivotTransform * vec4(transformedPivot.xy, pivotRealZ, w)).xyw; │ │ │ │ transformedPivot.z *= transformedPivot.w / w; │ │ │ │ #ifdef VULKAN │ │ │ │ @@ -30645,23 +30616,19 @@ │ │ │ │ vec2 p = (vec4(shiftedPos, 0.0, 1.0) * modelView).xy; │ │ │ │ vec2 d = p - originalAxisPos; │ │ │ │ if (dot(d, d) != 0.0) │ │ │ │ return originalAxisPos + normalize(d) * halfWidth; │ │ │ │ else │ │ │ │ return originalAxisPos; │ │ │ │ void main() │ │ │ │ - vec4 pos = vec4(a_position.xy, 0, 1) * u_modelView; │ │ │ │ - vec2 normal = vec2(a_normal.x * u_params.x - a_normal.y * u_params.y, │ │ │ │ - a_normal.x * u_params.y + a_normal.y * u_params.x); │ │ │ │ - vec2 shiftedPos = normal * u_params.z + pos.xy; │ │ │ │ - pos = vec4(shiftedPos, a_position.z, 1.0) * u_projection; │ │ │ │ - gl_Position = applyPivotTransform(pos, u_pivotTransform, 0.0); │ │ │ │ - vec2 offsets = abs(a_normal.zw); │ │ │ │ - v_offsets = vec4(a_normal.zw, offsets - 1.0); │ │ │ │ - v_color = a_color; │ │ │ │ + gl_Position = vec4(a_position, 0, 1); │ │ │ │ + #ifdef VULKAN │ │ │ │ + gl_Position.y = -gl_Position.y; │ │ │ │ + gl_Position.z = (gl_Position.z + gl_Position.w) * 0.5; │ │ │ │ + #endif │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -30669,35 +30636,22 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ - in vec4 v_texCoords; │ │ │ │ - in vec4 v_maskColor; │ │ │ │ + in vec2 v_texCoords; │ │ │ │ + in vec4 v_color; │ │ │ │ out vec4 v_FragColor; │ │ │ │ - uniform mat4 u_modelView; │ │ │ │ - uniform mat4 u_projection; │ │ │ │ - uniform mat4 u_pivotTransform; │ │ │ │ - uniform vec2 u_contrastGamma; │ │ │ │ - uniform float u_opacity; │ │ │ │ - uniform float u_zScale; │ │ │ │ - uniform float u_interpolation; │ │ │ │ - uniform float u_isOutlinePass; │ │ │ │ uniform sampler2D u_colorTex; │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ void main() │ │ │ │ - vec4 color = texture(u_colorTex, v_texCoords.xy); │ │ │ │ - vec4 bgColor = texture(u_colorTex, v_texCoords.zw) * vec4(v_maskColor.xyz, 1.0); │ │ │ │ - vec4 finalColor = mix(color, mix(bgColor, color, color.a), bgColor.a); │ │ │ │ - finalColor.a = clamp(color.a + bgColor.a, 0.0, 1.0) * u_opacity * v_maskColor.w; │ │ │ │ - if (finalColor.a < 0.01) │ │ │ │ - discard; │ │ │ │ - v_FragColor = finalColor; │ │ │ │ + LOW_P vec4 color = texture(u_colorTex, v_texCoords); │ │ │ │ + v_FragColor = color * v_color; │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -30705,28 +30659,20 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ - in vec3 a_position; │ │ │ │ - in vec3 a_normalAndAnimateOrZ; │ │ │ │ - in vec4 a_texCoords; │ │ │ │ + in vec2 a_position; │ │ │ │ + in vec2 a_texCoords; │ │ │ │ in vec4 a_color; │ │ │ │ - out vec4 v_texCoords; │ │ │ │ - out vec4 v_maskColor; │ │ │ │ - uniform mat4 u_modelView; │ │ │ │ + out vec2 v_texCoords; │ │ │ │ + out vec4 v_color; │ │ │ │ uniform mat4 u_projection; │ │ │ │ - uniform mat4 u_pivotTransform; │ │ │ │ - uniform vec2 u_contrastGamma; │ │ │ │ - uniform float u_opacity; │ │ │ │ - uniform float u_zScale; │ │ │ │ - uniform float u_interpolation; │ │ │ │ - uniform float u_isOutlinePass; │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ vec4 applyPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ) │ │ │ │ vec4 transformedPivot = pivot; │ │ │ │ float w = transformedPivot.w; │ │ │ │ transformedPivot.xyw = (pivotTransform * vec4(transformedPivot.xy, pivotRealZ, w)).xyw; │ │ │ │ transformedPivot.z *= transformedPivot.w / w; │ │ │ │ #ifdef VULKAN │ │ │ │ @@ -30748,25 +30694,21 @@ │ │ │ │ vec2 p = (vec4(shiftedPos, 0.0, 1.0) * modelView).xy; │ │ │ │ vec2 d = p - originalAxisPos; │ │ │ │ if (dot(d, d) != 0.0) │ │ │ │ return originalAxisPos + normalize(d) * halfWidth; │ │ │ │ else │ │ │ │ return originalAxisPos; │ │ │ │ void main() │ │ │ │ - vec2 normal = a_normalAndAnimateOrZ.xy; │ │ │ │ - if (a_normalAndAnimateOrZ.z > 0.0) │ │ │ │ - normal = u_interpolation * normal; │ │ │ │ - vec4 p = vec4(a_position, 1.0) * u_modelView; │ │ │ │ - vec4 pos = vec4(normal, 0.0, 0.0) + p; │ │ │ │ - vec4 projectedPivot = p * u_projection; │ │ │ │ - gl_Position = applyPivotTransform(pos * u_projection, u_pivotTransform, 0.0); │ │ │ │ - float newZ = projectedPivot.y / projectedPivot.w * 0.5 + 0.5; │ │ │ │ - gl_Position.z = abs(a_normalAndAnimateOrZ.z) * newZ + (1.0 - abs(a_normalAndAnimateOrZ.z)) * gl_Position.z; │ │ │ │ v_texCoords = a_texCoords; │ │ │ │ - v_maskColor = a_color; │ │ │ │ + v_color = a_color; │ │ │ │ + gl_Position = vec4(a_position, 0, 1) * u_projection; │ │ │ │ + #ifdef VULKAN │ │ │ │ + gl_Position.y = -gl_Position.y; │ │ │ │ + gl_Position.z = (gl_Position.z + gl_Position.w) * 0.5; │ │ │ │ + #endif │ │ │ │ #ifdef GL_ES │ │ │ │ #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ #define MAXPREC highp │ │ │ │ #else │ │ │ │ #define MAXPREC mediump │ │ │ │ #endif │ │ │ │ precision MAXPREC float; │ │ │ │ @@ -30774,28 +30716,92 @@ │ │ │ │ #define MEDIUM_P mediump │ │ │ │ #define HIGH_P highp │ │ │ │ #else │ │ │ │ #define LOW_P │ │ │ │ #define MEDIUM_P │ │ │ │ #define HIGH_P │ │ │ │ #endif │ │ │ │ - in vec3 a_position; │ │ │ │ - in vec3 a_normalAndAnimateOrZ; │ │ │ │ - in vec4 a_texCoords; │ │ │ │ - in vec4 a_color; │ │ │ │ - out vec4 v_texCoords; │ │ │ │ - out vec4 v_maskColor; │ │ │ │ + in vec2 v_colorTexCoords; │ │ │ │ + out vec4 v_FragColor; │ │ │ │ + uniform float u_opacity; │ │ │ │ + uniform sampler2D u_colorTex; │ │ │ │ + const float kShapeCoordScalar = 1000.0; │ │ │ │ + void main() │ │ │ │ + vec4 finalColor = texture(u_colorTex, v_colorTexCoords); │ │ │ │ + finalColor.a *= u_opacity; │ │ │ │ + v_FragColor = finalColor; │ │ │ │ + #ifdef GL_ES │ │ │ │ + #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ + #define MAXPREC highp │ │ │ │ + #else │ │ │ │ + #define MAXPREC mediump │ │ │ │ + #endif │ │ │ │ + precision MAXPREC float; │ │ │ │ + #define LOW_P lowp │ │ │ │ + #define MEDIUM_P mediump │ │ │ │ + #define HIGH_P highp │ │ │ │ + #else │ │ │ │ + #define LOW_P │ │ │ │ + #define MEDIUM_P │ │ │ │ + #define HIGH_P │ │ │ │ + #endif │ │ │ │ + #ifdef ENABLE_VTF │ │ │ │ + in LOW_P vec4 v_color; │ │ │ │ + #else │ │ │ │ + in vec2 v_colorTexCoord; │ │ │ │ + uniform sampler2D u_colorTex; │ │ │ │ + #endif │ │ │ │ + in vec2 v_maskTexCoord; │ │ │ │ + out vec4 v_FragColor; │ │ │ │ uniform mat4 u_modelView; │ │ │ │ uniform mat4 u_projection; │ │ │ │ - uniform mat4 u_pivotTransform; │ │ │ │ uniform vec2 u_contrastGamma; │ │ │ │ + uniform vec2 u_position; │ │ │ │ + uniform float u_isOutlinePass; │ │ │ │ uniform float u_opacity; │ │ │ │ + uniform float u_length; │ │ │ │ + uniform sampler2D u_maskTex; │ │ │ │ + const float kShapeCoordScalar = 1000.0; │ │ │ │ + void main() │ │ │ │ + #ifdef ENABLE_VTF │ │ │ │ + LOW_P vec4 glyphColor = v_color; │ │ │ │ + #else │ │ │ │ + LOW_P vec4 glyphColor = texture(u_colorTex, v_colorTexCoord); │ │ │ │ + #endif │ │ │ │ + float dist = texture(u_maskTex, v_maskTexCoord).r; │ │ │ │ + float alpha = smoothstep(u_contrastGamma.x - u_contrastGamma.y, u_contrastGamma.x + u_contrastGamma.y, dist) * u_opacity; │ │ │ │ + glyphColor.a *= alpha; │ │ │ │ + v_FragColor = glyphColor; │ │ │ │ + #ifdef GL_ES │ │ │ │ + #ifdef GL_FRAGMENT_PRECISION_HIGH │ │ │ │ + #define MAXPREC highp │ │ │ │ + #else │ │ │ │ + #define MAXPREC mediump │ │ │ │ + #endif │ │ │ │ + precision MAXPREC float; │ │ │ │ + #define LOW_P lowp │ │ │ │ + #define MEDIUM_P mediump │ │ │ │ + #define HIGH_P highp │ │ │ │ + #else │ │ │ │ + #define LOW_P │ │ │ │ + #define MEDIUM_P │ │ │ │ + #define HIGH_P │ │ │ │ + #endif │ │ │ │ + in vec2 a_normal; │ │ │ │ + in vec2 a_colorTexCoords; │ │ │ │ + out vec2 v_colorTexCoords; │ │ │ │ + uniform mat4 u_modelView; │ │ │ │ + uniform mat4 u_projection; │ │ │ │ + uniform mat4 u_pivotTransform; │ │ │ │ + uniform vec4 u_position; │ │ │ │ + uniform vec2 u_lineParams; │ │ │ │ + uniform float u_accuracy; │ │ │ │ uniform float u_zScale; │ │ │ │ - uniform float u_interpolation; │ │ │ │ - uniform float u_isOutlinePass; │ │ │ │ + uniform float u_opacity; │ │ │ │ + uniform float u_azimut; │ │ │ │ const float kShapeCoordScalar = 1000.0; │ │ │ │ vec4 applyPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ) │ │ │ │ vec4 transformedPivot = pivot; │ │ │ │ float w = transformedPivot.w; │ │ │ │ transformedPivot.xyw = (pivotTransform * vec4(transformedPivot.xy, pivotRealZ, w)).xyw; │ │ │ │ transformedPivot.z *= transformedPivot.w / w; │ │ │ │ #ifdef VULKAN │ │ │ │ @@ -30817,25 +30823,19 @@ │ │ │ │ vec2 p = (vec4(shiftedPos, 0.0, 1.0) * modelView).xy; │ │ │ │ vec2 d = p - originalAxisPos; │ │ │ │ if (dot(d, d) != 0.0) │ │ │ │ return originalAxisPos + normalize(d) * halfWidth; │ │ │ │ else │ │ │ │ return originalAxisPos; │ │ │ │ void main() │ │ │ │ - vec2 normal = a_normalAndAnimateOrZ.xy; │ │ │ │ - if (a_normalAndAnimateOrZ.z > 0.0) │ │ │ │ - normal = u_interpolation * normal; │ │ │ │ - vec4 pivot = vec4(a_position, 1.0) * u_modelView; │ │ │ │ - vec4 offset = vec4(normal, 0.0, 0.0) * u_projection; │ │ │ │ - vec4 projectedPivot = pivot * u_projection; │ │ │ │ - gl_Position = applyBillboardPivotTransform(projectedPivot, u_pivotTransform, 0.0, offset.xy); │ │ │ │ - float newZ = projectedPivot.y / projectedPivot.w * 0.5 + 0.5; │ │ │ │ - gl_Position.z = abs(a_normalAndAnimateOrZ.z) * newZ + (1.0 - abs(a_normalAndAnimateOrZ.z)) * gl_Position.z; │ │ │ │ - v_texCoords = a_texCoords; │ │ │ │ - v_maskColor = a_color; │ │ │ │ + vec4 position = vec4(u_position.xy, 0.0, 1.0) * u_modelView; │ │ │ │ + vec4 normal = vec4(a_normal * u_accuracy, 0.0, 0.0); │ │ │ │ + position = (position + normal) * u_projection; │ │ │ │ + gl_Position = applyPivotTransform(position, u_pivotTransform, u_position.z * u_zScale); │ │ │ │ + v_colorTexCoords = a_colorTexCoords; │ │ │ │ N2dp10GpuProgramE │ │ │ │ N3gpu19ProgramParamsSetterE │ │ │ │ N3gpu21GLProgramParamsSetterE │ │ │ │ N3gpu11ProgramPoolE │ │ │ │ N3gpu13GLProgramPoolE │ │ │ │ N2dp6vulkan16VulkanGpuProgramE │ │ │ │ N3gpu6vulkan25VulkanProgramParamsSetterE │ │ │ ├── objdump --line-numbers --disassemble --demangle --reloc --no-show-raw-insn --section=.text {} │ │ │ │ @@ -2267656,917 +2267656,917 @@ │ │ │ │ lea 0x248ceb(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x1e0(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0x54f1a4(%rip),%r13 # f8cca0 ::id@GLIBCXX_3.4+0x97a0> │ │ │ │ mov 0x1f8(%rsp),%rdx │ │ │ │ mov 0x1e0(%rsp),%rsi │ │ │ │ - lea 0x2fcbad(%rip),%r8 │ │ │ │ - lea 0x2fd146(%rip),%rcx │ │ │ │ + lea 0x314a4d(%rip),%r8 │ │ │ │ + lea 0x315266(%rip),%rcx │ │ │ │ mov %r13,%rdi │ │ │ │ call a47bc0 │ │ │ │ lea 0x400(%rsp),%rax │ │ │ │ lea 0x248cb9(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x228(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0x3e0(%rsp),%rax │ │ │ │ lea 0x248caf(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x210(%rsp) │ │ │ │ call a37690 │ │ │ │ mov 0x228(%rsp),%rdx │ │ │ │ mov 0x210(%rsp),%rsi │ │ │ │ - lea 0x314309(%rip),%r8 │ │ │ │ - lea 0x314662(%rip),%rcx │ │ │ │ + lea 0x3127a9(%rip),%r8 │ │ │ │ + lea 0x315f02(%rip),%rcx │ │ │ │ lea 0x54f16b(%rip),%rdi # f8ccf0 ::id@GLIBCXX_3.4+0x97f0> │ │ │ │ call a47bc0 │ │ │ │ lea 0x440(%rsp),%rax │ │ │ │ lea 0x248c4a(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x258(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0x420(%rsp),%rax │ │ │ │ lea 0x248c40(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x240(%rsp) │ │ │ │ call a37690 │ │ │ │ mov 0x258(%rsp),%rdx │ │ │ │ mov 0x240(%rsp),%rsi │ │ │ │ - lea 0x302741(%rip),%r8 │ │ │ │ - lea 0x302afa(%rip),%rcx │ │ │ │ + lea 0x3145c1(%rip),%r8 │ │ │ │ + lea 0x2fc77a(%rip),%rcx │ │ │ │ lea 0x54f153(%rip),%rdi # f8cd40 ::id@GLIBCXX_3.4+0x9840> │ │ │ │ call a47bc0 │ │ │ │ lea 0x480(%rsp),%rax │ │ │ │ lea 0x248c0c(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x288(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0x460(%rsp),%rax │ │ │ │ lea 0x248bfb(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x270(%rsp) │ │ │ │ call a37690 │ │ │ │ mov 0x288(%rsp),%rdx │ │ │ │ mov 0x270(%rsp),%rsi │ │ │ │ - lea 0x31d319(%rip),%r8 │ │ │ │ - lea 0x31d792(%rip),%rcx │ │ │ │ + lea 0x3022f9(%rip),%r8 │ │ │ │ + lea 0x305632(%rip),%rcx │ │ │ │ lea 0x54f13b(%rip),%rdi # f8cd90 ::id@GLIBCXX_3.4+0x9890> │ │ │ │ call a47bc0 │ │ │ │ lea 0x4c0(%rsp),%rax │ │ │ │ lea 0x248ba4(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x2b8(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0x4a0(%rsp),%rax │ │ │ │ lea 0x248b93(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x2a0(%rsp) │ │ │ │ call a37690 │ │ │ │ mov 0x2b8(%rsp),%rdx │ │ │ │ mov 0x2a0(%rsp),%rsi │ │ │ │ - lea 0x31d2b1(%rip),%r8 │ │ │ │ - lea 0x31d72a(%rip),%rcx │ │ │ │ + lea 0x302291(%rip),%r8 │ │ │ │ + lea 0x3055ca(%rip),%rcx │ │ │ │ lea 0x54f123(%rip),%rdi # f8cde0 ::id@GLIBCXX_3.4+0x98e0> │ │ │ │ call a47bc0 │ │ │ │ lea 0x500(%rsp),%rax │ │ │ │ lea 0x248b58(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x2e8(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0x4e0(%rsp),%rax │ │ │ │ lea 0x248b42(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x2d0(%rsp) │ │ │ │ call a37690 │ │ │ │ mov 0x2e8(%rsp),%rdx │ │ │ │ mov 0x2d0(%rsp),%rsi │ │ │ │ - lea 0x30fee9(%rip),%r8 │ │ │ │ - lea 0x311902(%rip),%rcx │ │ │ │ + lea 0x3134e9(%rip),%r8 │ │ │ │ + lea 0x30e622(%rip),%rcx │ │ │ │ lea 0x54f10b(%rip),%rdi # f8ce30 ::id@GLIBCXX_3.4+0x9930> │ │ │ │ call a47bc0 │ │ │ │ lea 0x540(%rsp),%rax │ │ │ │ lea 0x248af0(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x318(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0x520(%rsp),%rax │ │ │ │ lea 0x248aec(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x300(%rsp) │ │ │ │ call a37690 │ │ │ │ mov 0x318(%rsp),%rdx │ │ │ │ mov 0x300(%rsp),%rsi │ │ │ │ - lea 0x30fe81(%rip),%r8 │ │ │ │ - lea 0x31035a(%rip),%rcx │ │ │ │ + lea 0x313481(%rip),%r8 │ │ │ │ + lea 0x2f8d3a(%rip),%rcx │ │ │ │ lea 0x54f0f3(%rip),%rdi # f8ce80 ::id@GLIBCXX_3.4+0x9980> │ │ │ │ call a47bc0 │ │ │ │ lea 0x580(%rsp),%rax │ │ │ │ lea 0x248aac(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x348(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0x560(%rsp),%rax │ │ │ │ lea 0x248aa3(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x330(%rsp) │ │ │ │ call a37690 │ │ │ │ mov 0x348(%rsp),%rdx │ │ │ │ mov 0x330(%rsp),%rsi │ │ │ │ - lea 0x312ff9(%rip),%r8 │ │ │ │ - lea 0x3134b2(%rip),%rcx │ │ │ │ + lea 0x31dd99(%rip),%r8 │ │ │ │ + lea 0x2fe712(%rip),%rcx │ │ │ │ lea 0x54f0db(%rip),%rdi # f8ced0 ::id@GLIBCXX_3.4+0x99d0> │ │ │ │ call a47bc0 │ │ │ │ lea 0x5c0(%rsp),%rax │ │ │ │ lea 0x248a44(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x378(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0x5a0(%rsp),%rax │ │ │ │ lea 0x248a3b(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x360(%rsp) │ │ │ │ call a37690 │ │ │ │ mov 0x378(%rsp),%rdx │ │ │ │ mov 0x360(%rsp),%rsi │ │ │ │ - lea 0x312f91(%rip),%r8 │ │ │ │ - lea 0x31344a(%rip),%rcx │ │ │ │ + lea 0x31dd31(%rip),%r8 │ │ │ │ + lea 0x2fe6aa(%rip),%rcx │ │ │ │ lea 0x54f0c3(%rip),%rdi # f8cf20 ::id@GLIBCXX_3.4+0x9a20> │ │ │ │ call a47bc0 │ │ │ │ lea 0x600(%rsp),%rax │ │ │ │ lea 0x248a08(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x30(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0x5e0(%rsp),%rax │ │ │ │ lea 0x248a9b(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x18(%rsp) │ │ │ │ call a37690 │ │ │ │ mov 0x30(%rsp),%rdx │ │ │ │ mov 0x18(%rsp),%rsi │ │ │ │ - lea 0x30f955(%rip),%r8 │ │ │ │ - lea 0x2f64ce(%rip),%rcx │ │ │ │ + lea 0x2fadb5(%rip),%r8 │ │ │ │ + lea 0x31706e(%rip),%rcx │ │ │ │ lea 0x54f0b7(%rip),%rdi # f8cf70 ::id@GLIBCXX_3.4+0x9a70> │ │ │ │ call a47bc0 │ │ │ │ lea 0x640(%rsp),%rax │ │ │ │ lea 0x2489ac(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x60(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0x620(%rsp),%rax │ │ │ │ lea 0x248a3f(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x48(%rsp) │ │ │ │ call a37690 │ │ │ │ mov 0x60(%rsp),%rdx │ │ │ │ mov 0x48(%rsp),%rsi │ │ │ │ - lea 0x30f8f9(%rip),%r8 │ │ │ │ - lea 0x2f6472(%rip),%rcx │ │ │ │ + lea 0x2fad59(%rip),%r8 │ │ │ │ + lea 0x317012(%rip),%rcx │ │ │ │ lea 0x54f0ab(%rip),%rdi # f8cfc0 ::id@GLIBCXX_3.4+0x9ac0> │ │ │ │ call a47bc0 │ │ │ │ lea 0x680(%rsp),%rax │ │ │ │ lea 0x248960(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x90(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0x660(%rsp),%rax │ │ │ │ lea 0x248951(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x78(%rsp) │ │ │ │ call a37690 │ │ │ │ mov 0x90(%rsp),%rdx │ │ │ │ mov 0x78(%rsp),%rsi │ │ │ │ - lea 0x314bb7(%rip),%r8 │ │ │ │ - lea 0x2f6df0(%rip),%rcx │ │ │ │ + lea 0x319ad7(%rip),%r8 │ │ │ │ + lea 0x318d90(%rip),%rcx │ │ │ │ lea 0x54f099(%rip),%rdi # f8d010 ::id@GLIBCXX_3.4+0x9b10> │ │ │ │ call a47bc0 │ │ │ │ lea 0x6c0(%rsp),%rax │ │ │ │ lea 0x2488ee(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0xc0(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0x6a0(%rsp),%rax │ │ │ │ lea 0x2488fa(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0xa8(%rsp) │ │ │ │ call a37690 │ │ │ │ mov 0xc0(%rsp),%rdx │ │ │ │ mov 0xa8(%rsp),%rsi │ │ │ │ - lea 0x30f82f(%rip),%r8 │ │ │ │ - lea 0x2f78e8(%rip),%rcx │ │ │ │ + lea 0x2fac8f(%rip),%r8 │ │ │ │ + lea 0x319e08(%rip),%rcx │ │ │ │ lea 0x54f081(%rip),%rdi # f8d060 ::id@GLIBCXX_3.4+0x9b60> │ │ │ │ call a47bc0 │ │ │ │ lea 0x700(%rsp),%rax │ │ │ │ lea 0x248b51(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0xf0(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0x6e0(%rsp),%rax │ │ │ │ lea 0x24889c(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0xd8(%rsp) │ │ │ │ call a37690 │ │ │ │ mov 0xf0(%rsp),%rdx │ │ │ │ mov 0xd8(%rsp),%rsi │ │ │ │ - lea 0x3013a7(%rip),%r8 │ │ │ │ - lea 0x301780(%rip),%rcx │ │ │ │ + lea 0x301b27(%rip),%r8 │ │ │ │ + lea 0x316380(%rip),%rcx │ │ │ │ lea 0x54f069(%rip),%rdi # f8d0b0 ::id@GLIBCXX_3.4+0x9bb0> │ │ │ │ call a47bc0 │ │ │ │ lea 0x740(%rsp),%rax │ │ │ │ lea 0x24885c(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x118(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0x720(%rsp),%rax │ │ │ │ lea 0x248850(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x108(%rsp) │ │ │ │ call a37690 │ │ │ │ mov 0x118(%rsp),%rdx │ │ │ │ mov 0x108(%rsp),%rsi │ │ │ │ - lea 0x31b2df(%rip),%r8 │ │ │ │ - lea 0x31b658(%rip),%rcx │ │ │ │ + lea 0x2fd6df(%rip),%r8 │ │ │ │ + lea 0x30f2f8(%rip),%rcx │ │ │ │ lea 0x54f051(%rip),%rdi # f8d100 ::id@GLIBCXX_3.4+0x9c00> │ │ │ │ call a47bc0 │ │ │ │ lea 0x780(%rsp),%rax │ │ │ │ lea 0x24881a(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x140(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0x760(%rsp),%rax │ │ │ │ lea 0x24880b(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x130(%rsp) │ │ │ │ call a37690 │ │ │ │ mov 0x140(%rsp),%rdx │ │ │ │ mov 0x130(%rsp),%rsi │ │ │ │ - lea 0x2fe057(%rip),%r8 │ │ │ │ - lea 0x2fe430(%rip),%rcx │ │ │ │ + lea 0x305c57(%rip),%r8 │ │ │ │ + lea 0x30ae50(%rip),%rcx │ │ │ │ lea 0x54f039(%rip),%rdi # f8d150 ::id@GLIBCXX_3.4+0x9c50> │ │ │ │ call a47bc0 │ │ │ │ lea 0x7c0(%rsp),%rax │ │ │ │ lea 0x2486bf(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x160(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0x7a0(%rsp),%rax │ │ │ │ lea 0x2487b3(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x150(%rsp) │ │ │ │ call a37690 │ │ │ │ mov 0x160(%rsp),%rdx │ │ │ │ mov 0x150(%rsp),%rsi │ │ │ │ - lea 0x313d0f(%rip),%r8 │ │ │ │ - lea 0x304388(%rip),%rcx │ │ │ │ + lea 0x3121af(%rip),%r8 │ │ │ │ + lea 0x31bac8(%rip),%rcx │ │ │ │ lea 0x54f021(%rip),%rdi # f8d1a0 ::id@GLIBCXX_3.4+0x9ca0> │ │ │ │ call a47bc0 │ │ │ │ lea 0x800(%rsp),%rax │ │ │ │ lea 0x2486e6(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x180(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0x7e0(%rsp),%rax │ │ │ │ lea 0x248776(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x170(%rsp) │ │ │ │ call a37690 │ │ │ │ mov 0x180(%rsp),%rdx │ │ │ │ mov 0x170(%rsp),%rsi │ │ │ │ - lea 0x30f627(%rip),%r8 │ │ │ │ - lea 0x2f61a0(%rip),%rcx │ │ │ │ + lea 0x2faa87(%rip),%r8 │ │ │ │ + lea 0x316d40(%rip),%rcx │ │ │ │ lea 0x54f009(%rip),%rdi # f8d1f0 ::id@GLIBCXX_3.4+0x9cf0> │ │ │ │ call a47bc0 │ │ │ │ lea 0x840(%rsp),%rax │ │ │ │ lea 0x248a10(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x1a0(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0x820(%rsp),%rax │ │ │ │ lea 0x248a04(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x190(%rsp) │ │ │ │ call a37690 │ │ │ │ mov 0x1a0(%rsp),%rdx │ │ │ │ mov 0x190(%rsp),%rsi │ │ │ │ - lea 0x2fa73f(%rip),%r8 │ │ │ │ - lea 0x2fac78(%rip),%rcx │ │ │ │ + lea 0x2fbbdf(%rip),%r8 │ │ │ │ + lea 0x300ed8(%rip),%rcx │ │ │ │ lea 0x54eff1(%rip),%rdi # f8d240 ::id@GLIBCXX_3.4+0x9d40> │ │ │ │ call a47bc0 │ │ │ │ lea 0x880(%rsp),%rax │ │ │ │ lea 0x2486aa(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x1c0(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0x860(%rsp),%rax │ │ │ │ lea 0x24869d(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x1b0(%rsp) │ │ │ │ call a37690 │ │ │ │ mov 0x1c0(%rsp),%rdx │ │ │ │ mov 0x1b0(%rsp),%rsi │ │ │ │ - lea 0x2ff7b7(%rip),%r8 │ │ │ │ - lea 0x2ffc10(%rip),%rcx │ │ │ │ + lea 0x311277(%rip),%r8 │ │ │ │ + lea 0x302110(%rip),%rcx │ │ │ │ lea 0x54efd9(%rip),%rdi # f8d290 ::id@GLIBCXX_3.4+0x9d90> │ │ │ │ call a47bc0 │ │ │ │ lea 0x8c0(%rsp),%rax │ │ │ │ lea 0x248666(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x1e8(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0x8a0(%rsp),%rax │ │ │ │ lea 0x248659(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x1d0(%rsp) │ │ │ │ call a37690 │ │ │ │ mov 0x1e8(%rsp),%rdx │ │ │ │ mov 0x1d0(%rsp),%rsi │ │ │ │ - lea 0x31554f(%rip),%r8 │ │ │ │ - lea 0x315888(%rip),%rcx │ │ │ │ + lea 0x2fedcf(%rip),%r8 │ │ │ │ + lea 0x30b7c8(%rip),%rcx │ │ │ │ lea 0x54efc1(%rip),%rdi # f8d2e0 ::id@GLIBCXX_3.4+0x9de0> │ │ │ │ call a47bc0 │ │ │ │ lea 0x900(%rsp),%rax │ │ │ │ lea 0x248622(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x218(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0x8e0(%rsp),%rax │ │ │ │ lea 0x24860d(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x200(%rsp) │ │ │ │ call a37690 │ │ │ │ mov 0x218(%rsp),%rdx │ │ │ │ mov 0x200(%rsp),%rsi │ │ │ │ - lea 0x309027(%rip),%r8 │ │ │ │ - lea 0x309360(%rip),%rcx │ │ │ │ + lea 0x309cc7(%rip),%r8 │ │ │ │ + lea 0x2ffe00(%rip),%rcx │ │ │ │ lea 0x54efa9(%rip),%rdi # f8d330 ::id@GLIBCXX_3.4+0x9e30> │ │ │ │ call a47bc0 │ │ │ │ lea 0x940(%rsp),%rax │ │ │ │ lea 0x2485ce(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x248(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0x920(%rsp),%rax │ │ │ │ lea 0x2485c6(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x230(%rsp) │ │ │ │ call a37690 │ │ │ │ mov 0x248(%rsp),%rdx │ │ │ │ mov 0x230(%rsp),%rsi │ │ │ │ - lea 0x3160bf(%rip),%r8 │ │ │ │ - lea 0x304b38(%rip),%rcx │ │ │ │ + lea 0x305d5f(%rip),%r8 │ │ │ │ + lea 0x31dc58(%rip),%rcx │ │ │ │ lea 0x54ef91(%rip),%rdi # f8d380 ::id@GLIBCXX_3.4+0x9e80> │ │ │ │ call a47bc0 │ │ │ │ lea 0x980(%rsp),%rax │ │ │ │ lea 0x248566(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x278(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0x960(%rsp),%rax │ │ │ │ lea 0x248576(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x260(%rsp) │ │ │ │ call a37690 │ │ │ │ mov 0x278(%rsp),%rdx │ │ │ │ mov 0x260(%rsp),%rsi │ │ │ │ - lea 0x316057(%rip),%r8 │ │ │ │ - lea 0x303630(%rip),%rcx │ │ │ │ + lea 0x305cf7(%rip),%r8 │ │ │ │ + lea 0x2fc8b0(%rip),%rcx │ │ │ │ lea 0x54ef79(%rip),%rdi # f8d3d0 ::id@GLIBCXX_3.4+0x9ed0> │ │ │ │ call a47bc0 │ │ │ │ lea 0x9c0(%rsp),%rax │ │ │ │ lea 0x24853d(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x2a8(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0x9a0(%rsp),%rax │ │ │ │ lea 0x248531(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x290(%rsp) │ │ │ │ call a37690 │ │ │ │ mov 0x2a8(%rsp),%rdx │ │ │ │ mov 0x290(%rsp),%rsi │ │ │ │ - lea 0x30a56f(%rip),%r8 │ │ │ │ - lea 0x30a9e8(%rip),%rcx │ │ │ │ + lea 0x30ea6f(%rip),%r8 │ │ │ │ + lea 0x306308(%rip),%rcx │ │ │ │ lea 0x54ef61(%rip),%rdi # f8d420 ::id@GLIBCXX_3.4+0x9f20> │ │ │ │ call a47bc0 │ │ │ │ lea 0xa00(%rsp),%rax │ │ │ │ lea 0x2484fb(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x2d8(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0x9e0(%rsp),%rax │ │ │ │ lea 0x2484e8(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x2c0(%rsp) │ │ │ │ call a37690 │ │ │ │ mov 0x2d8(%rsp),%rdx │ │ │ │ mov 0x2c0(%rsp),%rsi │ │ │ │ - lea 0x31a247(%rip),%r8 │ │ │ │ - lea 0x31a420(%rip),%rcx │ │ │ │ + lea 0x2fde07(%rip),%r8 │ │ │ │ + lea 0x3090e0(%rip),%rcx │ │ │ │ lea 0x54ef49(%rip),%rdi # f8d470 ::id@GLIBCXX_3.4+0x9f70> │ │ │ │ call a47bc0 │ │ │ │ lea 0xa40(%rsp),%rax │ │ │ │ lea 0x2484ab(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x308(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0xa20(%rsp),%rax │ │ │ │ lea 0x24849f(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x2f0(%rsp) │ │ │ │ call a37690 │ │ │ │ mov 0x308(%rsp),%rdx │ │ │ │ mov 0x2f0(%rsp),%rsi │ │ │ │ - lea 0x31bc3f(%rip),%r8 │ │ │ │ - lea 0x31bfb8(%rip),%rcx │ │ │ │ + lea 0x31389f(%rip),%r8 │ │ │ │ + lea 0x2f7018(%rip),%rcx │ │ │ │ lea 0x54ef31(%rip),%rdi # f8d4c0 ::id@GLIBCXX_3.4+0x9fc0> │ │ │ │ call a47bc0 │ │ │ │ lea 0xa80(%rsp),%rax │ │ │ │ lea 0x248469(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x338(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0xa60(%rsp),%rax │ │ │ │ lea 0x248454(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x320(%rsp) │ │ │ │ call a37690 │ │ │ │ mov 0x338(%rsp),%rdx │ │ │ │ mov 0x320(%rsp),%rsi │ │ │ │ - lea 0x3052b7(%rip),%r8 │ │ │ │ - lea 0x305a30(%rip),%rcx │ │ │ │ + lea 0x2f8f57(%rip),%r8 │ │ │ │ + lea 0x302810(%rip),%rcx │ │ │ │ lea 0x54ef19(%rip),%rdi # f8d510 ::id@GLIBCXX_3.4+0xa010> │ │ │ │ call a47bc0 │ │ │ │ lea 0xac0(%rsp),%rax │ │ │ │ lea 0x248415(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x368(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0xaa0(%rsp),%rax │ │ │ │ lea 0x2483ec(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x350(%rsp) │ │ │ │ call a37690 │ │ │ │ mov 0x368(%rsp),%rdx │ │ │ │ mov 0x350(%rsp),%rsi │ │ │ │ - lea 0x3075af(%rip),%r8 │ │ │ │ - lea 0x3059c8(%rip),%rcx │ │ │ │ + lea 0x31250f(%rip),%r8 │ │ │ │ + lea 0x3027a8(%rip),%rcx │ │ │ │ lea 0x54ef01(%rip),%rdi # f8d560 ::id@GLIBCXX_3.4+0xa060> │ │ │ │ call a47bc0 │ │ │ │ lea 0xb00(%rsp),%rax │ │ │ │ lea 0x2483bc(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x20(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0xae0(%rsp),%rax │ │ │ │ lea 0x2483b0(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x8(%rsp) │ │ │ │ call a37690 │ │ │ │ mov 0x20(%rsp),%rdx │ │ │ │ mov 0x8(%rsp),%rsi │ │ │ │ - lea 0x306573(%rip),%r8 │ │ │ │ - lea 0x306a0c(%rip),%rcx │ │ │ │ + lea 0x2f6053(%rip),%r8 │ │ │ │ + lea 0x30840c(%rip),%rcx │ │ │ │ lea 0x54eef5(%rip),%rdi # f8d5b0 ::id@GLIBCXX_3.4+0xa0b0> │ │ │ │ call a47bc0 │ │ │ │ lea 0xb40(%rsp),%rax │ │ │ │ lea 0x248380(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x50(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0xb20(%rsp),%rax │ │ │ │ lea 0x248375(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x38(%rsp) │ │ │ │ call a37690 │ │ │ │ mov 0x50(%rsp),%rdx │ │ │ │ mov 0x38(%rsp),%rsi │ │ │ │ - lea 0x307b97(%rip),%r8 │ │ │ │ - lea 0x308150(%rip),%rcx │ │ │ │ + lea 0x3045b7(%rip),%r8 │ │ │ │ + lea 0x2fef30(%rip),%rcx │ │ │ │ lea 0x54eee9(%rip),%rdi # f8d600 ::id@GLIBCXX_3.4+0xa100> │ │ │ │ call a47bc0 │ │ │ │ lea 0xb80(%rsp),%rax │ │ │ │ lea 0x248346(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x80(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0xb60(%rsp),%rax │ │ │ │ lea 0x248338(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x68(%rsp) │ │ │ │ call a37690 │ │ │ │ mov 0x80(%rsp),%rdx │ │ │ │ mov 0x68(%rsp),%rsi │ │ │ │ - lea 0x2fb195(%rip),%r8 │ │ │ │ - lea 0x2fb5ce(%rip),%rcx │ │ │ │ + lea 0x2fa8f5(%rip),%r8 │ │ │ │ + lea 0x30f92e(%rip),%rcx │ │ │ │ lea 0x54eed7(%rip),%rdi # f8d650 ::id@GLIBCXX_3.4+0xa150> │ │ │ │ call a47bc0 │ │ │ │ lea 0xbc0(%rsp),%rax │ │ │ │ lea 0x248080(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0xb0(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0xba0(%rsp),%rax │ │ │ │ lea 0x24806f(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x98(%rsp) │ │ │ │ call a37690 │ │ │ │ mov 0xb0(%rsp),%rdx │ │ │ │ mov 0x98(%rsp),%rsi │ │ │ │ - lea 0x31c78d(%rip),%r8 │ │ │ │ - lea 0x31cc06(%rip),%rcx │ │ │ │ + lea 0x30176d(%rip),%r8 │ │ │ │ + lea 0x304aa6(%rip),%rcx │ │ │ │ lea 0x54eebf(%rip),%rdi # f8d6a0 ::id@GLIBCXX_3.4+0xa1a0> │ │ │ │ call a47bc0 │ │ │ │ lea 0xc00(%rsp),%rax │ │ │ │ lea 0x248018(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0xe0(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0xbe0(%rsp),%rax │ │ │ │ lea 0x248007(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0xc8(%rsp) │ │ │ │ call a37690 │ │ │ │ mov 0xe0(%rsp),%rdx │ │ │ │ mov 0xc8(%rsp),%rsi │ │ │ │ - lea 0x31c725(%rip),%r8 │ │ │ │ - lea 0x31cb9e(%rip),%rcx │ │ │ │ + lea 0x301705(%rip),%r8 │ │ │ │ + lea 0x304a3e(%rip),%rcx │ │ │ │ lea 0x54eea7(%rip),%rdi # f8d6f0 ::id@GLIBCXX_3.4+0xa1f0> │ │ │ │ call a47bc0 │ │ │ │ lea 0xc40(%rsp),%rax │ │ │ │ lea 0x248236(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x110(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0xc20(%rsp),%rax │ │ │ │ lea 0x248226(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0xf8(%rsp) │ │ │ │ call a37690 │ │ │ │ mov 0x110(%rsp),%rdx │ │ │ │ mov 0xf8(%rsp),%rsi │ │ │ │ - lea 0x2fe81d(%rip),%r8 │ │ │ │ - lea 0x2fe9f6(%rip),%rcx │ │ │ │ + lea 0x318fbd(%rip),%r8 │ │ │ │ + lea 0x31bdb6(%rip),%rcx │ │ │ │ lea 0x54ee8f(%rip),%rdi # f8d740 ::id@GLIBCXX_3.4+0xa240> │ │ │ │ call a47bc0 │ │ │ │ lea 0xc80(%rsp),%rax │ │ │ │ lea 0x2481ec(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x138(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0xc60(%rsp),%rax │ │ │ │ lea 0x2481dd(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x120(%rsp) │ │ │ │ call a37690 │ │ │ │ mov 0x138(%rsp),%rdx │ │ │ │ mov 0x120(%rsp),%rsi │ │ │ │ - lea 0x309715(%rip),%r8 │ │ │ │ - lea 0x30998e(%rip),%rcx │ │ │ │ + lea 0x31cff5(%rip),%r8 │ │ │ │ + lea 0x2f76ae(%rip),%rcx │ │ │ │ lea 0x54ee77(%rip),%rdi # f8d790 ::id@GLIBCXX_3.4+0xa290> │ │ │ │ call a47bc0 │ │ │ │ lea 0xcc0(%rsp),%rax │ │ │ │ lea 0x2481a4(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x158(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0xca0(%rsp),%rax │ │ │ │ lea 0x248191(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x148(%rsp) │ │ │ │ call a37690 │ │ │ │ mov 0x158(%rsp),%rdx │ │ │ │ mov 0x148(%rsp),%rsi │ │ │ │ - lea 0x2f79cd(%rip),%r8 │ │ │ │ - lea 0x2f7cc6(%rip),%rcx │ │ │ │ + lea 0x305b4d(%rip),%r8 │ │ │ │ + lea 0x30c646(%rip),%rcx │ │ │ │ lea 0x54ee5f(%rip),%rdi # f8d7e0 ::id@GLIBCXX_3.4+0xa2e0> │ │ │ │ call a47bc0 │ │ │ │ lea 0xd00(%rsp),%rax │ │ │ │ lea 0x248154(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x178(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0xce0(%rsp),%rax │ │ │ │ lea 0x24814a(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x168(%rsp) │ │ │ │ call a37690 │ │ │ │ mov 0x178(%rsp),%rdx │ │ │ │ mov 0x168(%rsp),%rsi │ │ │ │ - lea 0x2f92e5(%rip),%r8 │ │ │ │ - lea 0x2f965e(%rip),%rcx │ │ │ │ + lea 0x2f7d65(%rip),%r8 │ │ │ │ + lea 0x31a91e(%rip),%rcx │ │ │ │ lea 0x54ee47(%rip),%rdi # f8d830 ::id@GLIBCXX_3.4+0xa330> │ │ │ │ call a47bc0 │ │ │ │ lea 0xd40(%rsp),%rax │ │ │ │ lea 0x248116(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x198(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0xd20(%rsp),%rax │ │ │ │ lea 0x24810a(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x188(%rsp) │ │ │ │ call a37690 │ │ │ │ mov 0x198(%rsp),%rdx │ │ │ │ mov 0x188(%rsp),%rsi │ │ │ │ - lea 0x2f875d(%rip),%r8 │ │ │ │ - lea 0x2f89d6(%rip),%rcx │ │ │ │ + lea 0x3140bd(%rip),%r8 │ │ │ │ + lea 0x3039d6(%rip),%rcx │ │ │ │ lea 0x54ee2f(%rip),%rdi # f8d880 ::id@GLIBCXX_3.4+0xa380> │ │ │ │ call a47bc0 │ │ │ │ lea 0xd80(%rsp),%rax │ │ │ │ lea 0x2480d4(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x1b8(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0xd60(%rsp),%rax │ │ │ │ lea 0x2480a2(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x1a8(%rsp) │ │ │ │ call a37690 │ │ │ │ mov 0x1b8(%rsp),%rdx │ │ │ │ mov 0x1a8(%rsp),%rsi │ │ │ │ - lea 0x2f8455(%rip),%r8 │ │ │ │ - lea 0x2f896e(%rip),%rcx │ │ │ │ + lea 0x314d35(%rip),%r8 │ │ │ │ + lea 0x30396e(%rip),%rcx │ │ │ │ lea 0x54ee17(%rip),%rdi # f8d8d0 ::id@GLIBCXX_3.4+0xa3d0> │ │ │ │ call a47bc0 │ │ │ │ lea 0xdc0(%rsp),%rax │ │ │ │ lea 0x247cf0(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x1d8(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0xda0(%rsp),%rax │ │ │ │ lea 0x248061(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x1c8(%rsp) │ │ │ │ call a37690 │ │ │ │ mov 0x1d8(%rsp),%rdx │ │ │ │ mov 0x1c8(%rsp),%rsi │ │ │ │ - lea 0x2fbbad(%rip),%r8 │ │ │ │ - lea 0x2fcba6(%rip),%rcx │ │ │ │ + lea 0x313a4d(%rip),%r8 │ │ │ │ + lea 0x319d46(%rip),%rcx │ │ │ │ lea 0x54edff(%rip),%rdi # f8d920 ::id@GLIBCXX_3.4+0xa420> │ │ │ │ call a47bc0 │ │ │ │ lea 0xe00(%rsp),%rax │ │ │ │ lea 0x247cb5(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x208(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0xde0(%rsp),%rax │ │ │ │ lea 0x248016(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x1f0(%rsp) │ │ │ │ call a37690 │ │ │ │ mov 0x208(%rsp),%rdx │ │ │ │ mov 0x1f0(%rsp),%rsi │ │ │ │ - lea 0x313305(%rip),%r8 │ │ │ │ - lea 0x31433e(%rip),%rcx │ │ │ │ + lea 0x3117a5(%rip),%r8 │ │ │ │ + lea 0x310dfe(%rip),%rcx │ │ │ │ lea 0x54ede7(%rip),%rdi # f8d970 ::id@GLIBCXX_3.4+0xa470> │ │ │ │ call a47bc0 │ │ │ │ lea 0xe40(%rsp),%rax │ │ │ │ lea 0x247c46(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x238(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0xe20(%rsp),%rax │ │ │ │ lea 0x277c1c(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x220(%rsp) │ │ │ │ call a37690 │ │ │ │ mov 0x238(%rsp),%rdx │ │ │ │ mov 0x220(%rsp),%rsi │ │ │ │ - lea 0x30173d(%rip),%r8 │ │ │ │ - lea 0x302496(%rip),%rcx │ │ │ │ + lea 0x3135bd(%rip),%r8 │ │ │ │ + lea 0x2f5fb6(%rip),%rcx │ │ │ │ lea 0x54edcf(%rip),%rdi # f8d9c0 ::id@GLIBCXX_3.4+0xa4c0> │ │ │ │ call a47bc0 │ │ │ │ lea 0xe80(%rsp),%rax │ │ │ │ lea 0x247c08(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x268(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0xe60(%rsp),%rax │ │ │ │ lea 0x247f5e(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x250(%rsp) │ │ │ │ call a37690 │ │ │ │ mov 0x268(%rsp),%rdx │ │ │ │ mov 0x250(%rsp),%rsi │ │ │ │ - lea 0x31c315(%rip),%r8 │ │ │ │ - lea 0x31d26e(%rip),%rcx │ │ │ │ + lea 0x3012f5(%rip),%r8 │ │ │ │ + lea 0x30fdce(%rip),%rcx │ │ │ │ lea 0x54edb7(%rip),%rdi # f8da10 ::id@GLIBCXX_3.4+0xa510> │ │ │ │ call a47bc0 │ │ │ │ lea 0xec0(%rsp),%rax │ │ │ │ lea 0x247ba0(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x298(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0xea0(%rsp),%rax │ │ │ │ lea 0x247ef6(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x280(%rsp) │ │ │ │ call a37690 │ │ │ │ mov 0x298(%rsp),%rdx │ │ │ │ mov 0x280(%rsp),%rsi │ │ │ │ - lea 0x31c2ad(%rip),%r8 │ │ │ │ - lea 0x31d206(%rip),%rcx │ │ │ │ + lea 0x30128d(%rip),%r8 │ │ │ │ + lea 0x30fd66(%rip),%rcx │ │ │ │ lea 0x54ed9f(%rip),%rdi # f8da60 ::id@GLIBCXX_3.4+0xa560> │ │ │ │ call a47bc0 │ │ │ │ lea 0xf00(%rsp),%rax │ │ │ │ lea 0x247b38(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x2c8(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0xee0(%rsp),%rax │ │ │ │ lea 0x247e8e(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x2b0(%rsp) │ │ │ │ call a37690 │ │ │ │ mov 0x2c8(%rsp),%rdx │ │ │ │ mov 0x2b0(%rsp),%rsi │ │ │ │ - lea 0x31c245(%rip),%r8 │ │ │ │ - lea 0x31d19e(%rip),%rcx │ │ │ │ + lea 0x301225(%rip),%r8 │ │ │ │ + lea 0x30fcfe(%rip),%rcx │ │ │ │ lea 0x54ed87(%rip),%rdi # f8dab0 ::id@GLIBCXX_3.4+0xa5b0> │ │ │ │ call a47bc0 │ │ │ │ lea 0xf40(%rsp),%rax │ │ │ │ lea 0x247ad0(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x2f8(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0xf20(%rsp),%rax │ │ │ │ lea 0x247e26(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x2e0(%rsp) │ │ │ │ call a37690 │ │ │ │ mov 0x2f8(%rsp),%rdx │ │ │ │ mov 0x2e0(%rsp),%rsi │ │ │ │ - lea 0x31c1dd(%rip),%r8 │ │ │ │ - lea 0x31d136(%rip),%rcx │ │ │ │ + lea 0x3011bd(%rip),%r8 │ │ │ │ + lea 0x30fc96(%rip),%rcx │ │ │ │ lea 0x54ed6f(%rip),%rdi # f8db00 ::id@GLIBCXX_3.4+0xa600> │ │ │ │ call a47bc0 │ │ │ │ lea 0xf80(%rsp),%rax │ │ │ │ lea 0x247a84(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x328(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0xf60(%rsp),%rax │ │ │ │ lea 0x247dd6(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x310(%rsp) │ │ │ │ call a37690 │ │ │ │ mov 0x328(%rsp),%rdx │ │ │ │ mov 0x310(%rsp),%rsi │ │ │ │ - lea 0x30ee15(%rip),%r8 │ │ │ │ - lea 0x31140e(%rip),%rcx │ │ │ │ + lea 0x312415(%rip),%r8 │ │ │ │ + lea 0x30b5ee(%rip),%rcx │ │ │ │ lea 0x54ed57(%rip),%rdi # f8db50 ::id@GLIBCXX_3.4+0xa650> │ │ │ │ call a47bc0 │ │ │ │ lea 0xfc0(%rsp),%rax │ │ │ │ lea 0x247a1c(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x358(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0xfa0(%rsp),%rax │ │ │ │ lea 0x247d8a(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x340(%rsp) │ │ │ │ call a37690 │ │ │ │ mov 0x358(%rsp),%rdx │ │ │ │ mov 0x340(%rsp),%rsi │ │ │ │ - lea 0x30edad(%rip),%r8 │ │ │ │ - lea 0x30fd06(%rip),%rcx │ │ │ │ + lea 0x3123ad(%rip),%r8 │ │ │ │ + lea 0x30ca26(%rip),%rcx │ │ │ │ lea 0x54ed3f(%rip),%rdi # f8dba0 ::id@GLIBCXX_3.4+0xa6a0> │ │ │ │ call a47bc0 │ │ │ │ lea 0x1000(%rsp),%rax │ │ │ │ lea 0x247d54(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x10(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0xfe0(%rsp),%rax │ │ │ │ lea 0x247d44(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x370(%rsp) │ │ │ │ call a37690 │ │ │ │ mov 0x10(%rsp),%rdx │ │ │ │ mov 0x370(%rsp),%rsi │ │ │ │ - lea 0x31678b(%rip),%r8 │ │ │ │ - lea 0x316e24(%rip),%rcx │ │ │ │ + lea 0x2f8e0b(%rip),%r8 │ │ │ │ + lea 0x306f44(%rip),%rcx │ │ │ │ lea 0x54ed2d(%rip),%rdi # f8dbf0 ::id@GLIBCXX_3.4+0xa6f0> │ │ │ │ call a47bc0 │ │ │ │ lea 0x1040(%rsp),%rax │ │ │ │ lea 0x247d0a(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x40(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0x1020(%rsp),%rax │ │ │ │ lea 0x247cff(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x28(%rsp) │ │ │ │ call a37690 │ │ │ │ mov 0x40(%rsp),%rdx │ │ │ │ mov 0x28(%rsp),%rsi │ │ │ │ - lea 0x318b4f(%rip),%r8 │ │ │ │ - lea 0x318ec8(%rip),%rcx │ │ │ │ + lea 0x2f546f(%rip),%r8 │ │ │ │ + lea 0x2fa588(%rip),%rcx │ │ │ │ lea 0x54ed21(%rip),%rdi # f8dc40 ::id@GLIBCXX_3.4+0xa740> │ │ │ │ call a47bc0 │ │ │ │ lea 0x1080(%rsp),%rax │ │ │ │ lea 0x247cd0(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x70(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0x1060(%rsp),%rax │ │ │ │ lea 0x247cc7(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x58(%rsp) │ │ │ │ call a37690 │ │ │ │ mov 0x70(%rsp),%rdx │ │ │ │ mov 0x58(%rsp),%rsi │ │ │ │ - lea 0x317a33(%rip),%r8 │ │ │ │ - lea 0x317f0c(%rip),%rcx │ │ │ │ + lea 0x311713(%rip),%r8 │ │ │ │ + lea 0x30940c(%rip),%rcx │ │ │ │ lea 0x54ed15(%rip),%rdi # f8dc90 ::id@GLIBCXX_3.4+0xa790> │ │ │ │ call a47bc0 │ │ │ │ lea 0x10c0(%rsp),%rax │ │ │ │ lea 0x247c9a(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0xa0(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0x10a0(%rsp),%rax │ │ │ │ lea 0x247c8f(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x88(%rsp) │ │ │ │ call a37690 │ │ │ │ mov 0xa0(%rsp),%rdx │ │ │ │ mov 0x88(%rsp),%rsi │ │ │ │ - lea 0x31584b(%rip),%r8 │ │ │ │ - lea 0x315a64(%rip),%rcx │ │ │ │ + lea 0x2fe44b(%rip),%r8 │ │ │ │ + lea 0x306464(%rip),%rcx │ │ │ │ lea 0x54ecfd(%rip),%rdi # f8dce0 ::id@GLIBCXX_3.4+0xa7e0> │ │ │ │ call a47bc0 │ │ │ │ lea 0x1100(%rsp),%rax │ │ │ │ lea 0x247c5a(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0xd0(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0x10e0(%rsp),%rax │ │ │ │ lea 0x247c27(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0xb8(%rsp) │ │ │ │ call a37690 │ │ │ │ mov 0xd0(%rsp),%rdx │ │ │ │ mov 0xb8(%rsp),%rsi │ │ │ │ - lea 0x3163c3(%rip),%r8 │ │ │ │ - lea 0x3159fc(%rip),%rcx │ │ │ │ + lea 0x30ee23(%rip),%r8 │ │ │ │ + lea 0x3063fc(%rip),%rcx │ │ │ │ lea 0x54ece5(%rip),%rdi # f8dd30 ::id@GLIBCXX_3.4+0xa830> │ │ │ │ call a47bc0 │ │ │ │ lea 0x1140(%rsp),%rax │ │ │ │ lea 0x247c0c(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x100(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0x1120(%rsp),%rax │ │ │ │ lea 0x247bfc(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0xe8(%rsp) │ │ │ │ call a37690 │ │ │ │ mov 0x100(%rsp),%rdx │ │ │ │ mov 0xe8(%rsp),%rsi │ │ │ │ - lea 0x30c89b(%rip),%r8 │ │ │ │ - lea 0x30cfd4(%rip),%rcx │ │ │ │ + lea 0x31263b(%rip),%r8 │ │ │ │ + lea 0x2f92b4(%rip),%rcx │ │ │ │ lea 0x54eccd(%rip),%rdi # f8dd80 ::id@GLIBCXX_3.4+0xa880> │ │ │ │ call a47bc0 │ │ │ │ lea 0x1180(%rsp),%rax │ │ │ │ lea 0x247bc2(%rip),%rsi │ │ │ │ mov %rax,%rdi │ │ │ │ mov %rax,0x128(%rsp) │ │ │ │ call a37690 │ │ │ │ lea 0x247bc4(%rip),%rsi │ │ │ │ lea 0x1160(%rsp),%rdi │ │ │ │ call a37690 │ │ │ │ mov 0x128(%rsp),%rdx │ │ │ │ - lea 0x30aa26(%rip),%r8 │ │ │ │ - lea 0x30be1f(%rip),%rcx │ │ │ │ + lea 0x316806(%rip),%r8 │ │ │ │ + lea 0x3028ff(%rip),%rcx │ │ │ │ lea 0x1160(%rsp),%rsi │ │ │ │ lea 0x54ecc0(%rip),%rdi # f8ddd0 ::id@GLIBCXX_3.4+0xa8d0> │ │ │ │ call a47bc0 │ │ │ │ lea 0x247b9f(%rip),%rsi │ │ │ │ lea 0x11c0(%rsp),%rdi │ │ │ │ call a37690 │ │ │ │ lea 0x247b9a(%rip),%rsi │ │ │ │ lea 0x11a0(%rsp),%rdi │ │ │ │ call a37690 │ │ │ │ - lea 0x30d83c(%rip),%r8 │ │ │ │ - lea 0x30de95(%rip),%rcx │ │ │ │ + lea 0x2ff97c(%rip),%r8 │ │ │ │ + lea 0x2fc9b5(%rip),%rcx │ │ │ │ lea 0x11c0(%rsp),%rdx │ │ │ │ lea 0x11a0(%rsp),%rsi │ │ │ │ lea 0x54ecbe(%rip),%rdi # f8de20 ::id@GLIBCXX_3.4+0xa920> │ │ │ │ call a47bc0 │ │ │ │ lea 0x247b6b(%rip),%rsi │ │ │ │ lea 0x1200(%rsp),%rdi │ │ │ │ call a37690 │ │ │ │ lea 0x11e0(%rsp),%rbp │ │ │ │ lea 0x247b59(%rip),%rsi │ │ │ │ mov %rbp,%rdi │ │ │ │ call a37690 │ │ │ │ - lea 0x2ff767(%rip),%r8 │ │ │ │ - lea 0x2ff9c0(%rip),%rcx │ │ │ │ + lea 0x31bc87(%rip),%r8 │ │ │ │ + lea 0x31bee0(%rip),%rcx │ │ │ │ mov %rbp,%rsi │ │ │ │ lea 0x1200(%rsp),%rdx │ │ │ │ lea 0x54ecbe(%rip),%rdi # f8de70 ::id@GLIBCXX_3.4+0xa970> │ │ │ │ call a47bc0 │ │ │ │ mov %r13,%rsi │ │ │ │ lea 0x53fec7(%rip),%rdx │ │ │ │ lea 0x8578(%rip),%rdi │ │ │ │ @@ -2587469,15 +2587469,15 @@ │ │ │ │ mov %rbx,%rax │ │ │ │ movq $0x1b,0x8(%rbx) │ │ │ │ pop %rbx │ │ │ │ ret │ │ │ │ nop │ │ │ │ cs nopw 0x0(%rax,%rax,1) │ │ │ │ endbr64 │ │ │ │ - mov $0x3f873,%eax │ │ │ │ + mov $0x3f878,%eax │ │ │ │ ret │ │ │ │ nopw 0x0(%rax,%rax,1) │ │ │ │ endbr64 │ │ │ │ test %rdi,%rdi │ │ │ │ je b8ebf0 │ │ │ │ mov (%rdi),%rax │ │ │ │ lea -0x4453(%rip),%rdx │ │ │ ├── readelf --wide --decompress --hex-dump=.rodata {} │ │ │ │ @@ -21514,15 +21514,15 @@ │ │ │ │ 0x00cc6070 7b227365 72766572 73223a5b 22687474 {"servers":["htt │ │ │ │ 0x00cc6080 70733a2f 2f63646e 2d6e6c31 2e6f7267 ps://cdn-nl1.org │ │ │ │ 0x00cc6090 616e6963 6d617073 2e617070 2f222c22 anicmaps.app/"," │ │ │ │ 0x00cc60a0 68747470 733a2f2f 63646e2d 756b312e https://cdn-uk1. │ │ │ │ 0x00cc60b0 6f726761 6e69636d 6170732e 6170702f organicmaps.app/ │ │ │ │ 0x00cc60c0 222c2268 74747073 3a2f2f63 646e2e6f ","https://cdn.o │ │ │ │ 0x00cc60d0 7267616e 69636d61 70732e61 70702f22 rganicmaps.app/" │ │ │ │ - 0x00cc60e0 32303236 2e30322e 31312d30 2d303030 2026.02.11-0-000 │ │ │ │ + 0x00cc60e0 32303236 2e30322e 31362d30 2d303030 2026.02.16-0-000 │ │ │ │ 0x00cc60f0 302d3030 30303030 30302d4c 696e7578 0-00000000-Linux │ │ │ │ 0x00cc6100 70020000 00000000 00000000 00000000 p............... │ │ │ │ 0x00cc6110 22706c61 63655061 67655072 6f6d7074 "placePagePrompt │ │ │ │ 0x00cc6120 00000000 00000000 0e000000 00000000 ................ │ │ │ │ 0x00cc6130 43484543 4b286375 72722e6d 5f64656c CHECK(curr.m_del │ │ │ │ 0x00cc6140 656c7461 203e3e20 3632203d 3d203029 elta >> 62 == 0) │ │ │ │ 0x00cc6150 01234567 89abcdef fedcba98 76543210 .#Eg........vT2. │ │ │ │ @@ -49737,909 +49737,909 @@ │ │ │ │ 0x00d34460 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ 0x00d34470 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ 0x00d34480 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ 0x00d34490 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ 0x00d344a0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ 0x00d344b0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ 0x00d344c0 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d344d0 63332061 5f706f73 6974696f 6e3b200a c3 a_position; . │ │ │ │ - 0x00d344e0 2020696e 20766563 3220615f 636f6c6f in vec2 a_colo │ │ │ │ - 0x00d344f0 72546578 436f6f72 64733b20 0a202023 rTexCoords; . # │ │ │ │ - 0x00d34500 69666465 6620454e 41424c45 5f565446 ifdef ENABLE_VTF │ │ │ │ - 0x00d34510 200a2020 6f757420 4c4f575f 50207665 . out LOW_P ve │ │ │ │ - 0x00d34520 63342076 5f636f6c 6f723b20 0a202023 c4 v_color; . # │ │ │ │ - 0x00d34530 656c7365 200a2020 6f757420 76656332 else . out vec2 │ │ │ │ - 0x00d34540 20765f63 6f6c6f72 54657843 6f6f7264 v_colorTexCoord │ │ │ │ - 0x00d34550 733b200a 20202365 6e646966 200a2020 s; . #endif . │ │ │ │ - 0x00d34560 756e6966 6f726d20 6d617434 20755f6d uniform mat4 u_m │ │ │ │ - 0x00d34570 6f64656c 56696577 3b200a20 20756e69 odelView; . uni │ │ │ │ - 0x00d34580 666f726d 206d6174 3420755f 70726f6a form mat4 u_proj │ │ │ │ - 0x00d34590 65637469 6f6e3b20 0a202075 6e69666f ection; . unifo │ │ │ │ - 0x00d345a0 726d206d 61743420 755f7069 766f7454 rm mat4 u_pivotT │ │ │ │ - 0x00d345b0 72616e73 666f726d 3b200a20 20756e69 ransform; . uni │ │ │ │ - 0x00d345c0 666f726d 20766563 3220755f 636f6e74 form vec2 u_cont │ │ │ │ - 0x00d345d0 72617374 47616d6d 613b200a 2020756e rastGamma; . un │ │ │ │ - 0x00d345e0 69666f72 6d20666c 6f617420 755f6f70 iform float u_op │ │ │ │ - 0x00d345f0 61636974 793b200a 2020756e 69666f72 acity; . unifor │ │ │ │ - 0x00d34600 6d20666c 6f617420 755f7a53 63616c65 m float u_zScale │ │ │ │ - 0x00d34610 3b200a20 20756e69 666f726d 20666c6f ; . uniform flo │ │ │ │ - 0x00d34620 61742075 5f696e74 6572706f 6c617469 at u_interpolati │ │ │ │ - 0x00d34630 6f6e3b20 0a202075 6e69666f 726d2066 on; . uniform f │ │ │ │ - 0x00d34640 6c6f6174 20755f69 734f7574 6c696e65 loat u_isOutline │ │ │ │ - 0x00d34650 50617373 3b200a20 20236966 64656620 Pass; . #ifdef │ │ │ │ - 0x00d34660 454e4142 4c455f56 5446200a 2020756e ENABLE_VTF . un │ │ │ │ - 0x00d34670 69666f72 6d207361 6d706c65 72324420 iform sampler2D │ │ │ │ - 0x00d34680 755f636f 6c6f7254 65783b20 0a202023 u_colorTex; . # │ │ │ │ - 0x00d34690 656e6469 66200a20 20636f6e 73742066 endif . const f │ │ │ │ - 0x00d346a0 6c6f6174 206b5368 61706543 6f6f7264 loat kShapeCoord │ │ │ │ - 0x00d346b0 5363616c 6172203d 20313030 302e303b Scalar = 1000.0; │ │ │ │ - 0x00d346c0 200a2020 76656334 20617070 6c795069 . vec4 applyPi │ │ │ │ - 0x00d346d0 766f7454 72616e73 666f726d 28766563 votTransform(vec │ │ │ │ - 0x00d346e0 34207069 766f742c 206d6174 34207069 4 pivot, mat4 pi │ │ │ │ - 0x00d346f0 766f7454 72616e73 666f726d 2c20666c votTransform, fl │ │ │ │ - 0x00d34700 6f617420 7069766f 74526561 6c5a2920 oat pivotRealZ) │ │ │ │ - 0x00d34710 0a20207b 200a2020 20207665 63342074 . { . vec4 t │ │ │ │ - 0x00d34720 72616e73 666f726d 65645069 766f7420 ransformedPivot │ │ │ │ - 0x00d34730 3d207069 766f743b 200a2020 2020666c = pivot; . fl │ │ │ │ - 0x00d34740 6f617420 77203d20 7472616e 73666f72 oat w = transfor │ │ │ │ - 0x00d34750 6d656450 69766f74 2e773b20 0a202020 medPivot.w; . │ │ │ │ - 0x00d34760 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ - 0x00d34770 742e7879 77203d20 28706976 6f745472 t.xyw = (pivotTr │ │ │ │ - 0x00d34780 616e7366 6f726d20 2a207665 63342874 ansform * vec4(t │ │ │ │ - 0x00d34790 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ - 0x00d347a0 78792c20 7069766f 74526561 6c5a2c20 xy, pivotRealZ, │ │ │ │ - 0x00d347b0 7729292e 7879773b 200a2020 20207472 w)).xyw; . tr │ │ │ │ - 0x00d347c0 616e7366 6f726d65 64506976 6f742e7a ansformedPivot.z │ │ │ │ - 0x00d347d0 202a3d20 7472616e 73666f72 6d656450 *= transformedP │ │ │ │ - 0x00d347e0 69766f74 2e77202f 20773b20 0a202023 ivot.w / w; . # │ │ │ │ - 0x00d347f0 69666465 66205655 4c4b414e 200a2020 ifdef VULKAN . │ │ │ │ - 0x00d34800 20207472 616e7366 6f726d65 64506976 transformedPiv │ │ │ │ - 0x00d34810 6f742e79 203d202d 7472616e 73666f72 ot.y = -transfor │ │ │ │ - 0x00d34820 6d656450 69766f74 2e793b20 0a202020 medPivot.y; . │ │ │ │ - 0x00d34830 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ - 0x00d34840 742e7a20 3d202874 72616e73 666f726d t.z = (transform │ │ │ │ - 0x00d34850 65645069 766f742e 7a20202b 20747261 edPivot.z + tra │ │ │ │ - 0x00d34860 6e73666f 726d6564 5069766f 742e7729 nsformedPivot.w) │ │ │ │ - 0x00d34870 202f2032 2e303b20 0a202023 656e6469 / 2.0; . #endi │ │ │ │ - 0x00d34880 66200a20 20202072 65747572 6e207472 f . return tr │ │ │ │ - 0x00d34890 616e7366 6f726d65 64506976 6f743b20 ansformedPivot; │ │ │ │ - 0x00d348a0 0a20207d 200a2020 76656334 20617070 . } . vec4 app │ │ │ │ - 0x00d348b0 6c794269 6c6c626f 61726450 69766f74 lyBillboardPivot │ │ │ │ - 0x00d348c0 5472616e 73666f72 6d287665 63342070 Transform(vec4 p │ │ │ │ - 0x00d348d0 69766f74 2c206d61 74342070 69766f74 ivot, mat4 pivot │ │ │ │ - 0x00d348e0 5472616e 73666f72 6d2c2066 6c6f6174 Transform, float │ │ │ │ - 0x00d348f0 20706976 6f745265 616c5a2c 20766563 pivotRealZ, vec │ │ │ │ - 0x00d34900 32206f66 66736574 29200a20 207b200a 2 offset) . { . │ │ │ │ - 0x00d34910 20202020 666c6f61 74206c6f 6769635a float logicZ │ │ │ │ - 0x00d34920 203d2070 69766f74 2e7a202f 20706976 = pivot.z / piv │ │ │ │ - 0x00d34930 6f742e77 3b200a20 20202076 65633420 ot.w; . vec4 │ │ │ │ - 0x00d34940 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ - 0x00d34950 203d2070 69766f74 5472616e 73666f72 = pivotTransfor │ │ │ │ - 0x00d34960 6d202a20 76656334 28706976 6f742e78 m * vec4(pivot.x │ │ │ │ - 0x00d34970 792c2070 69766f74 5265616c 5a2c2070 y, pivotRealZ, p │ │ │ │ - 0x00d34980 69766f74 2e77293b 200a2020 20207665 ivot.w); . ve │ │ │ │ - 0x00d34990 63342073 63616c65 203d2070 69766f74 c4 scale = pivot │ │ │ │ - 0x00d349a0 5472616e 73666f72 6d202a20 76656334 Transform * vec4 │ │ │ │ - 0x00d349b0 28312e30 2c202d31 2e302c20 302e302c (1.0, -1.0, 0.0, │ │ │ │ - 0x00d349c0 20312e30 293b200a 20202020 76656334 1.0); . vec4 │ │ │ │ - 0x00d349d0 20706f73 6974696f 6e203d20 76656334 position = vec4 │ │ │ │ - 0x00d349e0 28747261 6e73666f 726d6564 5069766f (transformedPivo │ │ │ │ - 0x00d349f0 742e7879 202f2074 72616e73 666f726d t.xy / transform │ │ │ │ - 0x00d34a00 65645069 766f742e 772c206c 6f676963 edPivot.w, logic │ │ │ │ - 0x00d34a10 5a2c2031 2e302920 2b207665 6334286f Z, 1.0) + vec4(o │ │ │ │ - 0x00d34a20 66667365 74202f20 7363616c 652e7720 ffset / scale.w │ │ │ │ - 0x00d34a30 2a207363 616c652e 782c2030 2e302c20 * scale.x, 0.0, │ │ │ │ - 0x00d34a40 302e3029 3b200a20 20236966 64656620 0.0); . #ifdef │ │ │ │ - 0x00d34a50 56554c4b 414e200a 20202020 706f7369 VULKAN . posi │ │ │ │ - 0x00d34a60 74696f6e 2e79203d 202d706f 73697469 tion.y = -positi │ │ │ │ - 0x00d34a70 6f6e2e79 3b200a20 20202070 6f736974 on.y; . posit │ │ │ │ - 0x00d34a80 696f6e2e 7a203d20 28706f73 6974696f ion.z = (positio │ │ │ │ - 0x00d34a90 6e2e7a20 202b2070 6f736974 696f6e2e n.z + position. │ │ │ │ - 0x00d34aa0 7729202f 20322e30 3b200a20 2023656e w) / 2.0; . #en │ │ │ │ - 0x00d34ab0 64696620 0a202020 20726574 75726e20 dif . return │ │ │ │ - 0x00d34ac0 706f7369 74696f6e 3b200a20 207d200a position; . } . │ │ │ │ - 0x00d34ad0 20207665 63322063 616c634c 696e6554 vec2 calcLineT │ │ │ │ - 0x00d34ae0 72616e73 666f726d 65644178 6973506f ransformedAxisPo │ │ │ │ - 0x00d34af0 73287665 6332206f 72696769 6e616c41 s(vec2 originalA │ │ │ │ - 0x00d34b00 78697350 6f732c20 76656332 20736869 xisPos, vec2 shi │ │ │ │ - 0x00d34b10 66746564 506f732c 206d6174 34206d6f ftedPos, mat4 mo │ │ │ │ - 0x00d34b20 64656c56 6965772c 20666c6f 61742068 delView, float h │ │ │ │ - 0x00d34b30 616c6657 69647468 29200a20 207b200a alfWidth) . { . │ │ │ │ - 0x00d34b40 20202020 76656332 2070203d 20287665 vec2 p = (ve │ │ │ │ - 0x00d34b50 63342873 68696674 6564506f 732c2030 c4(shiftedPos, 0 │ │ │ │ - 0x00d34b60 2e302c20 312e3029 202a206d 6f64656c .0, 1.0) * model │ │ │ │ - 0x00d34b70 56696577 292e7879 3b200a20 20202076 View).xy; . v │ │ │ │ - 0x00d34b80 65633220 64203d20 70202d20 6f726967 ec2 d = p - orig │ │ │ │ - 0x00d34b90 696e616c 41786973 506f733b 200a2020 inalAxisPos; . │ │ │ │ - 0x00d34ba0 20206966 2028646f 7428642c 20642920 if (dot(d, d) │ │ │ │ - 0x00d34bb0 213d2030 2e302920 0a202020 20202072 != 0.0) . r │ │ │ │ - 0x00d34bc0 65747572 6e206f72 6967696e 616c4178 eturn originalAx │ │ │ │ - 0x00d34bd0 6973506f 73202b20 6e6f726d 616c697a isPos + normaliz │ │ │ │ - 0x00d34be0 65286429 202a2068 616c6657 69647468 e(d) * halfWidth │ │ │ │ - 0x00d34bf0 3b200a20 20202065 6c736520 0a202020 ; . else . │ │ │ │ - 0x00d34c00 20202072 65747572 6e206f72 6967696e return origin │ │ │ │ - 0x00d34c10 616c4178 6973506f 733b200a 20207d20 alAxisPos; . } │ │ │ │ - 0x00d34c20 0a202076 6f696420 6d61696e 2829200a . void main() . │ │ │ │ - 0x00d34c30 20207b20 0a202020 20766563 3420706f { . vec4 po │ │ │ │ - 0x00d34c40 73203d20 76656334 28615f70 6f736974 s = vec4(a_posit │ │ │ │ - 0x00d34c50 696f6e2c 20312920 2a20755f 6d6f6465 ion, 1) * u_mode │ │ │ │ - 0x00d34c60 6c566965 77202a20 755f7072 6f6a6563 lView * u_projec │ │ │ │ - 0x00d34c70 74696f6e 3b200a20 20202067 6c5f506f tion; . gl_Po │ │ │ │ - 0x00d34c80 73697469 6f6e203d 20617070 6c795069 sition = applyPi │ │ │ │ - 0x00d34c90 766f7454 72616e73 666f726d 28706f73 votTransform(pos │ │ │ │ - 0x00d34ca0 2c20755f 7069766f 74547261 6e73666f , u_pivotTransfo │ │ │ │ - 0x00d34cb0 726d2c20 302e3029 3b200a20 20236966 rm, 0.0); . #if │ │ │ │ - 0x00d34cc0 64656620 454e4142 4c455f56 5446200a def ENABLE_VTF . │ │ │ │ - 0x00d34cd0 20202020 765f636f 6c6f7220 3d207465 v_color = te │ │ │ │ - 0x00d34ce0 78747572 6528755f 636f6c6f 72546578 xture(u_colorTex │ │ │ │ - 0x00d34cf0 2c20615f 636f6c6f 72546578 436f6f72 , a_colorTexCoor │ │ │ │ - 0x00d34d00 6473293b 200a2020 23656c73 65200a20 ds); . #else . │ │ │ │ - 0x00d34d10 20202076 5f636f6c 6f725465 78436f6f v_colorTexCoo │ │ │ │ - 0x00d34d20 72647320 3d20615f 636f6c6f 72546578 rds = a_colorTex │ │ │ │ - 0x00d34d30 436f6f72 64733b20 0a202023 656e6469 Coords; . #endi │ │ │ │ - 0x00d34d40 66200a20 207d200a 00000000 00000000 f . } ......... │ │ │ │ - 0x00d34d50 00000000 00000000 00000000 00000000 ................ │ │ │ │ - 0x00d34d60 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d34d70 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d34d80 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d34d90 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d34da0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d34db0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d34dc0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d34dd0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d34de0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d34df0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d34e00 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d34e10 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d34e20 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d34e30 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d34e40 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d34e50 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d34e60 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d34e70 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d34e80 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d34e90 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d34ea0 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d34eb0 63332061 5f706f73 6974696f 6e3b200a c3 a_position; . │ │ │ │ - 0x00d34ec0 2020696e 20766563 3320615f 6e6f726d in vec3 a_norm │ │ │ │ - 0x00d34ed0 616c3b20 0a202069 6e207665 63322061 al; . in vec2 a │ │ │ │ - 0x00d34ee0 5f636f6c 6f725465 78436f6f 7264733b _colorTexCoords; │ │ │ │ - 0x00d34ef0 200a2020 6f757420 76656332 20765f63 . out vec2 v_c │ │ │ │ - 0x00d34f00 6f6c6f72 54657843 6f6f7264 733b200a olorTexCoords; . │ │ │ │ - 0x00d34f10 20206f75 7420666c 6f617420 765f696e out float v_in │ │ │ │ - 0x00d34f20 74656e73 6974793b 200a2020 756e6966 tensity; . unif │ │ │ │ - 0x00d34f30 6f726d20 6d617434 20755f6d 6f64656c orm mat4 u_model │ │ │ │ - 0x00d34f40 56696577 3b200a20 20756e69 666f726d View; . uniform │ │ │ │ - 0x00d34f50 206d6174 3420755f 70726f6a 65637469 mat4 u_projecti │ │ │ │ - 0x00d34f60 6f6e3b20 0a202075 6e69666f 726d206d on; . uniform m │ │ │ │ - 0x00d34f70 61743420 755f7069 766f7454 72616e73 at4 u_pivotTrans │ │ │ │ - 0x00d34f80 666f726d 3b200a20 20756e69 666f726d form; . uniform │ │ │ │ - 0x00d34f90 20766563 3220755f 636f6e74 72617374 vec2 u_contrast │ │ │ │ - 0x00d34fa0 47616d6d 613b200a 2020756e 69666f72 Gamma; . unifor │ │ │ │ - 0x00d34fb0 6d20666c 6f617420 755f6f70 61636974 m float u_opacit │ │ │ │ - 0x00d34fc0 793b200a 2020756e 69666f72 6d20666c y; . uniform fl │ │ │ │ - 0x00d34fd0 6f617420 755f7a53 63616c65 3b200a20 oat u_zScale; . │ │ │ │ - 0x00d34fe0 20756e69 666f726d 20666c6f 61742075 uniform float u │ │ │ │ - 0x00d34ff0 5f696e74 6572706f 6c617469 6f6e3b20 _interpolation; │ │ │ │ - 0x00d35000 0a202075 6e69666f 726d2066 6c6f6174 . uniform float │ │ │ │ - 0x00d35010 20755f69 734f7574 6c696e65 50617373 u_isOutlinePass │ │ │ │ - 0x00d35020 3b200a20 20636f6e 73742076 65633420 ; . const vec4 │ │ │ │ - 0x00d35030 6b4e6f72 6d616c69 7a65644c 69676874 kNormalizedLight │ │ │ │ - 0x00d35040 44697220 3d207665 63342830 2e333136 Dir = vec4(0.316 │ │ │ │ - 0x00d35050 322c2030 2e302c20 302e3934 38362c20 2, 0.0, 0.9486, │ │ │ │ - 0x00d35060 302e3029 3b200a20 20636f6e 73742066 0.0); . const f │ │ │ │ - 0x00d35070 6c6f6174 206b5368 61706543 6f6f7264 loat kShapeCoord │ │ │ │ - 0x00d35080 5363616c 6172203d 20313030 302e303b Scalar = 1000.0; │ │ │ │ - 0x00d35090 200a2020 76656334 20617070 6c795069 . vec4 applyPi │ │ │ │ - 0x00d350a0 766f7454 72616e73 666f726d 28766563 votTransform(vec │ │ │ │ - 0x00d350b0 34207069 766f742c 206d6174 34207069 4 pivot, mat4 pi │ │ │ │ - 0x00d350c0 766f7454 72616e73 666f726d 2c20666c votTransform, fl │ │ │ │ - 0x00d350d0 6f617420 7069766f 74526561 6c5a2920 oat pivotRealZ) │ │ │ │ - 0x00d350e0 0a20207b 200a2020 20207665 63342074 . { . vec4 t │ │ │ │ - 0x00d350f0 72616e73 666f726d 65645069 766f7420 ransformedPivot │ │ │ │ - 0x00d35100 3d207069 766f743b 200a2020 2020666c = pivot; . fl │ │ │ │ - 0x00d35110 6f617420 77203d20 7472616e 73666f72 oat w = transfor │ │ │ │ - 0x00d35120 6d656450 69766f74 2e773b20 0a202020 medPivot.w; . │ │ │ │ - 0x00d35130 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ - 0x00d35140 742e7879 77203d20 28706976 6f745472 t.xyw = (pivotTr │ │ │ │ - 0x00d35150 616e7366 6f726d20 2a207665 63342874 ansform * vec4(t │ │ │ │ - 0x00d35160 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ - 0x00d35170 78792c20 7069766f 74526561 6c5a2c20 xy, pivotRealZ, │ │ │ │ - 0x00d35180 7729292e 7879773b 200a2020 20207472 w)).xyw; . tr │ │ │ │ - 0x00d35190 616e7366 6f726d65 64506976 6f742e7a ansformedPivot.z │ │ │ │ - 0x00d351a0 202a3d20 7472616e 73666f72 6d656450 *= transformedP │ │ │ │ - 0x00d351b0 69766f74 2e77202f 20773b20 0a202023 ivot.w / w; . # │ │ │ │ - 0x00d351c0 69666465 66205655 4c4b414e 200a2020 ifdef VULKAN . │ │ │ │ - 0x00d351d0 20207472 616e7366 6f726d65 64506976 transformedPiv │ │ │ │ - 0x00d351e0 6f742e79 203d202d 7472616e 73666f72 ot.y = -transfor │ │ │ │ - 0x00d351f0 6d656450 69766f74 2e793b20 0a202020 medPivot.y; . │ │ │ │ - 0x00d35200 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ - 0x00d35210 742e7a20 3d202874 72616e73 666f726d t.z = (transform │ │ │ │ - 0x00d35220 65645069 766f742e 7a20202b 20747261 edPivot.z + tra │ │ │ │ - 0x00d35230 6e73666f 726d6564 5069766f 742e7729 nsformedPivot.w) │ │ │ │ - 0x00d35240 202f2032 2e303b20 0a202023 656e6469 / 2.0; . #endi │ │ │ │ - 0x00d35250 66200a20 20202072 65747572 6e207472 f . return tr │ │ │ │ - 0x00d35260 616e7366 6f726d65 64506976 6f743b20 ansformedPivot; │ │ │ │ - 0x00d35270 0a20207d 200a2020 76656334 20617070 . } . vec4 app │ │ │ │ - 0x00d35280 6c794269 6c6c626f 61726450 69766f74 lyBillboardPivot │ │ │ │ - 0x00d35290 5472616e 73666f72 6d287665 63342070 Transform(vec4 p │ │ │ │ - 0x00d352a0 69766f74 2c206d61 74342070 69766f74 ivot, mat4 pivot │ │ │ │ - 0x00d352b0 5472616e 73666f72 6d2c2066 6c6f6174 Transform, float │ │ │ │ - 0x00d352c0 20706976 6f745265 616c5a2c 20766563 pivotRealZ, vec │ │ │ │ - 0x00d352d0 32206f66 66736574 29200a20 207b200a 2 offset) . { . │ │ │ │ - 0x00d352e0 20202020 666c6f61 74206c6f 6769635a float logicZ │ │ │ │ - 0x00d352f0 203d2070 69766f74 2e7a202f 20706976 = pivot.z / piv │ │ │ │ - 0x00d35300 6f742e77 3b200a20 20202076 65633420 ot.w; . vec4 │ │ │ │ - 0x00d35310 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ - 0x00d35320 203d2070 69766f74 5472616e 73666f72 = pivotTransfor │ │ │ │ - 0x00d35330 6d202a20 76656334 28706976 6f742e78 m * vec4(pivot.x │ │ │ │ - 0x00d35340 792c2070 69766f74 5265616c 5a2c2070 y, pivotRealZ, p │ │ │ │ - 0x00d35350 69766f74 2e77293b 200a2020 20207665 ivot.w); . ve │ │ │ │ - 0x00d35360 63342073 63616c65 203d2070 69766f74 c4 scale = pivot │ │ │ │ - 0x00d35370 5472616e 73666f72 6d202a20 76656334 Transform * vec4 │ │ │ │ - 0x00d35380 28312e30 2c202d31 2e302c20 302e302c (1.0, -1.0, 0.0, │ │ │ │ - 0x00d35390 20312e30 293b200a 20202020 76656334 1.0); . vec4 │ │ │ │ - 0x00d353a0 20706f73 6974696f 6e203d20 76656334 position = vec4 │ │ │ │ - 0x00d353b0 28747261 6e73666f 726d6564 5069766f (transformedPivo │ │ │ │ - 0x00d353c0 742e7879 202f2074 72616e73 666f726d t.xy / transform │ │ │ │ - 0x00d353d0 65645069 766f742e 772c206c 6f676963 edPivot.w, logic │ │ │ │ - 0x00d353e0 5a2c2031 2e302920 2b207665 6334286f Z, 1.0) + vec4(o │ │ │ │ - 0x00d353f0 66667365 74202f20 7363616c 652e7720 ffset / scale.w │ │ │ │ - 0x00d35400 2a207363 616c652e 782c2030 2e302c20 * scale.x, 0.0, │ │ │ │ - 0x00d35410 302e3029 3b200a20 20236966 64656620 0.0); . #ifdef │ │ │ │ - 0x00d35420 56554c4b 414e200a 20202020 706f7369 VULKAN . posi │ │ │ │ - 0x00d35430 74696f6e 2e79203d 202d706f 73697469 tion.y = -positi │ │ │ │ - 0x00d35440 6f6e2e79 3b200a20 20202070 6f736974 on.y; . posit │ │ │ │ - 0x00d35450 696f6e2e 7a203d20 28706f73 6974696f ion.z = (positio │ │ │ │ - 0x00d35460 6e2e7a20 202b2070 6f736974 696f6e2e n.z + position. │ │ │ │ - 0x00d35470 7729202f 20322e30 3b200a20 2023656e w) / 2.0; . #en │ │ │ │ - 0x00d35480 64696620 0a202020 20726574 75726e20 dif . return │ │ │ │ - 0x00d35490 706f7369 74696f6e 3b200a20 207d200a position; . } . │ │ │ │ - 0x00d354a0 20207665 63322063 616c634c 696e6554 vec2 calcLineT │ │ │ │ - 0x00d354b0 72616e73 666f726d 65644178 6973506f ransformedAxisPo │ │ │ │ - 0x00d354c0 73287665 6332206f 72696769 6e616c41 s(vec2 originalA │ │ │ │ - 0x00d354d0 78697350 6f732c20 76656332 20736869 xisPos, vec2 shi │ │ │ │ - 0x00d354e0 66746564 506f732c 206d6174 34206d6f ftedPos, mat4 mo │ │ │ │ - 0x00d354f0 64656c56 6965772c 20666c6f 61742068 delView, float h │ │ │ │ - 0x00d35500 616c6657 69647468 29200a20 207b200a alfWidth) . { . │ │ │ │ - 0x00d35510 20202020 76656332 2070203d 20287665 vec2 p = (ve │ │ │ │ - 0x00d35520 63342873 68696674 6564506f 732c2030 c4(shiftedPos, 0 │ │ │ │ - 0x00d35530 2e302c20 312e3029 202a206d 6f64656c .0, 1.0) * model │ │ │ │ - 0x00d35540 56696577 292e7879 3b200a20 20202076 View).xy; . v │ │ │ │ - 0x00d35550 65633220 64203d20 70202d20 6f726967 ec2 d = p - orig │ │ │ │ - 0x00d35560 696e616c 41786973 506f733b 200a2020 inalAxisPos; . │ │ │ │ - 0x00d35570 20206966 2028646f 7428642c 20642920 if (dot(d, d) │ │ │ │ - 0x00d35580 213d2030 2e302920 0a202020 20202072 != 0.0) . r │ │ │ │ - 0x00d35590 65747572 6e206f72 6967696e 616c4178 eturn originalAx │ │ │ │ - 0x00d355a0 6973506f 73202b20 6e6f726d 616c697a isPos + normaliz │ │ │ │ - 0x00d355b0 65286429 202a2068 616c6657 69647468 e(d) * halfWidth │ │ │ │ - 0x00d355c0 3b200a20 20202065 6c736520 0a202020 ; . else . │ │ │ │ - 0x00d355d0 20202072 65747572 6e206f72 6967696e return origin │ │ │ │ - 0x00d355e0 616c4178 6973506f 733b200a 20207d20 alAxisPos; . } │ │ │ │ - 0x00d355f0 0a202076 6f696420 6d61696e 2829200a . void main() . │ │ │ │ - 0x00d35600 20207b20 0a202020 20766563 3420706f { . vec4 po │ │ │ │ - 0x00d35610 73203d20 76656334 28615f70 6f736974 s = vec4(a_posit │ │ │ │ - 0x00d35620 696f6e2c 20312e30 29202a20 755f6d6f ion, 1.0) * u_mo │ │ │ │ - 0x00d35630 64656c56 6965773b 200a2020 20207665 delView; . ve │ │ │ │ - 0x00d35640 6334206e 6f726d61 6c203d20 76656334 c4 normal = vec4 │ │ │ │ - 0x00d35650 28615f70 6f736974 696f6e20 2b20615f (a_position + a_ │ │ │ │ - 0x00d35660 6e6f726d 616c2c20 312e3029 202a2075 normal, 1.0) * u │ │ │ │ - 0x00d35670 5f6d6f64 656c5669 65773b20 0a202020 _modelView; . │ │ │ │ - 0x00d35680 206e6f72 6d616c2e 78797720 3d20286e normal.xyw = (n │ │ │ │ - 0x00d35690 6f726d61 6c202a20 755f7072 6f6a6563 ormal * u_projec │ │ │ │ - 0x00d356a0 74696f6e 292e7879 773b200a 20202020 tion).xyw; . │ │ │ │ - 0x00d356b0 6e6f726d 616c2e7a 203d206e 6f726d61 normal.z = norma │ │ │ │ - 0x00d356c0 6c2e7a20 2a20755f 7a536361 6c653b20 l.z * u_zScale; │ │ │ │ - 0x00d356d0 0a202020 20706f73 2e787977 203d2028 . pos.xyw = ( │ │ │ │ - 0x00d356e0 706f7320 2a20755f 70726f6a 65637469 pos * u_projecti │ │ │ │ - 0x00d356f0 6f6e292e 7879773b 200a2020 2020706f on).xyw; . po │ │ │ │ - 0x00d35700 732e7a20 3d20615f 706f7369 74696f6e s.z = a_position │ │ │ │ - 0x00d35710 2e7a202a 20755f7a 5363616c 653b200a .z * u_zScale; . │ │ │ │ - 0x00d35720 20202020 76656334 206e6f72 6d446972 vec4 normDir │ │ │ │ - 0x00d35730 203d206e 6f726d61 6c202d20 706f733b = normal - pos; │ │ │ │ - 0x00d35740 200a2020 20206966 2028646f 74286e6f . if (dot(no │ │ │ │ - 0x00d35750 726d4469 722c206e 6f726d44 69722920 rmDir, normDir) │ │ │ │ - 0x00d35760 213d2030 2e302920 0a202020 20202076 != 0.0) . v │ │ │ │ - 0x00d35770 5f696e74 656e7369 7479203d 206d6178 _intensity = max │ │ │ │ - 0x00d35780 28302e30 2c202d64 6f74286b 4e6f726d (0.0, -dot(kNorm │ │ │ │ - 0x00d35790 616c697a 65644c69 67687444 69722c20 alizedLightDir, │ │ │ │ - 0x00d357a0 6e6f726d 616c697a 65286e6f 726d4469 normalize(normDi │ │ │ │ - 0x00d357b0 72292929 3b200a20 20202065 6c736520 r))); . else │ │ │ │ - 0x00d357c0 0a202020 20202076 5f696e74 656e7369 . v_intensi │ │ │ │ - 0x00d357d0 7479203d 20302e30 3b200a20 20202067 ty = 0.0; . g │ │ │ │ - 0x00d357e0 6c5f506f 73697469 6f6e203d 20755f70 l_Position = u_p │ │ │ │ - 0x00d357f0 69766f74 5472616e 73666f72 6d202a20 ivotTransform * │ │ │ │ - 0x00d35800 706f733b 200a2020 23696664 65662056 pos; . #ifdef V │ │ │ │ - 0x00d35810 554c4b41 4e200a20 20202067 6c5f506f ULKAN . gl_Po │ │ │ │ - 0x00d35820 73697469 6f6e2e79 203d202d 676c5f50 sition.y = -gl_P │ │ │ │ - 0x00d35830 6f736974 696f6e2e 793b200a 20202020 osition.y; . │ │ │ │ - 0x00d35840 676c5f50 6f736974 696f6e2e 7a203d20 gl_Position.z = │ │ │ │ - 0x00d35850 28676c5f 506f7369 74696f6e 2e7a2020 (gl_Position.z │ │ │ │ - 0x00d35860 2b20676c 5f506f73 6974696f 6e2e7729 + gl_Position.w) │ │ │ │ - 0x00d35870 202a2030 2e353b20 0a202023 656e6469 * 0.5; . #endi │ │ │ │ - 0x00d35880 66200a20 20202076 5f636f6c 6f725465 f . v_colorTe │ │ │ │ - 0x00d35890 78436f6f 72647320 3d20615f 636f6c6f xCoords = a_colo │ │ │ │ - 0x00d358a0 72546578 436f6f72 64733b20 0a20207d rTexCoords; . } │ │ │ │ - 0x00d358b0 200a0000 00000000 00000000 00000000 ............... │ │ │ │ - 0x00d358c0 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d358d0 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d358e0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d358f0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d35900 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d35910 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d35920 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d35930 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d35940 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d35950 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d35960 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d35970 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d35980 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d35990 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d359a0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d359b0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d359c0 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d359d0 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d359e0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d359f0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d35a00 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d35a10 63332061 5f706f73 6974696f 6e3b200a c3 a_position; . │ │ │ │ - 0x00d35a20 2020696e 20766563 3220615f 636f6c6f in vec2 a_colo │ │ │ │ - 0x00d35a30 72546578 436f6f72 64733b20 0a202023 rTexCoords; . # │ │ │ │ - 0x00d35a40 69666465 6620454e 41424c45 5f565446 ifdef ENABLE_VTF │ │ │ │ - 0x00d35a50 200a2020 6f757420 4c4f575f 50207665 . out LOW_P ve │ │ │ │ - 0x00d35a60 63342076 5f636f6c 6f723b20 0a202023 c4 v_color; . # │ │ │ │ - 0x00d35a70 656c7365 200a2020 6f757420 76656332 else . out vec2 │ │ │ │ - 0x00d35a80 20765f63 6f6c6f72 54657843 6f6f7264 v_colorTexCoord │ │ │ │ - 0x00d35a90 733b200a 20202365 6e646966 200a2020 s; . #endif . │ │ │ │ - 0x00d35aa0 756e6966 6f726d20 6d617434 20755f6d uniform mat4 u_m │ │ │ │ - 0x00d35ab0 6f64656c 56696577 3b200a20 20756e69 odelView; . uni │ │ │ │ - 0x00d35ac0 666f726d 206d6174 3420755f 70726f6a form mat4 u_proj │ │ │ │ - 0x00d35ad0 65637469 6f6e3b20 0a202075 6e69666f ection; . unifo │ │ │ │ - 0x00d35ae0 726d206d 61743420 755f7069 766f7454 rm mat4 u_pivotT │ │ │ │ - 0x00d35af0 72616e73 666f726d 3b200a20 20756e69 ransform; . uni │ │ │ │ - 0x00d35b00 666f726d 20766563 3220755f 636f6e74 form vec2 u_cont │ │ │ │ - 0x00d35b10 72617374 47616d6d 613b200a 2020756e rastGamma; . un │ │ │ │ - 0x00d35b20 69666f72 6d20666c 6f617420 755f6f70 iform float u_op │ │ │ │ - 0x00d35b30 61636974 793b200a 2020756e 69666f72 acity; . unifor │ │ │ │ - 0x00d35b40 6d20666c 6f617420 755f7a53 63616c65 m float u_zScale │ │ │ │ - 0x00d35b50 3b200a20 20756e69 666f726d 20666c6f ; . uniform flo │ │ │ │ - 0x00d35b60 61742075 5f696e74 6572706f 6c617469 at u_interpolati │ │ │ │ - 0x00d35b70 6f6e3b20 0a202075 6e69666f 726d2066 on; . uniform f │ │ │ │ - 0x00d35b80 6c6f6174 20755f69 734f7574 6c696e65 loat u_isOutline │ │ │ │ - 0x00d35b90 50617373 3b200a20 20236966 64656620 Pass; . #ifdef │ │ │ │ - 0x00d35ba0 454e4142 4c455f56 5446200a 2020756e ENABLE_VTF . un │ │ │ │ - 0x00d35bb0 69666f72 6d207361 6d706c65 72324420 iform sampler2D │ │ │ │ - 0x00d35bc0 755f636f 6c6f7254 65783b20 0a202023 u_colorTex; . # │ │ │ │ - 0x00d35bd0 656e6469 66200a20 20636f6e 73742066 endif . const f │ │ │ │ - 0x00d35be0 6c6f6174 206b5368 61706543 6f6f7264 loat kShapeCoord │ │ │ │ - 0x00d35bf0 5363616c 6172203d 20313030 302e303b Scalar = 1000.0; │ │ │ │ - 0x00d35c00 200a2020 76656334 20617070 6c795069 . vec4 applyPi │ │ │ │ - 0x00d35c10 766f7454 72616e73 666f726d 28766563 votTransform(vec │ │ │ │ - 0x00d35c20 34207069 766f742c 206d6174 34207069 4 pivot, mat4 pi │ │ │ │ - 0x00d35c30 766f7454 72616e73 666f726d 2c20666c votTransform, fl │ │ │ │ - 0x00d35c40 6f617420 7069766f 74526561 6c5a2920 oat pivotRealZ) │ │ │ │ - 0x00d35c50 0a20207b 200a2020 20207665 63342074 . { . vec4 t │ │ │ │ - 0x00d35c60 72616e73 666f726d 65645069 766f7420 ransformedPivot │ │ │ │ - 0x00d35c70 3d207069 766f743b 200a2020 2020666c = pivot; . fl │ │ │ │ - 0x00d35c80 6f617420 77203d20 7472616e 73666f72 oat w = transfor │ │ │ │ - 0x00d35c90 6d656450 69766f74 2e773b20 0a202020 medPivot.w; . │ │ │ │ - 0x00d35ca0 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ - 0x00d35cb0 742e7879 77203d20 28706976 6f745472 t.xyw = (pivotTr │ │ │ │ - 0x00d35cc0 616e7366 6f726d20 2a207665 63342874 ansform * vec4(t │ │ │ │ - 0x00d35cd0 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ - 0x00d35ce0 78792c20 7069766f 74526561 6c5a2c20 xy, pivotRealZ, │ │ │ │ - 0x00d35cf0 7729292e 7879773b 200a2020 20207472 w)).xyw; . tr │ │ │ │ - 0x00d35d00 616e7366 6f726d65 64506976 6f742e7a ansformedPivot.z │ │ │ │ - 0x00d35d10 202a3d20 7472616e 73666f72 6d656450 *= transformedP │ │ │ │ - 0x00d35d20 69766f74 2e77202f 20773b20 0a202023 ivot.w / w; . # │ │ │ │ - 0x00d35d30 69666465 66205655 4c4b414e 200a2020 ifdef VULKAN . │ │ │ │ - 0x00d35d40 20207472 616e7366 6f726d65 64506976 transformedPiv │ │ │ │ - 0x00d35d50 6f742e79 203d202d 7472616e 73666f72 ot.y = -transfor │ │ │ │ - 0x00d35d60 6d656450 69766f74 2e793b20 0a202020 medPivot.y; . │ │ │ │ - 0x00d35d70 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ - 0x00d35d80 742e7a20 3d202874 72616e73 666f726d t.z = (transform │ │ │ │ - 0x00d35d90 65645069 766f742e 7a20202b 20747261 edPivot.z + tra │ │ │ │ - 0x00d35da0 6e73666f 726d6564 5069766f 742e7729 nsformedPivot.w) │ │ │ │ - 0x00d35db0 202f2032 2e303b20 0a202023 656e6469 / 2.0; . #endi │ │ │ │ - 0x00d35dc0 66200a20 20202072 65747572 6e207472 f . return tr │ │ │ │ - 0x00d35dd0 616e7366 6f726d65 64506976 6f743b20 ansformedPivot; │ │ │ │ - 0x00d35de0 0a20207d 200a2020 76656334 20617070 . } . vec4 app │ │ │ │ - 0x00d35df0 6c794269 6c6c626f 61726450 69766f74 lyBillboardPivot │ │ │ │ - 0x00d35e00 5472616e 73666f72 6d287665 63342070 Transform(vec4 p │ │ │ │ - 0x00d35e10 69766f74 2c206d61 74342070 69766f74 ivot, mat4 pivot │ │ │ │ - 0x00d35e20 5472616e 73666f72 6d2c2066 6c6f6174 Transform, float │ │ │ │ - 0x00d35e30 20706976 6f745265 616c5a2c 20766563 pivotRealZ, vec │ │ │ │ - 0x00d35e40 32206f66 66736574 29200a20 207b200a 2 offset) . { . │ │ │ │ - 0x00d35e50 20202020 666c6f61 74206c6f 6769635a float logicZ │ │ │ │ - 0x00d35e60 203d2070 69766f74 2e7a202f 20706976 = pivot.z / piv │ │ │ │ - 0x00d35e70 6f742e77 3b200a20 20202076 65633420 ot.w; . vec4 │ │ │ │ - 0x00d35e80 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ - 0x00d35e90 203d2070 69766f74 5472616e 73666f72 = pivotTransfor │ │ │ │ - 0x00d35ea0 6d202a20 76656334 28706976 6f742e78 m * vec4(pivot.x │ │ │ │ - 0x00d35eb0 792c2070 69766f74 5265616c 5a2c2070 y, pivotRealZ, p │ │ │ │ - 0x00d35ec0 69766f74 2e77293b 200a2020 20207665 ivot.w); . ve │ │ │ │ - 0x00d35ed0 63342073 63616c65 203d2070 69766f74 c4 scale = pivot │ │ │ │ - 0x00d35ee0 5472616e 73666f72 6d202a20 76656334 Transform * vec4 │ │ │ │ - 0x00d35ef0 28312e30 2c202d31 2e302c20 302e302c (1.0, -1.0, 0.0, │ │ │ │ - 0x00d35f00 20312e30 293b200a 20202020 76656334 1.0); . vec4 │ │ │ │ - 0x00d35f10 20706f73 6974696f 6e203d20 76656334 position = vec4 │ │ │ │ - 0x00d35f20 28747261 6e73666f 726d6564 5069766f (transformedPivo │ │ │ │ - 0x00d35f30 742e7879 202f2074 72616e73 666f726d t.xy / transform │ │ │ │ - 0x00d35f40 65645069 766f742e 772c206c 6f676963 edPivot.w, logic │ │ │ │ - 0x00d35f50 5a2c2031 2e302920 2b207665 6334286f Z, 1.0) + vec4(o │ │ │ │ - 0x00d35f60 66667365 74202f20 7363616c 652e7720 ffset / scale.w │ │ │ │ - 0x00d35f70 2a207363 616c652e 782c2030 2e302c20 * scale.x, 0.0, │ │ │ │ - 0x00d35f80 302e3029 3b200a20 20236966 64656620 0.0); . #ifdef │ │ │ │ - 0x00d35f90 56554c4b 414e200a 20202020 706f7369 VULKAN . posi │ │ │ │ - 0x00d35fa0 74696f6e 2e79203d 202d706f 73697469 tion.y = -positi │ │ │ │ - 0x00d35fb0 6f6e2e79 3b200a20 20202070 6f736974 on.y; . posit │ │ │ │ - 0x00d35fc0 696f6e2e 7a203d20 28706f73 6974696f ion.z = (positio │ │ │ │ - 0x00d35fd0 6e2e7a20 202b2070 6f736974 696f6e2e n.z + position. │ │ │ │ - 0x00d35fe0 7729202f 20322e30 3b200a20 2023656e w) / 2.0; . #en │ │ │ │ - 0x00d35ff0 64696620 0a202020 20726574 75726e20 dif . return │ │ │ │ - 0x00d36000 706f7369 74696f6e 3b200a20 207d200a position; . } . │ │ │ │ - 0x00d36010 20207665 63322063 616c634c 696e6554 vec2 calcLineT │ │ │ │ - 0x00d36020 72616e73 666f726d 65644178 6973506f ransformedAxisPo │ │ │ │ - 0x00d36030 73287665 6332206f 72696769 6e616c41 s(vec2 originalA │ │ │ │ - 0x00d36040 78697350 6f732c20 76656332 20736869 xisPos, vec2 shi │ │ │ │ - 0x00d36050 66746564 506f732c 206d6174 34206d6f ftedPos, mat4 mo │ │ │ │ - 0x00d36060 64656c56 6965772c 20666c6f 61742068 delView, float h │ │ │ │ - 0x00d36070 616c6657 69647468 29200a20 207b200a alfWidth) . { . │ │ │ │ - 0x00d36080 20202020 76656332 2070203d 20287665 vec2 p = (ve │ │ │ │ - 0x00d36090 63342873 68696674 6564506f 732c2030 c4(shiftedPos, 0 │ │ │ │ - 0x00d360a0 2e302c20 312e3029 202a206d 6f64656c .0, 1.0) * model │ │ │ │ - 0x00d360b0 56696577 292e7879 3b200a20 20202076 View).xy; . v │ │ │ │ - 0x00d360c0 65633220 64203d20 70202d20 6f726967 ec2 d = p - orig │ │ │ │ - 0x00d360d0 696e616c 41786973 506f733b 200a2020 inalAxisPos; . │ │ │ │ - 0x00d360e0 20206966 2028646f 7428642c 20642920 if (dot(d, d) │ │ │ │ - 0x00d360f0 213d2030 2e302920 0a202020 20202072 != 0.0) . r │ │ │ │ - 0x00d36100 65747572 6e206f72 6967696e 616c4178 eturn originalAx │ │ │ │ - 0x00d36110 6973506f 73202b20 6e6f726d 616c697a isPos + normaliz │ │ │ │ - 0x00d36120 65286429 202a2068 616c6657 69647468 e(d) * halfWidth │ │ │ │ - 0x00d36130 3b200a20 20202065 6c736520 0a202020 ; . else . │ │ │ │ - 0x00d36140 20202072 65747572 6e206f72 6967696e return origin │ │ │ │ - 0x00d36150 616c4178 6973506f 733b200a 20207d20 alAxisPos; . } │ │ │ │ - 0x00d36160 0a202076 6f696420 6d61696e 2829200a . void main() . │ │ │ │ - 0x00d36170 20207b20 0a202020 20766563 3420706f { . vec4 po │ │ │ │ - 0x00d36180 73203d20 76656334 28615f70 6f736974 s = vec4(a_posit │ │ │ │ - 0x00d36190 696f6e2c 20312e30 29202a20 755f6d6f ion, 1.0) * u_mo │ │ │ │ - 0x00d361a0 64656c56 6965773b 200a2020 2020706f delView; . po │ │ │ │ - 0x00d361b0 732e7879 77203d20 28706f73 202a2075 s.xyw = (pos * u │ │ │ │ - 0x00d361c0 5f70726f 6a656374 696f6e29 2e787977 _projection).xyw │ │ │ │ - 0x00d361d0 3b200a20 20202070 6f732e7a 203d2061 ; . pos.z = a │ │ │ │ - 0x00d361e0 5f706f73 6974696f 6e2e7a20 2a20755f _position.z * u_ │ │ │ │ - 0x00d361f0 7a536361 6c653b20 0a202020 20676c5f zScale; . gl_ │ │ │ │ - 0x00d36200 506f7369 74696f6e 203d2075 5f706976 Position = u_piv │ │ │ │ - 0x00d36210 6f745472 616e7366 6f726d20 2a20706f otTransform * po │ │ │ │ - 0x00d36220 733b200a 20202369 66646566 2056554c s; . #ifdef VUL │ │ │ │ - 0x00d36230 4b414e20 0a202020 20676c5f 506f7369 KAN . gl_Posi │ │ │ │ - 0x00d36240 74696f6e 2e79203d 202d676c 5f506f73 tion.y = -gl_Pos │ │ │ │ - 0x00d36250 6974696f 6e2e793b 200a2020 2020676c ition.y; . gl │ │ │ │ - 0x00d36260 5f506f73 6974696f 6e2e7a20 3d202867 _Position.z = (g │ │ │ │ - 0x00d36270 6c5f506f 73697469 6f6e2e7a 20202b20 l_Position.z + │ │ │ │ - 0x00d36280 676c5f50 6f736974 696f6e2e 7729202a gl_Position.w) * │ │ │ │ - 0x00d36290 20302e35 3b200a20 2023656e 64696620 0.5; . #endif │ │ │ │ - 0x00d362a0 0a202023 69666465 6620454e 41424c45 . #ifdef ENABLE │ │ │ │ - 0x00d362b0 5f565446 200a2020 2020765f 636f6c6f _VTF . v_colo │ │ │ │ - 0x00d362c0 72203d20 74657874 75726528 755f636f r = texture(u_co │ │ │ │ - 0x00d362d0 6c6f7254 65782c20 615f636f 6c6f7254 lorTex, a_colorT │ │ │ │ - 0x00d362e0 6578436f 6f726473 293b200a 20202365 exCoords); . #e │ │ │ │ - 0x00d362f0 6c736520 0a202020 20765f63 6f6c6f72 lse . v_color │ │ │ │ - 0x00d36300 54657843 6f6f7264 73203d20 615f636f TexCoords = a_co │ │ │ │ - 0x00d36310 6c6f7254 6578436f 6f726473 3b200a20 lorTexCoords; . │ │ │ │ - 0x00d36320 2023656e 64696620 0a20207d 200a0000 #endif . } ... │ │ │ │ - 0x00d36330 00000000 00000000 00000000 00000000 ................ │ │ │ │ - 0x00d36340 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d36350 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d36360 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d36370 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d36380 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d36390 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d363a0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d363b0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d363c0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d363d0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d363e0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d363f0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d36400 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d36410 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d36420 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d36430 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d36440 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d36450 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d36460 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d36470 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d36480 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d36490 63332076 5f6e6f72 6d616c3b 200a2020 c3 v_normal; . │ │ │ │ - 0x00d364a0 6f757420 76656334 20765f46 72616743 out vec4 v_FragC │ │ │ │ - 0x00d364b0 6f6c6f72 3b200a20 20756e69 666f726d olor; . uniform │ │ │ │ - 0x00d364c0 206d6174 3420755f 7472616e 73666f72 mat4 u_transfor │ │ │ │ - 0x00d364d0 6d3b200a 2020756e 69666f72 6d206d61 m; . uniform ma │ │ │ │ - 0x00d364e0 74342075 5f6e6f72 6d616c54 72616e73 t4 u_normalTrans │ │ │ │ - 0x00d364f0 666f726d 3b200a20 20756e69 666f726d form; . uniform │ │ │ │ - 0x00d36500 20766563 3420755f 636f6c6f 723b200a vec4 u_color; . │ │ │ │ - 0x00d36510 2020756e 69666f72 6d207665 63322075 uniform vec2 u │ │ │ │ - 0x00d36520 5f746578 436f6f72 64466c69 7070696e _texCoordFlippin │ │ │ │ - 0x00d36530 673b200a 2020636f 6e737420 76656333 g; . const vec3 │ │ │ │ - 0x00d36540 206c6967 68744469 72203d20 76656333 lightDir = vec3 │ │ │ │ - 0x00d36550 28302e33 31362c20 302e302c 20302e39 (0.316, 0.0, 0.9 │ │ │ │ - 0x00d36560 3438293b 200a2020 636f6e73 7420666c 48); . const fl │ │ │ │ - 0x00d36570 6f617420 6b536861 7065436f 6f726453 oat kShapeCoordS │ │ │ │ - 0x00d36580 63616c61 72203d20 31303030 2e303b20 calar = 1000.0; │ │ │ │ - 0x00d36590 0a202076 6f696420 6d61696e 2829200a . void main() . │ │ │ │ - 0x00d365a0 20207b20 0a202020 20666c6f 61742070 { . float p │ │ │ │ - 0x00d365b0 686f6e67 44696666 75736520 3d206d61 hongDiffuse = ma │ │ │ │ - 0x00d365c0 7828302e 302c202d 646f7428 6c696768 x(0.0, -dot(ligh │ │ │ │ - 0x00d365d0 74446972 2c20765f 6e6f726d 616c2929 tDir, v_normal)) │ │ │ │ - 0x00d365e0 3b200a20 20202076 5f467261 67436f6c ; . v_FragCol │ │ │ │ - 0x00d365f0 6f72203d 20766563 34282870 686f6e67 or = vec4((phong │ │ │ │ - 0x00d36600 44696666 75736520 2a20302e 35202b20 Diffuse * 0.5 + │ │ │ │ - 0x00d36610 302e3529 202a2075 5f636f6c 6f722e72 0.5) * u_color.r │ │ │ │ - 0x00d36620 67622c20 755f636f 6c6f722e 61293b20 gb, u_color.a); │ │ │ │ - 0x00d36630 0a20207d 200a0000 00000000 00000000 . } ........... │ │ │ │ - 0x00d36640 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d36650 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d36660 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d36670 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d36680 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d36690 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d366a0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d366b0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d366c0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d366d0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d366e0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d366f0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d36700 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d36710 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d36720 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d36730 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d36740 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d36750 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d36760 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d36770 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d36780 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d36790 63332061 5f706f73 3b200a20 20696e20 c3 a_pos; . in │ │ │ │ - 0x00d367a0 76656333 20615f6e 6f726d61 6c3b200a vec3 a_normal; . │ │ │ │ - 0x00d367b0 20206f75 74207665 63332076 5f6e6f72 out vec3 v_nor │ │ │ │ - 0x00d367c0 6d616c3b 200a2020 756e6966 6f726d20 mal; . uniform │ │ │ │ - 0x00d367d0 6d617434 20755f74 72616e73 666f726d mat4 u_transform │ │ │ │ - 0x00d367e0 3b200a20 20756e69 666f726d 206d6174 ; . uniform mat │ │ │ │ - 0x00d367f0 3420755f 6e6f726d 616c5472 616e7366 4 u_normalTransf │ │ │ │ - 0x00d36800 6f726d3b 200a2020 756e6966 6f726d20 orm; . uniform │ │ │ │ - 0x00d36810 76656334 20755f63 6f6c6f72 3b200a20 vec4 u_color; . │ │ │ │ - 0x00d36820 20756e69 666f726d 20766563 3220755f uniform vec2 u_ │ │ │ │ - 0x00d36830 74657843 6f6f7264 466c6970 70696e67 texCoordFlipping │ │ │ │ - 0x00d36840 3b200a20 20636f6e 73742066 6c6f6174 ; . const float │ │ │ │ - 0x00d36850 206b5368 61706543 6f6f7264 5363616c kShapeCoordScal │ │ │ │ - 0x00d36860 6172203d 20313030 302e303b 200a2020 ar = 1000.0; . │ │ │ │ - 0x00d36870 76656334 20617070 6c795069 766f7454 vec4 applyPivotT │ │ │ │ - 0x00d36880 72616e73 666f726d 28766563 34207069 ransform(vec4 pi │ │ │ │ - 0x00d36890 766f742c 206d6174 34207069 766f7454 vot, mat4 pivotT │ │ │ │ - 0x00d368a0 72616e73 666f726d 2c20666c 6f617420 ransform, float │ │ │ │ - 0x00d368b0 7069766f 74526561 6c5a2920 0a20207b pivotRealZ) . { │ │ │ │ - 0x00d368c0 200a2020 20207665 63342074 72616e73 . vec4 trans │ │ │ │ - 0x00d368d0 666f726d 65645069 766f7420 3d207069 formedPivot = pi │ │ │ │ - 0x00d368e0 766f743b 200a2020 2020666c 6f617420 vot; . float │ │ │ │ - 0x00d368f0 77203d20 7472616e 73666f72 6d656450 w = transformedP │ │ │ │ - 0x00d36900 69766f74 2e773b20 0a202020 20747261 ivot.w; . tra │ │ │ │ - 0x00d36910 6e73666f 726d6564 5069766f 742e7879 nsformedPivot.xy │ │ │ │ - 0x00d36920 77203d20 28706976 6f745472 616e7366 w = (pivotTransf │ │ │ │ - 0x00d36930 6f726d20 2a207665 63342874 72616e73 orm * vec4(trans │ │ │ │ - 0x00d36940 666f726d 65645069 766f742e 78792c20 formedPivot.xy, │ │ │ │ - 0x00d36950 7069766f 74526561 6c5a2c20 7729292e pivotRealZ, w)). │ │ │ │ - 0x00d36960 7879773b 200a2020 20207472 616e7366 xyw; . transf │ │ │ │ - 0x00d36970 6f726d65 64506976 6f742e7a 202a3d20 ormedPivot.z *= │ │ │ │ - 0x00d36980 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ - 0x00d36990 2e77202f 20773b20 0a202023 69666465 .w / w; . #ifde │ │ │ │ - 0x00d369a0 66205655 4c4b414e 200a2020 20207472 f VULKAN . tr │ │ │ │ - 0x00d369b0 616e7366 6f726d65 64506976 6f742e79 ansformedPivot.y │ │ │ │ - 0x00d369c0 203d202d 7472616e 73666f72 6d656450 = -transformedP │ │ │ │ - 0x00d369d0 69766f74 2e793b20 0a202020 20747261 ivot.y; . tra │ │ │ │ - 0x00d369e0 6e73666f 726d6564 5069766f 742e7a20 nsformedPivot.z │ │ │ │ - 0x00d369f0 3d202874 72616e73 666f726d 65645069 = (transformedPi │ │ │ │ - 0x00d36a00 766f742e 7a20202b 20747261 6e73666f vot.z + transfo │ │ │ │ - 0x00d36a10 726d6564 5069766f 742e7729 202f2032 rmedPivot.w) / 2 │ │ │ │ - 0x00d36a20 2e303b20 0a202023 656e6469 66200a20 .0; . #endif . │ │ │ │ - 0x00d36a30 20202072 65747572 6e207472 616e7366 return transf │ │ │ │ - 0x00d36a40 6f726d65 64506976 6f743b20 0a20207d ormedPivot; . } │ │ │ │ - 0x00d36a50 200a2020 76656334 20617070 6c794269 . vec4 applyBi │ │ │ │ - 0x00d36a60 6c6c626f 61726450 69766f74 5472616e llboardPivotTran │ │ │ │ - 0x00d36a70 73666f72 6d287665 63342070 69766f74 sform(vec4 pivot │ │ │ │ - 0x00d36a80 2c206d61 74342070 69766f74 5472616e , mat4 pivotTran │ │ │ │ - 0x00d36a90 73666f72 6d2c2066 6c6f6174 20706976 sform, float piv │ │ │ │ - 0x00d36aa0 6f745265 616c5a2c 20766563 32206f66 otRealZ, vec2 of │ │ │ │ - 0x00d36ab0 66736574 29200a20 207b200a 20202020 fset) . { . │ │ │ │ - 0x00d36ac0 666c6f61 74206c6f 6769635a 203d2070 float logicZ = p │ │ │ │ - 0x00d36ad0 69766f74 2e7a202f 20706976 6f742e77 ivot.z / pivot.w │ │ │ │ - 0x00d36ae0 3b200a20 20202076 65633420 7472616e ; . vec4 tran │ │ │ │ - 0x00d36af0 73666f72 6d656450 69766f74 203d2070 sformedPivot = p │ │ │ │ - 0x00d36b00 69766f74 5472616e 73666f72 6d202a20 ivotTransform * │ │ │ │ - 0x00d36b10 76656334 28706976 6f742e78 792c2070 vec4(pivot.xy, p │ │ │ │ - 0x00d36b20 69766f74 5265616c 5a2c2070 69766f74 ivotRealZ, pivot │ │ │ │ - 0x00d36b30 2e77293b 200a2020 20207665 63342073 .w); . vec4 s │ │ │ │ - 0x00d36b40 63616c65 203d2070 69766f74 5472616e cale = pivotTran │ │ │ │ - 0x00d36b50 73666f72 6d202a20 76656334 28312e30 sform * vec4(1.0 │ │ │ │ - 0x00d36b60 2c202d31 2e302c20 302e302c 20312e30 , -1.0, 0.0, 1.0 │ │ │ │ - 0x00d36b70 293b200a 20202020 76656334 20706f73 ); . vec4 pos │ │ │ │ - 0x00d36b80 6974696f 6e203d20 76656334 28747261 ition = vec4(tra │ │ │ │ - 0x00d36b90 6e73666f 726d6564 5069766f 742e7879 nsformedPivot.xy │ │ │ │ - 0x00d36ba0 202f2074 72616e73 666f726d 65645069 / transformedPi │ │ │ │ - 0x00d36bb0 766f742e 772c206c 6f676963 5a2c2031 vot.w, logicZ, 1 │ │ │ │ - 0x00d36bc0 2e302920 2b207665 6334286f 66667365 .0) + vec4(offse │ │ │ │ - 0x00d36bd0 74202f20 7363616c 652e7720 2a207363 t / scale.w * sc │ │ │ │ - 0x00d36be0 616c652e 782c2030 2e302c20 302e3029 ale.x, 0.0, 0.0) │ │ │ │ - 0x00d36bf0 3b200a20 20236966 64656620 56554c4b ; . #ifdef VULK │ │ │ │ - 0x00d36c00 414e200a 20202020 706f7369 74696f6e AN . position │ │ │ │ - 0x00d36c10 2e79203d 202d706f 73697469 6f6e2e79 .y = -position.y │ │ │ │ - 0x00d36c20 3b200a20 20202070 6f736974 696f6e2e ; . position. │ │ │ │ - 0x00d36c30 7a203d20 28706f73 6974696f 6e2e7a20 z = (position.z │ │ │ │ - 0x00d36c40 202b2070 6f736974 696f6e2e 7729202f + position.w) / │ │ │ │ - 0x00d36c50 20322e30 3b200a20 2023656e 64696620 2.0; . #endif │ │ │ │ - 0x00d36c60 0a202020 20726574 75726e20 706f7369 . return posi │ │ │ │ - 0x00d36c70 74696f6e 3b200a20 207d200a 20207665 tion; . } . ve │ │ │ │ - 0x00d36c80 63322063 616c634c 696e6554 72616e73 c2 calcLineTrans │ │ │ │ - 0x00d36c90 666f726d 65644178 6973506f 73287665 formedAxisPos(ve │ │ │ │ - 0x00d36ca0 6332206f 72696769 6e616c41 78697350 c2 originalAxisP │ │ │ │ - 0x00d36cb0 6f732c20 76656332 20736869 66746564 os, vec2 shifted │ │ │ │ - 0x00d36cc0 506f732c 206d6174 34206d6f 64656c56 Pos, mat4 modelV │ │ │ │ - 0x00d36cd0 6965772c 20666c6f 61742068 616c6657 iew, float halfW │ │ │ │ - 0x00d36ce0 69647468 29200a20 207b200a 20202020 idth) . { . │ │ │ │ - 0x00d36cf0 76656332 2070203d 20287665 63342873 vec2 p = (vec4(s │ │ │ │ - 0x00d36d00 68696674 6564506f 732c2030 2e302c20 hiftedPos, 0.0, │ │ │ │ - 0x00d36d10 312e3029 202a206d 6f64656c 56696577 1.0) * modelView │ │ │ │ - 0x00d36d20 292e7879 3b200a20 20202076 65633220 ).xy; . vec2 │ │ │ │ - 0x00d36d30 64203d20 70202d20 6f726967 696e616c d = p - original │ │ │ │ - 0x00d36d40 41786973 506f733b 200a2020 20206966 AxisPos; . if │ │ │ │ - 0x00d36d50 2028646f 7428642c 20642920 213d2030 (dot(d, d) != 0 │ │ │ │ - 0x00d36d60 2e302920 0a202020 20202072 65747572 .0) . retur │ │ │ │ - 0x00d36d70 6e206f72 6967696e 616c4178 6973506f n originalAxisPo │ │ │ │ - 0x00d36d80 73202b20 6e6f726d 616c697a 65286429 s + normalize(d) │ │ │ │ - 0x00d36d90 202a2068 616c6657 69647468 3b200a20 * halfWidth; . │ │ │ │ - 0x00d36da0 20202065 6c736520 0a202020 20202072 else . r │ │ │ │ - 0x00d36db0 65747572 6e206f72 6967696e 616c4178 eturn originalAx │ │ │ │ - 0x00d36dc0 6973506f 733b200a 20207d20 0a202076 isPos; . } . v │ │ │ │ - 0x00d36dd0 6f696420 6d61696e 2829200a 20207b20 oid main() . { │ │ │ │ - 0x00d36de0 0a202020 20766563 3420706f 73697469 . vec4 positi │ │ │ │ - 0x00d36df0 6f6e203d 20755f74 72616e73 666f726d on = u_transform │ │ │ │ - 0x00d36e00 202a2076 65633428 615f706f 732c2031 * vec4(a_pos, 1 │ │ │ │ - 0x00d36e10 2e30293b 200a2020 2020765f 6e6f726d .0); . v_norm │ │ │ │ - 0x00d36e20 616c203d 206e6f72 6d616c69 7a652828 al = normalize(( │ │ │ │ - 0x00d36e30 755f6e6f 726d616c 5472616e 73666f72 u_normalTransfor │ │ │ │ - 0x00d36e40 6d202a20 76656334 28615f6e 6f726d61 m * vec4(a_norma │ │ │ │ - 0x00d36e50 6c2c2030 2e302929 2e78797a 293b200a l, 0.0)).xyz); . │ │ │ │ - 0x00d36e60 20202020 676c5f50 6f736974 696f6e20 gl_Position │ │ │ │ - 0x00d36e70 3d20706f 73697469 6f6e3b20 0a202023 = position; . # │ │ │ │ - 0x00d36e80 69666465 66205655 4c4b414e 200a2020 ifdef VULKAN . │ │ │ │ - 0x00d36e90 2020676c 5f506f73 6974696f 6e2e7920 gl_Position.y │ │ │ │ - 0x00d36ea0 3d202d67 6c5f506f 73697469 6f6e2e79 = -gl_Position.y │ │ │ │ - 0x00d36eb0 3b200a20 20202067 6c5f506f 73697469 ; . gl_Positi │ │ │ │ - 0x00d36ec0 6f6e2e7a 203d2028 676c5f50 6f736974 on.z = (gl_Posit │ │ │ │ - 0x00d36ed0 696f6e2e 7a202b20 676c5f50 6f736974 ion.z + gl_Posit │ │ │ │ - 0x00d36ee0 696f6e2e 7729202a 20302e35 3b200a20 ion.w) * 0.5; . │ │ │ │ - 0x00d36ef0 2023656e 64696620 0a20207d 200a0000 #endif . } ... │ │ │ │ - 0x00d36f00 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d36f10 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d36f20 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d36f30 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d36f40 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d36f50 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d36f60 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d36f70 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d36f80 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d36f90 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d36fa0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d36fb0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d36fc0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d36fd0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d36fe0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d36ff0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d37000 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d37010 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d37020 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d37030 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d37040 2023656e 64696620 0a202069 6e20666c #endif . in fl │ │ │ │ - 0x00d37050 6f617420 765f696e 74656e73 6974793b oat v_intensity; │ │ │ │ - 0x00d37060 200a2020 6f757420 76656334 20765f46 . out vec4 v_F │ │ │ │ - 0x00d37070 72616743 6f6c6f72 3b200a20 20756e69 ragColor; . uni │ │ │ │ - 0x00d37080 666f726d 206d6174 3420755f 7472616e form mat4 u_tran │ │ │ │ - 0x00d37090 73666f72 6d3b200a 2020756e 69666f72 sform; . unifor │ │ │ │ - 0x00d370a0 6d206d61 74342075 5f6e6f72 6d616c54 m mat4 u_normalT │ │ │ │ - 0x00d370b0 72616e73 666f726d 3b200a20 20756e69 ransform; . uni │ │ │ │ - 0x00d370c0 666f726d 20766563 3420755f 636f6c6f form vec4 u_colo │ │ │ │ - 0x00d370d0 723b200a 2020756e 69666f72 6d207665 r; . uniform ve │ │ │ │ - 0x00d370e0 63322075 5f746578 436f6f72 64466c69 c2 u_texCoordFli │ │ │ │ - 0x00d370f0 7070696e 673b200a 2020636f 6e737420 pping; . const │ │ │ │ - 0x00d37100 666c6f61 74206b53 68617065 436f6f72 float kShapeCoor │ │ │ │ - 0x00d37110 64536361 6c617220 3d203130 30302e30 dScalar = 1000.0 │ │ │ │ - 0x00d37120 3b200a20 20766f69 64206d61 696e2829 ; . void main() │ │ │ │ - 0x00d37130 200a2020 7b200a20 20202076 5f467261 . { . v_Fra │ │ │ │ - 0x00d37140 67436f6c 6f72203d 20766563 3428755f gColor = vec4(u_ │ │ │ │ - 0x00d37150 636f6c6f 722e7267 622c2075 5f636f6c color.rgb, u_col │ │ │ │ - 0x00d37160 6f722e61 202a2073 6d6f6f74 68737465 or.a * smoothste │ │ │ │ - 0x00d37170 7028302e 372c2031 2e302c20 765f696e p(0.7, 1.0, v_in │ │ │ │ - 0x00d37180 74656e73 69747929 293b200a 20207d20 tensity)); . } │ │ │ │ - 0x00d37190 0a000000 00000000 00000000 00000000 ................ │ │ │ │ - 0x00d371a0 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d371b0 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d371c0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d371d0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d371e0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d371f0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d37200 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d37210 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d37220 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d37230 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d37240 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d37250 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d37260 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d37270 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d37280 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d37290 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d372a0 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d372b0 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d372c0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d372d0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d372e0 2023656e 64696620 0a202069 6e20666c #endif . in fl │ │ │ │ - 0x00d372f0 6f617420 765f696e 74656e73 6974793b oat v_intensity; │ │ │ │ - 0x00d37300 200a2020 6f757420 76656334 20765f46 . out vec4 v_F │ │ │ │ - 0x00d37310 72616743 6f6c6f72 3b200a20 20756e69 ragColor; . uni │ │ │ │ - 0x00d37320 666f726d 206d6174 3420755f 7472616e form mat4 u_tran │ │ │ │ - 0x00d37330 73666f72 6d3b200a 2020756e 69666f72 sform; . unifor │ │ │ │ - 0x00d37340 6d206d61 74342075 5f6e6f72 6d616c54 m mat4 u_normalT │ │ │ │ - 0x00d37350 72616e73 666f726d 3b200a20 20756e69 ransform; . uni │ │ │ │ - 0x00d37360 666f726d 20766563 3420755f 636f6c6f form vec4 u_colo │ │ │ │ - 0x00d37370 723b200a 2020756e 69666f72 6d207665 r; . uniform ve │ │ │ │ - 0x00d37380 63322075 5f746578 436f6f72 64466c69 c2 u_texCoordFli │ │ │ │ - 0x00d37390 7070696e 673b200a 2020636f 6e737420 pping; . const │ │ │ │ - 0x00d373a0 666c6f61 74206b53 68617065 436f6f72 float kShapeCoor │ │ │ │ - 0x00d373b0 64536361 6c617220 3d203130 30302e30 dScalar = 1000.0 │ │ │ │ - 0x00d373c0 3b200a20 20766f69 64206d61 696e2829 ; . void main() │ │ │ │ - 0x00d373d0 200a2020 7b200a20 20202076 5f467261 . { . v_Fra │ │ │ │ - 0x00d373e0 67436f6c 6f72203d 20766563 3428755f gColor = vec4(u_ │ │ │ │ - 0x00d373f0 636f6c6f 722e7267 622c2075 5f636f6c color.rgb, u_col │ │ │ │ - 0x00d37400 6f722e61 202a2076 5f696e74 656e7369 or.a * v_intensi │ │ │ │ - 0x00d37410 7479293b 200a2020 7d200a00 00000000 ty); . } ...... │ │ │ │ - 0x00d37420 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d37430 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d37440 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d37450 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d37460 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d37470 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d37480 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d37490 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d374a0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d374b0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d374c0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d374d0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d374e0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d374f0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d37500 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d37510 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d37520 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d37530 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d37540 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d37550 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d37560 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d37570 63332061 5f706f73 3b200a20 20696e20 c3 a_pos; . in │ │ │ │ - 0x00d37580 76656332 20615f74 6578436f 6f726473 vec2 a_texCoords │ │ │ │ - 0x00d37590 3b200a20 206f7574 20666c6f 61742076 ; . out float v │ │ │ │ - 0x00d375a0 5f696e74 656e7369 74793b20 0a202075 _intensity; . u │ │ │ │ - 0x00d375b0 6e69666f 726d206d 61743420 755f7472 niform mat4 u_tr │ │ │ │ - 0x00d375c0 616e7366 6f726d3b 200a2020 756e6966 ansform; . unif │ │ │ │ - 0x00d375d0 6f726d20 6d617434 20755f6e 6f726d61 orm mat4 u_norma │ │ │ │ - 0x00d375e0 6c547261 6e73666f 726d3b20 0a202075 lTransform; . u │ │ │ │ - 0x00d375f0 6e69666f 726d2076 65633420 755f636f niform vec4 u_co │ │ │ │ - 0x00d37600 6c6f723b 200a2020 756e6966 6f726d20 lor; . uniform │ │ │ │ - 0x00d37610 76656332 20755f74 6578436f 6f726446 vec2 u_texCoordF │ │ │ │ - 0x00d37620 6c697070 696e673b 200a2020 636f6e73 lipping; . cons │ │ │ │ - 0x00d37630 7420666c 6f617420 6b536861 7065436f t float kShapeCo │ │ │ │ - 0x00d37640 6f726453 63616c61 72203d20 31303030 ordScalar = 1000 │ │ │ │ - 0x00d37650 2e303b20 0a202076 65633420 6170706c .0; . vec4 appl │ │ │ │ - 0x00d37660 79506976 6f745472 616e7366 6f726d28 yPivotTransform( │ │ │ │ - 0x00d37670 76656334 20706976 6f742c20 6d617434 vec4 pivot, mat4 │ │ │ │ - 0x00d37680 20706976 6f745472 616e7366 6f726d2c pivotTransform, │ │ │ │ - 0x00d37690 20666c6f 61742070 69766f74 5265616c float pivotReal │ │ │ │ - 0x00d376a0 5a29200a 20207b20 0a202020 20766563 Z) . { . vec │ │ │ │ - 0x00d376b0 34207472 616e7366 6f726d65 64506976 4 transformedPiv │ │ │ │ - 0x00d376c0 6f74203d 20706976 6f743b20 0a202020 ot = pivot; . │ │ │ │ - 0x00d376d0 20666c6f 61742077 203d2074 72616e73 float w = trans │ │ │ │ - 0x00d376e0 666f726d 65645069 766f742e 773b200a formedPivot.w; . │ │ │ │ - 0x00d376f0 20202020 7472616e 73666f72 6d656450 transformedP │ │ │ │ - 0x00d37700 69766f74 2e787977 203d2028 7069766f ivot.xyw = (pivo │ │ │ │ - 0x00d37710 74547261 6e73666f 726d202a 20766563 tTransform * vec │ │ │ │ - 0x00d37720 34287472 616e7366 6f726d65 64506976 4(transformedPiv │ │ │ │ - 0x00d37730 6f742e78 792c2070 69766f74 5265616c ot.xy, pivotReal │ │ │ │ - 0x00d37740 5a2c2077 29292e78 79773b20 0a202020 Z, w)).xyw; . │ │ │ │ - 0x00d37750 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ - 0x00d37760 742e7a20 2a3d2074 72616e73 666f726d t.z *= transform │ │ │ │ - 0x00d37770 65645069 766f742e 77202f20 773b200a edPivot.w / w; . │ │ │ │ - 0x00d37780 20202369 66646566 2056554c 4b414e20 #ifdef VULKAN │ │ │ │ - 0x00d37790 0a202020 20747261 6e73666f 726d6564 . transformed │ │ │ │ - 0x00d377a0 5069766f 742e7920 3d202d74 72616e73 Pivot.y = -trans │ │ │ │ - 0x00d377b0 666f726d 65645069 766f742e 793b200a formedPivot.y; . │ │ │ │ - 0x00d377c0 20202020 7472616e 73666f72 6d656450 transformedP │ │ │ │ - 0x00d377d0 69766f74 2e7a203d 20287472 616e7366 ivot.z = (transf │ │ │ │ - 0x00d377e0 6f726d65 64506976 6f742e7a 20202b20 ormedPivot.z + │ │ │ │ - 0x00d377f0 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ - 0x00d37800 2e772920 2f20322e 303b200a 20202365 .w) / 2.0; . #e │ │ │ │ - 0x00d37810 6e646966 200a2020 20207265 7475726e ndif . return │ │ │ │ - 0x00d37820 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ - 0x00d37830 743b200a 20207d20 0a202076 65633420 t; . } . vec4 │ │ │ │ - 0x00d37840 6170706c 7942696c 6c626f61 72645069 applyBillboardPi │ │ │ │ - 0x00d37850 766f7454 72616e73 666f726d 28766563 votTransform(vec │ │ │ │ - 0x00d37860 34207069 766f742c 206d6174 34207069 4 pivot, mat4 pi │ │ │ │ - 0x00d37870 766f7454 72616e73 666f726d 2c20666c votTransform, fl │ │ │ │ - 0x00d37880 6f617420 7069766f 74526561 6c5a2c20 oat pivotRealZ, │ │ │ │ - 0x00d37890 76656332 206f6666 73657429 200a2020 vec2 offset) . │ │ │ │ - 0x00d378a0 7b200a20 20202066 6c6f6174 206c6f67 { . float log │ │ │ │ - 0x00d378b0 69635a20 3d207069 766f742e 7a202f20 icZ = pivot.z / │ │ │ │ - 0x00d378c0 7069766f 742e773b 200a2020 20207665 pivot.w; . ve │ │ │ │ - 0x00d378d0 63342074 72616e73 666f726d 65645069 c4 transformedPi │ │ │ │ - 0x00d378e0 766f7420 3d207069 766f7454 72616e73 vot = pivotTrans │ │ │ │ - 0x00d378f0 666f726d 202a2076 65633428 7069766f form * vec4(pivo │ │ │ │ - 0x00d37900 742e7879 2c207069 766f7452 65616c5a t.xy, pivotRealZ │ │ │ │ - 0x00d37910 2c207069 766f742e 77293b20 0a202020 , pivot.w); . │ │ │ │ - 0x00d37920 20766563 34207363 616c6520 3d207069 vec4 scale = pi │ │ │ │ - 0x00d37930 766f7454 72616e73 666f726d 202a2076 votTransform * v │ │ │ │ - 0x00d37940 65633428 312e302c 202d312e 302c2030 ec4(1.0, -1.0, 0 │ │ │ │ - 0x00d37950 2e302c20 312e3029 3b200a20 20202076 .0, 1.0); . v │ │ │ │ - 0x00d37960 65633420 706f7369 74696f6e 203d2076 ec4 position = v │ │ │ │ - 0x00d37970 65633428 7472616e 73666f72 6d656450 ec4(transformedP │ │ │ │ - 0x00d37980 69766f74 2e787920 2f207472 616e7366 ivot.xy / transf │ │ │ │ - 0x00d37990 6f726d65 64506976 6f742e77 2c206c6f ormedPivot.w, lo │ │ │ │ - 0x00d379a0 6769635a 2c20312e 3029202b 20766563 gicZ, 1.0) + vec │ │ │ │ - 0x00d379b0 34286f66 66736574 202f2073 63616c65 4(offset / scale │ │ │ │ - 0x00d379c0 2e77202a 20736361 6c652e78 2c20302e .w * scale.x, 0. │ │ │ │ - 0x00d379d0 302c2030 2e30293b 200a2020 23696664 0, 0.0); . #ifd │ │ │ │ - 0x00d379e0 65662056 554c4b41 4e200a20 20202070 ef VULKAN . p │ │ │ │ - 0x00d379f0 6f736974 696f6e2e 79203d20 2d706f73 osition.y = -pos │ │ │ │ - 0x00d37a00 6974696f 6e2e793b 200a2020 2020706f ition.y; . po │ │ │ │ - 0x00d37a10 73697469 6f6e2e7a 203d2028 706f7369 sition.z = (posi │ │ │ │ - 0x00d37a20 74696f6e 2e7a2020 2b20706f 73697469 tion.z + positi │ │ │ │ - 0x00d37a30 6f6e2e77 29202f20 322e303b 200a2020 on.w) / 2.0; . │ │ │ │ - 0x00d37a40 23656e64 6966200a 20202020 72657475 #endif . retu │ │ │ │ - 0x00d37a50 726e2070 6f736974 696f6e3b 200a2020 rn position; . │ │ │ │ - 0x00d37a60 7d200a20 20766563 32206361 6c634c69 } . vec2 calcLi │ │ │ │ - 0x00d37a70 6e655472 616e7366 6f726d65 64417869 neTransformedAxi │ │ │ │ - 0x00d37a80 73506f73 28766563 32206f72 6967696e sPos(vec2 origin │ │ │ │ - 0x00d37a90 616c4178 6973506f 732c2076 65633220 alAxisPos, vec2 │ │ │ │ - 0x00d37aa0 73686966 74656450 6f732c20 6d617434 shiftedPos, mat4 │ │ │ │ - 0x00d37ab0 206d6f64 656c5669 65772c20 666c6f61 modelView, floa │ │ │ │ - 0x00d37ac0 74206861 6c665769 64746829 200a2020 t halfWidth) . │ │ │ │ - 0x00d37ad0 7b200a20 20202076 65633220 70203d20 { . vec2 p = │ │ │ │ - 0x00d37ae0 28766563 34287368 69667465 64506f73 (vec4(shiftedPos │ │ │ │ - 0x00d37af0 2c20302e 302c2031 2e302920 2a206d6f , 0.0, 1.0) * mo │ │ │ │ - 0x00d37b00 64656c56 69657729 2e78793b 200a2020 delView).xy; . │ │ │ │ - 0x00d37b10 20207665 63322064 203d2070 202d206f vec2 d = p - o │ │ │ │ - 0x00d37b20 72696769 6e616c41 78697350 6f733b20 riginalAxisPos; │ │ │ │ - 0x00d37b30 0a202020 20696620 28646f74 28642c20 . if (dot(d, │ │ │ │ - 0x00d37b40 64292021 3d20302e 3029200a 20202020 d) != 0.0) . │ │ │ │ - 0x00d37b50 20207265 7475726e 206f7269 67696e61 return origina │ │ │ │ - 0x00d37b60 6c417869 73506f73 202b206e 6f726d61 lAxisPos + norma │ │ │ │ - 0x00d37b70 6c697a65 28642920 2a206861 6c665769 lize(d) * halfWi │ │ │ │ - 0x00d37b80 6474683b 200a2020 2020656c 7365200a dth; . else . │ │ │ │ - 0x00d37b90 20202020 20207265 7475726e 206f7269 return ori │ │ │ │ - 0x00d37ba0 67696e61 6c417869 73506f73 3b200a20 ginalAxisPos; . │ │ │ │ - 0x00d37bb0 207d200a 2020766f 6964206d 61696e28 } . void main( │ │ │ │ - 0x00d37bc0 29200a20 207b200a 20202020 76656334 ) . { . vec4 │ │ │ │ - 0x00d37bd0 20706f73 6974696f 6e203d20 755f7472 position = u_tr │ │ │ │ - 0x00d37be0 616e7366 6f726d20 2a207665 63342861 ansform * vec4(a │ │ │ │ - 0x00d37bf0 5f706f73 2c20312e 30293b20 0a202020 _pos, 1.0); . │ │ │ │ - 0x00d37c00 20765f69 6e74656e 73697479 203d2061 v_intensity = a │ │ │ │ - 0x00d37c10 5f746578 436f6f72 64732e78 3b200a20 _texCoords.x; . │ │ │ │ - 0x00d37c20 20202067 6c5f506f 73697469 6f6e203d gl_Position = │ │ │ │ - 0x00d37c30 20706f73 6974696f 6e3b200a 20202369 position; . #i │ │ │ │ - 0x00d37c40 66646566 2056554c 4b414e20 0a202020 fdef VULKAN . │ │ │ │ - 0x00d37c50 20676c5f 506f7369 74696f6e 2e79203d gl_Position.y = │ │ │ │ - 0x00d37c60 202d676c 5f506f73 6974696f 6e2e793b -gl_Position.y; │ │ │ │ - 0x00d37c70 200a2020 2020676c 5f506f73 6974696f . gl_Positio │ │ │ │ - 0x00d37c80 6e2e7a20 3d202867 6c5f506f 73697469 n.z = (gl_Positi │ │ │ │ - 0x00d37c90 6f6e2e7a 202b2067 6c5f506f 73697469 on.z + gl_Positi │ │ │ │ - 0x00d37ca0 6f6e2e77 29202a20 302e353b 200a2020 on.w) * 0.5; . │ │ │ │ - 0x00d37cb0 23656e64 6966200a 20207d20 0a000000 #endif . } .... │ │ │ │ + 0x00d344d0 63322076 5f636f6c 6f725465 78436f6f c2 v_colorTexCoo │ │ │ │ + 0x00d344e0 72643b20 0a20206f 75742076 65633420 rd; . out vec4 │ │ │ │ + 0x00d344f0 765f4672 6167436f 6c6f723b 200a2020 v_FragColor; . │ │ │ │ + 0x00d34500 756e6966 6f726d20 6d617434 20755f6d uniform mat4 u_m │ │ │ │ + 0x00d34510 6f64656c 56696577 3b200a20 20756e69 odelView; . uni │ │ │ │ + 0x00d34520 666f726d 206d6174 3420755f 70726f6a form mat4 u_proj │ │ │ │ + 0x00d34530 65637469 6f6e3b20 0a202075 6e69666f ection; . unifo │ │ │ │ + 0x00d34540 726d206d 61743420 755f7069 766f7454 rm mat4 u_pivotT │ │ │ │ + 0x00d34550 72616e73 666f726d 3b200a20 20756e69 ransform; . uni │ │ │ │ + 0x00d34560 666f726d 20766563 3420755f 74726166 form vec4 u_traf │ │ │ │ + 0x00d34570 66696350 6172616d 733b200a 2020756e ficParams; . un │ │ │ │ + 0x00d34580 69666f72 6d207665 63342075 5f6f7574 iform vec4 u_out │ │ │ │ + 0x00d34590 6c696e65 436f6c6f 723b200a 2020756e lineColor; . un │ │ │ │ + 0x00d345a0 69666f72 6d207665 63342075 5f6c6967 iform vec4 u_lig │ │ │ │ + 0x00d345b0 68744172 726f7743 6f6c6f72 3b200a20 htArrowColor; . │ │ │ │ + 0x00d345c0 20756e69 666f726d 20766563 3420755f uniform vec4 u_ │ │ │ │ + 0x00d345d0 6461726b 4172726f 77436f6c 6f723b20 darkArrowColor; │ │ │ │ + 0x00d345e0 0a202075 6e69666f 726d2066 6c6f6174 . uniform float │ │ │ │ + 0x00d345f0 20755f6f 75746c69 6e653b20 0a202075 u_outline; . u │ │ │ │ + 0x00d34600 6e69666f 726d2066 6c6f6174 20755f6f niform float u_o │ │ │ │ + 0x00d34610 70616369 74793b20 0a202075 6e69666f pacity; . unifo │ │ │ │ + 0x00d34620 726d2073 616d706c 65723244 20755f63 rm sampler2D u_c │ │ │ │ + 0x00d34630 6f6c6f72 5465783b 200a2020 636f6e73 olorTex; . cons │ │ │ │ + 0x00d34640 7420666c 6f617420 6b536861 7065436f t float kShapeCo │ │ │ │ + 0x00d34650 6f726453 63616c61 72203d20 31303030 ordScalar = 1000 │ │ │ │ + 0x00d34660 2e303b20 0a202076 6f696420 6d61696e .0; . void main │ │ │ │ + 0x00d34670 2829200a 20207b20 0a202020 20766563 () . { . vec │ │ │ │ + 0x00d34680 3420636f 6c6f7220 3d207465 78747572 4 color = textur │ │ │ │ + 0x00d34690 6528755f 636f6c6f 72546578 2c20765f e(u_colorTex, v_ │ │ │ │ + 0x00d346a0 636f6c6f 72546578 436f6f72 64293b20 colorTexCoord); │ │ │ │ + 0x00d346b0 0a202020 20765f46 72616743 6f6c6f72 . v_FragColor │ │ │ │ + 0x00d346c0 203d2076 65633428 636f6c6f 722e7267 = vec4(color.rg │ │ │ │ + 0x00d346d0 622c2075 5f6f7061 63697479 293b200a b, u_opacity); . │ │ │ │ + 0x00d346e0 20207d20 0a000000 00000000 00000000 } ............ │ │ │ │ + 0x00d346f0 00000000 00000000 00000000 00000000 ................ │ │ │ │ + 0x00d34700 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d34710 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d34720 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d34730 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d34740 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d34750 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d34760 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d34770 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d34780 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d34790 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d347a0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d347b0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d347c0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d347d0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d347e0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d347f0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d34800 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d34810 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d34820 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d34830 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d34840 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d34850 63322076 5f636f6c 6f725465 78436f6f c2 v_colorTexCoo │ │ │ │ + 0x00d34860 7264733b 200a2020 6f757420 76656334 rds; . out vec4 │ │ │ │ + 0x00d34870 20765f46 72616743 6f6c6f72 3b200a20 v_FragColor; . │ │ │ │ + 0x00d34880 20756e69 666f726d 206d6174 3420755f uniform mat4 u_ │ │ │ │ + 0x00d34890 6d6f6465 6c566965 773b200a 2020756e modelView; . un │ │ │ │ + 0x00d348a0 69666f72 6d206d61 74342075 5f70726f iform mat4 u_pro │ │ │ │ + 0x00d348b0 6a656374 696f6e3b 200a2020 756e6966 jection; . unif │ │ │ │ + 0x00d348c0 6f726d20 6d617434 20755f70 69766f74 orm mat4 u_pivot │ │ │ │ + 0x00d348d0 5472616e 73666f72 6d3b200a 2020756e Transform; . un │ │ │ │ + 0x00d348e0 69666f72 6d207665 63342075 5f726f75 iform vec4 u_rou │ │ │ │ + 0x00d348f0 74655061 72616d73 3b200a20 20756e69 teParams; . uni │ │ │ │ + 0x00d34900 666f726d 20766563 3420755f 636f6c6f form vec4 u_colo │ │ │ │ + 0x00d34910 723b200a 2020756e 69666f72 6d207665 r; . uniform ve │ │ │ │ + 0x00d34920 63342075 5f6d6173 6b436f6c 6f723b20 c4 u_maskColor; │ │ │ │ + 0x00d34930 0a202075 6e69666f 726d2076 65633420 . uniform vec4 │ │ │ │ + 0x00d34940 755f6f75 746c696e 65436f6c 6f723b20 u_outlineColor; │ │ │ │ + 0x00d34950 0a202075 6e69666f 726d2076 65633420 . uniform vec4 │ │ │ │ + 0x00d34960 755f6661 6b65436f 6c6f723b 200a2020 u_fakeColor; . │ │ │ │ + 0x00d34970 756e6966 6f726d20 76656334 20755f66 uniform vec4 u_f │ │ │ │ + 0x00d34980 616b654f 75746c69 6e65436f 6c6f723b akeOutlineColor; │ │ │ │ + 0x00d34990 200a2020 756e6966 6f726d20 76656332 . uniform vec2 │ │ │ │ + 0x00d349a0 20755f66 616b6542 6f726465 72733b20 u_fakeBorders; │ │ │ │ + 0x00d349b0 0a202075 6e69666f 726d2076 65633220 . uniform vec2 │ │ │ │ + 0x00d349c0 755f7061 74746572 6e3b200a 2020756e u_pattern; . un │ │ │ │ + 0x00d349d0 69666f72 6d207665 63322075 5f616e67 iform vec2 u_ang │ │ │ │ + 0x00d349e0 6c65436f 7353696e 3b200a20 20756e69 leCosSin; . uni │ │ │ │ + 0x00d349f0 666f726d 20666c6f 61742075 5f617272 form float u_arr │ │ │ │ + 0x00d34a00 6f774861 6c665769 6474683b 200a2020 owHalfWidth; . │ │ │ │ + 0x00d34a10 756e6966 6f726d20 666c6f61 7420755f uniform float u_ │ │ │ │ + 0x00d34a20 6f706163 6974793b 200a2020 756e6966 opacity; . unif │ │ │ │ + 0x00d34a30 6f726d20 73616d70 6c657232 4420755f orm sampler2D u_ │ │ │ │ + 0x00d34a40 636f6c6f 72546578 3b200a20 20636f6e colorTex; . con │ │ │ │ + 0x00d34a50 73742066 6c6f6174 206b5368 61706543 st float kShapeC │ │ │ │ + 0x00d34a60 6f6f7264 5363616c 6172203d 20313030 oordScalar = 100 │ │ │ │ + 0x00d34a70 302e303b 200a2020 766f6964 206d6169 0.0; . void mai │ │ │ │ + 0x00d34a80 6e282920 0a20207b 200a2020 20207665 n() . { . ve │ │ │ │ + 0x00d34a90 63342066 696e616c 436f6c6f 72203d20 c4 finalColor = │ │ │ │ + 0x00d34aa0 74657874 75726528 755f636f 6c6f7254 texture(u_colorT │ │ │ │ + 0x00d34ab0 65782c20 765f636f 6c6f7254 6578436f ex, v_colorTexCo │ │ │ │ + 0x00d34ac0 6f726473 293b200a 20202020 66696e61 ords); . fina │ │ │ │ + 0x00d34ad0 6c436f6c 6f722e61 202a3d20 755f6f70 lColor.a *= u_op │ │ │ │ + 0x00d34ae0 61636974 793b200a 20202020 69662028 acity; . if ( │ │ │ │ + 0x00d34af0 66696e61 6c436f6c 6f722e61 203c2030 finalColor.a < 0 │ │ │ │ + 0x00d34b00 2e303129 200a2020 20202020 64697363 .01) . disc │ │ │ │ + 0x00d34b10 6172643b 200a2020 20206669 6e616c43 ard; . finalC │ │ │ │ + 0x00d34b20 6f6c6f72 203d2076 65633428 6d697828 olor = vec4(mix( │ │ │ │ + 0x00d34b30 66696e61 6c436f6c 6f722e72 67622c20 finalColor.rgb, │ │ │ │ + 0x00d34b40 755f6d61 736b436f 6c6f722e 7267622c u_maskColor.rgb, │ │ │ │ + 0x00d34b50 20755f6d 61736b43 6f6c6f72 2e61292c u_maskColor.a), │ │ │ │ + 0x00d34b60 2066696e 616c436f 6c6f722e 61293b20 finalColor.a); │ │ │ │ + 0x00d34b70 0a202020 20765f46 72616743 6f6c6f72 . v_FragColor │ │ │ │ + 0x00d34b80 203d2066 696e616c 436f6c6f 723b200a = finalColor; . │ │ │ │ + 0x00d34b90 20207d20 0a000000 00000000 00000000 } ............ │ │ │ │ + 0x00d34ba0 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d34bb0 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d34bc0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d34bd0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d34be0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d34bf0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d34c00 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d34c10 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d34c20 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d34c30 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d34c40 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d34c50 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d34c60 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d34c70 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d34c80 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d34c90 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d34ca0 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d34cb0 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d34cc0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d34cd0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d34ce0 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d34cf0 63342061 5f706f73 6974696f 6e3b200a c4 a_position; . │ │ │ │ + 0x00d34d00 2020696e 20766563 3220615f 6e6f726d in vec2 a_norm │ │ │ │ + 0x00d34d10 616c3b20 0a202069 6e207665 63322061 al; . in vec2 a │ │ │ │ + 0x00d34d20 5f636f6c 6f725465 78436f6f 7264733b _colorTexCoords; │ │ │ │ + 0x00d34d30 200a2020 696e2076 65633220 615f6d61 . in vec2 a_ma │ │ │ │ + 0x00d34d40 736b5465 78436f6f 7264733b 200a2020 skTexCoords; . │ │ │ │ + 0x00d34d50 6f757420 76656332 20765f63 6f6c6f72 out vec2 v_color │ │ │ │ + 0x00d34d60 54657843 6f6f7264 733b200a 20206f75 TexCoords; . ou │ │ │ │ + 0x00d34d70 74207665 63322076 5f6d6173 6b546578 t vec2 v_maskTex │ │ │ │ + 0x00d34d80 436f6f72 64733b20 0a202075 6e69666f Coords; . unifo │ │ │ │ + 0x00d34d90 726d206d 61743420 755f6d6f 64656c56 rm mat4 u_modelV │ │ │ │ + 0x00d34da0 6965773b 200a2020 756e6966 6f726d20 iew; . uniform │ │ │ │ + 0x00d34db0 6d617434 20755f70 726f6a65 6374696f mat4 u_projectio │ │ │ │ + 0x00d34dc0 6e3b200a 2020756e 69666f72 6d206d61 n; . uniform ma │ │ │ │ + 0x00d34dd0 74342075 5f706976 6f745472 616e7366 t4 u_pivotTransf │ │ │ │ + 0x00d34de0 6f726d3b 200a2020 756e6966 6f726d20 orm; . uniform │ │ │ │ + 0x00d34df0 76656332 20755f63 6f6e7472 61737447 vec2 u_contrastG │ │ │ │ + 0x00d34e00 616d6d61 3b200a20 20756e69 666f726d amma; . uniform │ │ │ │ + 0x00d34e10 20666c6f 61742075 5f6f7061 63697479 float u_opacity │ │ │ │ + 0x00d34e20 3b200a20 20756e69 666f726d 20666c6f ; . uniform flo │ │ │ │ + 0x00d34e30 61742075 5f7a5363 616c653b 200a2020 at u_zScale; . │ │ │ │ + 0x00d34e40 756e6966 6f726d20 666c6f61 7420755f uniform float u_ │ │ │ │ + 0x00d34e50 696e7465 72706f6c 6174696f 6e3b200a interpolation; . │ │ │ │ + 0x00d34e60 2020756e 69666f72 6d20666c 6f617420 uniform float │ │ │ │ + 0x00d34e70 755f6973 4f75746c 696e6550 6173733b u_isOutlinePass; │ │ │ │ + 0x00d34e80 200a2020 636f6e73 7420666c 6f617420 . const float │ │ │ │ + 0x00d34e90 6b536861 7065436f 6f726453 63616c61 kShapeCoordScala │ │ │ │ + 0x00d34ea0 72203d20 31303030 2e303b20 0a202076 r = 1000.0; . v │ │ │ │ + 0x00d34eb0 65633420 6170706c 79506976 6f745472 ec4 applyPivotTr │ │ │ │ + 0x00d34ec0 616e7366 6f726d28 76656334 20706976 ansform(vec4 piv │ │ │ │ + 0x00d34ed0 6f742c20 6d617434 20706976 6f745472 ot, mat4 pivotTr │ │ │ │ + 0x00d34ee0 616e7366 6f726d2c 20666c6f 61742070 ansform, float p │ │ │ │ + 0x00d34ef0 69766f74 5265616c 5a29200a 20207b20 ivotRealZ) . { │ │ │ │ + 0x00d34f00 0a202020 20766563 34207472 616e7366 . vec4 transf │ │ │ │ + 0x00d34f10 6f726d65 64506976 6f74203d 20706976 ormedPivot = piv │ │ │ │ + 0x00d34f20 6f743b20 0a202020 20666c6f 61742077 ot; . float w │ │ │ │ + 0x00d34f30 203d2074 72616e73 666f726d 65645069 = transformedPi │ │ │ │ + 0x00d34f40 766f742e 773b200a 20202020 7472616e vot.w; . tran │ │ │ │ + 0x00d34f50 73666f72 6d656450 69766f74 2e787977 sformedPivot.xyw │ │ │ │ + 0x00d34f60 203d2028 7069766f 74547261 6e73666f = (pivotTransfo │ │ │ │ + 0x00d34f70 726d202a 20766563 34287472 616e7366 rm * vec4(transf │ │ │ │ + 0x00d34f80 6f726d65 64506976 6f742e78 792c2070 ormedPivot.xy, p │ │ │ │ + 0x00d34f90 69766f74 5265616c 5a2c2077 29292e78 ivotRealZ, w)).x │ │ │ │ + 0x00d34fa0 79773b20 0a202020 20747261 6e73666f yw; . transfo │ │ │ │ + 0x00d34fb0 726d6564 5069766f 742e7a20 2a3d2074 rmedPivot.z *= t │ │ │ │ + 0x00d34fc0 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ + 0x00d34fd0 77202f20 773b200a 20202369 66646566 w / w; . #ifdef │ │ │ │ + 0x00d34fe0 2056554c 4b414e20 0a202020 20747261 VULKAN . tra │ │ │ │ + 0x00d34ff0 6e73666f 726d6564 5069766f 742e7920 nsformedPivot.y │ │ │ │ + 0x00d35000 3d202d74 72616e73 666f726d 65645069 = -transformedPi │ │ │ │ + 0x00d35010 766f742e 793b200a 20202020 7472616e vot.y; . tran │ │ │ │ + 0x00d35020 73666f72 6d656450 69766f74 2e7a203d sformedPivot.z = │ │ │ │ + 0x00d35030 20287472 616e7366 6f726d65 64506976 (transformedPiv │ │ │ │ + 0x00d35040 6f742e7a 20202b20 7472616e 73666f72 ot.z + transfor │ │ │ │ + 0x00d35050 6d656450 69766f74 2e772920 2f20322e medPivot.w) / 2. │ │ │ │ + 0x00d35060 303b200a 20202365 6e646966 200a2020 0; . #endif . │ │ │ │ + 0x00d35070 20207265 7475726e 20747261 6e73666f return transfo │ │ │ │ + 0x00d35080 726d6564 5069766f 743b200a 20207d20 rmedPivot; . } │ │ │ │ + 0x00d35090 0a202076 65633420 6170706c 7942696c . vec4 applyBil │ │ │ │ + 0x00d350a0 6c626f61 72645069 766f7454 72616e73 lboardPivotTrans │ │ │ │ + 0x00d350b0 666f726d 28766563 34207069 766f742c form(vec4 pivot, │ │ │ │ + 0x00d350c0 206d6174 34207069 766f7454 72616e73 mat4 pivotTrans │ │ │ │ + 0x00d350d0 666f726d 2c20666c 6f617420 7069766f form, float pivo │ │ │ │ + 0x00d350e0 74526561 6c5a2c20 76656332 206f6666 tRealZ, vec2 off │ │ │ │ + 0x00d350f0 73657429 200a2020 7b200a20 20202066 set) . { . f │ │ │ │ + 0x00d35100 6c6f6174 206c6f67 69635a20 3d207069 loat logicZ = pi │ │ │ │ + 0x00d35110 766f742e 7a202f20 7069766f 742e773b vot.z / pivot.w; │ │ │ │ + 0x00d35120 200a2020 20207665 63342074 72616e73 . vec4 trans │ │ │ │ + 0x00d35130 666f726d 65645069 766f7420 3d207069 formedPivot = pi │ │ │ │ + 0x00d35140 766f7454 72616e73 666f726d 202a2076 votTransform * v │ │ │ │ + 0x00d35150 65633428 7069766f 742e7879 2c207069 ec4(pivot.xy, pi │ │ │ │ + 0x00d35160 766f7452 65616c5a 2c207069 766f742e votRealZ, pivot. │ │ │ │ + 0x00d35170 77293b20 0a202020 20766563 34207363 w); . vec4 sc │ │ │ │ + 0x00d35180 616c6520 3d207069 766f7454 72616e73 ale = pivotTrans │ │ │ │ + 0x00d35190 666f726d 202a2076 65633428 312e302c form * vec4(1.0, │ │ │ │ + 0x00d351a0 202d312e 302c2030 2e302c20 312e3029 -1.0, 0.0, 1.0) │ │ │ │ + 0x00d351b0 3b200a20 20202076 65633420 706f7369 ; . vec4 posi │ │ │ │ + 0x00d351c0 74696f6e 203d2076 65633428 7472616e tion = vec4(tran │ │ │ │ + 0x00d351d0 73666f72 6d656450 69766f74 2e787920 sformedPivot.xy │ │ │ │ + 0x00d351e0 2f207472 616e7366 6f726d65 64506976 / transformedPiv │ │ │ │ + 0x00d351f0 6f742e77 2c206c6f 6769635a 2c20312e ot.w, logicZ, 1. │ │ │ │ + 0x00d35200 3029202b 20766563 34286f66 66736574 0) + vec4(offset │ │ │ │ + 0x00d35210 202f2073 63616c65 2e77202a 20736361 / scale.w * sca │ │ │ │ + 0x00d35220 6c652e78 2c20302e 302c2030 2e30293b le.x, 0.0, 0.0); │ │ │ │ + 0x00d35230 200a2020 23696664 65662056 554c4b41 . #ifdef VULKA │ │ │ │ + 0x00d35240 4e200a20 20202070 6f736974 696f6e2e N . position. │ │ │ │ + 0x00d35250 79203d20 2d706f73 6974696f 6e2e793b y = -position.y; │ │ │ │ + 0x00d35260 200a2020 2020706f 73697469 6f6e2e7a . position.z │ │ │ │ + 0x00d35270 203d2028 706f7369 74696f6e 2e7a2020 = (position.z │ │ │ │ + 0x00d35280 2b20706f 73697469 6f6e2e77 29202f20 + position.w) / │ │ │ │ + 0x00d35290 322e303b 200a2020 23656e64 6966200a 2.0; . #endif . │ │ │ │ + 0x00d352a0 20202020 72657475 726e2070 6f736974 return posit │ │ │ │ + 0x00d352b0 696f6e3b 200a2020 7d200a20 20766563 ion; . } . vec │ │ │ │ + 0x00d352c0 32206361 6c634c69 6e655472 616e7366 2 calcLineTransf │ │ │ │ + 0x00d352d0 6f726d65 64417869 73506f73 28766563 ormedAxisPos(vec │ │ │ │ + 0x00d352e0 32206f72 6967696e 616c4178 6973506f 2 originalAxisPo │ │ │ │ + 0x00d352f0 732c2076 65633220 73686966 74656450 s, vec2 shiftedP │ │ │ │ + 0x00d35300 6f732c20 6d617434 206d6f64 656c5669 os, mat4 modelVi │ │ │ │ + 0x00d35310 65772c20 666c6f61 74206861 6c665769 ew, float halfWi │ │ │ │ + 0x00d35320 64746829 200a2020 7b200a20 20202076 dth) . { . v │ │ │ │ + 0x00d35330 65633220 70203d20 28766563 34287368 ec2 p = (vec4(sh │ │ │ │ + 0x00d35340 69667465 64506f73 2c20302e 302c2031 iftedPos, 0.0, 1 │ │ │ │ + 0x00d35350 2e302920 2a206d6f 64656c56 69657729 .0) * modelView) │ │ │ │ + 0x00d35360 2e78793b 200a2020 20207665 63322064 .xy; . vec2 d │ │ │ │ + 0x00d35370 203d2070 202d206f 72696769 6e616c41 = p - originalA │ │ │ │ + 0x00d35380 78697350 6f733b20 0a202020 20696620 xisPos; . if │ │ │ │ + 0x00d35390 28646f74 28642c20 64292021 3d20302e (dot(d, d) != 0. │ │ │ │ + 0x00d353a0 3029200a 20202020 20207265 7475726e 0) . return │ │ │ │ + 0x00d353b0 206f7269 67696e61 6c417869 73506f73 originalAxisPos │ │ │ │ + 0x00d353c0 202b206e 6f726d61 6c697a65 28642920 + normalize(d) │ │ │ │ + 0x00d353d0 2a206861 6c665769 6474683b 200a2020 * halfWidth; . │ │ │ │ + 0x00d353e0 2020656c 7365200a 20202020 20207265 else . re │ │ │ │ + 0x00d353f0 7475726e 206f7269 67696e61 6c417869 turn originalAxi │ │ │ │ + 0x00d35400 73506f73 3b200a20 207d200a 2020766f sPos; . } . vo │ │ │ │ + 0x00d35410 6964206d 61696e28 29200a20 207b200a id main() . { . │ │ │ │ + 0x00d35420 20202020 76656334 20706976 6f74203d vec4 pivot = │ │ │ │ + 0x00d35430 20766563 3428615f 706f7369 74696f6e vec4(a_position │ │ │ │ + 0x00d35440 2e78797a 2c20312e 3029202a 20755f6d .xyz, 1.0) * u_m │ │ │ │ + 0x00d35450 6f64656c 56696577 3b200a20 20202076 odelView; . v │ │ │ │ + 0x00d35460 65633420 6f666673 6574203d 20766563 ec4 offset = vec │ │ │ │ + 0x00d35470 3428615f 6e6f726d 616c2c20 302e302c 4(a_normal, 0.0, │ │ │ │ + 0x00d35480 20302e30 29202a20 755f7072 6f6a6563 0.0) * u_projec │ │ │ │ + 0x00d35490 74696f6e 3b200a20 20202067 6c5f506f tion; . gl_Po │ │ │ │ + 0x00d354a0 73697469 6f6e203d 20617070 6c794269 sition = applyBi │ │ │ │ + 0x00d354b0 6c6c626f 61726450 69766f74 5472616e llboardPivotTran │ │ │ │ + 0x00d354c0 73666f72 6d287069 766f7420 2a20755f sform(pivot * u_ │ │ │ │ + 0x00d354d0 70726f6a 65637469 6f6e2c20 755f7069 projection, u_pi │ │ │ │ + 0x00d354e0 766f7454 72616e73 666f726d 2c200a20 votTransform, . │ │ │ │ + 0x00d354f0 20202020 20202020 20202020 20202020 │ │ │ │ + 0x00d35500 20202020 20202020 20202020 20202020 │ │ │ │ + 0x00d35510 20202020 20202020 20202020 2020615f a_ │ │ │ │ + 0x00d35520 706f7369 74696f6e 2e77202a 20755f7a position.w * u_z │ │ │ │ + 0x00d35530 5363616c 652c206f 66667365 742e7879 Scale, offset.xy │ │ │ │ + 0x00d35540 293b200a 20202020 765f636f 6c6f7254 ); . v_colorT │ │ │ │ + 0x00d35550 6578436f 6f726473 203d2061 5f636f6c exCoords = a_col │ │ │ │ + 0x00d35560 6f725465 78436f6f 7264733b 200a2020 orTexCoords; . │ │ │ │ + 0x00d35570 2020765f 6d61736b 54657843 6f6f7264 v_maskTexCoord │ │ │ │ + 0x00d35580 73203d20 615f6d61 736b5465 78436f6f s = a_maskTexCoo │ │ │ │ + 0x00d35590 7264733b 200a2020 7d200a00 00000000 rds; . } ...... │ │ │ │ + 0x00d355a0 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d355b0 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d355c0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d355d0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d355e0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d355f0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d35600 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d35610 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d35620 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d35630 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d35640 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d35650 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d35660 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d35670 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d35680 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d35690 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d356a0 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d356b0 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d356c0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d356d0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d356e0 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d356f0 63332061 5f706f73 6974696f 6e3b200a c3 a_position; . │ │ │ │ + 0x00d35700 2020696e 20766563 3420615f 6e6f726d in vec4 a_norm │ │ │ │ + 0x00d35710 616c3b20 0a202069 6e207665 63342061 al; . in vec4 a │ │ │ │ + 0x00d35720 5f636f6c 6f723b20 0a20206f 75742076 _color; . out v │ │ │ │ + 0x00d35730 65633420 765f6f66 66736574 733b200a ec4 v_offsets; . │ │ │ │ + 0x00d35740 20206f75 74207665 63342076 5f636f6c out vec4 v_col │ │ │ │ + 0x00d35750 6f723b20 0a202075 6e69666f 726d206d or; . uniform m │ │ │ │ + 0x00d35760 61743420 755f6d6f 64656c56 6965773b at4 u_modelView; │ │ │ │ + 0x00d35770 200a2020 756e6966 6f726d20 6d617434 . uniform mat4 │ │ │ │ + 0x00d35780 20755f70 726f6a65 6374696f 6e3b200a u_projection; . │ │ │ │ + 0x00d35790 2020756e 69666f72 6d206d61 74342075 uniform mat4 u │ │ │ │ + 0x00d357a0 5f706976 6f745472 616e7366 6f726d3b _pivotTransform; │ │ │ │ + 0x00d357b0 200a2020 756e6966 6f726d20 76656334 . uniform vec4 │ │ │ │ + 0x00d357c0 20755f70 6172616d 733b200a 2020756e u_params; . un │ │ │ │ + 0x00d357d0 69666f72 6d20666c 6f617420 755f6c69 iform float u_li │ │ │ │ + 0x00d357e0 6e654861 6c665769 6474683b 200a2020 neHalfWidth; . │ │ │ │ + 0x00d357f0 756e6966 6f726d20 666c6f61 7420755f uniform float u_ │ │ │ │ + 0x00d35800 6d617852 61646975 733b200a 2020636f maxRadius; . co │ │ │ │ + 0x00d35810 6e737420 666c6f61 74206b53 68617065 nst float kShape │ │ │ │ + 0x00d35820 436f6f72 64536361 6c617220 3d203130 CoordScalar = 10 │ │ │ │ + 0x00d35830 30302e30 3b200a20 20766563 34206170 00.0; . vec4 ap │ │ │ │ + 0x00d35840 706c7950 69766f74 5472616e 73666f72 plyPivotTransfor │ │ │ │ + 0x00d35850 6d287665 63342070 69766f74 2c206d61 m(vec4 pivot, ma │ │ │ │ + 0x00d35860 74342070 69766f74 5472616e 73666f72 t4 pivotTransfor │ │ │ │ + 0x00d35870 6d2c2066 6c6f6174 20706976 6f745265 m, float pivotRe │ │ │ │ + 0x00d35880 616c5a29 200a2020 7b200a20 20202076 alZ) . { . v │ │ │ │ + 0x00d35890 65633420 7472616e 73666f72 6d656450 ec4 transformedP │ │ │ │ + 0x00d358a0 69766f74 203d2070 69766f74 3b200a20 ivot = pivot; . │ │ │ │ + 0x00d358b0 20202066 6c6f6174 2077203d 20747261 float w = tra │ │ │ │ + 0x00d358c0 6e73666f 726d6564 5069766f 742e773b nsformedPivot.w; │ │ │ │ + 0x00d358d0 200a2020 20207472 616e7366 6f726d65 . transforme │ │ │ │ + 0x00d358e0 64506976 6f742e78 7977203d 20287069 dPivot.xyw = (pi │ │ │ │ + 0x00d358f0 766f7454 72616e73 666f726d 202a2076 votTransform * v │ │ │ │ + 0x00d35900 65633428 7472616e 73666f72 6d656450 ec4(transformedP │ │ │ │ + 0x00d35910 69766f74 2e78792c 20706976 6f745265 ivot.xy, pivotRe │ │ │ │ + 0x00d35920 616c5a2c 20772929 2e787977 3b200a20 alZ, w)).xyw; . │ │ │ │ + 0x00d35930 20202074 72616e73 666f726d 65645069 transformedPi │ │ │ │ + 0x00d35940 766f742e 7a202a3d 20747261 6e73666f vot.z *= transfo │ │ │ │ + 0x00d35950 726d6564 5069766f 742e7720 2f20773b rmedPivot.w / w; │ │ │ │ + 0x00d35960 200a2020 23696664 65662056 554c4b41 . #ifdef VULKA │ │ │ │ + 0x00d35970 4e200a20 20202074 72616e73 666f726d N . transform │ │ │ │ + 0x00d35980 65645069 766f742e 79203d20 2d747261 edPivot.y = -tra │ │ │ │ + 0x00d35990 6e73666f 726d6564 5069766f 742e793b nsformedPivot.y; │ │ │ │ + 0x00d359a0 200a2020 20207472 616e7366 6f726d65 . transforme │ │ │ │ + 0x00d359b0 64506976 6f742e7a 203d2028 7472616e dPivot.z = (tran │ │ │ │ + 0x00d359c0 73666f72 6d656450 69766f74 2e7a2020 sformedPivot.z │ │ │ │ + 0x00d359d0 2b207472 616e7366 6f726d65 64506976 + transformedPiv │ │ │ │ + 0x00d359e0 6f742e77 29202f20 322e303b 200a2020 ot.w) / 2.0; . │ │ │ │ + 0x00d359f0 23656e64 6966200a 20202020 72657475 #endif . retu │ │ │ │ + 0x00d35a00 726e2074 72616e73 666f726d 65645069 rn transformedPi │ │ │ │ + 0x00d35a10 766f743b 200a2020 7d200a20 20766563 vot; . } . vec │ │ │ │ + 0x00d35a20 34206170 706c7942 696c6c62 6f617264 4 applyBillboard │ │ │ │ + 0x00d35a30 5069766f 74547261 6e73666f 726d2876 PivotTransform(v │ │ │ │ + 0x00d35a40 65633420 7069766f 742c206d 61743420 ec4 pivot, mat4 │ │ │ │ + 0x00d35a50 7069766f 74547261 6e73666f 726d2c20 pivotTransform, │ │ │ │ + 0x00d35a60 666c6f61 74207069 766f7452 65616c5a float pivotRealZ │ │ │ │ + 0x00d35a70 2c207665 6332206f 66667365 7429200a , vec2 offset) . │ │ │ │ + 0x00d35a80 20207b20 0a202020 20666c6f 6174206c { . float l │ │ │ │ + 0x00d35a90 6f676963 5a203d20 7069766f 742e7a20 ogicZ = pivot.z │ │ │ │ + 0x00d35aa0 2f207069 766f742e 773b200a 20202020 / pivot.w; . │ │ │ │ + 0x00d35ab0 76656334 20747261 6e73666f 726d6564 vec4 transformed │ │ │ │ + 0x00d35ac0 5069766f 74203d20 7069766f 74547261 Pivot = pivotTra │ │ │ │ + 0x00d35ad0 6e73666f 726d202a 20766563 34287069 nsform * vec4(pi │ │ │ │ + 0x00d35ae0 766f742e 78792c20 7069766f 74526561 vot.xy, pivotRea │ │ │ │ + 0x00d35af0 6c5a2c20 7069766f 742e7729 3b200a20 lZ, pivot.w); . │ │ │ │ + 0x00d35b00 20202076 65633420 7363616c 65203d20 vec4 scale = │ │ │ │ + 0x00d35b10 7069766f 74547261 6e73666f 726d202a pivotTransform * │ │ │ │ + 0x00d35b20 20766563 3428312e 302c202d 312e302c vec4(1.0, -1.0, │ │ │ │ + 0x00d35b30 20302e30 2c20312e 30293b20 0a202020 0.0, 1.0); . │ │ │ │ + 0x00d35b40 20766563 3420706f 73697469 6f6e203d vec4 position = │ │ │ │ + 0x00d35b50 20766563 34287472 616e7366 6f726d65 vec4(transforme │ │ │ │ + 0x00d35b60 64506976 6f742e78 79202f20 7472616e dPivot.xy / tran │ │ │ │ + 0x00d35b70 73666f72 6d656450 69766f74 2e772c20 sformedPivot.w, │ │ │ │ + 0x00d35b80 6c6f6769 635a2c20 312e3029 202b2076 logicZ, 1.0) + v │ │ │ │ + 0x00d35b90 65633428 6f666673 6574202f 20736361 ec4(offset / sca │ │ │ │ + 0x00d35ba0 6c652e77 202a2073 63616c65 2e782c20 le.w * scale.x, │ │ │ │ + 0x00d35bb0 302e302c 20302e30 293b200a 20202369 0.0, 0.0); . #i │ │ │ │ + 0x00d35bc0 66646566 2056554c 4b414e20 0a202020 fdef VULKAN . │ │ │ │ + 0x00d35bd0 20706f73 6974696f 6e2e7920 3d202d70 position.y = -p │ │ │ │ + 0x00d35be0 6f736974 696f6e2e 793b200a 20202020 osition.y; . │ │ │ │ + 0x00d35bf0 706f7369 74696f6e 2e7a203d 2028706f position.z = (po │ │ │ │ + 0x00d35c00 73697469 6f6e2e7a 20202b20 706f7369 sition.z + posi │ │ │ │ + 0x00d35c10 74696f6e 2e772920 2f20322e 303b200a tion.w) / 2.0; . │ │ │ │ + 0x00d35c20 20202365 6e646966 200a2020 20207265 #endif . re │ │ │ │ + 0x00d35c30 7475726e 20706f73 6974696f 6e3b200a turn position; . │ │ │ │ + 0x00d35c40 20207d20 0a202076 65633220 63616c63 } . vec2 calc │ │ │ │ + 0x00d35c50 4c696e65 5472616e 73666f72 6d656441 LineTransformedA │ │ │ │ + 0x00d35c60 78697350 6f732876 65633220 6f726967 xisPos(vec2 orig │ │ │ │ + 0x00d35c70 696e616c 41786973 506f732c 20766563 inalAxisPos, vec │ │ │ │ + 0x00d35c80 32207368 69667465 64506f73 2c206d61 2 shiftedPos, ma │ │ │ │ + 0x00d35c90 7434206d 6f64656c 56696577 2c20666c t4 modelView, fl │ │ │ │ + 0x00d35ca0 6f617420 68616c66 57696474 6829200a oat halfWidth) . │ │ │ │ + 0x00d35cb0 20207b20 0a202020 20766563 32207020 { . vec2 p │ │ │ │ + 0x00d35cc0 3d202876 65633428 73686966 74656450 = (vec4(shiftedP │ │ │ │ + 0x00d35cd0 6f732c20 302e302c 20312e30 29202a20 os, 0.0, 1.0) * │ │ │ │ + 0x00d35ce0 6d6f6465 6c566965 77292e78 793b200a modelView).xy; . │ │ │ │ + 0x00d35cf0 20202020 76656332 2064203d 2070202d vec2 d = p - │ │ │ │ + 0x00d35d00 206f7269 67696e61 6c417869 73506f73 originalAxisPos │ │ │ │ + 0x00d35d10 3b200a20 20202069 66202864 6f742864 ; . if (dot(d │ │ │ │ + 0x00d35d20 2c206429 20213d20 302e3029 200a2020 , d) != 0.0) . │ │ │ │ + 0x00d35d30 20202020 72657475 726e206f 72696769 return origi │ │ │ │ + 0x00d35d40 6e616c41 78697350 6f73202b 206e6f72 nalAxisPos + nor │ │ │ │ + 0x00d35d50 6d616c69 7a652864 29202a20 68616c66 malize(d) * half │ │ │ │ + 0x00d35d60 57696474 683b200a 20202020 656c7365 Width; . else │ │ │ │ + 0x00d35d70 200a2020 20202020 72657475 726e206f . return o │ │ │ │ + 0x00d35d80 72696769 6e616c41 78697350 6f733b20 riginalAxisPos; │ │ │ │ + 0x00d35d90 0a20207d 200a2020 766f6964 206d6169 . } . void mai │ │ │ │ + 0x00d35da0 6e282920 0a20207b 200a2020 20207665 n() . { . ve │ │ │ │ + 0x00d35db0 63342070 6f73203d 20766563 3428615f c4 pos = vec4(a_ │ │ │ │ + 0x00d35dc0 706f7369 74696f6e 2e78792c 20302c20 position.xy, 0, │ │ │ │ + 0x00d35dd0 3129202a 20755f6d 6f64656c 56696577 1) * u_modelView │ │ │ │ + 0x00d35de0 3b200a20 20202076 65633220 6e6f726d ; . vec2 norm │ │ │ │ + 0x00d35df0 616c203d 20766563 3228615f 6e6f726d al = vec2(a_norm │ │ │ │ + 0x00d35e00 616c2e78 202a2075 5f706172 616d732e al.x * u_params. │ │ │ │ + 0x00d35e10 78202d20 615f6e6f 726d616c 2e79202a x - a_normal.y * │ │ │ │ + 0x00d35e20 20755f70 6172616d 732e792c 200a2020 u_params.y, . │ │ │ │ + 0x00d35e30 20202020 20202020 20202020 20202020 │ │ │ │ + 0x00d35e40 20202020 20615f6e 6f726d61 6c2e7820 a_normal.x │ │ │ │ + 0x00d35e50 2a20755f 70617261 6d732e79 202b2061 * u_params.y + a │ │ │ │ + 0x00d35e60 5f6e6f72 6d616c2e 79202a20 755f7061 _normal.y * u_pa │ │ │ │ + 0x00d35e70 72616d73 2e78293b 200a2020 20207665 rams.x); . ve │ │ │ │ + 0x00d35e80 63322073 68696674 6564506f 73203d20 c2 shiftedPos = │ │ │ │ + 0x00d35e90 6e6f726d 616c202a 20755f70 6172616d normal * u_param │ │ │ │ + 0x00d35ea0 732e7a20 2b20706f 732e7879 3b200a20 s.z + pos.xy; . │ │ │ │ + 0x00d35eb0 20202070 6f73203d 20766563 34287368 pos = vec4(sh │ │ │ │ + 0x00d35ec0 69667465 64506f73 2c20615f 706f7369 iftedPos, a_posi │ │ │ │ + 0x00d35ed0 74696f6e 2e7a2c20 312e3029 202a2075 tion.z, 1.0) * u │ │ │ │ + 0x00d35ee0 5f70726f 6a656374 696f6e3b 200a2020 _projection; . │ │ │ │ + 0x00d35ef0 2020676c 5f506f73 6974696f 6e203d20 gl_Position = │ │ │ │ + 0x00d35f00 6170706c 79506976 6f745472 616e7366 applyPivotTransf │ │ │ │ + 0x00d35f10 6f726d28 706f732c 20755f70 69766f74 orm(pos, u_pivot │ │ │ │ + 0x00d35f20 5472616e 73666f72 6d2c2030 2e30293b Transform, 0.0); │ │ │ │ + 0x00d35f30 200a2020 20207665 6332206f 66667365 . vec2 offse │ │ │ │ + 0x00d35f40 7473203d 20616273 28615f6e 6f726d61 ts = abs(a_norma │ │ │ │ + 0x00d35f50 6c2e7a77 293b200a 20202020 765f6f66 l.zw); . v_of │ │ │ │ + 0x00d35f60 66736574 73203d20 76656334 28615f6e fsets = vec4(a_n │ │ │ │ + 0x00d35f70 6f726d61 6c2e7a77 2c206f66 66736574 ormal.zw, offset │ │ │ │ + 0x00d35f80 73202d20 312e3029 3b200a20 20202076 s - 1.0); . v │ │ │ │ + 0x00d35f90 5f636f6c 6f72203d 20615f63 6f6c6f72 _color = a_color │ │ │ │ + 0x00d35fa0 3b200a20 207d200a 00000000 00000000 ; . } ......... │ │ │ │ + 0x00d35fb0 00000000 00000000 00000000 00000000 ................ │ │ │ │ + 0x00d35fc0 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d35fd0 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d35fe0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d35ff0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d36000 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d36010 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d36020 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d36030 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d36040 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d36050 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d36060 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d36070 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d36080 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d36090 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d360a0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d360b0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d360c0 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d360d0 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d360e0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d360f0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d36100 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d36110 63322061 5f706f73 3b200a20 20696e20 c2 a_pos; . in │ │ │ │ + 0x00d36120 76656332 20615f74 636f6f72 643b200a vec2 a_tcoord; . │ │ │ │ + 0x00d36130 20206f75 74207665 63322076 5f636f6c out vec2 v_col │ │ │ │ + 0x00d36140 6f725465 78436f6f 7264733b 200a2020 orTexCoords; . │ │ │ │ + 0x00d36150 636f6e73 7420666c 6f617420 6b536861 const float kSha │ │ │ │ + 0x00d36160 7065436f 6f726453 63616c61 72203d20 peCoordScalar = │ │ │ │ + 0x00d36170 31303030 2e303b20 0a202076 65633420 1000.0; . vec4 │ │ │ │ + 0x00d36180 6170706c 79506976 6f745472 616e7366 applyPivotTransf │ │ │ │ + 0x00d36190 6f726d28 76656334 20706976 6f742c20 orm(vec4 pivot, │ │ │ │ + 0x00d361a0 6d617434 20706976 6f745472 616e7366 mat4 pivotTransf │ │ │ │ + 0x00d361b0 6f726d2c 20666c6f 61742070 69766f74 orm, float pivot │ │ │ │ + 0x00d361c0 5265616c 5a29200a 20207b20 0a202020 RealZ) . { . │ │ │ │ + 0x00d361d0 20766563 34207472 616e7366 6f726d65 vec4 transforme │ │ │ │ + 0x00d361e0 64506976 6f74203d 20706976 6f743b20 dPivot = pivot; │ │ │ │ + 0x00d361f0 0a202020 20666c6f 61742077 203d2074 . float w = t │ │ │ │ + 0x00d36200 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ + 0x00d36210 773b200a 20202020 7472616e 73666f72 w; . transfor │ │ │ │ + 0x00d36220 6d656450 69766f74 2e787977 203d2028 medPivot.xyw = ( │ │ │ │ + 0x00d36230 7069766f 74547261 6e73666f 726d202a pivotTransform * │ │ │ │ + 0x00d36240 20766563 34287472 616e7366 6f726d65 vec4(transforme │ │ │ │ + 0x00d36250 64506976 6f742e78 792c2070 69766f74 dPivot.xy, pivot │ │ │ │ + 0x00d36260 5265616c 5a2c2077 29292e78 79773b20 RealZ, w)).xyw; │ │ │ │ + 0x00d36270 0a202020 20747261 6e73666f 726d6564 . transformed │ │ │ │ + 0x00d36280 5069766f 742e7a20 2a3d2074 72616e73 Pivot.z *= trans │ │ │ │ + 0x00d36290 666f726d 65645069 766f742e 77202f20 formedPivot.w / │ │ │ │ + 0x00d362a0 773b200a 20202369 66646566 2056554c w; . #ifdef VUL │ │ │ │ + 0x00d362b0 4b414e20 0a202020 20747261 6e73666f KAN . transfo │ │ │ │ + 0x00d362c0 726d6564 5069766f 742e7920 3d202d74 rmedPivot.y = -t │ │ │ │ + 0x00d362d0 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ + 0x00d362e0 793b200a 20202020 7472616e 73666f72 y; . transfor │ │ │ │ + 0x00d362f0 6d656450 69766f74 2e7a203d 20287472 medPivot.z = (tr │ │ │ │ + 0x00d36300 616e7366 6f726d65 64506976 6f742e7a ansformedPivot.z │ │ │ │ + 0x00d36310 20202b20 7472616e 73666f72 6d656450 + transformedP │ │ │ │ + 0x00d36320 69766f74 2e772920 2f20322e 303b200a ivot.w) / 2.0; . │ │ │ │ + 0x00d36330 20202365 6e646966 200a2020 20207265 #endif . re │ │ │ │ + 0x00d36340 7475726e 20747261 6e73666f 726d6564 turn transformed │ │ │ │ + 0x00d36350 5069766f 743b200a 20207d20 0a202076 Pivot; . } . v │ │ │ │ + 0x00d36360 65633420 6170706c 7942696c 6c626f61 ec4 applyBillboa │ │ │ │ + 0x00d36370 72645069 766f7454 72616e73 666f726d rdPivotTransform │ │ │ │ + 0x00d36380 28766563 34207069 766f742c 206d6174 (vec4 pivot, mat │ │ │ │ + 0x00d36390 34207069 766f7454 72616e73 666f726d 4 pivotTransform │ │ │ │ + 0x00d363a0 2c20666c 6f617420 7069766f 74526561 , float pivotRea │ │ │ │ + 0x00d363b0 6c5a2c20 76656332 206f6666 73657429 lZ, vec2 offset) │ │ │ │ + 0x00d363c0 200a2020 7b200a20 20202066 6c6f6174 . { . float │ │ │ │ + 0x00d363d0 206c6f67 69635a20 3d207069 766f742e logicZ = pivot. │ │ │ │ + 0x00d363e0 7a202f20 7069766f 742e773b 200a2020 z / pivot.w; . │ │ │ │ + 0x00d363f0 20207665 63342074 72616e73 666f726d vec4 transform │ │ │ │ + 0x00d36400 65645069 766f7420 3d207069 766f7454 edPivot = pivotT │ │ │ │ + 0x00d36410 72616e73 666f726d 202a2076 65633428 ransform * vec4( │ │ │ │ + 0x00d36420 7069766f 742e7879 2c207069 766f7452 pivot.xy, pivotR │ │ │ │ + 0x00d36430 65616c5a 2c207069 766f742e 77293b20 ealZ, pivot.w); │ │ │ │ + 0x00d36440 0a202020 20766563 34207363 616c6520 . vec4 scale │ │ │ │ + 0x00d36450 3d207069 766f7454 72616e73 666f726d = pivotTransform │ │ │ │ + 0x00d36460 202a2076 65633428 312e302c 202d312e * vec4(1.0, -1. │ │ │ │ + 0x00d36470 302c2030 2e302c20 312e3029 3b200a20 0, 0.0, 1.0); . │ │ │ │ + 0x00d36480 20202076 65633420 706f7369 74696f6e vec4 position │ │ │ │ + 0x00d36490 203d2076 65633428 7472616e 73666f72 = vec4(transfor │ │ │ │ + 0x00d364a0 6d656450 69766f74 2e787920 2f207472 medPivot.xy / tr │ │ │ │ + 0x00d364b0 616e7366 6f726d65 64506976 6f742e77 ansformedPivot.w │ │ │ │ + 0x00d364c0 2c206c6f 6769635a 2c20312e 3029202b , logicZ, 1.0) + │ │ │ │ + 0x00d364d0 20766563 34286f66 66736574 202f2073 vec4(offset / s │ │ │ │ + 0x00d364e0 63616c65 2e77202a 20736361 6c652e78 cale.w * scale.x │ │ │ │ + 0x00d364f0 2c20302e 302c2030 2e30293b 200a2020 , 0.0, 0.0); . │ │ │ │ + 0x00d36500 23696664 65662056 554c4b41 4e200a20 #ifdef VULKAN . │ │ │ │ + 0x00d36510 20202070 6f736974 696f6e2e 79203d20 position.y = │ │ │ │ + 0x00d36520 2d706f73 6974696f 6e2e793b 200a2020 -position.y; . │ │ │ │ + 0x00d36530 2020706f 73697469 6f6e2e7a 203d2028 position.z = ( │ │ │ │ + 0x00d36540 706f7369 74696f6e 2e7a2020 2b20706f position.z + po │ │ │ │ + 0x00d36550 73697469 6f6e2e77 29202f20 322e303b sition.w) / 2.0; │ │ │ │ + 0x00d36560 200a2020 23656e64 6966200a 20202020 . #endif . │ │ │ │ + 0x00d36570 72657475 726e2070 6f736974 696f6e3b return position; │ │ │ │ + 0x00d36580 200a2020 7d200a20 20766563 32206361 . } . vec2 ca │ │ │ │ + 0x00d36590 6c634c69 6e655472 616e7366 6f726d65 lcLineTransforme │ │ │ │ + 0x00d365a0 64417869 73506f73 28766563 32206f72 dAxisPos(vec2 or │ │ │ │ + 0x00d365b0 6967696e 616c4178 6973506f 732c2076 iginalAxisPos, v │ │ │ │ + 0x00d365c0 65633220 73686966 74656450 6f732c20 ec2 shiftedPos, │ │ │ │ + 0x00d365d0 6d617434 206d6f64 656c5669 65772c20 mat4 modelView, │ │ │ │ + 0x00d365e0 666c6f61 74206861 6c665769 64746829 float halfWidth) │ │ │ │ + 0x00d365f0 200a2020 7b200a20 20202076 65633220 . { . vec2 │ │ │ │ + 0x00d36600 70203d20 28766563 34287368 69667465 p = (vec4(shifte │ │ │ │ + 0x00d36610 64506f73 2c20302e 302c2031 2e302920 dPos, 0.0, 1.0) │ │ │ │ + 0x00d36620 2a206d6f 64656c56 69657729 2e78793b * modelView).xy; │ │ │ │ + 0x00d36630 200a2020 20207665 63322064 203d2070 . vec2 d = p │ │ │ │ + 0x00d36640 202d206f 72696769 6e616c41 78697350 - originalAxisP │ │ │ │ + 0x00d36650 6f733b20 0a202020 20696620 28646f74 os; . if (dot │ │ │ │ + 0x00d36660 28642c20 64292021 3d20302e 3029200a (d, d) != 0.0) . │ │ │ │ + 0x00d36670 20202020 20207265 7475726e 206f7269 return ori │ │ │ │ + 0x00d36680 67696e61 6c417869 73506f73 202b206e ginalAxisPos + n │ │ │ │ + 0x00d36690 6f726d61 6c697a65 28642920 2a206861 ormalize(d) * ha │ │ │ │ + 0x00d366a0 6c665769 6474683b 200a2020 2020656c lfWidth; . el │ │ │ │ + 0x00d366b0 7365200a 20202020 20207265 7475726e se . return │ │ │ │ + 0x00d366c0 206f7269 67696e61 6c417869 73506f73 originalAxisPos │ │ │ │ + 0x00d366d0 3b200a20 207d200a 2020766f 6964206d ; . } . void m │ │ │ │ + 0x00d366e0 61696e28 29200a20 207b200a 20202020 ain() . { . │ │ │ │ + 0x00d366f0 765f636f 6c6f7254 6578436f 6f726473 v_colorTexCoords │ │ │ │ + 0x00d36700 203d2061 5f74636f 6f72643b 200a2020 = a_tcoord; . │ │ │ │ + 0x00d36710 2020676c 5f506f73 6974696f 6e203d20 gl_Position = │ │ │ │ + 0x00d36720 76656334 28615f70 6f732c20 302e302c vec4(a_pos, 0.0, │ │ │ │ + 0x00d36730 20312e30 293b200a 20207d20 0a000000 1.0); . } .... │ │ │ │ + 0x00d36740 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d36750 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d36760 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d36770 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d36780 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d36790 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d367a0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d367b0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d367c0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d367d0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d367e0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d367f0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d36800 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d36810 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d36820 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d36830 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d36840 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d36850 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d36860 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d36870 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d36880 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d36890 63332076 5f6e6f72 6d616c3b 200a2020 c3 v_normal; . │ │ │ │ + 0x00d368a0 696e2076 65633220 765f7465 78436f6f in vec2 v_texCoo │ │ │ │ + 0x00d368b0 7264733b 200a2020 6f757420 76656334 rds; . out vec4 │ │ │ │ + 0x00d368c0 20765f46 72616743 6f6c6f72 3b200a20 v_FragColor; . │ │ │ │ + 0x00d368d0 20756e69 666f726d 206d6174 3420755f uniform mat4 u_ │ │ │ │ + 0x00d368e0 7472616e 73666f72 6d3b200a 2020756e transform; . un │ │ │ │ + 0x00d368f0 69666f72 6d206d61 74342075 5f6e6f72 iform mat4 u_nor │ │ │ │ + 0x00d36900 6d616c54 72616e73 666f726d 3b200a20 malTransform; . │ │ │ │ + 0x00d36910 20756e69 666f726d 20766563 3420755f uniform vec4 u_ │ │ │ │ + 0x00d36920 636f6c6f 723b200a 2020756e 69666f72 color; . unifor │ │ │ │ + 0x00d36930 6d207665 63322075 5f746578 436f6f72 m vec2 u_texCoor │ │ │ │ + 0x00d36940 64466c69 7070696e 673b200a 2020756e dFlipping; . un │ │ │ │ + 0x00d36950 69666f72 6d207361 6d706c65 72324420 iform sampler2D │ │ │ │ + 0x00d36960 755f636f 6c6f7254 65783b20 0a202063 u_colorTex; . c │ │ │ │ + 0x00d36970 6f6e7374 20766563 33206c69 67687444 onst vec3 lightD │ │ │ │ + 0x00d36980 6972203d 20766563 3328302e 3331362c ir = vec3(0.316, │ │ │ │ + 0x00d36990 20302e30 2c20302e 39343829 3b200a20 0.0, 0.948); . │ │ │ │ + 0x00d369a0 20636f6e 73742066 6c6f6174 206b5368 const float kSh │ │ │ │ + 0x00d369b0 61706543 6f6f7264 5363616c 6172203d apeCoordScalar = │ │ │ │ + 0x00d369c0 20313030 302e303b 200a2020 766f6964 1000.0; . void │ │ │ │ + 0x00d369d0 206d6169 6e282920 0a20207b 200a2020 main() . { . │ │ │ │ + 0x00d369e0 2020666c 6f617420 70686f6e 67446966 float phongDif │ │ │ │ + 0x00d369f0 66757365 203d206d 61782830 2e302c20 fuse = max(0.0, │ │ │ │ + 0x00d36a00 2d646f74 286c6967 68744469 722c2076 -dot(lightDir, v │ │ │ │ + 0x00d36a10 5f6e6f72 6d616c29 293b200a 20202020 _normal)); . │ │ │ │ + 0x00d36a20 76656334 20636f6c 6f72203d 20746578 vec4 color = tex │ │ │ │ + 0x00d36a30 74757265 28755f63 6f6c6f72 5465782c ture(u_colorTex, │ │ │ │ + 0x00d36a40 20765f74 6578436f 6f726473 29202a20 v_texCoords) * │ │ │ │ + 0x00d36a50 755f636f 6c6f723b 200a2020 2020765f u_color; . v_ │ │ │ │ + 0x00d36a60 46726167 436f6c6f 72203d20 76656334 FragColor = vec4 │ │ │ │ + 0x00d36a70 28287068 6f6e6744 69666675 7365202a ((phongDiffuse * │ │ │ │ + 0x00d36a80 20302e35 202b2030 2e352920 2a20636f 0.5 + 0.5) * co │ │ │ │ + 0x00d36a90 6c6f722e 7267622c 20636f6c 6f722e61 lor.rgb, color.a │ │ │ │ + 0x00d36aa0 293b200a 20207d20 0a000000 00000000 ); . } ........ │ │ │ │ + 0x00d36ab0 00000000 00000000 00000000 00000000 ................ │ │ │ │ + 0x00d36ac0 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d36ad0 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d36ae0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d36af0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d36b00 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d36b10 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d36b20 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d36b30 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d36b40 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d36b50 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d36b60 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d36b70 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d36b80 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d36b90 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d36ba0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d36bb0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d36bc0 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d36bd0 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d36be0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d36bf0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d36c00 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d36c10 63322061 5f636f6c 6f725465 78436f6f c2 a_colorTexCoo │ │ │ │ + 0x00d36c20 72643b20 0a202069 6e207665 63322061 rd; . in vec2 a │ │ │ │ + 0x00d36c30 5f6d6173 6b546578 436f6f72 643b200a _maskTexCoord; . │ │ │ │ + 0x00d36c40 2020696e 20766563 3420615f 706f7369 in vec4 a_posi │ │ │ │ + 0x00d36c50 74696f6e 3b200a20 20696e20 76656332 tion; . in vec2 │ │ │ │ + 0x00d36c60 20615f6e 6f726d61 6c3b200a 20202369 a_normal; . #i │ │ │ │ + 0x00d36c70 66646566 20454e41 424c455f 56544620 fdef ENABLE_VTF │ │ │ │ + 0x00d36c80 0a20206f 7574204c 4f575f50 20766563 . out LOW_P vec │ │ │ │ + 0x00d36c90 3420765f 636f6c6f 723b200a 20202365 4 v_color; . #e │ │ │ │ + 0x00d36ca0 6c736520 0a20206f 75742076 65633220 lse . out vec2 │ │ │ │ + 0x00d36cb0 765f636f 6c6f7254 6578436f 6f72643b v_colorTexCoord; │ │ │ │ + 0x00d36cc0 200a2020 23656e64 6966200a 20206f75 . #endif . ou │ │ │ │ + 0x00d36cd0 74207665 63322076 5f6d6173 6b546578 t vec2 v_maskTex │ │ │ │ + 0x00d36ce0 436f6f72 643b200a 2020756e 69666f72 Coord; . unifor │ │ │ │ + 0x00d36cf0 6d206d61 74342075 5f6d6f64 656c5669 m mat4 u_modelVi │ │ │ │ + 0x00d36d00 65773b20 0a202075 6e69666f 726d206d ew; . uniform m │ │ │ │ + 0x00d36d10 61743420 755f7072 6f6a6563 74696f6e at4 u_projection │ │ │ │ + 0x00d36d20 3b200a20 20756e69 666f726d 206d6174 ; . uniform mat │ │ │ │ + 0x00d36d30 3420755f 7069766f 74547261 6e73666f 4 u_pivotTransfo │ │ │ │ + 0x00d36d40 726d3b20 0a202075 6e69666f 726d2076 rm; . uniform v │ │ │ │ + 0x00d36d50 65633220 755f636f 6e747261 73744761 ec2 u_contrastGa │ │ │ │ + 0x00d36d60 6d6d613b 200a2020 756e6966 6f726d20 mma; . uniform │ │ │ │ + 0x00d36d70 666c6f61 7420755f 6f706163 6974793b float u_opacity; │ │ │ │ + 0x00d36d80 200a2020 756e6966 6f726d20 666c6f61 . uniform floa │ │ │ │ + 0x00d36d90 7420755f 7a536361 6c653b20 0a202075 t u_zScale; . u │ │ │ │ + 0x00d36da0 6e69666f 726d2066 6c6f6174 20755f69 niform float u_i │ │ │ │ + 0x00d36db0 6e746572 706f6c61 74696f6e 3b200a20 nterpolation; . │ │ │ │ + 0x00d36dc0 20756e69 666f726d 20666c6f 61742075 uniform float u │ │ │ │ + 0x00d36dd0 5f69734f 75746c69 6e655061 73733b20 _isOutlinePass; │ │ │ │ + 0x00d36de0 0a202023 69666465 6620454e 41424c45 . #ifdef ENABLE │ │ │ │ + 0x00d36df0 5f565446 200a2020 756e6966 6f726d20 _VTF . uniform │ │ │ │ + 0x00d36e00 73616d70 6c657232 4420755f 636f6c6f sampler2D u_colo │ │ │ │ + 0x00d36e10 72546578 3b200a20 2023656e 64696620 rTex; . #endif │ │ │ │ + 0x00d36e20 0a202063 6f6e7374 20666c6f 6174206b . const float k │ │ │ │ + 0x00d36e30 53686170 65436f6f 72645363 616c6172 ShapeCoordScalar │ │ │ │ + 0x00d36e40 203d2031 3030302e 303b200a 20207665 = 1000.0; . ve │ │ │ │ + 0x00d36e50 63342061 70706c79 5069766f 74547261 c4 applyPivotTra │ │ │ │ + 0x00d36e60 6e73666f 726d2876 65633420 7069766f nsform(vec4 pivo │ │ │ │ + 0x00d36e70 742c206d 61743420 7069766f 74547261 t, mat4 pivotTra │ │ │ │ + 0x00d36e80 6e73666f 726d2c20 666c6f61 74207069 nsform, float pi │ │ │ │ + 0x00d36e90 766f7452 65616c5a 29200a20 207b200a votRealZ) . { . │ │ │ │ + 0x00d36ea0 20202020 76656334 20747261 6e73666f vec4 transfo │ │ │ │ + 0x00d36eb0 726d6564 5069766f 74203d20 7069766f rmedPivot = pivo │ │ │ │ + 0x00d36ec0 743b200a 20202020 666c6f61 74207720 t; . float w │ │ │ │ + 0x00d36ed0 3d207472 616e7366 6f726d65 64506976 = transformedPiv │ │ │ │ + 0x00d36ee0 6f742e77 3b200a20 20202074 72616e73 ot.w; . trans │ │ │ │ + 0x00d36ef0 666f726d 65645069 766f742e 78797720 formedPivot.xyw │ │ │ │ + 0x00d36f00 3d202870 69766f74 5472616e 73666f72 = (pivotTransfor │ │ │ │ + 0x00d36f10 6d202a20 76656334 28747261 6e73666f m * vec4(transfo │ │ │ │ + 0x00d36f20 726d6564 5069766f 742e7879 2c207069 rmedPivot.xy, pi │ │ │ │ + 0x00d36f30 766f7452 65616c5a 2c207729 292e7879 votRealZ, w)).xy │ │ │ │ + 0x00d36f40 773b200a 20202020 7472616e 73666f72 w; . transfor │ │ │ │ + 0x00d36f50 6d656450 69766f74 2e7a202a 3d207472 medPivot.z *= tr │ │ │ │ + 0x00d36f60 616e7366 6f726d65 64506976 6f742e77 ansformedPivot.w │ │ │ │ + 0x00d36f70 202f2077 3b200a20 20236966 64656620 / w; . #ifdef │ │ │ │ + 0x00d36f80 56554c4b 414e200a 20202020 7472616e VULKAN . tran │ │ │ │ + 0x00d36f90 73666f72 6d656450 69766f74 2e79203d sformedPivot.y = │ │ │ │ + 0x00d36fa0 202d7472 616e7366 6f726d65 64506976 -transformedPiv │ │ │ │ + 0x00d36fb0 6f742e79 3b200a20 20202074 72616e73 ot.y; . trans │ │ │ │ + 0x00d36fc0 666f726d 65645069 766f742e 7a203d20 formedPivot.z = │ │ │ │ + 0x00d36fd0 28747261 6e73666f 726d6564 5069766f (transformedPivo │ │ │ │ + 0x00d36fe0 742e7a20 202b2074 72616e73 666f726d t.z + transform │ │ │ │ + 0x00d36ff0 65645069 766f742e 7729202f 20322e30 edPivot.w) / 2.0 │ │ │ │ + 0x00d37000 3b200a20 2023656e 64696620 0a202020 ; . #endif . │ │ │ │ + 0x00d37010 20726574 75726e20 7472616e 73666f72 return transfor │ │ │ │ + 0x00d37020 6d656450 69766f74 3b200a20 207d200a medPivot; . } . │ │ │ │ + 0x00d37030 20207665 63342061 70706c79 42696c6c vec4 applyBill │ │ │ │ + 0x00d37040 626f6172 64506976 6f745472 616e7366 boardPivotTransf │ │ │ │ + 0x00d37050 6f726d28 76656334 20706976 6f742c20 orm(vec4 pivot, │ │ │ │ + 0x00d37060 6d617434 20706976 6f745472 616e7366 mat4 pivotTransf │ │ │ │ + 0x00d37070 6f726d2c 20666c6f 61742070 69766f74 orm, float pivot │ │ │ │ + 0x00d37080 5265616c 5a2c2076 65633220 6f666673 RealZ, vec2 offs │ │ │ │ + 0x00d37090 65742920 0a20207b 200a2020 2020666c et) . { . fl │ │ │ │ + 0x00d370a0 6f617420 6c6f6769 635a203d 20706976 oat logicZ = piv │ │ │ │ + 0x00d370b0 6f742e7a 202f2070 69766f74 2e773b20 ot.z / pivot.w; │ │ │ │ + 0x00d370c0 0a202020 20766563 34207472 616e7366 . vec4 transf │ │ │ │ + 0x00d370d0 6f726d65 64506976 6f74203d 20706976 ormedPivot = piv │ │ │ │ + 0x00d370e0 6f745472 616e7366 6f726d20 2a207665 otTransform * ve │ │ │ │ + 0x00d370f0 63342870 69766f74 2e78792c 20706976 c4(pivot.xy, piv │ │ │ │ + 0x00d37100 6f745265 616c5a2c 20706976 6f742e77 otRealZ, pivot.w │ │ │ │ + 0x00d37110 293b200a 20202020 76656334 20736361 ); . vec4 sca │ │ │ │ + 0x00d37120 6c65203d 20706976 6f745472 616e7366 le = pivotTransf │ │ │ │ + 0x00d37130 6f726d20 2a207665 63342831 2e302c20 orm * vec4(1.0, │ │ │ │ + 0x00d37140 2d312e30 2c20302e 302c2031 2e30293b -1.0, 0.0, 1.0); │ │ │ │ + 0x00d37150 200a2020 20207665 63342070 6f736974 . vec4 posit │ │ │ │ + 0x00d37160 696f6e20 3d207665 63342874 72616e73 ion = vec4(trans │ │ │ │ + 0x00d37170 666f726d 65645069 766f742e 7879202f formedPivot.xy / │ │ │ │ + 0x00d37180 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ + 0x00d37190 742e772c 206c6f67 69635a2c 20312e30 t.w, logicZ, 1.0 │ │ │ │ + 0x00d371a0 29202b20 76656334 286f6666 73657420 ) + vec4(offset │ │ │ │ + 0x00d371b0 2f207363 616c652e 77202a20 7363616c / scale.w * scal │ │ │ │ + 0x00d371c0 652e782c 20302e30 2c20302e 30293b20 e.x, 0.0, 0.0); │ │ │ │ + 0x00d371d0 0a202023 69666465 66205655 4c4b414e . #ifdef VULKAN │ │ │ │ + 0x00d371e0 200a2020 2020706f 73697469 6f6e2e79 . position.y │ │ │ │ + 0x00d371f0 203d202d 706f7369 74696f6e 2e793b20 = -position.y; │ │ │ │ + 0x00d37200 0a202020 20706f73 6974696f 6e2e7a20 . position.z │ │ │ │ + 0x00d37210 3d202870 6f736974 696f6e2e 7a20202b = (position.z + │ │ │ │ + 0x00d37220 20706f73 6974696f 6e2e7729 202f2032 position.w) / 2 │ │ │ │ + 0x00d37230 2e303b20 0a202023 656e6469 66200a20 .0; . #endif . │ │ │ │ + 0x00d37240 20202072 65747572 6e20706f 73697469 return positi │ │ │ │ + 0x00d37250 6f6e3b20 0a20207d 200a2020 76656332 on; . } . vec2 │ │ │ │ + 0x00d37260 2063616c 634c696e 65547261 6e73666f calcLineTransfo │ │ │ │ + 0x00d37270 726d6564 41786973 506f7328 76656332 rmedAxisPos(vec2 │ │ │ │ + 0x00d37280 206f7269 67696e61 6c417869 73506f73 originalAxisPos │ │ │ │ + 0x00d37290 2c207665 63322073 68696674 6564506f , vec2 shiftedPo │ │ │ │ + 0x00d372a0 732c206d 61743420 6d6f6465 6c566965 s, mat4 modelVie │ │ │ │ + 0x00d372b0 772c2066 6c6f6174 2068616c 66576964 w, float halfWid │ │ │ │ + 0x00d372c0 74682920 0a20207b 200a2020 20207665 th) . { . ve │ │ │ │ + 0x00d372d0 63322070 203d2028 76656334 28736869 c2 p = (vec4(shi │ │ │ │ + 0x00d372e0 66746564 506f732c 20302e30 2c20312e ftedPos, 0.0, 1. │ │ │ │ + 0x00d372f0 3029202a 206d6f64 656c5669 6577292e 0) * modelView). │ │ │ │ + 0x00d37300 78793b20 0a202020 20766563 32206420 xy; . vec2 d │ │ │ │ + 0x00d37310 3d207020 2d206f72 6967696e 616c4178 = p - originalAx │ │ │ │ + 0x00d37320 6973506f 733b200a 20202020 69662028 isPos; . if ( │ │ │ │ + 0x00d37330 646f7428 642c2064 2920213d 20302e30 dot(d, d) != 0.0 │ │ │ │ + 0x00d37340 29200a20 20202020 20726574 75726e20 ) . return │ │ │ │ + 0x00d37350 6f726967 696e616c 41786973 506f7320 originalAxisPos │ │ │ │ + 0x00d37360 2b206e6f 726d616c 697a6528 6429202a + normalize(d) * │ │ │ │ + 0x00d37370 2068616c 66576964 74683b20 0a202020 halfWidth; . │ │ │ │ + 0x00d37380 20656c73 65200a20 20202020 20726574 else . ret │ │ │ │ + 0x00d37390 75726e20 6f726967 696e616c 41786973 urn originalAxis │ │ │ │ + 0x00d373a0 506f733b 200a2020 7d200a20 20766f69 Pos; . } . voi │ │ │ │ + 0x00d373b0 64206d61 696e2829 200a2020 7b200a20 d main() . { . │ │ │ │ + 0x00d373c0 20202076 65633420 706f7320 3d207665 vec4 pos = ve │ │ │ │ + 0x00d373d0 63342861 5f706f73 6974696f 6e2e7879 c4(a_position.xy │ │ │ │ + 0x00d373e0 7a2c2031 29202a20 755f6d6f 64656c56 z, 1) * u_modelV │ │ │ │ + 0x00d373f0 6965773b 200a2020 20207665 63342073 iew; . vec4 s │ │ │ │ + 0x00d37400 68696674 6564506f 73203d20 76656334 hiftedPos = vec4 │ │ │ │ + 0x00d37410 28615f6e 6f726d61 6c2c2030 2e302c20 (a_normal, 0.0, │ │ │ │ + 0x00d37420 302e3029 202b2070 6f733b20 0a202020 0.0) + pos; . │ │ │ │ + 0x00d37430 20676c5f 506f7369 74696f6e 203d2061 gl_Position = a │ │ │ │ + 0x00d37440 70706c79 5069766f 74547261 6e73666f pplyPivotTransfo │ │ │ │ + 0x00d37450 726d2873 68696674 6564506f 73202a20 rm(shiftedPos * │ │ │ │ + 0x00d37460 755f7072 6f6a6563 74696f6e 2c20755f u_projection, u_ │ │ │ │ + 0x00d37470 7069766f 74547261 6e73666f 726d2c20 pivotTransform, │ │ │ │ + 0x00d37480 302e3029 3b200a20 20236966 64656620 0.0); . #ifdef │ │ │ │ + 0x00d37490 454e4142 4c455f56 5446200a 20202020 ENABLE_VTF . │ │ │ │ + 0x00d374a0 765f636f 6c6f7220 3d207465 78747572 v_color = textur │ │ │ │ + 0x00d374b0 6528755f 636f6c6f 72546578 2c20615f e(u_colorTex, a_ │ │ │ │ + 0x00d374c0 636f6c6f 72546578 436f6f72 64293b20 colorTexCoord); │ │ │ │ + 0x00d374d0 0a202023 656c7365 200a2020 2020765f . #else . v_ │ │ │ │ + 0x00d374e0 636f6c6f 72546578 436f6f72 64203d20 colorTexCoord = │ │ │ │ + 0x00d374f0 615f636f 6c6f7254 6578436f 6f72643b a_colorTexCoord; │ │ │ │ + 0x00d37500 200a2020 23656e64 6966200a 20202020 . #endif . │ │ │ │ + 0x00d37510 765f6d61 736b5465 78436f6f 7264203d v_maskTexCoord = │ │ │ │ + 0x00d37520 20615f6d 61736b54 6578436f 6f72643b a_maskTexCoord; │ │ │ │ + 0x00d37530 200a2020 7d200a00 00000000 00000000 . } .......... │ │ │ │ + 0x00d37540 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d37550 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d37560 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d37570 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d37580 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d37590 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d375a0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d375b0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d375c0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d375d0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d375e0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d375f0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d37600 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d37610 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d37620 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d37630 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d37640 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d37650 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d37660 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d37670 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d37680 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d37690 63332076 5f6c656e 6774683b 200a2020 c3 v_length; . │ │ │ │ + 0x00d376a0 696e2076 65633420 765f636f 6c6f723b in vec4 v_color; │ │ │ │ + 0x00d376b0 200a2020 6f757420 76656334 20765f46 . out vec4 v_F │ │ │ │ + 0x00d376c0 72616743 6f6c6f72 3b200a20 20756e69 ragColor; . uni │ │ │ │ + 0x00d376d0 666f726d 206d6174 3420755f 6d6f6465 form mat4 u_mode │ │ │ │ + 0x00d376e0 6c566965 773b200a 2020756e 69666f72 lView; . unifor │ │ │ │ + 0x00d376f0 6d206d61 74342075 5f70726f 6a656374 m mat4 u_project │ │ │ │ + 0x00d37700 696f6e3b 200a2020 756e6966 6f726d20 ion; . uniform │ │ │ │ + 0x00d37710 6d617434 20755f70 69766f74 5472616e mat4 u_pivotTran │ │ │ │ + 0x00d37720 73666f72 6d3b200a 2020756e 69666f72 sform; . unifor │ │ │ │ + 0x00d37730 6d207665 63342075 5f726f75 74655061 m vec4 u_routePa │ │ │ │ + 0x00d37740 72616d73 3b200a20 20756e69 666f726d rams; . uniform │ │ │ │ + 0x00d37750 20766563 3420755f 636f6c6f 723b200a vec4 u_color; . │ │ │ │ + 0x00d37760 2020756e 69666f72 6d207665 63342075 uniform vec4 u │ │ │ │ + 0x00d37770 5f6d6173 6b436f6c 6f723b20 0a202075 _maskColor; . u │ │ │ │ + 0x00d37780 6e69666f 726d2076 65633420 755f6f75 niform vec4 u_ou │ │ │ │ + 0x00d37790 746c696e 65436f6c 6f723b20 0a202075 tlineColor; . u │ │ │ │ + 0x00d377a0 6e69666f 726d2076 65633420 755f6661 niform vec4 u_fa │ │ │ │ + 0x00d377b0 6b65436f 6c6f723b 200a2020 756e6966 keColor; . unif │ │ │ │ + 0x00d377c0 6f726d20 76656334 20755f66 616b654f orm vec4 u_fakeO │ │ │ │ + 0x00d377d0 75746c69 6e65436f 6c6f723b 200a2020 utlineColor; . │ │ │ │ + 0x00d377e0 756e6966 6f726d20 76656332 20755f66 uniform vec2 u_f │ │ │ │ + 0x00d377f0 616b6542 6f726465 72733b20 0a202075 akeBorders; . u │ │ │ │ + 0x00d37800 6e69666f 726d2076 65633220 755f7061 niform vec2 u_pa │ │ │ │ + 0x00d37810 74746572 6e3b200a 2020756e 69666f72 ttern; . unifor │ │ │ │ + 0x00d37820 6d207665 63322075 5f616e67 6c65436f m vec2 u_angleCo │ │ │ │ + 0x00d37830 7353696e 3b200a20 20756e69 666f726d sSin; . uniform │ │ │ │ + 0x00d37840 20666c6f 61742075 5f617272 6f774861 float u_arrowHa │ │ │ │ + 0x00d37850 6c665769 6474683b 200a2020 756e6966 lfWidth; . unif │ │ │ │ + 0x00d37860 6f726d20 666c6f61 7420755f 6f706163 orm float u_opac │ │ │ │ + 0x00d37870 6974793b 200a2020 636f6e73 7420666c ity; . const fl │ │ │ │ + 0x00d37880 6f617420 6b416e74 69616c69 6173696e oat kAntialiasin │ │ │ │ + 0x00d37890 67546872 6573686f 6c64203d 20302e39 gThreshold = 0.9 │ │ │ │ + 0x00d378a0 323b200a 2020636f 6e737420 666c6f61 2; . const floa │ │ │ │ + 0x00d378b0 74206b4f 75746c69 6e655468 72657368 t kOutlineThresh │ │ │ │ + 0x00d378c0 6f6c6431 203d2030 2e38313b 200a2020 old1 = 0.81; . │ │ │ │ + 0x00d378d0 636f6e73 7420666c 6f617420 6b4f7574 const float kOut │ │ │ │ + 0x00d378e0 6c696e65 54687265 73686f6c 6432203d lineThreshold2 = │ │ │ │ + 0x00d378f0 20302e37 313b200a 2020636f 6e737420 0.71; . const │ │ │ │ + 0x00d37900 666c6f61 74206b53 68617065 436f6f72 float kShapeCoor │ │ │ │ + 0x00d37910 64536361 6c617220 3d203130 30302e30 dScalar = 1000.0 │ │ │ │ + 0x00d37920 3b200a20 20766f69 64206d61 696e2829 ; . void main() │ │ │ │ + 0x00d37930 200a2020 7b200a20 20202069 66202876 . { . if (v │ │ │ │ + 0x00d37940 5f6c656e 6774682e 78203c20 765f6c65 _length.x < v_le │ │ │ │ + 0x00d37950 6e677468 2e7a2920 0a202020 20202064 ngth.z) . d │ │ │ │ + 0x00d37960 69736361 72643b20 0a202020 20766563 iscard; . vec │ │ │ │ + 0x00d37970 3220636f 65667320 3d207374 65702876 2 coefs = step(v │ │ │ │ + 0x00d37980 5f6c656e 6774682e 78782c20 755f6661 _length.xx, u_fa │ │ │ │ + 0x00d37990 6b65426f 72646572 73293b20 0a202020 keBorders); . │ │ │ │ + 0x00d379a0 20636f65 66732e79 203d2031 2e30202d coefs.y = 1.0 - │ │ │ │ + 0x00d379b0 20636f65 66732e79 3b200a20 20202076 coefs.y; . v │ │ │ │ + 0x00d379c0 65633420 6d61696e 436f6c6f 72203d20 ec4 mainColor = │ │ │ │ + 0x00d379d0 6d697828 755f636f 6c6f722c 20755f66 mix(u_color, u_f │ │ │ │ + 0x00d379e0 616b6543 6f6c6f72 2c20636f 6566732e akeColor, coefs. │ │ │ │ + 0x00d379f0 78293b20 0a202020 206d6169 6e436f6c x); . mainCol │ │ │ │ + 0x00d37a00 6f72203d 206d6978 286d6169 6e436f6c or = mix(mainCol │ │ │ │ + 0x00d37a10 6f722c20 755f6661 6b65436f 6c6f722c or, u_fakeColor, │ │ │ │ + 0x00d37a20 20636f65 66732e79 293b200a 20202020 coefs.y); . │ │ │ │ + 0x00d37a30 76656334 206d6169 6e4f7574 6c696e65 vec4 mainOutline │ │ │ │ + 0x00d37a40 436f6c6f 72203d20 6d697828 755f6f75 Color = mix(u_ou │ │ │ │ + 0x00d37a50 746c696e 65436f6c 6f722c20 755f6661 tlineColor, u_fa │ │ │ │ + 0x00d37a60 6b654f75 746c696e 65436f6c 6f722c20 keOutlineColor, │ │ │ │ + 0x00d37a70 636f6566 732e7829 3b200a20 2020206d coefs.x); . m │ │ │ │ + 0x00d37a80 61696e4f 75746c69 6e65436f 6c6f7220 ainOutlineColor │ │ │ │ + 0x00d37a90 3d206d69 78286d61 696e4f75 746c696e = mix(mainOutlin │ │ │ │ + 0x00d37aa0 65436f6c 6f722c20 755f6661 6b654f75 eColor, u_fakeOu │ │ │ │ + 0x00d37ab0 746c696e 65436f6c 6f722c20 636f6566 tlineColor, coef │ │ │ │ + 0x00d37ac0 732e7929 3b200a20 20202076 65633420 s.y); . vec4 │ │ │ │ + 0x00d37ad0 636f6c6f 72203d20 6d697828 6d697828 color = mix(mix( │ │ │ │ + 0x00d37ae0 6d61696e 436f6c6f 722c2076 65633428 mainColor, vec4( │ │ │ │ + 0x00d37af0 765f636f 6c6f722e 7267622c 20312e30 v_color.rgb, 1.0 │ │ │ │ + 0x00d37b00 292c2076 5f636f6c 6f722e61 292c206d ), v_color.a), m │ │ │ │ + 0x00d37b10 61696e43 6f6c6f72 2c207374 65702875 ainColor, step(u │ │ │ │ + 0x00d37b20 5f726f75 74655061 72616d73 2e772c20 _routeParams.w, │ │ │ │ + 0x00d37b30 302e3029 293b200a 20202020 636f6c6f 0.0)); . colo │ │ │ │ + 0x00d37b40 72203d20 6d697828 636f6c6f 722c206d r = mix(color, m │ │ │ │ + 0x00d37b50 61696e4f 75746c69 6e65436f 6c6f722c ainOutlineColor, │ │ │ │ + 0x00d37b60 20737465 70286b4f 75746c69 6e655468 step(kOutlineTh │ │ │ │ + 0x00d37b70 72657368 6f6c6431 2c206162 7328765f reshold1, abs(v_ │ │ │ │ + 0x00d37b80 6c656e67 74682e79 2929293b 200a2020 length.y))); . │ │ │ │ + 0x00d37b90 2020636f 6c6f7220 3d206d69 7828636f color = mix(co │ │ │ │ + 0x00d37ba0 6c6f722c 206d6169 6e4f7574 6c696e65 lor, mainOutline │ │ │ │ + 0x00d37bb0 436f6c6f 722c2073 6d6f6f74 68737465 Color, smoothste │ │ │ │ + 0x00d37bc0 70286b4f 75746c69 6e655468 72657368 p(kOutlineThresh │ │ │ │ + 0x00d37bd0 6f6c6432 2c206b4f 75746c69 6e655468 old2, kOutlineTh │ │ │ │ + 0x00d37be0 72657368 6f6c6431 2c206162 7328765f reshold1, abs(v_ │ │ │ │ + 0x00d37bf0 6c656e67 74682e79 2929293b 200a2020 length.y))); . │ │ │ │ + 0x00d37c00 2020636f 6c6f722e 61202a3d 2028312e color.a *= (1. │ │ │ │ + 0x00d37c10 30202d20 736d6f6f 74687374 6570286b 0 - smoothstep(k │ │ │ │ + 0x00d37c20 416e7469 616c6961 73696e67 54687265 AntialiasingThre │ │ │ │ + 0x00d37c30 73686f6c 642c2031 2e302c20 61627328 shold, 1.0, abs( │ │ │ │ + 0x00d37c40 765f6c65 6e677468 2e792929 293b200a v_length.y))); . │ │ │ │ + 0x00d37c50 20202020 636f6c6f 72203d20 76656334 color = vec4 │ │ │ │ + 0x00d37c60 286d6978 28636f6c 6f722e72 67622c20 (mix(color.rgb, │ │ │ │ + 0x00d37c70 755f6d61 736b436f 6c6f722e 7267622c u_maskColor.rgb, │ │ │ │ + 0x00d37c80 20755f6d 61736b43 6f6c6f72 2e61292c u_maskColor.a), │ │ │ │ + 0x00d37c90 20636f6c 6f722e61 293b200a 20202020 color.a); . │ │ │ │ + 0x00d37ca0 765f4672 6167436f 6c6f7220 3d20636f v_FragColor = co │ │ │ │ + 0x00d37cb0 6c6f723b 200a2020 7d200a00 00000000 lor; . } ...... │ │ │ │ 0x00d37cc0 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ 0x00d37cd0 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ 0x00d37ce0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ 0x00d37cf0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ 0x00d37d00 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ 0x00d37d10 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ 0x00d37d20 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ @@ -50653,8203 +50653,8203 @@ │ │ │ │ 0x00d37da0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ 0x00d37db0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ 0x00d37dc0 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ 0x00d37dd0 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ 0x00d37de0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ 0x00d37df0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ 0x00d37e00 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d37e10 63332076 5f6e6f72 6d616c3b 200a2020 c3 v_normal; . │ │ │ │ - 0x00d37e20 696e2076 65633220 765f7465 78436f6f in vec2 v_texCoo │ │ │ │ - 0x00d37e30 7264733b 200a2020 6f757420 76656334 rds; . out vec4 │ │ │ │ - 0x00d37e40 20765f46 72616743 6f6c6f72 3b200a20 v_FragColor; . │ │ │ │ - 0x00d37e50 20756e69 666f726d 206d6174 3420755f uniform mat4 u_ │ │ │ │ - 0x00d37e60 7472616e 73666f72 6d3b200a 2020756e transform; . un │ │ │ │ - 0x00d37e70 69666f72 6d206d61 74342075 5f6e6f72 iform mat4 u_nor │ │ │ │ - 0x00d37e80 6d616c54 72616e73 666f726d 3b200a20 malTransform; . │ │ │ │ - 0x00d37e90 20756e69 666f726d 20766563 3420755f uniform vec4 u_ │ │ │ │ - 0x00d37ea0 636f6c6f 723b200a 2020756e 69666f72 color; . unifor │ │ │ │ - 0x00d37eb0 6d207665 63322075 5f746578 436f6f72 m vec2 u_texCoor │ │ │ │ - 0x00d37ec0 64466c69 7070696e 673b200a 2020756e dFlipping; . un │ │ │ │ - 0x00d37ed0 69666f72 6d207361 6d706c65 72324420 iform sampler2D │ │ │ │ - 0x00d37ee0 755f636f 6c6f7254 65783b20 0a202063 u_colorTex; . c │ │ │ │ - 0x00d37ef0 6f6e7374 20766563 33206c69 67687444 onst vec3 lightD │ │ │ │ - 0x00d37f00 6972203d 20766563 3328302e 3331362c ir = vec3(0.316, │ │ │ │ - 0x00d37f10 20302e30 2c20302e 39343829 3b200a20 0.0, 0.948); . │ │ │ │ - 0x00d37f20 20636f6e 73742066 6c6f6174 206b5368 const float kSh │ │ │ │ - 0x00d37f30 61706543 6f6f7264 5363616c 6172203d apeCoordScalar = │ │ │ │ - 0x00d37f40 20313030 302e303b 200a2020 766f6964 1000.0; . void │ │ │ │ - 0x00d37f50 206d6169 6e282920 0a20207b 200a2020 main() . { . │ │ │ │ - 0x00d37f60 2020666c 6f617420 70686f6e 67446966 float phongDif │ │ │ │ - 0x00d37f70 66757365 203d206d 61782830 2e302c20 fuse = max(0.0, │ │ │ │ - 0x00d37f80 2d646f74 286c6967 68744469 722c2076 -dot(lightDir, v │ │ │ │ - 0x00d37f90 5f6e6f72 6d616c29 293b200a 20202020 _normal)); . │ │ │ │ - 0x00d37fa0 76656334 20636f6c 6f72203d 20746578 vec4 color = tex │ │ │ │ - 0x00d37fb0 74757265 28755f63 6f6c6f72 5465782c ture(u_colorTex, │ │ │ │ - 0x00d37fc0 20765f74 6578436f 6f726473 29202a20 v_texCoords) * │ │ │ │ - 0x00d37fd0 755f636f 6c6f723b 200a2020 2020765f u_color; . v_ │ │ │ │ - 0x00d37fe0 46726167 436f6c6f 72203d20 76656334 FragColor = vec4 │ │ │ │ - 0x00d37ff0 28287068 6f6e6744 69666675 7365202a ((phongDiffuse * │ │ │ │ - 0x00d38000 20302e35 202b2030 2e352920 2a20636f 0.5 + 0.5) * co │ │ │ │ - 0x00d38010 6c6f722e 7267622c 20636f6c 6f722e61 lor.rgb, color.a │ │ │ │ - 0x00d38020 293b200a 20207d20 0a000000 00000000 ); . } ........ │ │ │ │ - 0x00d38030 00000000 00000000 00000000 00000000 ................ │ │ │ │ - 0x00d38040 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d38050 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d38060 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d38070 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d38080 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d38090 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d380a0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d380b0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d380c0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d380d0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d380e0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d380f0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d38100 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d38110 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d38120 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d38130 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d38140 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d38150 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d38160 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d38170 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d38180 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d38190 63332061 5f706f73 3b200a20 20696e20 c3 a_pos; . in │ │ │ │ - 0x00d381a0 76656333 20615f6e 6f726d61 6c3b200a vec3 a_normal; . │ │ │ │ - 0x00d381b0 2020696e 20766563 3220615f 74657843 in vec2 a_texC │ │ │ │ - 0x00d381c0 6f6f7264 733b200a 20206f75 74207665 oords; . out ve │ │ │ │ - 0x00d381d0 63332076 5f6e6f72 6d616c3b 200a2020 c3 v_normal; . │ │ │ │ - 0x00d381e0 6f757420 76656332 20765f74 6578436f out vec2 v_texCo │ │ │ │ - 0x00d381f0 6f726473 3b200a20 20756e69 666f726d ords; . uniform │ │ │ │ - 0x00d38200 206d6174 3420755f 7472616e 73666f72 mat4 u_transfor │ │ │ │ - 0x00d38210 6d3b200a 2020756e 69666f72 6d206d61 m; . uniform ma │ │ │ │ - 0x00d38220 74342075 5f6e6f72 6d616c54 72616e73 t4 u_normalTrans │ │ │ │ - 0x00d38230 666f726d 3b200a20 20756e69 666f726d form; . uniform │ │ │ │ - 0x00d38240 20766563 3420755f 636f6c6f 723b200a vec4 u_color; . │ │ │ │ - 0x00d38250 2020756e 69666f72 6d207665 63322075 uniform vec2 u │ │ │ │ - 0x00d38260 5f746578 436f6f72 64466c69 7070696e _texCoordFlippin │ │ │ │ - 0x00d38270 673b200a 2020636f 6e737420 666c6f61 g; . const floa │ │ │ │ - 0x00d38280 74206b53 68617065 436f6f72 64536361 t kShapeCoordSca │ │ │ │ - 0x00d38290 6c617220 3d203130 30302e30 3b200a20 lar = 1000.0; . │ │ │ │ - 0x00d382a0 20766563 34206170 706c7950 69766f74 vec4 applyPivot │ │ │ │ - 0x00d382b0 5472616e 73666f72 6d287665 63342070 Transform(vec4 p │ │ │ │ - 0x00d382c0 69766f74 2c206d61 74342070 69766f74 ivot, mat4 pivot │ │ │ │ - 0x00d382d0 5472616e 73666f72 6d2c2066 6c6f6174 Transform, float │ │ │ │ - 0x00d382e0 20706976 6f745265 616c5a29 200a2020 pivotRealZ) . │ │ │ │ - 0x00d382f0 7b200a20 20202076 65633420 7472616e { . vec4 tran │ │ │ │ - 0x00d38300 73666f72 6d656450 69766f74 203d2070 sformedPivot = p │ │ │ │ - 0x00d38310 69766f74 3b200a20 20202066 6c6f6174 ivot; . float │ │ │ │ - 0x00d38320 2077203d 20747261 6e73666f 726d6564 w = transformed │ │ │ │ - 0x00d38330 5069766f 742e773b 200a2020 20207472 Pivot.w; . tr │ │ │ │ - 0x00d38340 616e7366 6f726d65 64506976 6f742e78 ansformedPivot.x │ │ │ │ - 0x00d38350 7977203d 20287069 766f7454 72616e73 yw = (pivotTrans │ │ │ │ - 0x00d38360 666f726d 202a2076 65633428 7472616e form * vec4(tran │ │ │ │ - 0x00d38370 73666f72 6d656450 69766f74 2e78792c sformedPivot.xy, │ │ │ │ - 0x00d38380 20706976 6f745265 616c5a2c 20772929 pivotRealZ, w)) │ │ │ │ - 0x00d38390 2e787977 3b200a20 20202074 72616e73 .xyw; . trans │ │ │ │ - 0x00d383a0 666f726d 65645069 766f742e 7a202a3d formedPivot.z *= │ │ │ │ - 0x00d383b0 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ - 0x00d383c0 742e7720 2f20773b 200a2020 23696664 t.w / w; . #ifd │ │ │ │ - 0x00d383d0 65662056 554c4b41 4e200a20 20202074 ef VULKAN . t │ │ │ │ - 0x00d383e0 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ - 0x00d383f0 79203d20 2d747261 6e73666f 726d6564 y = -transformed │ │ │ │ - 0x00d38400 5069766f 742e793b 200a2020 20207472 Pivot.y; . tr │ │ │ │ - 0x00d38410 616e7366 6f726d65 64506976 6f742e7a ansformedPivot.z │ │ │ │ - 0x00d38420 203d2028 7472616e 73666f72 6d656450 = (transformedP │ │ │ │ - 0x00d38430 69766f74 2e7a2020 2b207472 616e7366 ivot.z + transf │ │ │ │ - 0x00d38440 6f726d65 64506976 6f742e77 29202f20 ormedPivot.w) / │ │ │ │ - 0x00d38450 322e303b 200a2020 23656e64 6966200a 2.0; . #endif . │ │ │ │ - 0x00d38460 20202020 72657475 726e2074 72616e73 return trans │ │ │ │ - 0x00d38470 666f726d 65645069 766f743b 200a2020 formedPivot; . │ │ │ │ - 0x00d38480 7d200a20 20766563 34206170 706c7942 } . vec4 applyB │ │ │ │ - 0x00d38490 696c6c62 6f617264 5069766f 74547261 illboardPivotTra │ │ │ │ - 0x00d384a0 6e73666f 726d2876 65633420 7069766f nsform(vec4 pivo │ │ │ │ - 0x00d384b0 742c206d 61743420 7069766f 74547261 t, mat4 pivotTra │ │ │ │ - 0x00d384c0 6e73666f 726d2c20 666c6f61 74207069 nsform, float pi │ │ │ │ - 0x00d384d0 766f7452 65616c5a 2c207665 6332206f votRealZ, vec2 o │ │ │ │ - 0x00d384e0 66667365 7429200a 20207b20 0a202020 ffset) . { . │ │ │ │ - 0x00d384f0 20666c6f 6174206c 6f676963 5a203d20 float logicZ = │ │ │ │ - 0x00d38500 7069766f 742e7a20 2f207069 766f742e pivot.z / pivot. │ │ │ │ - 0x00d38510 773b200a 20202020 76656334 20747261 w; . vec4 tra │ │ │ │ - 0x00d38520 6e73666f 726d6564 5069766f 74203d20 nsformedPivot = │ │ │ │ - 0x00d38530 7069766f 74547261 6e73666f 726d202a pivotTransform * │ │ │ │ - 0x00d38540 20766563 34287069 766f742e 78792c20 vec4(pivot.xy, │ │ │ │ - 0x00d38550 7069766f 74526561 6c5a2c20 7069766f pivotRealZ, pivo │ │ │ │ - 0x00d38560 742e7729 3b200a20 20202076 65633420 t.w); . vec4 │ │ │ │ - 0x00d38570 7363616c 65203d20 7069766f 74547261 scale = pivotTra │ │ │ │ - 0x00d38580 6e73666f 726d202a 20766563 3428312e nsform * vec4(1. │ │ │ │ - 0x00d38590 302c202d 312e302c 20302e30 2c20312e 0, -1.0, 0.0, 1. │ │ │ │ - 0x00d385a0 30293b20 0a202020 20766563 3420706f 0); . vec4 po │ │ │ │ - 0x00d385b0 73697469 6f6e203d 20766563 34287472 sition = vec4(tr │ │ │ │ - 0x00d385c0 616e7366 6f726d65 64506976 6f742e78 ansformedPivot.x │ │ │ │ - 0x00d385d0 79202f20 7472616e 73666f72 6d656450 y / transformedP │ │ │ │ - 0x00d385e0 69766f74 2e772c20 6c6f6769 635a2c20 ivot.w, logicZ, │ │ │ │ - 0x00d385f0 312e3029 202b2076 65633428 6f666673 1.0) + vec4(offs │ │ │ │ - 0x00d38600 6574202f 20736361 6c652e77 202a2073 et / scale.w * s │ │ │ │ - 0x00d38610 63616c65 2e782c20 302e302c 20302e30 cale.x, 0.0, 0.0 │ │ │ │ - 0x00d38620 293b200a 20202369 66646566 2056554c ); . #ifdef VUL │ │ │ │ - 0x00d38630 4b414e20 0a202020 20706f73 6974696f KAN . positio │ │ │ │ - 0x00d38640 6e2e7920 3d202d70 6f736974 696f6e2e n.y = -position. │ │ │ │ - 0x00d38650 793b200a 20202020 706f7369 74696f6e y; . position │ │ │ │ - 0x00d38660 2e7a203d 2028706f 73697469 6f6e2e7a .z = (position.z │ │ │ │ - 0x00d38670 20202b20 706f7369 74696f6e 2e772920 + position.w) │ │ │ │ - 0x00d38680 2f20322e 303b200a 20202365 6e646966 / 2.0; . #endif │ │ │ │ - 0x00d38690 200a2020 20207265 7475726e 20706f73 . return pos │ │ │ │ - 0x00d386a0 6974696f 6e3b200a 20207d20 0a202076 ition; . } . v │ │ │ │ - 0x00d386b0 65633220 63616c63 4c696e65 5472616e ec2 calcLineTran │ │ │ │ - 0x00d386c0 73666f72 6d656441 78697350 6f732876 sformedAxisPos(v │ │ │ │ - 0x00d386d0 65633220 6f726967 696e616c 41786973 ec2 originalAxis │ │ │ │ - 0x00d386e0 506f732c 20766563 32207368 69667465 Pos, vec2 shifte │ │ │ │ - 0x00d386f0 64506f73 2c206d61 7434206d 6f64656c dPos, mat4 model │ │ │ │ - 0x00d38700 56696577 2c20666c 6f617420 68616c66 View, float half │ │ │ │ - 0x00d38710 57696474 6829200a 20207b20 0a202020 Width) . { . │ │ │ │ - 0x00d38720 20766563 32207020 3d202876 65633428 vec2 p = (vec4( │ │ │ │ - 0x00d38730 73686966 74656450 6f732c20 302e302c shiftedPos, 0.0, │ │ │ │ - 0x00d38740 20312e30 29202a20 6d6f6465 6c566965 1.0) * modelVie │ │ │ │ - 0x00d38750 77292e78 793b200a 20202020 76656332 w).xy; . vec2 │ │ │ │ - 0x00d38760 2064203d 2070202d 206f7269 67696e61 d = p - origina │ │ │ │ - 0x00d38770 6c417869 73506f73 3b200a20 20202069 lAxisPos; . i │ │ │ │ - 0x00d38780 66202864 6f742864 2c206429 20213d20 f (dot(d, d) != │ │ │ │ - 0x00d38790 302e3029 200a2020 20202020 72657475 0.0) . retu │ │ │ │ - 0x00d387a0 726e206f 72696769 6e616c41 78697350 rn originalAxisP │ │ │ │ - 0x00d387b0 6f73202b 206e6f72 6d616c69 7a652864 os + normalize(d │ │ │ │ - 0x00d387c0 29202a20 68616c66 57696474 683b200a ) * halfWidth; . │ │ │ │ - 0x00d387d0 20202020 656c7365 200a2020 20202020 else . │ │ │ │ - 0x00d387e0 72657475 726e206f 72696769 6e616c41 return originalA │ │ │ │ - 0x00d387f0 78697350 6f733b20 0a20207d 200a2020 xisPos; . } . │ │ │ │ - 0x00d38800 766f6964 206d6169 6e282920 0a20207b void main() . { │ │ │ │ - 0x00d38810 200a2020 20207665 63342070 6f736974 . vec4 posit │ │ │ │ - 0x00d38820 696f6e20 3d20755f 7472616e 73666f72 ion = u_transfor │ │ │ │ - 0x00d38830 6d202a20 76656334 28615f70 6f732c20 m * vec4(a_pos, │ │ │ │ - 0x00d38840 312e3029 3b200a20 20202076 5f6e6f72 1.0); . v_nor │ │ │ │ - 0x00d38850 6d616c20 3d206e6f 726d616c 697a6528 mal = normalize( │ │ │ │ - 0x00d38860 28755f6e 6f726d61 6c547261 6e73666f (u_normalTransfo │ │ │ │ - 0x00d38870 726d202a 20766563 3428615f 6e6f726d rm * vec4(a_norm │ │ │ │ - 0x00d38880 616c2c20 302e3029 292e7879 7a293b20 al, 0.0)).xyz); │ │ │ │ - 0x00d38890 0a202020 20765f74 6578436f 6f726473 . v_texCoords │ │ │ │ - 0x00d388a0 203d206d 69782861 5f746578 436f6f72 = mix(a_texCoor │ │ │ │ - 0x00d388b0 64732c20 312e3020 2d20615f 74657843 ds, 1.0 - a_texC │ │ │ │ - 0x00d388c0 6f6f7264 732c2075 5f746578 436f6f72 oords, u_texCoor │ │ │ │ - 0x00d388d0 64466c69 7070696e 67293b20 0a202020 dFlipping); . │ │ │ │ - 0x00d388e0 20676c5f 506f7369 74696f6e 203d2070 gl_Position = p │ │ │ │ - 0x00d388f0 6f736974 696f6e3b 200a2020 23696664 osition; . #ifd │ │ │ │ - 0x00d38900 65662056 554c4b41 4e200a20 20202067 ef VULKAN . g │ │ │ │ - 0x00d38910 6c5f506f 73697469 6f6e2e79 203d202d l_Position.y = - │ │ │ │ - 0x00d38920 676c5f50 6f736974 696f6e2e 793b200a gl_Position.y; . │ │ │ │ - 0x00d38930 20202020 676c5f50 6f736974 696f6e2e gl_Position. │ │ │ │ - 0x00d38940 7a203d20 28676c5f 506f7369 74696f6e z = (gl_Position │ │ │ │ - 0x00d38950 2e7a202b 20676c5f 506f7369 74696f6e .z + gl_Position │ │ │ │ - 0x00d38960 2e772920 2a20302e 353b200a 20202365 .w) * 0.5; . #e │ │ │ │ - 0x00d38970 6e646966 200a2020 7d200a00 00000000 ndif . } ...... │ │ │ │ - 0x00d38980 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d38990 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d389a0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d389b0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d389c0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d389d0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d389e0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d389f0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d38a00 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d38a10 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d38a20 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d38a30 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d38a40 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d38a50 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d38a60 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d38a70 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d38a80 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d38a90 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d38aa0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d38ab0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d38ac0 2023656e 64696620 0a202023 69666465 #endif . #ifde │ │ │ │ - 0x00d38ad0 6620454e 41424c45 5f565446 200a2020 f ENABLE_VTF . │ │ │ │ - 0x00d38ae0 696e204c 4f575f50 20766563 3420765f in LOW_P vec4 v_ │ │ │ │ - 0x00d38af0 636f6c6f 723b200a 20202365 6c736520 color; . #else │ │ │ │ - 0x00d38b00 0a202069 6e207665 63322076 5f636f6c . in vec2 v_col │ │ │ │ - 0x00d38b10 6f725465 78436f6f 7264733b 200a2020 orTexCoords; . │ │ │ │ - 0x00d38b20 756e6966 6f726d20 73616d70 6c657232 uniform sampler2 │ │ │ │ - 0x00d38b30 4420755f 636f6c6f 72546578 3b200a20 D u_colorTex; . │ │ │ │ - 0x00d38b40 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d38b50 63332076 5f726164 6975733b 200a2020 c3 v_radius; . │ │ │ │ - 0x00d38b60 6f757420 76656334 20765f46 72616743 out vec4 v_FragC │ │ │ │ - 0x00d38b70 6f6c6f72 3b200a20 20756e69 666f726d olor; . uniform │ │ │ │ - 0x00d38b80 206d6174 3420755f 6d6f6465 6c566965 mat4 u_modelVie │ │ │ │ - 0x00d38b90 773b200a 2020756e 69666f72 6d206d61 w; . uniform ma │ │ │ │ - 0x00d38ba0 74342075 5f70726f 6a656374 696f6e3b t4 u_projection; │ │ │ │ - 0x00d38bb0 200a2020 756e6966 6f726d20 6d617434 . uniform mat4 │ │ │ │ - 0x00d38bc0 20755f70 69766f74 5472616e 73666f72 u_pivotTransfor │ │ │ │ - 0x00d38bd0 6d3b200a 2020756e 69666f72 6d207665 m; . uniform ve │ │ │ │ - 0x00d38be0 63322075 5f636f6e 74726173 7447616d c2 u_contrastGam │ │ │ │ - 0x00d38bf0 6d613b20 0a202075 6e69666f 726d2066 ma; . uniform f │ │ │ │ - 0x00d38c00 6c6f6174 20755f6f 70616369 74793b20 loat u_opacity; │ │ │ │ - 0x00d38c10 0a202075 6e69666f 726d2066 6c6f6174 . uniform float │ │ │ │ - 0x00d38c20 20755f7a 5363616c 653b200a 2020756e u_zScale; . un │ │ │ │ - 0x00d38c30 69666f72 6d20666c 6f617420 755f696e iform float u_in │ │ │ │ - 0x00d38c40 74657270 6f6c6174 696f6e3b 200a2020 terpolation; . │ │ │ │ - 0x00d38c50 756e6966 6f726d20 666c6f61 7420755f uniform float u_ │ │ │ │ - 0x00d38c60 69734f75 746c696e 65506173 733b200a isOutlinePass; . │ │ │ │ - 0x00d38c70 2020636f 6e737420 666c6f61 74206161 const float aa │ │ │ │ - 0x00d38c80 50697865 6c73436f 756e7420 3d20322e PixelsCount = 2. │ │ │ │ - 0x00d38c90 353b200a 2020636f 6e737420 666c6f61 5; . const floa │ │ │ │ - 0x00d38ca0 74206b53 68617065 436f6f72 64536361 t kShapeCoordSca │ │ │ │ - 0x00d38cb0 6c617220 3d203130 30302e30 3b200a20 lar = 1000.0; . │ │ │ │ - 0x00d38cc0 20766f69 64206d61 696e2829 200a2020 void main() . │ │ │ │ - 0x00d38cd0 7b200a20 20236966 64656620 454e4142 { . #ifdef ENAB │ │ │ │ - 0x00d38ce0 4c455f56 5446200a 20202020 4c4f575f LE_VTF . LOW_ │ │ │ │ - 0x00d38cf0 50207665 63342066 696e616c 436f6c6f P vec4 finalColo │ │ │ │ - 0x00d38d00 72203d20 765f636f 6c6f723b 200a2020 r = v_color; . │ │ │ │ - 0x00d38d10 23656c73 65200a20 2020204c 4f575f50 #else . LOW_P │ │ │ │ - 0x00d38d20 20766563 34206669 6e616c43 6f6c6f72 vec4 finalColor │ │ │ │ - 0x00d38d30 203d2074 65787475 72652875 5f636f6c = texture(u_col │ │ │ │ - 0x00d38d40 6f725465 782c2076 5f636f6c 6f725465 orTex, v_colorTe │ │ │ │ - 0x00d38d50 78436f6f 72647329 3b200a20 2023656e xCoords); . #en │ │ │ │ - 0x00d38d60 64696620 0a202020 20666c6f 61742073 dif . float s │ │ │ │ - 0x00d38d70 6d616c6c 52616469 7573203d 20765f72 mallRadius = v_r │ │ │ │ - 0x00d38d80 61646975 732e7a20 2d206161 50697865 adius.z - aaPixe │ │ │ │ - 0x00d38d90 6c73436f 756e743b 200a2020 2020666c lsCount; . fl │ │ │ │ - 0x00d38da0 6f617420 73746570 56616c75 65203d20 oat stepValue = │ │ │ │ - 0x00d38db0 736d6f6f 74687374 65702873 6d616c6c smoothstep(small │ │ │ │ - 0x00d38dc0 52616469 7573202a 20736d61 6c6c5261 Radius * smallRa │ │ │ │ - 0x00d38dd0 64697573 2c20765f 72616469 75732e7a dius, v_radius.z │ │ │ │ - 0x00d38de0 202a2076 5f726164 6975732e 7a2c200a * v_radius.z, . │ │ │ │ - 0x00d38df0 20202020 20202020 20202020 20202020 │ │ │ │ - 0x00d38e00 20202020 20202020 20202020 20202020 │ │ │ │ - 0x00d38e10 20765f72 61646975 732e7820 2a20765f v_radius.x * v_ │ │ │ │ - 0x00d38e20 72616469 75732e78 202b2076 5f726164 radius.x + v_rad │ │ │ │ - 0x00d38e30 6975732e 79202a20 765f7261 64697573 ius.y * v_radius │ │ │ │ - 0x00d38e40 2e79293b 200a2020 20206669 6e616c43 .y); . finalC │ │ │ │ - 0x00d38e50 6f6c6f72 2e61203d 2066696e 616c436f olor.a = finalCo │ │ │ │ - 0x00d38e60 6c6f722e 61202a20 755f6f70 61636974 lor.a * u_opacit │ │ │ │ - 0x00d38e70 79202a20 28312e30 202d2073 74657056 y * (1.0 - stepV │ │ │ │ - 0x00d38e80 616c7565 293b200a 20202020 765f4672 alue); . v_Fr │ │ │ │ - 0x00d38e90 6167436f 6c6f7220 3d206669 6e616c43 agColor = finalC │ │ │ │ - 0x00d38ea0 6f6c6f72 3b200a20 207d200a 00000000 olor; . } ..... │ │ │ │ - 0x00d38eb0 00000000 00000000 00000000 00000000 ................ │ │ │ │ - 0x00d38ec0 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d38ed0 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d38ee0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d38ef0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d38f00 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d38f10 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d38f20 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d38f30 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d38f40 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d38f50 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d38f60 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d38f70 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d38f80 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d38f90 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d38fa0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d38fb0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d38fc0 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d38fd0 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d38fe0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d38ff0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d39000 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d39010 63332061 5f706f73 6974696f 6e3b200a c3 a_position; . │ │ │ │ - 0x00d39020 2020696e 20766563 3320615f 6e6f726d in vec3 a_norm │ │ │ │ - 0x00d39030 616c3b20 0a202069 6e207665 63322061 al; . in vec2 a │ │ │ │ - 0x00d39040 5f636f6c 6f725465 78436f6f 7264733b _colorTexCoords; │ │ │ │ - 0x00d39050 200a2020 23696664 65662045 4e41424c . #ifdef ENABL │ │ │ │ - 0x00d39060 455f5654 46200a20 206f7574 204c4f57 E_VTF . out LOW │ │ │ │ - 0x00d39070 5f502076 65633420 765f636f 6c6f723b _P vec4 v_color; │ │ │ │ - 0x00d39080 200a2020 23656c73 65200a20 206f7574 . #else . out │ │ │ │ - 0x00d39090 20766563 3220765f 636f6c6f 72546578 vec2 v_colorTex │ │ │ │ - 0x00d390a0 436f6f72 64733b20 0a202023 656e6469 Coords; . #endi │ │ │ │ - 0x00d390b0 66200a20 206f7574 20766563 3320765f f . out vec3 v_ │ │ │ │ - 0x00d390c0 72616469 75733b20 0a202075 6e69666f radius; . unifo │ │ │ │ - 0x00d390d0 726d206d 61743420 755f6d6f 64656c56 rm mat4 u_modelV │ │ │ │ - 0x00d390e0 6965773b 200a2020 756e6966 6f726d20 iew; . uniform │ │ │ │ - 0x00d390f0 6d617434 20755f70 726f6a65 6374696f mat4 u_projectio │ │ │ │ - 0x00d39100 6e3b200a 2020756e 69666f72 6d206d61 n; . uniform ma │ │ │ │ - 0x00d39110 74342075 5f706976 6f745472 616e7366 t4 u_pivotTransf │ │ │ │ - 0x00d39120 6f726d3b 200a2020 756e6966 6f726d20 orm; . uniform │ │ │ │ - 0x00d39130 76656332 20755f63 6f6e7472 61737447 vec2 u_contrastG │ │ │ │ - 0x00d39140 616d6d61 3b200a20 20756e69 666f726d amma; . uniform │ │ │ │ - 0x00d39150 20666c6f 61742075 5f6f7061 63697479 float u_opacity │ │ │ │ - 0x00d39160 3b200a20 20756e69 666f726d 20666c6f ; . uniform flo │ │ │ │ - 0x00d39170 61742075 5f7a5363 616c653b 200a2020 at u_zScale; . │ │ │ │ - 0x00d39180 756e6966 6f726d20 666c6f61 7420755f uniform float u_ │ │ │ │ - 0x00d39190 696e7465 72706f6c 6174696f 6e3b200a interpolation; . │ │ │ │ - 0x00d391a0 2020756e 69666f72 6d20666c 6f617420 uniform float │ │ │ │ - 0x00d391b0 755f6973 4f75746c 696e6550 6173733b u_isOutlinePass; │ │ │ │ - 0x00d391c0 200a2020 23696664 65662045 4e41424c . #ifdef ENABL │ │ │ │ - 0x00d391d0 455f5654 46200a20 20756e69 666f726d E_VTF . uniform │ │ │ │ - 0x00d391e0 2073616d 706c6572 32442075 5f636f6c sampler2D u_col │ │ │ │ - 0x00d391f0 6f725465 783b200a 20202365 6e646966 orTex; . #endif │ │ │ │ - 0x00d39200 200a2020 636f6e73 7420666c 6f617420 . const float │ │ │ │ - 0x00d39210 6b536861 7065436f 6f726453 63616c61 kShapeCoordScala │ │ │ │ - 0x00d39220 72203d20 31303030 2e303b20 0a202076 r = 1000.0; . v │ │ │ │ - 0x00d39230 65633420 6170706c 79506976 6f745472 ec4 applyPivotTr │ │ │ │ - 0x00d39240 616e7366 6f726d28 76656334 20706976 ansform(vec4 piv │ │ │ │ - 0x00d39250 6f742c20 6d617434 20706976 6f745472 ot, mat4 pivotTr │ │ │ │ - 0x00d39260 616e7366 6f726d2c 20666c6f 61742070 ansform, float p │ │ │ │ - 0x00d39270 69766f74 5265616c 5a29200a 20207b20 ivotRealZ) . { │ │ │ │ - 0x00d39280 0a202020 20766563 34207472 616e7366 . vec4 transf │ │ │ │ - 0x00d39290 6f726d65 64506976 6f74203d 20706976 ormedPivot = piv │ │ │ │ - 0x00d392a0 6f743b20 0a202020 20666c6f 61742077 ot; . float w │ │ │ │ - 0x00d392b0 203d2074 72616e73 666f726d 65645069 = transformedPi │ │ │ │ - 0x00d392c0 766f742e 773b200a 20202020 7472616e vot.w; . tran │ │ │ │ - 0x00d392d0 73666f72 6d656450 69766f74 2e787977 sformedPivot.xyw │ │ │ │ - 0x00d392e0 203d2028 7069766f 74547261 6e73666f = (pivotTransfo │ │ │ │ - 0x00d392f0 726d202a 20766563 34287472 616e7366 rm * vec4(transf │ │ │ │ - 0x00d39300 6f726d65 64506976 6f742e78 792c2070 ormedPivot.xy, p │ │ │ │ - 0x00d39310 69766f74 5265616c 5a2c2077 29292e78 ivotRealZ, w)).x │ │ │ │ - 0x00d39320 79773b20 0a202020 20747261 6e73666f yw; . transfo │ │ │ │ - 0x00d39330 726d6564 5069766f 742e7a20 2a3d2074 rmedPivot.z *= t │ │ │ │ - 0x00d39340 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ - 0x00d39350 77202f20 773b200a 20202369 66646566 w / w; . #ifdef │ │ │ │ - 0x00d39360 2056554c 4b414e20 0a202020 20747261 VULKAN . tra │ │ │ │ - 0x00d39370 6e73666f 726d6564 5069766f 742e7920 nsformedPivot.y │ │ │ │ - 0x00d39380 3d202d74 72616e73 666f726d 65645069 = -transformedPi │ │ │ │ - 0x00d39390 766f742e 793b200a 20202020 7472616e vot.y; . tran │ │ │ │ - 0x00d393a0 73666f72 6d656450 69766f74 2e7a203d sformedPivot.z = │ │ │ │ - 0x00d393b0 20287472 616e7366 6f726d65 64506976 (transformedPiv │ │ │ │ - 0x00d393c0 6f742e7a 20202b20 7472616e 73666f72 ot.z + transfor │ │ │ │ - 0x00d393d0 6d656450 69766f74 2e772920 2f20322e medPivot.w) / 2. │ │ │ │ - 0x00d393e0 303b200a 20202365 6e646966 200a2020 0; . #endif . │ │ │ │ - 0x00d393f0 20207265 7475726e 20747261 6e73666f return transfo │ │ │ │ - 0x00d39400 726d6564 5069766f 743b200a 20207d20 rmedPivot; . } │ │ │ │ - 0x00d39410 0a202076 65633420 6170706c 7942696c . vec4 applyBil │ │ │ │ - 0x00d39420 6c626f61 72645069 766f7454 72616e73 lboardPivotTrans │ │ │ │ - 0x00d39430 666f726d 28766563 34207069 766f742c form(vec4 pivot, │ │ │ │ - 0x00d39440 206d6174 34207069 766f7454 72616e73 mat4 pivotTrans │ │ │ │ - 0x00d39450 666f726d 2c20666c 6f617420 7069766f form, float pivo │ │ │ │ - 0x00d39460 74526561 6c5a2c20 76656332 206f6666 tRealZ, vec2 off │ │ │ │ - 0x00d39470 73657429 200a2020 7b200a20 20202066 set) . { . f │ │ │ │ - 0x00d39480 6c6f6174 206c6f67 69635a20 3d207069 loat logicZ = pi │ │ │ │ - 0x00d39490 766f742e 7a202f20 7069766f 742e773b vot.z / pivot.w; │ │ │ │ - 0x00d394a0 200a2020 20207665 63342074 72616e73 . vec4 trans │ │ │ │ - 0x00d394b0 666f726d 65645069 766f7420 3d207069 formedPivot = pi │ │ │ │ - 0x00d394c0 766f7454 72616e73 666f726d 202a2076 votTransform * v │ │ │ │ - 0x00d394d0 65633428 7069766f 742e7879 2c207069 ec4(pivot.xy, pi │ │ │ │ - 0x00d394e0 766f7452 65616c5a 2c207069 766f742e votRealZ, pivot. │ │ │ │ - 0x00d394f0 77293b20 0a202020 20766563 34207363 w); . vec4 sc │ │ │ │ - 0x00d39500 616c6520 3d207069 766f7454 72616e73 ale = pivotTrans │ │ │ │ - 0x00d39510 666f726d 202a2076 65633428 312e302c form * vec4(1.0, │ │ │ │ - 0x00d39520 202d312e 302c2030 2e302c20 312e3029 -1.0, 0.0, 1.0) │ │ │ │ - 0x00d39530 3b200a20 20202076 65633420 706f7369 ; . vec4 posi │ │ │ │ - 0x00d39540 74696f6e 203d2076 65633428 7472616e tion = vec4(tran │ │ │ │ - 0x00d39550 73666f72 6d656450 69766f74 2e787920 sformedPivot.xy │ │ │ │ - 0x00d39560 2f207472 616e7366 6f726d65 64506976 / transformedPiv │ │ │ │ - 0x00d39570 6f742e77 2c206c6f 6769635a 2c20312e ot.w, logicZ, 1. │ │ │ │ - 0x00d39580 3029202b 20766563 34286f66 66736574 0) + vec4(offset │ │ │ │ - 0x00d39590 202f2073 63616c65 2e77202a 20736361 / scale.w * sca │ │ │ │ - 0x00d395a0 6c652e78 2c20302e 302c2030 2e30293b le.x, 0.0, 0.0); │ │ │ │ - 0x00d395b0 200a2020 23696664 65662056 554c4b41 . #ifdef VULKA │ │ │ │ - 0x00d395c0 4e200a20 20202070 6f736974 696f6e2e N . position. │ │ │ │ - 0x00d395d0 79203d20 2d706f73 6974696f 6e2e793b y = -position.y; │ │ │ │ - 0x00d395e0 200a2020 2020706f 73697469 6f6e2e7a . position.z │ │ │ │ - 0x00d395f0 203d2028 706f7369 74696f6e 2e7a2020 = (position.z │ │ │ │ - 0x00d39600 2b20706f 73697469 6f6e2e77 29202f20 + position.w) / │ │ │ │ - 0x00d39610 322e303b 200a2020 23656e64 6966200a 2.0; . #endif . │ │ │ │ - 0x00d39620 20202020 72657475 726e2070 6f736974 return posit │ │ │ │ - 0x00d39630 696f6e3b 200a2020 7d200a20 20766563 ion; . } . vec │ │ │ │ - 0x00d39640 32206361 6c634c69 6e655472 616e7366 2 calcLineTransf │ │ │ │ - 0x00d39650 6f726d65 64417869 73506f73 28766563 ormedAxisPos(vec │ │ │ │ - 0x00d39660 32206f72 6967696e 616c4178 6973506f 2 originalAxisPo │ │ │ │ - 0x00d39670 732c2076 65633220 73686966 74656450 s, vec2 shiftedP │ │ │ │ - 0x00d39680 6f732c20 6d617434 206d6f64 656c5669 os, mat4 modelVi │ │ │ │ - 0x00d39690 65772c20 666c6f61 74206861 6c665769 ew, float halfWi │ │ │ │ - 0x00d396a0 64746829 200a2020 7b200a20 20202076 dth) . { . v │ │ │ │ - 0x00d396b0 65633220 70203d20 28766563 34287368 ec2 p = (vec4(sh │ │ │ │ - 0x00d396c0 69667465 64506f73 2c20302e 302c2031 iftedPos, 0.0, 1 │ │ │ │ - 0x00d396d0 2e302920 2a206d6f 64656c56 69657729 .0) * modelView) │ │ │ │ - 0x00d396e0 2e78793b 200a2020 20207665 63322064 .xy; . vec2 d │ │ │ │ - 0x00d396f0 203d2070 202d206f 72696769 6e616c41 = p - originalA │ │ │ │ - 0x00d39700 78697350 6f733b20 0a202020 20696620 xisPos; . if │ │ │ │ - 0x00d39710 28646f74 28642c20 64292021 3d20302e (dot(d, d) != 0. │ │ │ │ - 0x00d39720 3029200a 20202020 20207265 7475726e 0) . return │ │ │ │ - 0x00d39730 206f7269 67696e61 6c417869 73506f73 originalAxisPos │ │ │ │ - 0x00d39740 202b206e 6f726d61 6c697a65 28642920 + normalize(d) │ │ │ │ - 0x00d39750 2a206861 6c665769 6474683b 200a2020 * halfWidth; . │ │ │ │ - 0x00d39760 2020656c 7365200a 20202020 20207265 else . re │ │ │ │ - 0x00d39770 7475726e 206f7269 67696e61 6c417869 turn originalAxi │ │ │ │ - 0x00d39780 73506f73 3b200a20 207d200a 2020766f sPos; . } . vo │ │ │ │ - 0x00d39790 6964206d 61696e28 29200a20 207b200a id main() . { . │ │ │ │ - 0x00d397a0 20202020 76656334 2070203d 20766563 vec4 p = vec │ │ │ │ - 0x00d397b0 3428615f 706f7369 74696f6e 2c203129 4(a_position, 1) │ │ │ │ - 0x00d397c0 202a2075 5f6d6f64 656c5669 65773b20 * u_modelView; │ │ │ │ - 0x00d397d0 0a202020 20766563 3420706f 73203d20 . vec4 pos = │ │ │ │ - 0x00d397e0 76656334 28615f6e 6f726d61 6c2e7879 vec4(a_normal.xy │ │ │ │ - 0x00d397f0 2c20302c 20302920 2b20703b 200a2020 , 0, 0) + p; . │ │ │ │ - 0x00d39800 2020676c 5f506f73 6974696f 6e203d20 gl_Position = │ │ │ │ - 0x00d39810 6170706c 79506976 6f745472 616e7366 applyPivotTransf │ │ │ │ - 0x00d39820 6f726d28 706f7320 2a20755f 70726f6a orm(pos * u_proj │ │ │ │ - 0x00d39830 65637469 6f6e2c20 755f7069 766f7454 ection, u_pivotT │ │ │ │ - 0x00d39840 72616e73 666f726d 2c20302e 30293b20 ransform, 0.0); │ │ │ │ - 0x00d39850 0a202023 69666465 6620454e 41424c45 . #ifdef ENABLE │ │ │ │ - 0x00d39860 5f565446 200a2020 2020765f 636f6c6f _VTF . v_colo │ │ │ │ - 0x00d39870 72203d20 74657874 75726528 755f636f r = texture(u_co │ │ │ │ - 0x00d39880 6c6f7254 65782c20 615f636f 6c6f7254 lorTex, a_colorT │ │ │ │ - 0x00d39890 6578436f 6f726473 293b200a 20202365 exCoords); . #e │ │ │ │ - 0x00d398a0 6c736520 0a202020 20765f63 6f6c6f72 lse . v_color │ │ │ │ - 0x00d398b0 54657843 6f6f7264 73203d20 615f636f TexCoords = a_co │ │ │ │ - 0x00d398c0 6c6f7254 6578436f 6f726473 3b200a20 lorTexCoords; . │ │ │ │ - 0x00d398d0 2023656e 64696620 0a202020 20765f72 #endif . v_r │ │ │ │ - 0x00d398e0 61646975 73203d20 615f6e6f 726d616c adius = a_normal │ │ │ │ - 0x00d398f0 3b200a20 207d200a 00000000 00000000 ; . } ......... │ │ │ │ - 0x00d39900 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d39910 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d39920 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d39930 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d39940 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d39950 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d39960 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d39970 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d39980 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d39990 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d399a0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d399b0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d399c0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d399d0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d399e0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d399f0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d39a00 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d39a10 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d39a20 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d39a30 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d39a40 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d39a50 63332076 5f726164 6975733b 200a2020 c3 v_radius; . │ │ │ │ - 0x00d39a60 696e2076 65633420 765f636f 6c6f723b in vec4 v_color; │ │ │ │ - 0x00d39a70 200a2020 6f757420 76656334 20765f46 . out vec4 v_F │ │ │ │ - 0x00d39a80 72616743 6f6c6f72 3b200a20 20756e69 ragColor; . uni │ │ │ │ - 0x00d39a90 666f726d 206d6174 3420755f 6d6f6465 form mat4 u_mode │ │ │ │ - 0x00d39aa0 6c566965 773b200a 2020756e 69666f72 lView; . unifor │ │ │ │ - 0x00d39ab0 6d206d61 74342075 5f70726f 6a656374 m mat4 u_project │ │ │ │ - 0x00d39ac0 696f6e3b 200a2020 756e6966 6f726d20 ion; . uniform │ │ │ │ - 0x00d39ad0 6d617434 20755f70 69766f74 5472616e mat4 u_pivotTran │ │ │ │ - 0x00d39ae0 73666f72 6d3b200a 2020756e 69666f72 sform; . unifor │ │ │ │ - 0x00d39af0 6d207665 63322075 5f636f6e 74726173 m vec2 u_contras │ │ │ │ - 0x00d39b00 7447616d 6d613b20 0a202075 6e69666f tGamma; . unifo │ │ │ │ - 0x00d39b10 726d2066 6c6f6174 20755f6f 70616369 rm float u_opaci │ │ │ │ - 0x00d39b20 74793b20 0a202075 6e69666f 726d2066 ty; . uniform f │ │ │ │ - 0x00d39b30 6c6f6174 20755f7a 5363616c 653b200a loat u_zScale; . │ │ │ │ - 0x00d39b40 2020756e 69666f72 6d20666c 6f617420 uniform float │ │ │ │ - 0x00d39b50 755f696e 74657270 6f6c6174 696f6e3b u_interpolation; │ │ │ │ - 0x00d39b60 200a2020 756e6966 6f726d20 666c6f61 . uniform floa │ │ │ │ - 0x00d39b70 7420755f 69734f75 746c696e 65506173 t u_isOutlinePas │ │ │ │ - 0x00d39b80 733b200a 2020636f 6e737420 666c6f61 s; . const floa │ │ │ │ - 0x00d39b90 74206b41 6e746961 6c696173 696e6753 t kAntialiasingS │ │ │ │ - 0x00d39ba0 63616c61 72203d20 302e393b 200a2020 calar = 0.9; . │ │ │ │ - 0x00d39bb0 636f6e73 7420666c 6f617420 6b536861 const float kSha │ │ │ │ - 0x00d39bc0 7065436f 6f726453 63616c61 72203d20 peCoordScalar = │ │ │ │ - 0x00d39bd0 31303030 2e303b20 0a202076 6f696420 1000.0; . void │ │ │ │ - 0x00d39be0 6d61696e 2829200a 20207b20 0a202020 main() . { . │ │ │ │ - 0x00d39bf0 20666c6f 61742064 203d2064 6f742876 float d = dot(v │ │ │ │ - 0x00d39c00 5f726164 6975732e 78792c20 765f7261 _radius.xy, v_ra │ │ │ │ - 0x00d39c10 64697573 2e787929 3b200a20 20202076 dius.xy); . v │ │ │ │ - 0x00d39c20 65633420 66696e61 6c436f6c 6f72203d ec4 finalColor = │ │ │ │ - 0x00d39c30 20765f63 6f6c6f72 3b200a20 20202066 v_color; . f │ │ │ │ - 0x00d39c40 6c6f6174 20616152 61646975 73203d20 loat aaRadius = │ │ │ │ - 0x00d39c50 765f7261 64697573 2e7a202a 206b416e v_radius.z * kAn │ │ │ │ - 0x00d39c60 7469616c 69617369 6e675363 616c6172 tialiasingScalar │ │ │ │ - 0x00d39c70 3b200a20 20202066 6c6f6174 20737465 ; . float ste │ │ │ │ - 0x00d39c80 7056616c 7565203d 20736d6f 6f746873 pValue = smooths │ │ │ │ - 0x00d39c90 74657028 61615261 64697573 202a2061 tep(aaRadius * a │ │ │ │ - 0x00d39ca0 61526164 6975732c 20765f72 61646975 aRadius, v_radiu │ │ │ │ - 0x00d39cb0 732e7a20 2a20765f 72616469 75732e7a s.z * v_radius.z │ │ │ │ - 0x00d39cc0 2c206429 3b200a20 20202066 696e616c , d); . final │ │ │ │ - 0x00d39cd0 436f6c6f 722e6120 3d206669 6e616c43 Color.a = finalC │ │ │ │ - 0x00d39ce0 6f6c6f72 2e61202a 20755f6f 70616369 olor.a * u_opaci │ │ │ │ - 0x00d39cf0 7479202a 2028312e 30202d20 73746570 ty * (1.0 - step │ │ │ │ - 0x00d39d00 56616c75 65293b20 0a202020 20765f46 Value); . v_F │ │ │ │ - 0x00d39d10 72616743 6f6c6f72 203d2066 696e616c ragColor = final │ │ │ │ - 0x00d39d20 436f6c6f 723b200a 20207d20 0a000000 Color; . } .... │ │ │ │ - 0x00d39d30 00000000 00000000 00000000 00000000 ................ │ │ │ │ - 0x00d39d40 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d39d50 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d39d60 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d39d70 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d39d80 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d39d90 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d39da0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d39db0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d39dc0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d39dd0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d39de0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d39df0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d39e00 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d39e10 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d39e20 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d39e30 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d39e40 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d39e50 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d39e60 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d39e70 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d39e80 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d39e90 63332061 5f6e6f72 6d616c3b 200a2020 c3 a_normal; . │ │ │ │ - 0x00d39ea0 696e2076 65633320 615f706f 73697469 in vec3 a_positi │ │ │ │ - 0x00d39eb0 6f6e3b20 0a202069 6e207665 63342061 on; . in vec4 a │ │ │ │ - 0x00d39ec0 5f636f6c 6f723b20 0a20206f 75742076 _color; . out v │ │ │ │ - 0x00d39ed0 65633320 765f7261 64697573 3b200a20 ec3 v_radius; . │ │ │ │ - 0x00d39ee0 206f7574 20766563 3420765f 636f6c6f out vec4 v_colo │ │ │ │ - 0x00d39ef0 723b200a 2020756e 69666f72 6d206d61 r; . uniform ma │ │ │ │ - 0x00d39f00 74342075 5f6d6f64 656c5669 65773b20 t4 u_modelView; │ │ │ │ - 0x00d39f10 0a202075 6e69666f 726d206d 61743420 . uniform mat4 │ │ │ │ - 0x00d39f20 755f7072 6f6a6563 74696f6e 3b200a20 u_projection; . │ │ │ │ - 0x00d39f30 20756e69 666f726d 206d6174 3420755f uniform mat4 u_ │ │ │ │ - 0x00d39f40 7069766f 74547261 6e73666f 726d3b20 pivotTransform; │ │ │ │ - 0x00d39f50 0a202075 6e69666f 726d2076 65633220 . uniform vec2 │ │ │ │ - 0x00d39f60 755f636f 6e747261 73744761 6d6d613b u_contrastGamma; │ │ │ │ - 0x00d39f70 200a2020 756e6966 6f726d20 666c6f61 . uniform floa │ │ │ │ - 0x00d39f80 7420755f 6f706163 6974793b 200a2020 t u_opacity; . │ │ │ │ - 0x00d39f90 756e6966 6f726d20 666c6f61 7420755f uniform float u_ │ │ │ │ - 0x00d39fa0 7a536361 6c653b20 0a202075 6e69666f zScale; . unifo │ │ │ │ - 0x00d39fb0 726d2066 6c6f6174 20755f69 6e746572 rm float u_inter │ │ │ │ - 0x00d39fc0 706f6c61 74696f6e 3b200a20 20756e69 polation; . uni │ │ │ │ - 0x00d39fd0 666f726d 20666c6f 61742075 5f69734f form float u_isO │ │ │ │ - 0x00d39fe0 75746c69 6e655061 73733b20 0a202063 utlinePass; . c │ │ │ │ - 0x00d39ff0 6f6e7374 20666c6f 6174206b 53686170 onst float kShap │ │ │ │ - 0x00d3a000 65436f6f 72645363 616c6172 203d2031 eCoordScalar = 1 │ │ │ │ - 0x00d3a010 3030302e 303b200a 20207665 63342061 000.0; . vec4 a │ │ │ │ - 0x00d3a020 70706c79 5069766f 74547261 6e73666f pplyPivotTransfo │ │ │ │ - 0x00d3a030 726d2876 65633420 7069766f 742c206d rm(vec4 pivot, m │ │ │ │ - 0x00d3a040 61743420 7069766f 74547261 6e73666f at4 pivotTransfo │ │ │ │ - 0x00d3a050 726d2c20 666c6f61 74207069 766f7452 rm, float pivotR │ │ │ │ - 0x00d3a060 65616c5a 29200a20 207b200a 20202020 ealZ) . { . │ │ │ │ - 0x00d3a070 76656334 20747261 6e73666f 726d6564 vec4 transformed │ │ │ │ - 0x00d3a080 5069766f 74203d20 7069766f 743b200a Pivot = pivot; . │ │ │ │ - 0x00d3a090 20202020 666c6f61 74207720 3d207472 float w = tr │ │ │ │ - 0x00d3a0a0 616e7366 6f726d65 64506976 6f742e77 ansformedPivot.w │ │ │ │ - 0x00d3a0b0 3b200a20 20202074 72616e73 666f726d ; . transform │ │ │ │ - 0x00d3a0c0 65645069 766f742e 78797720 3d202870 edPivot.xyw = (p │ │ │ │ - 0x00d3a0d0 69766f74 5472616e 73666f72 6d202a20 ivotTransform * │ │ │ │ - 0x00d3a0e0 76656334 28747261 6e73666f 726d6564 vec4(transformed │ │ │ │ - 0x00d3a0f0 5069766f 742e7879 2c207069 766f7452 Pivot.xy, pivotR │ │ │ │ - 0x00d3a100 65616c5a 2c207729 292e7879 773b200a ealZ, w)).xyw; . │ │ │ │ - 0x00d3a110 20202020 7472616e 73666f72 6d656450 transformedP │ │ │ │ - 0x00d3a120 69766f74 2e7a202a 3d207472 616e7366 ivot.z *= transf │ │ │ │ - 0x00d3a130 6f726d65 64506976 6f742e77 202f2077 ormedPivot.w / w │ │ │ │ - 0x00d3a140 3b200a20 20236966 64656620 56554c4b ; . #ifdef VULK │ │ │ │ - 0x00d3a150 414e200a 20202020 7472616e 73666f72 AN . transfor │ │ │ │ - 0x00d3a160 6d656450 69766f74 2e79203d 202d7472 medPivot.y = -tr │ │ │ │ - 0x00d3a170 616e7366 6f726d65 64506976 6f742e79 ansformedPivot.y │ │ │ │ - 0x00d3a180 3b200a20 20202074 72616e73 666f726d ; . transform │ │ │ │ - 0x00d3a190 65645069 766f742e 7a203d20 28747261 edPivot.z = (tra │ │ │ │ - 0x00d3a1a0 6e73666f 726d6564 5069766f 742e7a20 nsformedPivot.z │ │ │ │ - 0x00d3a1b0 202b2074 72616e73 666f726d 65645069 + transformedPi │ │ │ │ - 0x00d3a1c0 766f742e 7729202f 20322e30 3b200a20 vot.w) / 2.0; . │ │ │ │ - 0x00d3a1d0 2023656e 64696620 0a202020 20726574 #endif . ret │ │ │ │ - 0x00d3a1e0 75726e20 7472616e 73666f72 6d656450 urn transformedP │ │ │ │ - 0x00d3a1f0 69766f74 3b200a20 207d200a 20207665 ivot; . } . ve │ │ │ │ - 0x00d3a200 63342061 70706c79 42696c6c 626f6172 c4 applyBillboar │ │ │ │ - 0x00d3a210 64506976 6f745472 616e7366 6f726d28 dPivotTransform( │ │ │ │ - 0x00d3a220 76656334 20706976 6f742c20 6d617434 vec4 pivot, mat4 │ │ │ │ - 0x00d3a230 20706976 6f745472 616e7366 6f726d2c pivotTransform, │ │ │ │ - 0x00d3a240 20666c6f 61742070 69766f74 5265616c float pivotReal │ │ │ │ - 0x00d3a250 5a2c2076 65633220 6f666673 65742920 Z, vec2 offset) │ │ │ │ - 0x00d3a260 0a20207b 200a2020 2020666c 6f617420 . { . float │ │ │ │ - 0x00d3a270 6c6f6769 635a203d 20706976 6f742e7a logicZ = pivot.z │ │ │ │ - 0x00d3a280 202f2070 69766f74 2e773b20 0a202020 / pivot.w; . │ │ │ │ - 0x00d3a290 20766563 34207472 616e7366 6f726d65 vec4 transforme │ │ │ │ - 0x00d3a2a0 64506976 6f74203d 20706976 6f745472 dPivot = pivotTr │ │ │ │ - 0x00d3a2b0 616e7366 6f726d20 2a207665 63342870 ansform * vec4(p │ │ │ │ - 0x00d3a2c0 69766f74 2e78792c 20706976 6f745265 ivot.xy, pivotRe │ │ │ │ - 0x00d3a2d0 616c5a2c 20706976 6f742e77 293b200a alZ, pivot.w); . │ │ │ │ - 0x00d3a2e0 20202020 76656334 20736361 6c65203d vec4 scale = │ │ │ │ - 0x00d3a2f0 20706976 6f745472 616e7366 6f726d20 pivotTransform │ │ │ │ - 0x00d3a300 2a207665 63342831 2e302c20 2d312e30 * vec4(1.0, -1.0 │ │ │ │ - 0x00d3a310 2c20302e 302c2031 2e30293b 200a2020 , 0.0, 1.0); . │ │ │ │ - 0x00d3a320 20207665 63342070 6f736974 696f6e20 vec4 position │ │ │ │ - 0x00d3a330 3d207665 63342874 72616e73 666f726d = vec4(transform │ │ │ │ - 0x00d3a340 65645069 766f742e 7879202f 20747261 edPivot.xy / tra │ │ │ │ - 0x00d3a350 6e73666f 726d6564 5069766f 742e772c nsformedPivot.w, │ │ │ │ - 0x00d3a360 206c6f67 69635a2c 20312e30 29202b20 logicZ, 1.0) + │ │ │ │ - 0x00d3a370 76656334 286f6666 73657420 2f207363 vec4(offset / sc │ │ │ │ - 0x00d3a380 616c652e 77202a20 7363616c 652e782c ale.w * scale.x, │ │ │ │ - 0x00d3a390 20302e30 2c20302e 30293b20 0a202023 0.0, 0.0); . # │ │ │ │ - 0x00d3a3a0 69666465 66205655 4c4b414e 200a2020 ifdef VULKAN . │ │ │ │ - 0x00d3a3b0 2020706f 73697469 6f6e2e79 203d202d position.y = - │ │ │ │ - 0x00d3a3c0 706f7369 74696f6e 2e793b20 0a202020 position.y; . │ │ │ │ - 0x00d3a3d0 20706f73 6974696f 6e2e7a20 3d202870 position.z = (p │ │ │ │ - 0x00d3a3e0 6f736974 696f6e2e 7a20202b 20706f73 osition.z + pos │ │ │ │ - 0x00d3a3f0 6974696f 6e2e7729 202f2032 2e303b20 ition.w) / 2.0; │ │ │ │ - 0x00d3a400 0a202023 656e6469 66200a20 20202072 . #endif . r │ │ │ │ - 0x00d3a410 65747572 6e20706f 73697469 6f6e3b20 eturn position; │ │ │ │ - 0x00d3a420 0a20207d 200a2020 76656332 2063616c . } . vec2 cal │ │ │ │ - 0x00d3a430 634c696e 65547261 6e73666f 726d6564 cLineTransformed │ │ │ │ - 0x00d3a440 41786973 506f7328 76656332 206f7269 AxisPos(vec2 ori │ │ │ │ - 0x00d3a450 67696e61 6c417869 73506f73 2c207665 ginalAxisPos, ve │ │ │ │ - 0x00d3a460 63322073 68696674 6564506f 732c206d c2 shiftedPos, m │ │ │ │ - 0x00d3a470 61743420 6d6f6465 6c566965 772c2066 at4 modelView, f │ │ │ │ - 0x00d3a480 6c6f6174 2068616c 66576964 74682920 loat halfWidth) │ │ │ │ - 0x00d3a490 0a20207b 200a2020 20207665 63322070 . { . vec2 p │ │ │ │ - 0x00d3a4a0 203d2028 76656334 28736869 66746564 = (vec4(shifted │ │ │ │ - 0x00d3a4b0 506f732c 20302e30 2c20312e 3029202a Pos, 0.0, 1.0) * │ │ │ │ - 0x00d3a4c0 206d6f64 656c5669 6577292e 78793b20 modelView).xy; │ │ │ │ - 0x00d3a4d0 0a202020 20766563 32206420 3d207020 . vec2 d = p │ │ │ │ - 0x00d3a4e0 2d206f72 6967696e 616c4178 6973506f - originalAxisPo │ │ │ │ - 0x00d3a4f0 733b200a 20202020 69662028 646f7428 s; . if (dot( │ │ │ │ - 0x00d3a500 642c2064 2920213d 20302e30 29200a20 d, d) != 0.0) . │ │ │ │ - 0x00d3a510 20202020 20726574 75726e20 6f726967 return orig │ │ │ │ - 0x00d3a520 696e616c 41786973 506f7320 2b206e6f inalAxisPos + no │ │ │ │ - 0x00d3a530 726d616c 697a6528 6429202a 2068616c rmalize(d) * hal │ │ │ │ - 0x00d3a540 66576964 74683b20 0a202020 20656c73 fWidth; . els │ │ │ │ - 0x00d3a550 65200a20 20202020 20726574 75726e20 e . return │ │ │ │ - 0x00d3a560 6f726967 696e616c 41786973 506f733b originalAxisPos; │ │ │ │ - 0x00d3a570 200a2020 7d200a20 20766f69 64206d61 . } . void ma │ │ │ │ - 0x00d3a580 696e2829 200a2020 7b200a20 20202076 in() . { . v │ │ │ │ - 0x00d3a590 65633320 72616469 7573203d 20615f6e ec3 radius = a_n │ │ │ │ - 0x00d3a5a0 6f726d61 6c202a20 615f706f 73697469 ormal * a_positi │ │ │ │ - 0x00d3a5b0 6f6e2e7a 3b200a20 20202076 65633420 on.z; . vec4 │ │ │ │ - 0x00d3a5c0 706f7320 3d207665 63342861 5f706f73 pos = vec4(a_pos │ │ │ │ - 0x00d3a5d0 6974696f 6e2e7879 2c20302c 20312920 ition.xy, 0, 1) │ │ │ │ - 0x00d3a5e0 2a20755f 6d6f6465 6c566965 773b200a * u_modelView; . │ │ │ │ - 0x00d3a5f0 20202020 76656334 20736869 66746564 vec4 shifted │ │ │ │ - 0x00d3a600 506f7320 3d207665 63342872 61646975 Pos = vec4(radiu │ │ │ │ - 0x00d3a610 732e7879 2c20302c 20302920 2b20706f s.xy, 0, 0) + po │ │ │ │ - 0x00d3a620 733b200a 20202020 676c5f50 6f736974 s; . gl_Posit │ │ │ │ - 0x00d3a630 696f6e20 3d206170 706c7950 69766f74 ion = applyPivot │ │ │ │ - 0x00d3a640 5472616e 73666f72 6d287368 69667465 Transform(shifte │ │ │ │ - 0x00d3a650 64506f73 202a2075 5f70726f 6a656374 dPos * u_project │ │ │ │ - 0x00d3a660 696f6e2c 20755f70 69766f74 5472616e ion, u_pivotTran │ │ │ │ - 0x00d3a670 73666f72 6d2c2030 2e30293b 200a2020 sform, 0.0); . │ │ │ │ - 0x00d3a680 2020765f 72616469 7573203d 20726164 v_radius = rad │ │ │ │ - 0x00d3a690 6975733b 200a2020 2020765f 636f6c6f ius; . v_colo │ │ │ │ - 0x00d3a6a0 72203d20 615f636f 6c6f723b 200a2020 r = a_color; . │ │ │ │ - 0x00d3a6b0 7d200a00 00000000 00000000 00000000 } .............. │ │ │ │ - 0x00d3a6c0 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d3a6d0 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d3a6e0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d3a6f0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d3a700 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d3a710 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d3a720 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d3a730 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d3a740 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d3a750 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d3a760 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d3a770 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d3a780 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d3a790 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d3a7a0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d3a7b0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d3a7c0 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d3a7d0 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d3a7e0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d3a7f0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d3a800 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d3a810 63342076 5f6e6f72 6d616c3b 200a2020 c4 v_normal; . │ │ │ │ - 0x00d3a820 23696664 65662045 4e41424c 455f5654 #ifdef ENABLE_VT │ │ │ │ - 0x00d3a830 46200a20 20696e20 4c4f575f 50207665 F . in LOW_P ve │ │ │ │ - 0x00d3a840 63342076 5f636f6c 6f723b20 0a202023 c4 v_color; . # │ │ │ │ - 0x00d3a850 656c7365 200a2020 696e2076 65633220 else . in vec2 │ │ │ │ - 0x00d3a860 765f636f 6c6f7254 6578436f 6f726473 v_colorTexCoords │ │ │ │ - 0x00d3a870 3b200a20 20756e69 666f726d 2073616d ; . uniform sam │ │ │ │ - 0x00d3a880 706c6572 32442075 5f636f6c 6f725465 pler2D u_colorTe │ │ │ │ - 0x00d3a890 783b200a 20202365 6e646966 200a2020 x; . #endif . │ │ │ │ - 0x00d3a8a0 6f757420 76656334 20765f46 72616743 out vec4 v_FragC │ │ │ │ - 0x00d3a8b0 6f6c6f72 3b200a20 20756e69 666f726d olor; . uniform │ │ │ │ - 0x00d3a8c0 206d6174 3420755f 6d6f6465 6c566965 mat4 u_modelVie │ │ │ │ - 0x00d3a8d0 773b200a 2020756e 69666f72 6d206d61 w; . uniform ma │ │ │ │ - 0x00d3a8e0 74342075 5f70726f 6a656374 696f6e3b t4 u_projection; │ │ │ │ - 0x00d3a8f0 200a2020 756e6966 6f726d20 6d617434 . uniform mat4 │ │ │ │ - 0x00d3a900 20755f70 69766f74 5472616e 73666f72 u_pivotTransfor │ │ │ │ - 0x00d3a910 6d3b200a 2020756e 69666f72 6d207665 m; . uniform ve │ │ │ │ - 0x00d3a920 63322075 5f636f6e 74726173 7447616d c2 u_contrastGam │ │ │ │ - 0x00d3a930 6d613b20 0a202075 6e69666f 726d2066 ma; . uniform f │ │ │ │ - 0x00d3a940 6c6f6174 20755f6f 70616369 74793b20 loat u_opacity; │ │ │ │ - 0x00d3a950 0a202075 6e69666f 726d2066 6c6f6174 . uniform float │ │ │ │ - 0x00d3a960 20755f7a 5363616c 653b200a 2020756e u_zScale; . un │ │ │ │ - 0x00d3a970 69666f72 6d20666c 6f617420 755f696e iform float u_in │ │ │ │ - 0x00d3a980 74657270 6f6c6174 696f6e3b 200a2020 terpolation; . │ │ │ │ - 0x00d3a990 756e6966 6f726d20 666c6f61 7420755f uniform float u_ │ │ │ │ - 0x00d3a9a0 69734f75 746c696e 65506173 733b200a isOutlinePass; . │ │ │ │ - 0x00d3a9b0 2020636f 6e737420 666c6f61 74206161 const float aa │ │ │ │ - 0x00d3a9c0 50697865 6c73436f 756e7420 3d20322e PixelsCount = 2. │ │ │ │ - 0x00d3a9d0 353b200a 2020636f 6e737420 666c6f61 5; . const floa │ │ │ │ - 0x00d3a9e0 74206b53 68617065 436f6f72 64536361 t kShapeCoordSca │ │ │ │ - 0x00d3a9f0 6c617220 3d203130 30302e30 3b200a20 lar = 1000.0; . │ │ │ │ - 0x00d3aa00 20766f69 64206d61 696e2829 200a2020 void main() . │ │ │ │ - 0x00d3aa10 7b200a20 20236966 64656620 454e4142 { . #ifdef ENAB │ │ │ │ - 0x00d3aa20 4c455f56 5446200a 20202020 4c4f575f LE_VTF . LOW_ │ │ │ │ - 0x00d3aa30 50207665 63342063 6f6c6f72 203d2076 P vec4 color = v │ │ │ │ - 0x00d3aa40 5f636f6c 6f723b20 0a202023 656c7365 _color; . #else │ │ │ │ - 0x00d3aa50 200a2020 20204c4f 575f5020 76656334 . LOW_P vec4 │ │ │ │ - 0x00d3aa60 20636f6c 6f72203d 20746578 74757265 color = texture │ │ │ │ - 0x00d3aa70 28755f63 6f6c6f72 5465782c 20765f63 (u_colorTex, v_c │ │ │ │ - 0x00d3aa80 6f6c6f72 54657843 6f6f7264 73293b20 olorTexCoords); │ │ │ │ - 0x00d3aa90 0a202023 656e6469 66200a20 20202066 . #endif . f │ │ │ │ - 0x00d3aaa0 6c6f6174 20723120 3d202876 5f6e6f72 loat r1 = (v_nor │ │ │ │ - 0x00d3aab0 6d616c2e 7a202d20 61615069 78656c73 mal.z - aaPixels │ │ │ │ - 0x00d3aac0 436f756e 7429202a 2028765f 6e6f726d Count) * (v_norm │ │ │ │ - 0x00d3aad0 616c2e7a 202d2061 61506978 656c7343 al.z - aaPixelsC │ │ │ │ - 0x00d3aae0 6f756e74 293b200a 20202020 666c6f61 ount); . floa │ │ │ │ - 0x00d3aaf0 74207232 203d2076 5f6e6f72 6d616c2e t r2 = v_normal. │ │ │ │ - 0x00d3ab00 78202a20 765f6e6f 726d616c 2e78202b x * v_normal.x + │ │ │ │ - 0x00d3ab10 20765f6e 6f726d61 6c2e7920 2a20765f v_normal.y * v_ │ │ │ │ - 0x00d3ab20 6e6f726d 616c2e79 3b200a20 20202066 normal.y; . f │ │ │ │ - 0x00d3ab30 6c6f6174 20723320 3d20765f 6e6f726d loat r3 = v_norm │ │ │ │ - 0x00d3ab40 616c2e7a 202a2076 5f6e6f72 6d616c2e al.z * v_normal. │ │ │ │ - 0x00d3ab50 7a3b200a 20202020 666c6f61 7420616c z; . float al │ │ │ │ - 0x00d3ab60 70686120 3d206d69 78287374 65702872 pha = mix(step(r │ │ │ │ - 0x00d3ab70 332c2072 32292c20 736d6f6f 74687374 3, r2), smoothst │ │ │ │ - 0x00d3ab80 65702872 312c2072 332c2072 32292c20 ep(r1, r3, r2), │ │ │ │ - 0x00d3ab90 765f6e6f 726d616c 2e77293b 200a2020 v_normal.w); . │ │ │ │ - 0x00d3aba0 20204c4f 575f5020 76656334 2066696e LOW_P vec4 fin │ │ │ │ - 0x00d3abb0 616c436f 6c6f7220 3d20636f 6c6f723b alColor = color; │ │ │ │ - 0x00d3abc0 200a2020 20206669 6e616c43 6f6c6f72 . finalColor │ │ │ │ - 0x00d3abd0 2e61203d 2066696e 616c436f 6c6f722e .a = finalColor. │ │ │ │ - 0x00d3abe0 61202a20 755f6f70 61636974 79202a20 a * u_opacity * │ │ │ │ - 0x00d3abf0 28312e30 202d2061 6c706861 293b200a (1.0 - alpha); . │ │ │ │ - 0x00d3ac00 20202020 69662028 66696e61 6c436f6c if (finalCol │ │ │ │ - 0x00d3ac10 6f722e61 203d3d20 302e3029 200a2020 or.a == 0.0) . │ │ │ │ - 0x00d3ac20 20202020 64697363 6172643b 200a2020 discard; . │ │ │ │ - 0x00d3ac30 2020765f 46726167 436f6c6f 72203d20 v_FragColor = │ │ │ │ - 0x00d3ac40 66696e61 6c436f6c 6f723b20 0a20207d finalColor; . } │ │ │ │ - 0x00d3ac50 200a0000 00000000 00000000 00000000 ............... │ │ │ │ - 0x00d3ac60 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d3ac70 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d3ac80 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d3ac90 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d3aca0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d3acb0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d3acc0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d3acd0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d3ace0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d3acf0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d3ad00 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d3ad10 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d3ad20 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d3ad30 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d3ad40 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d3ad50 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d3ad60 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d3ad70 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d3ad80 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d3ad90 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d3ada0 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d3adb0 63332061 5f706f73 6974696f 6e3b200a c3 a_position; . │ │ │ │ - 0x00d3adc0 2020696e 20766563 3420615f 6e6f726d in vec4 a_norm │ │ │ │ - 0x00d3add0 616c3b20 0a202069 6e207665 63342061 al; . in vec4 a │ │ │ │ - 0x00d3ade0 5f636f6c 6f725465 78436f6f 7264733b _colorTexCoords; │ │ │ │ - 0x00d3adf0 200a2020 6f757420 76656334 20765f6e . out vec4 v_n │ │ │ │ - 0x00d3ae00 6f726d61 6c3b200a 20202369 66646566 ormal; . #ifdef │ │ │ │ - 0x00d3ae10 20454e41 424c455f 56544620 0a20206f ENABLE_VTF . o │ │ │ │ - 0x00d3ae20 7574204c 4f575f50 20766563 3420765f ut LOW_P vec4 v_ │ │ │ │ - 0x00d3ae30 636f6c6f 723b200a 20202365 6c736520 color; . #else │ │ │ │ - 0x00d3ae40 0a20206f 75742076 65633220 765f636f . out vec2 v_co │ │ │ │ - 0x00d3ae50 6c6f7254 6578436f 6f726473 3b200a20 lorTexCoords; . │ │ │ │ - 0x00d3ae60 2023656e 64696620 0a202075 6e69666f #endif . unifo │ │ │ │ - 0x00d3ae70 726d206d 61743420 755f6d6f 64656c56 rm mat4 u_modelV │ │ │ │ - 0x00d3ae80 6965773b 200a2020 756e6966 6f726d20 iew; . uniform │ │ │ │ - 0x00d3ae90 6d617434 20755f70 726f6a65 6374696f mat4 u_projectio │ │ │ │ - 0x00d3aea0 6e3b200a 2020756e 69666f72 6d206d61 n; . uniform ma │ │ │ │ - 0x00d3aeb0 74342075 5f706976 6f745472 616e7366 t4 u_pivotTransf │ │ │ │ - 0x00d3aec0 6f726d3b 200a2020 756e6966 6f726d20 orm; . uniform │ │ │ │ - 0x00d3aed0 76656332 20755f63 6f6e7472 61737447 vec2 u_contrastG │ │ │ │ - 0x00d3aee0 616d6d61 3b200a20 20756e69 666f726d amma; . uniform │ │ │ │ - 0x00d3aef0 20666c6f 61742075 5f6f7061 63697479 float u_opacity │ │ │ │ - 0x00d3af00 3b200a20 20756e69 666f726d 20666c6f ; . uniform flo │ │ │ │ - 0x00d3af10 61742075 5f7a5363 616c653b 200a2020 at u_zScale; . │ │ │ │ - 0x00d3af20 756e6966 6f726d20 666c6f61 7420755f uniform float u_ │ │ │ │ - 0x00d3af30 696e7465 72706f6c 6174696f 6e3b200a interpolation; . │ │ │ │ - 0x00d3af40 2020756e 69666f72 6d20666c 6f617420 uniform float │ │ │ │ - 0x00d3af50 755f6973 4f75746c 696e6550 6173733b u_isOutlinePass; │ │ │ │ - 0x00d3af60 200a2020 23696664 65662045 4e41424c . #ifdef ENABL │ │ │ │ - 0x00d3af70 455f5654 46200a20 20756e69 666f726d E_VTF . uniform │ │ │ │ - 0x00d3af80 2073616d 706c6572 32442075 5f636f6c sampler2D u_col │ │ │ │ - 0x00d3af90 6f725465 783b200a 20202365 6e646966 orTex; . #endif │ │ │ │ - 0x00d3afa0 200a2020 636f6e73 7420666c 6f617420 . const float │ │ │ │ - 0x00d3afb0 6b536861 7065436f 6f726453 63616c61 kShapeCoordScala │ │ │ │ - 0x00d3afc0 72203d20 31303030 2e303b20 0a202076 r = 1000.0; . v │ │ │ │ - 0x00d3afd0 65633420 6170706c 79506976 6f745472 ec4 applyPivotTr │ │ │ │ - 0x00d3afe0 616e7366 6f726d28 76656334 20706976 ansform(vec4 piv │ │ │ │ - 0x00d3aff0 6f742c20 6d617434 20706976 6f745472 ot, mat4 pivotTr │ │ │ │ - 0x00d3b000 616e7366 6f726d2c 20666c6f 61742070 ansform, float p │ │ │ │ - 0x00d3b010 69766f74 5265616c 5a29200a 20207b20 ivotRealZ) . { │ │ │ │ - 0x00d3b020 0a202020 20766563 34207472 616e7366 . vec4 transf │ │ │ │ - 0x00d3b030 6f726d65 64506976 6f74203d 20706976 ormedPivot = piv │ │ │ │ - 0x00d3b040 6f743b20 0a202020 20666c6f 61742077 ot; . float w │ │ │ │ - 0x00d3b050 203d2074 72616e73 666f726d 65645069 = transformedPi │ │ │ │ - 0x00d3b060 766f742e 773b200a 20202020 7472616e vot.w; . tran │ │ │ │ - 0x00d3b070 73666f72 6d656450 69766f74 2e787977 sformedPivot.xyw │ │ │ │ - 0x00d3b080 203d2028 7069766f 74547261 6e73666f = (pivotTransfo │ │ │ │ - 0x00d3b090 726d202a 20766563 34287472 616e7366 rm * vec4(transf │ │ │ │ - 0x00d3b0a0 6f726d65 64506976 6f742e78 792c2070 ormedPivot.xy, p │ │ │ │ - 0x00d3b0b0 69766f74 5265616c 5a2c2077 29292e78 ivotRealZ, w)).x │ │ │ │ - 0x00d3b0c0 79773b20 0a202020 20747261 6e73666f yw; . transfo │ │ │ │ - 0x00d3b0d0 726d6564 5069766f 742e7a20 2a3d2074 rmedPivot.z *= t │ │ │ │ - 0x00d3b0e0 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ - 0x00d3b0f0 77202f20 773b200a 20202369 66646566 w / w; . #ifdef │ │ │ │ - 0x00d3b100 2056554c 4b414e20 0a202020 20747261 VULKAN . tra │ │ │ │ - 0x00d3b110 6e73666f 726d6564 5069766f 742e7920 nsformedPivot.y │ │ │ │ - 0x00d3b120 3d202d74 72616e73 666f726d 65645069 = -transformedPi │ │ │ │ - 0x00d3b130 766f742e 793b200a 20202020 7472616e vot.y; . tran │ │ │ │ - 0x00d3b140 73666f72 6d656450 69766f74 2e7a203d sformedPivot.z = │ │ │ │ - 0x00d3b150 20287472 616e7366 6f726d65 64506976 (transformedPiv │ │ │ │ - 0x00d3b160 6f742e7a 20202b20 7472616e 73666f72 ot.z + transfor │ │ │ │ - 0x00d3b170 6d656450 69766f74 2e772920 2f20322e medPivot.w) / 2. │ │ │ │ - 0x00d3b180 303b200a 20202365 6e646966 200a2020 0; . #endif . │ │ │ │ - 0x00d3b190 20207265 7475726e 20747261 6e73666f return transfo │ │ │ │ - 0x00d3b1a0 726d6564 5069766f 743b200a 20207d20 rmedPivot; . } │ │ │ │ - 0x00d3b1b0 0a202076 65633420 6170706c 7942696c . vec4 applyBil │ │ │ │ - 0x00d3b1c0 6c626f61 72645069 766f7454 72616e73 lboardPivotTrans │ │ │ │ - 0x00d3b1d0 666f726d 28766563 34207069 766f742c form(vec4 pivot, │ │ │ │ - 0x00d3b1e0 206d6174 34207069 766f7454 72616e73 mat4 pivotTrans │ │ │ │ - 0x00d3b1f0 666f726d 2c20666c 6f617420 7069766f form, float pivo │ │ │ │ - 0x00d3b200 74526561 6c5a2c20 76656332 206f6666 tRealZ, vec2 off │ │ │ │ - 0x00d3b210 73657429 200a2020 7b200a20 20202066 set) . { . f │ │ │ │ - 0x00d3b220 6c6f6174 206c6f67 69635a20 3d207069 loat logicZ = pi │ │ │ │ - 0x00d3b230 766f742e 7a202f20 7069766f 742e773b vot.z / pivot.w; │ │ │ │ - 0x00d3b240 200a2020 20207665 63342074 72616e73 . vec4 trans │ │ │ │ - 0x00d3b250 666f726d 65645069 766f7420 3d207069 formedPivot = pi │ │ │ │ - 0x00d3b260 766f7454 72616e73 666f726d 202a2076 votTransform * v │ │ │ │ - 0x00d3b270 65633428 7069766f 742e7879 2c207069 ec4(pivot.xy, pi │ │ │ │ - 0x00d3b280 766f7452 65616c5a 2c207069 766f742e votRealZ, pivot. │ │ │ │ - 0x00d3b290 77293b20 0a202020 20766563 34207363 w); . vec4 sc │ │ │ │ - 0x00d3b2a0 616c6520 3d207069 766f7454 72616e73 ale = pivotTrans │ │ │ │ - 0x00d3b2b0 666f726d 202a2076 65633428 312e302c form * vec4(1.0, │ │ │ │ - 0x00d3b2c0 202d312e 302c2030 2e302c20 312e3029 -1.0, 0.0, 1.0) │ │ │ │ - 0x00d3b2d0 3b200a20 20202076 65633420 706f7369 ; . vec4 posi │ │ │ │ - 0x00d3b2e0 74696f6e 203d2076 65633428 7472616e tion = vec4(tran │ │ │ │ - 0x00d3b2f0 73666f72 6d656450 69766f74 2e787920 sformedPivot.xy │ │ │ │ - 0x00d3b300 2f207472 616e7366 6f726d65 64506976 / transformedPiv │ │ │ │ - 0x00d3b310 6f742e77 2c206c6f 6769635a 2c20312e ot.w, logicZ, 1. │ │ │ │ - 0x00d3b320 3029202b 20766563 34286f66 66736574 0) + vec4(offset │ │ │ │ - 0x00d3b330 202f2073 63616c65 2e77202a 20736361 / scale.w * sca │ │ │ │ - 0x00d3b340 6c652e78 2c20302e 302c2030 2e30293b le.x, 0.0, 0.0); │ │ │ │ - 0x00d3b350 200a2020 23696664 65662056 554c4b41 . #ifdef VULKA │ │ │ │ - 0x00d3b360 4e200a20 20202070 6f736974 696f6e2e N . position. │ │ │ │ - 0x00d3b370 79203d20 2d706f73 6974696f 6e2e793b y = -position.y; │ │ │ │ - 0x00d3b380 200a2020 2020706f 73697469 6f6e2e7a . position.z │ │ │ │ - 0x00d3b390 203d2028 706f7369 74696f6e 2e7a2020 = (position.z │ │ │ │ - 0x00d3b3a0 2b20706f 73697469 6f6e2e77 29202f20 + position.w) / │ │ │ │ - 0x00d3b3b0 322e303b 200a2020 23656e64 6966200a 2.0; . #endif . │ │ │ │ - 0x00d3b3c0 20202020 72657475 726e2070 6f736974 return posit │ │ │ │ - 0x00d3b3d0 696f6e3b 200a2020 7d200a20 20766563 ion; . } . vec │ │ │ │ - 0x00d3b3e0 32206361 6c634c69 6e655472 616e7366 2 calcLineTransf │ │ │ │ - 0x00d3b3f0 6f726d65 64417869 73506f73 28766563 ormedAxisPos(vec │ │ │ │ - 0x00d3b400 32206f72 6967696e 616c4178 6973506f 2 originalAxisPo │ │ │ │ - 0x00d3b410 732c2076 65633220 73686966 74656450 s, vec2 shiftedP │ │ │ │ - 0x00d3b420 6f732c20 6d617434 206d6f64 656c5669 os, mat4 modelVi │ │ │ │ - 0x00d3b430 65772c20 666c6f61 74206861 6c665769 ew, float halfWi │ │ │ │ - 0x00d3b440 64746829 200a2020 7b200a20 20202076 dth) . { . v │ │ │ │ - 0x00d3b450 65633220 70203d20 28766563 34287368 ec2 p = (vec4(sh │ │ │ │ - 0x00d3b460 69667465 64506f73 2c20302e 302c2031 iftedPos, 0.0, 1 │ │ │ │ - 0x00d3b470 2e302920 2a206d6f 64656c56 69657729 .0) * modelView) │ │ │ │ - 0x00d3b480 2e78793b 200a2020 20207665 63322064 .xy; . vec2 d │ │ │ │ - 0x00d3b490 203d2070 202d206f 72696769 6e616c41 = p - originalA │ │ │ │ - 0x00d3b4a0 78697350 6f733b20 0a202020 20696620 xisPos; . if │ │ │ │ - 0x00d3b4b0 28646f74 28642c20 64292021 3d20302e (dot(d, d) != 0. │ │ │ │ - 0x00d3b4c0 3029200a 20202020 20207265 7475726e 0) . return │ │ │ │ - 0x00d3b4d0 206f7269 67696e61 6c417869 73506f73 originalAxisPos │ │ │ │ - 0x00d3b4e0 202b206e 6f726d61 6c697a65 28642920 + normalize(d) │ │ │ │ - 0x00d3b4f0 2a206861 6c665769 6474683b 200a2020 * halfWidth; . │ │ │ │ - 0x00d3b500 2020656c 7365200a 20202020 20207265 else . re │ │ │ │ - 0x00d3b510 7475726e 206f7269 67696e61 6c417869 turn originalAxi │ │ │ │ - 0x00d3b520 73506f73 3b200a20 207d200a 2020766f sPos; . } . vo │ │ │ │ - 0x00d3b530 6964206d 61696e28 29200a20 207b200a id main() . { . │ │ │ │ - 0x00d3b540 20202020 76656334 2070203d 20766563 vec4 p = vec │ │ │ │ - 0x00d3b550 3428615f 706f7369 74696f6e 2c203129 4(a_position, 1) │ │ │ │ - 0x00d3b560 202a2075 5f6d6f64 656c5669 65773b20 * u_modelView; │ │ │ │ - 0x00d3b570 0a202020 20766563 3420706f 73203d20 . vec4 pos = │ │ │ │ - 0x00d3b580 76656334 28615f6e 6f726d61 6c2e7879 vec4(a_normal.xy │ │ │ │ - 0x00d3b590 202b2061 5f636f6c 6f725465 78436f6f + a_colorTexCoo │ │ │ │ - 0x00d3b5a0 7264732e 7a772c20 302c2030 29202b20 rds.zw, 0, 0) + │ │ │ │ - 0x00d3b5b0 703b200a 20202020 676c5f50 6f736974 p; . gl_Posit │ │ │ │ - 0x00d3b5c0 696f6e20 3d206170 706c7950 69766f74 ion = applyPivot │ │ │ │ - 0x00d3b5d0 5472616e 73666f72 6d28706f 73202a20 Transform(pos * │ │ │ │ - 0x00d3b5e0 755f7072 6f6a6563 74696f6e 2c20755f u_projection, u_ │ │ │ │ - 0x00d3b5f0 7069766f 74547261 6e73666f 726d2c20 pivotTransform, │ │ │ │ - 0x00d3b600 302e3029 3b200a20 20236966 64656620 0.0); . #ifdef │ │ │ │ - 0x00d3b610 454e4142 4c455f56 5446200a 20202020 ENABLE_VTF . │ │ │ │ - 0x00d3b620 765f636f 6c6f7220 3d207465 78747572 v_color = textur │ │ │ │ - 0x00d3b630 6528755f 636f6c6f 72546578 2c20615f e(u_colorTex, a_ │ │ │ │ - 0x00d3b640 636f6c6f 72546578 436f6f72 64732e78 colorTexCoords.x │ │ │ │ - 0x00d3b650 79293b20 0a202023 656c7365 200a2020 y); . #else . │ │ │ │ - 0x00d3b660 2020765f 636f6c6f 72546578 436f6f72 v_colorTexCoor │ │ │ │ - 0x00d3b670 6473203d 20615f63 6f6c6f72 54657843 ds = a_colorTexC │ │ │ │ - 0x00d3b680 6f6f7264 732e7879 3b200a20 2023656e oords.xy; . #en │ │ │ │ - 0x00d3b690 64696620 0a202020 20765f6e 6f726d61 dif . v_norma │ │ │ │ - 0x00d3b6a0 6c203d20 615f6e6f 726d616c 3b200a20 l = a_normal; . │ │ │ │ - 0x00d3b6b0 207d200a 00000000 00000000 00000000 } ............. │ │ │ │ - 0x00d3b6c0 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d3b6d0 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d3b6e0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d3b6f0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d3b700 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d3b710 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d3b720 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d3b730 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d3b740 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d3b750 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d3b760 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d3b770 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d3b780 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d3b790 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d3b7a0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d3b7b0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d3b7c0 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d3b7d0 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d3b7e0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d3b7f0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d3b800 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d3b810 63332061 5f706f73 6974696f 6e3b200a c3 a_position; . │ │ │ │ - 0x00d3b820 2020696e 20766563 3420615f 6e6f726d in vec4 a_norm │ │ │ │ - 0x00d3b830 616c3b20 0a202069 6e207665 63342061 al; . in vec4 a │ │ │ │ - 0x00d3b840 5f636f6c 6f725465 78436f6f 7264733b _colorTexCoords; │ │ │ │ - 0x00d3b850 200a2020 6f757420 76656334 20765f6e . out vec4 v_n │ │ │ │ - 0x00d3b860 6f726d61 6c3b200a 20202369 66646566 ormal; . #ifdef │ │ │ │ - 0x00d3b870 20454e41 424c455f 56544620 0a20206f ENABLE_VTF . o │ │ │ │ - 0x00d3b880 7574204c 4f575f50 20766563 3420765f ut LOW_P vec4 v_ │ │ │ │ - 0x00d3b890 636f6c6f 723b200a 20202365 6c736520 color; . #else │ │ │ │ - 0x00d3b8a0 0a20206f 75742076 65633220 765f636f . out vec2 v_co │ │ │ │ - 0x00d3b8b0 6c6f7254 6578436f 6f726473 3b200a20 lorTexCoords; . │ │ │ │ - 0x00d3b8c0 2023656e 64696620 0a202075 6e69666f #endif . unifo │ │ │ │ - 0x00d3b8d0 726d206d 61743420 755f6d6f 64656c56 rm mat4 u_modelV │ │ │ │ - 0x00d3b8e0 6965773b 200a2020 756e6966 6f726d20 iew; . uniform │ │ │ │ - 0x00d3b8f0 6d617434 20755f70 726f6a65 6374696f mat4 u_projectio │ │ │ │ - 0x00d3b900 6e3b200a 2020756e 69666f72 6d206d61 n; . uniform ma │ │ │ │ - 0x00d3b910 74342075 5f706976 6f745472 616e7366 t4 u_pivotTransf │ │ │ │ - 0x00d3b920 6f726d3b 200a2020 756e6966 6f726d20 orm; . uniform │ │ │ │ - 0x00d3b930 76656332 20755f63 6f6e7472 61737447 vec2 u_contrastG │ │ │ │ - 0x00d3b940 616d6d61 3b200a20 20756e69 666f726d amma; . uniform │ │ │ │ - 0x00d3b950 20666c6f 61742075 5f6f7061 63697479 float u_opacity │ │ │ │ - 0x00d3b960 3b200a20 20756e69 666f726d 20666c6f ; . uniform flo │ │ │ │ - 0x00d3b970 61742075 5f7a5363 616c653b 200a2020 at u_zScale; . │ │ │ │ - 0x00d3b980 756e6966 6f726d20 666c6f61 7420755f uniform float u_ │ │ │ │ - 0x00d3b990 696e7465 72706f6c 6174696f 6e3b200a interpolation; . │ │ │ │ - 0x00d3b9a0 2020756e 69666f72 6d20666c 6f617420 uniform float │ │ │ │ - 0x00d3b9b0 755f6973 4f75746c 696e6550 6173733b u_isOutlinePass; │ │ │ │ - 0x00d3b9c0 200a2020 23696664 65662045 4e41424c . #ifdef ENABL │ │ │ │ - 0x00d3b9d0 455f5654 46200a20 20756e69 666f726d E_VTF . uniform │ │ │ │ - 0x00d3b9e0 2073616d 706c6572 32442075 5f636f6c sampler2D u_col │ │ │ │ - 0x00d3b9f0 6f725465 783b200a 20202365 6e646966 orTex; . #endif │ │ │ │ - 0x00d3ba00 200a2020 636f6e73 7420666c 6f617420 . const float │ │ │ │ - 0x00d3ba10 6b536861 7065436f 6f726453 63616c61 kShapeCoordScala │ │ │ │ - 0x00d3ba20 72203d20 31303030 2e303b20 0a202076 r = 1000.0; . v │ │ │ │ - 0x00d3ba30 65633420 6170706c 79506976 6f745472 ec4 applyPivotTr │ │ │ │ - 0x00d3ba40 616e7366 6f726d28 76656334 20706976 ansform(vec4 piv │ │ │ │ - 0x00d3ba50 6f742c20 6d617434 20706976 6f745472 ot, mat4 pivotTr │ │ │ │ - 0x00d3ba60 616e7366 6f726d2c 20666c6f 61742070 ansform, float p │ │ │ │ - 0x00d3ba70 69766f74 5265616c 5a29200a 20207b20 ivotRealZ) . { │ │ │ │ - 0x00d3ba80 0a202020 20766563 34207472 616e7366 . vec4 transf │ │ │ │ - 0x00d3ba90 6f726d65 64506976 6f74203d 20706976 ormedPivot = piv │ │ │ │ - 0x00d3baa0 6f743b20 0a202020 20666c6f 61742077 ot; . float w │ │ │ │ - 0x00d3bab0 203d2074 72616e73 666f726d 65645069 = transformedPi │ │ │ │ - 0x00d3bac0 766f742e 773b200a 20202020 7472616e vot.w; . tran │ │ │ │ - 0x00d3bad0 73666f72 6d656450 69766f74 2e787977 sformedPivot.xyw │ │ │ │ - 0x00d3bae0 203d2028 7069766f 74547261 6e73666f = (pivotTransfo │ │ │ │ - 0x00d3baf0 726d202a 20766563 34287472 616e7366 rm * vec4(transf │ │ │ │ - 0x00d3bb00 6f726d65 64506976 6f742e78 792c2070 ormedPivot.xy, p │ │ │ │ - 0x00d3bb10 69766f74 5265616c 5a2c2077 29292e78 ivotRealZ, w)).x │ │ │ │ - 0x00d3bb20 79773b20 0a202020 20747261 6e73666f yw; . transfo │ │ │ │ - 0x00d3bb30 726d6564 5069766f 742e7a20 2a3d2074 rmedPivot.z *= t │ │ │ │ - 0x00d3bb40 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ - 0x00d3bb50 77202f20 773b200a 20202369 66646566 w / w; . #ifdef │ │ │ │ - 0x00d3bb60 2056554c 4b414e20 0a202020 20747261 VULKAN . tra │ │ │ │ - 0x00d3bb70 6e73666f 726d6564 5069766f 742e7920 nsformedPivot.y │ │ │ │ - 0x00d3bb80 3d202d74 72616e73 666f726d 65645069 = -transformedPi │ │ │ │ - 0x00d3bb90 766f742e 793b200a 20202020 7472616e vot.y; . tran │ │ │ │ - 0x00d3bba0 73666f72 6d656450 69766f74 2e7a203d sformedPivot.z = │ │ │ │ - 0x00d3bbb0 20287472 616e7366 6f726d65 64506976 (transformedPiv │ │ │ │ - 0x00d3bbc0 6f742e7a 20202b20 7472616e 73666f72 ot.z + transfor │ │ │ │ - 0x00d3bbd0 6d656450 69766f74 2e772920 2f20322e medPivot.w) / 2. │ │ │ │ - 0x00d3bbe0 303b200a 20202365 6e646966 200a2020 0; . #endif . │ │ │ │ - 0x00d3bbf0 20207265 7475726e 20747261 6e73666f return transfo │ │ │ │ - 0x00d3bc00 726d6564 5069766f 743b200a 20207d20 rmedPivot; . } │ │ │ │ - 0x00d3bc10 0a202076 65633420 6170706c 7942696c . vec4 applyBil │ │ │ │ - 0x00d3bc20 6c626f61 72645069 766f7454 72616e73 lboardPivotTrans │ │ │ │ - 0x00d3bc30 666f726d 28766563 34207069 766f742c form(vec4 pivot, │ │ │ │ - 0x00d3bc40 206d6174 34207069 766f7454 72616e73 mat4 pivotTrans │ │ │ │ - 0x00d3bc50 666f726d 2c20666c 6f617420 7069766f form, float pivo │ │ │ │ - 0x00d3bc60 74526561 6c5a2c20 76656332 206f6666 tRealZ, vec2 off │ │ │ │ - 0x00d3bc70 73657429 200a2020 7b200a20 20202066 set) . { . f │ │ │ │ - 0x00d3bc80 6c6f6174 206c6f67 69635a20 3d207069 loat logicZ = pi │ │ │ │ - 0x00d3bc90 766f742e 7a202f20 7069766f 742e773b vot.z / pivot.w; │ │ │ │ - 0x00d3bca0 200a2020 20207665 63342074 72616e73 . vec4 trans │ │ │ │ - 0x00d3bcb0 666f726d 65645069 766f7420 3d207069 formedPivot = pi │ │ │ │ - 0x00d3bcc0 766f7454 72616e73 666f726d 202a2076 votTransform * v │ │ │ │ - 0x00d3bcd0 65633428 7069766f 742e7879 2c207069 ec4(pivot.xy, pi │ │ │ │ - 0x00d3bce0 766f7452 65616c5a 2c207069 766f742e votRealZ, pivot. │ │ │ │ - 0x00d3bcf0 77293b20 0a202020 20766563 34207363 w); . vec4 sc │ │ │ │ - 0x00d3bd00 616c6520 3d207069 766f7454 72616e73 ale = pivotTrans │ │ │ │ - 0x00d3bd10 666f726d 202a2076 65633428 312e302c form * vec4(1.0, │ │ │ │ - 0x00d3bd20 202d312e 302c2030 2e302c20 312e3029 -1.0, 0.0, 1.0) │ │ │ │ - 0x00d3bd30 3b200a20 20202076 65633420 706f7369 ; . vec4 posi │ │ │ │ - 0x00d3bd40 74696f6e 203d2076 65633428 7472616e tion = vec4(tran │ │ │ │ - 0x00d3bd50 73666f72 6d656450 69766f74 2e787920 sformedPivot.xy │ │ │ │ - 0x00d3bd60 2f207472 616e7366 6f726d65 64506976 / transformedPiv │ │ │ │ - 0x00d3bd70 6f742e77 2c206c6f 6769635a 2c20312e ot.w, logicZ, 1. │ │ │ │ - 0x00d3bd80 3029202b 20766563 34286f66 66736574 0) + vec4(offset │ │ │ │ - 0x00d3bd90 202f2073 63616c65 2e77202a 20736361 / scale.w * sca │ │ │ │ - 0x00d3bda0 6c652e78 2c20302e 302c2030 2e30293b le.x, 0.0, 0.0); │ │ │ │ - 0x00d3bdb0 200a2020 23696664 65662056 554c4b41 . #ifdef VULKA │ │ │ │ - 0x00d3bdc0 4e200a20 20202070 6f736974 696f6e2e N . position. │ │ │ │ - 0x00d3bdd0 79203d20 2d706f73 6974696f 6e2e793b y = -position.y; │ │ │ │ - 0x00d3bde0 200a2020 2020706f 73697469 6f6e2e7a . position.z │ │ │ │ - 0x00d3bdf0 203d2028 706f7369 74696f6e 2e7a2020 = (position.z │ │ │ │ - 0x00d3be00 2b20706f 73697469 6f6e2e77 29202f20 + position.w) / │ │ │ │ - 0x00d3be10 322e303b 200a2020 23656e64 6966200a 2.0; . #endif . │ │ │ │ - 0x00d3be20 20202020 72657475 726e2070 6f736974 return posit │ │ │ │ - 0x00d3be30 696f6e3b 200a2020 7d200a20 20766563 ion; . } . vec │ │ │ │ - 0x00d3be40 32206361 6c634c69 6e655472 616e7366 2 calcLineTransf │ │ │ │ - 0x00d3be50 6f726d65 64417869 73506f73 28766563 ormedAxisPos(vec │ │ │ │ - 0x00d3be60 32206f72 6967696e 616c4178 6973506f 2 originalAxisPo │ │ │ │ - 0x00d3be70 732c2076 65633220 73686966 74656450 s, vec2 shiftedP │ │ │ │ - 0x00d3be80 6f732c20 6d617434 206d6f64 656c5669 os, mat4 modelVi │ │ │ │ - 0x00d3be90 65772c20 666c6f61 74206861 6c665769 ew, float halfWi │ │ │ │ - 0x00d3bea0 64746829 200a2020 7b200a20 20202076 dth) . { . v │ │ │ │ - 0x00d3beb0 65633220 70203d20 28766563 34287368 ec2 p = (vec4(sh │ │ │ │ - 0x00d3bec0 69667465 64506f73 2c20302e 302c2031 iftedPos, 0.0, 1 │ │ │ │ - 0x00d3bed0 2e302920 2a206d6f 64656c56 69657729 .0) * modelView) │ │ │ │ - 0x00d3bee0 2e78793b 200a2020 20207665 63322064 .xy; . vec2 d │ │ │ │ - 0x00d3bef0 203d2070 202d206f 72696769 6e616c41 = p - originalA │ │ │ │ - 0x00d3bf00 78697350 6f733b20 0a202020 20696620 xisPos; . if │ │ │ │ - 0x00d3bf10 28646f74 28642c20 64292021 3d20302e (dot(d, d) != 0. │ │ │ │ - 0x00d3bf20 3029200a 20202020 20207265 7475726e 0) . return │ │ │ │ - 0x00d3bf30 206f7269 67696e61 6c417869 73506f73 originalAxisPos │ │ │ │ - 0x00d3bf40 202b206e 6f726d61 6c697a65 28642920 + normalize(d) │ │ │ │ - 0x00d3bf50 2a206861 6c665769 6474683b 200a2020 * halfWidth; . │ │ │ │ - 0x00d3bf60 2020656c 7365200a 20202020 20207265 else . re │ │ │ │ - 0x00d3bf70 7475726e 206f7269 67696e61 6c417869 turn originalAxi │ │ │ │ - 0x00d3bf80 73506f73 3b200a20 207d200a 2020766f sPos; . } . vo │ │ │ │ - 0x00d3bf90 6964206d 61696e28 29200a20 207b200a id main() . { . │ │ │ │ - 0x00d3bfa0 20202020 76656334 20706976 6f74203d vec4 pivot = │ │ │ │ - 0x00d3bfb0 20766563 3428615f 706f7369 74696f6e vec4(a_position │ │ │ │ - 0x00d3bfc0 2e78797a 2c20312e 3029202a 20755f6d .xyz, 1.0) * u_m │ │ │ │ - 0x00d3bfd0 6f64656c 56696577 3b200a20 20202076 odelView; . v │ │ │ │ - 0x00d3bfe0 65633420 6f666673 6574203d 20766563 ec4 offset = vec │ │ │ │ - 0x00d3bff0 3428615f 6e6f726d 616c2e78 79202b20 4(a_normal.xy + │ │ │ │ - 0x00d3c000 615f636f 6c6f7254 6578436f 6f726473 a_colorTexCoords │ │ │ │ - 0x00d3c010 2e7a772c 20302e30 2c20302e 3029202a .zw, 0.0, 0.0) * │ │ │ │ - 0x00d3c020 20755f70 726f6a65 6374696f 6e3b200a u_projection; . │ │ │ │ - 0x00d3c030 20202020 676c5f50 6f736974 696f6e20 gl_Position │ │ │ │ - 0x00d3c040 3d206170 706c7942 696c6c62 6f617264 = applyBillboard │ │ │ │ - 0x00d3c050 5069766f 74547261 6e73666f 726d2870 PivotTransform(p │ │ │ │ - 0x00d3c060 69766f74 202a2075 5f70726f 6a656374 ivot * u_project │ │ │ │ - 0x00d3c070 696f6e2c 20755f70 69766f74 5472616e ion, u_pivotTran │ │ │ │ - 0x00d3c080 73666f72 6d2c2030 2e302c20 6f666673 sform, 0.0, offs │ │ │ │ - 0x00d3c090 65742e78 79293b20 0a202023 69666465 et.xy); . #ifde │ │ │ │ - 0x00d3c0a0 6620454e 41424c45 5f565446 200a2020 f ENABLE_VTF . │ │ │ │ - 0x00d3c0b0 2020765f 636f6c6f 72203d20 74657874 v_color = text │ │ │ │ - 0x00d3c0c0 75726528 755f636f 6c6f7254 65782c20 ure(u_colorTex, │ │ │ │ - 0x00d3c0d0 615f636f 6c6f7254 6578436f 6f726473 a_colorTexCoords │ │ │ │ - 0x00d3c0e0 2e787929 3b200a20 2023656c 7365200a .xy); . #else . │ │ │ │ - 0x00d3c0f0 20202020 765f636f 6c6f7254 6578436f v_colorTexCo │ │ │ │ - 0x00d3c100 6f726473 203d2061 5f636f6c 6f725465 ords = a_colorTe │ │ │ │ - 0x00d3c110 78436f6f 7264732e 78793b20 0a202023 xCoords.xy; . # │ │ │ │ - 0x00d3c120 656e6469 66200a20 20202076 5f6e6f72 endif . v_nor │ │ │ │ - 0x00d3c130 6d616c20 3d20615f 6e6f726d 616c3b20 mal = a_normal; │ │ │ │ - 0x00d3c140 0a20207d 200a0000 00000000 00000000 . } ........... │ │ │ │ - 0x00d3c150 00000000 00000000 00000000 00000000 ................ │ │ │ │ - 0x00d3c160 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d3c170 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d3c180 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d3c190 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d3c1a0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d3c1b0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d3c1c0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d3c1d0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d3c1e0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d3c1f0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d3c200 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d3c210 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d3c220 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d3c230 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d3c240 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d3c250 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d3c260 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d3c270 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d3c280 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d3c290 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d3c2a0 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d3c2b0 63322076 5f636f6c 6f725465 78436f6f c2 v_colorTexCoo │ │ │ │ - 0x00d3c2c0 72643b20 0a202069 6e207665 63322076 rd; . in vec2 v │ │ │ │ - 0x00d3c2d0 5f6d6173 6b546578 436f6f72 643b200a _maskTexCoord; . │ │ │ │ - 0x00d3c2e0 20206f75 74207665 63342076 5f467261 out vec4 v_Fra │ │ │ │ - 0x00d3c2f0 67436f6c 6f723b20 0a202075 6e69666f gColor; . unifo │ │ │ │ - 0x00d3c300 726d206d 61743420 755f6d6f 64656c56 rm mat4 u_modelV │ │ │ │ - 0x00d3c310 6965773b 200a2020 756e6966 6f726d20 iew; . uniform │ │ │ │ - 0x00d3c320 6d617434 20755f70 726f6a65 6374696f mat4 u_projectio │ │ │ │ - 0x00d3c330 6e3b200a 2020756e 69666f72 6d206d61 n; . uniform ma │ │ │ │ - 0x00d3c340 74342075 5f706976 6f745472 616e7366 t4 u_pivotTransf │ │ │ │ - 0x00d3c350 6f726d3b 200a2020 756e6966 6f726d20 orm; . uniform │ │ │ │ - 0x00d3c360 76656332 20755f63 6f6e7472 61737447 vec2 u_contrastG │ │ │ │ - 0x00d3c370 616d6d61 3b200a20 20756e69 666f726d amma; . uniform │ │ │ │ - 0x00d3c380 20666c6f 61742075 5f6f7061 63697479 float u_opacity │ │ │ │ - 0x00d3c390 3b200a20 20756e69 666f726d 20666c6f ; . uniform flo │ │ │ │ - 0x00d3c3a0 61742075 5f7a5363 616c653b 200a2020 at u_zScale; . │ │ │ │ - 0x00d3c3b0 756e6966 6f726d20 666c6f61 7420755f uniform float u_ │ │ │ │ - 0x00d3c3c0 696e7465 72706f6c 6174696f 6e3b200a interpolation; . │ │ │ │ - 0x00d3c3d0 2020756e 69666f72 6d20666c 6f617420 uniform float │ │ │ │ - 0x00d3c3e0 755f6973 4f75746c 696e6550 6173733b u_isOutlinePass; │ │ │ │ - 0x00d3c3f0 200a2020 756e6966 6f726d20 73616d70 . uniform samp │ │ │ │ - 0x00d3c400 6c657232 4420755f 636f6c6f 72546578 ler2D u_colorTex │ │ │ │ - 0x00d3c410 3b200a20 20756e69 666f726d 2073616d ; . uniform sam │ │ │ │ - 0x00d3c420 706c6572 32442075 5f6d6173 6b546578 pler2D u_maskTex │ │ │ │ - 0x00d3c430 3b200a20 20636f6e 73742066 6c6f6174 ; . const float │ │ │ │ - 0x00d3c440 206b5368 61706543 6f6f7264 5363616c kShapeCoordScal │ │ │ │ - 0x00d3c450 6172203d 20313030 302e303b 200a2020 ar = 1000.0; . │ │ │ │ - 0x00d3c460 766f6964 206d6169 6e282920 0a20207b void main() . { │ │ │ │ - 0x00d3c470 200a2020 20207665 63342063 6f6c6f72 . vec4 color │ │ │ │ - 0x00d3c480 203d2074 65787475 72652875 5f636f6c = texture(u_col │ │ │ │ - 0x00d3c490 6f725465 782c2076 5f636f6c 6f725465 orTex, v_colorTe │ │ │ │ - 0x00d3c4a0 78436f6f 7264293b 200a2020 2020666c xCoord); . fl │ │ │ │ - 0x00d3c4b0 6f617420 6d61736b 203d2074 65787475 oat mask = textu │ │ │ │ - 0x00d3c4c0 72652875 5f6d6173 6b546578 2c20765f re(u_maskTex, v_ │ │ │ │ - 0x00d3c4d0 6d61736b 54657843 6f6f7264 292e723b maskTexCoord).r; │ │ │ │ - 0x00d3c4e0 200a2020 2020636f 6c6f722e 61203d20 . color.a = │ │ │ │ - 0x00d3c4f0 636f6c6f 722e6120 2a206d61 736b202a color.a * mask * │ │ │ │ - 0x00d3c500 20755f6f 70616369 74793b20 0a202020 u_opacity; . │ │ │ │ - 0x00d3c510 20765f46 72616743 6f6c6f72 203d2063 v_FragColor = c │ │ │ │ - 0x00d3c520 6f6c6f72 3b200a20 207d200a 00000000 olor; . } ..... │ │ │ │ - 0x00d3c530 00000000 00000000 00000000 00000000 ................ │ │ │ │ - 0x00d3c540 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d3c550 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d3c560 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d3c570 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d3c580 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d3c590 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d3c5a0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d3c5b0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d3c5c0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d3c5d0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d3c5e0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d3c5f0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d3c600 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d3c610 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d3c620 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d3c630 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d3c640 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d3c650 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d3c660 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d3c670 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d3c680 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d3c690 63332061 5f706f73 6974696f 6e3b200a c3 a_position; . │ │ │ │ - 0x00d3c6a0 2020696e 20766563 3320615f 6e6f726d in vec3 a_norm │ │ │ │ - 0x00d3c6b0 616c3b20 0a202069 6e207665 63322061 al; . in vec2 a │ │ │ │ - 0x00d3c6c0 5f636f6c 6f725465 78436f6f 72643b20 _colorTexCoord; │ │ │ │ - 0x00d3c6d0 0a202069 6e207665 63342061 5f6d6173 . in vec4 a_mas │ │ │ │ - 0x00d3c6e0 6b546578 436f6f72 643b200a 20206f75 kTexCoord; . ou │ │ │ │ - 0x00d3c6f0 74207665 63322076 5f636f6c 6f725465 t vec2 v_colorTe │ │ │ │ - 0x00d3c700 78436f6f 72643b20 0a20206f 75742076 xCoord; . out v │ │ │ │ - 0x00d3c710 65633220 765f6d61 736b5465 78436f6f ec2 v_maskTexCoo │ │ │ │ - 0x00d3c720 72643b20 0a202075 6e69666f 726d206d rd; . uniform m │ │ │ │ - 0x00d3c730 61743420 755f6d6f 64656c56 6965773b at4 u_modelView; │ │ │ │ - 0x00d3c740 200a2020 756e6966 6f726d20 6d617434 . uniform mat4 │ │ │ │ - 0x00d3c750 20755f70 726f6a65 6374696f 6e3b200a u_projection; . │ │ │ │ - 0x00d3c760 2020756e 69666f72 6d206d61 74342075 uniform mat4 u │ │ │ │ - 0x00d3c770 5f706976 6f745472 616e7366 6f726d3b _pivotTransform; │ │ │ │ - 0x00d3c780 200a2020 756e6966 6f726d20 76656332 . uniform vec2 │ │ │ │ - 0x00d3c790 20755f63 6f6e7472 61737447 616d6d61 u_contrastGamma │ │ │ │ - 0x00d3c7a0 3b200a20 20756e69 666f726d 20666c6f ; . uniform flo │ │ │ │ - 0x00d3c7b0 61742075 5f6f7061 63697479 3b200a20 at u_opacity; . │ │ │ │ - 0x00d3c7c0 20756e69 666f726d 20666c6f 61742075 uniform float u │ │ │ │ - 0x00d3c7d0 5f7a5363 616c653b 200a2020 756e6966 _zScale; . unif │ │ │ │ - 0x00d3c7e0 6f726d20 666c6f61 7420755f 696e7465 orm float u_inte │ │ │ │ - 0x00d3c7f0 72706f6c 6174696f 6e3b200a 2020756e rpolation; . un │ │ │ │ - 0x00d3c800 69666f72 6d20666c 6f617420 755f6973 iform float u_is │ │ │ │ - 0x00d3c810 4f75746c 696e6550 6173733b 200a2020 OutlinePass; . │ │ │ │ - 0x00d3c820 636f6e73 7420666c 6f617420 6b536861 const float kSha │ │ │ │ - 0x00d3c830 7065436f 6f726453 63616c61 72203d20 peCoordScalar = │ │ │ │ - 0x00d3c840 31303030 2e303b20 0a202076 65633420 1000.0; . vec4 │ │ │ │ - 0x00d3c850 6170706c 79506976 6f745472 616e7366 applyPivotTransf │ │ │ │ - 0x00d3c860 6f726d28 76656334 20706976 6f742c20 orm(vec4 pivot, │ │ │ │ - 0x00d3c870 6d617434 20706976 6f745472 616e7366 mat4 pivotTransf │ │ │ │ - 0x00d3c880 6f726d2c 20666c6f 61742070 69766f74 orm, float pivot │ │ │ │ - 0x00d3c890 5265616c 5a29200a 20207b20 0a202020 RealZ) . { . │ │ │ │ - 0x00d3c8a0 20766563 34207472 616e7366 6f726d65 vec4 transforme │ │ │ │ - 0x00d3c8b0 64506976 6f74203d 20706976 6f743b20 dPivot = pivot; │ │ │ │ - 0x00d3c8c0 0a202020 20666c6f 61742077 203d2074 . float w = t │ │ │ │ - 0x00d3c8d0 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ - 0x00d3c8e0 773b200a 20202020 7472616e 73666f72 w; . transfor │ │ │ │ - 0x00d3c8f0 6d656450 69766f74 2e787977 203d2028 medPivot.xyw = ( │ │ │ │ - 0x00d3c900 7069766f 74547261 6e73666f 726d202a pivotTransform * │ │ │ │ - 0x00d3c910 20766563 34287472 616e7366 6f726d65 vec4(transforme │ │ │ │ - 0x00d3c920 64506976 6f742e78 792c2070 69766f74 dPivot.xy, pivot │ │ │ │ - 0x00d3c930 5265616c 5a2c2077 29292e78 79773b20 RealZ, w)).xyw; │ │ │ │ - 0x00d3c940 0a202020 20747261 6e73666f 726d6564 . transformed │ │ │ │ - 0x00d3c950 5069766f 742e7a20 2a3d2074 72616e73 Pivot.z *= trans │ │ │ │ - 0x00d3c960 666f726d 65645069 766f742e 77202f20 formedPivot.w / │ │ │ │ - 0x00d3c970 773b200a 20202369 66646566 2056554c w; . #ifdef VUL │ │ │ │ - 0x00d3c980 4b414e20 0a202020 20747261 6e73666f KAN . transfo │ │ │ │ - 0x00d3c990 726d6564 5069766f 742e7920 3d202d74 rmedPivot.y = -t │ │ │ │ - 0x00d3c9a0 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ - 0x00d3c9b0 793b200a 20202020 7472616e 73666f72 y; . transfor │ │ │ │ - 0x00d3c9c0 6d656450 69766f74 2e7a203d 20287472 medPivot.z = (tr │ │ │ │ - 0x00d3c9d0 616e7366 6f726d65 64506976 6f742e7a ansformedPivot.z │ │ │ │ - 0x00d3c9e0 20202b20 7472616e 73666f72 6d656450 + transformedP │ │ │ │ - 0x00d3c9f0 69766f74 2e772920 2f20322e 303b200a ivot.w) / 2.0; . │ │ │ │ - 0x00d3ca00 20202365 6e646966 200a2020 20207265 #endif . re │ │ │ │ - 0x00d3ca10 7475726e 20747261 6e73666f 726d6564 turn transformed │ │ │ │ - 0x00d3ca20 5069766f 743b200a 20207d20 0a202076 Pivot; . } . v │ │ │ │ - 0x00d3ca30 65633420 6170706c 7942696c 6c626f61 ec4 applyBillboa │ │ │ │ - 0x00d3ca40 72645069 766f7454 72616e73 666f726d rdPivotTransform │ │ │ │ - 0x00d3ca50 28766563 34207069 766f742c 206d6174 (vec4 pivot, mat │ │ │ │ - 0x00d3ca60 34207069 766f7454 72616e73 666f726d 4 pivotTransform │ │ │ │ - 0x00d3ca70 2c20666c 6f617420 7069766f 74526561 , float pivotRea │ │ │ │ - 0x00d3ca80 6c5a2c20 76656332 206f6666 73657429 lZ, vec2 offset) │ │ │ │ - 0x00d3ca90 200a2020 7b200a20 20202066 6c6f6174 . { . float │ │ │ │ - 0x00d3caa0 206c6f67 69635a20 3d207069 766f742e logicZ = pivot. │ │ │ │ - 0x00d3cab0 7a202f20 7069766f 742e773b 200a2020 z / pivot.w; . │ │ │ │ - 0x00d3cac0 20207665 63342074 72616e73 666f726d vec4 transform │ │ │ │ - 0x00d3cad0 65645069 766f7420 3d207069 766f7454 edPivot = pivotT │ │ │ │ - 0x00d3cae0 72616e73 666f726d 202a2076 65633428 ransform * vec4( │ │ │ │ - 0x00d3caf0 7069766f 742e7879 2c207069 766f7452 pivot.xy, pivotR │ │ │ │ - 0x00d3cb00 65616c5a 2c207069 766f742e 77293b20 ealZ, pivot.w); │ │ │ │ - 0x00d3cb10 0a202020 20766563 34207363 616c6520 . vec4 scale │ │ │ │ - 0x00d3cb20 3d207069 766f7454 72616e73 666f726d = pivotTransform │ │ │ │ - 0x00d3cb30 202a2076 65633428 312e302c 202d312e * vec4(1.0, -1. │ │ │ │ - 0x00d3cb40 302c2030 2e302c20 312e3029 3b200a20 0, 0.0, 1.0); . │ │ │ │ - 0x00d3cb50 20202076 65633420 706f7369 74696f6e vec4 position │ │ │ │ - 0x00d3cb60 203d2076 65633428 7472616e 73666f72 = vec4(transfor │ │ │ │ - 0x00d3cb70 6d656450 69766f74 2e787920 2f207472 medPivot.xy / tr │ │ │ │ - 0x00d3cb80 616e7366 6f726d65 64506976 6f742e77 ansformedPivot.w │ │ │ │ - 0x00d3cb90 2c206c6f 6769635a 2c20312e 3029202b , logicZ, 1.0) + │ │ │ │ - 0x00d3cba0 20766563 34286f66 66736574 202f2073 vec4(offset / s │ │ │ │ - 0x00d3cbb0 63616c65 2e77202a 20736361 6c652e78 cale.w * scale.x │ │ │ │ - 0x00d3cbc0 2c20302e 302c2030 2e30293b 200a2020 , 0.0, 0.0); . │ │ │ │ - 0x00d3cbd0 23696664 65662056 554c4b41 4e200a20 #ifdef VULKAN . │ │ │ │ - 0x00d3cbe0 20202070 6f736974 696f6e2e 79203d20 position.y = │ │ │ │ - 0x00d3cbf0 2d706f73 6974696f 6e2e793b 200a2020 -position.y; . │ │ │ │ - 0x00d3cc00 2020706f 73697469 6f6e2e7a 203d2028 position.z = ( │ │ │ │ - 0x00d3cc10 706f7369 74696f6e 2e7a2020 2b20706f position.z + po │ │ │ │ - 0x00d3cc20 73697469 6f6e2e77 29202f20 322e303b sition.w) / 2.0; │ │ │ │ - 0x00d3cc30 200a2020 23656e64 6966200a 20202020 . #endif . │ │ │ │ - 0x00d3cc40 72657475 726e2070 6f736974 696f6e3b return position; │ │ │ │ - 0x00d3cc50 200a2020 7d200a20 20766563 32206361 . } . vec2 ca │ │ │ │ - 0x00d3cc60 6c634c69 6e655472 616e7366 6f726d65 lcLineTransforme │ │ │ │ - 0x00d3cc70 64417869 73506f73 28766563 32206f72 dAxisPos(vec2 or │ │ │ │ - 0x00d3cc80 6967696e 616c4178 6973506f 732c2076 iginalAxisPos, v │ │ │ │ - 0x00d3cc90 65633220 73686966 74656450 6f732c20 ec2 shiftedPos, │ │ │ │ - 0x00d3cca0 6d617434 206d6f64 656c5669 65772c20 mat4 modelView, │ │ │ │ - 0x00d3ccb0 666c6f61 74206861 6c665769 64746829 float halfWidth) │ │ │ │ - 0x00d3ccc0 200a2020 7b200a20 20202076 65633220 . { . vec2 │ │ │ │ - 0x00d3ccd0 70203d20 28766563 34287368 69667465 p = (vec4(shifte │ │ │ │ - 0x00d3cce0 64506f73 2c20302e 302c2031 2e302920 dPos, 0.0, 1.0) │ │ │ │ - 0x00d3ccf0 2a206d6f 64656c56 69657729 2e78793b * modelView).xy; │ │ │ │ - 0x00d3cd00 200a2020 20207665 63322064 203d2070 . vec2 d = p │ │ │ │ - 0x00d3cd10 202d206f 72696769 6e616c41 78697350 - originalAxisP │ │ │ │ - 0x00d3cd20 6f733b20 0a202020 20696620 28646f74 os; . if (dot │ │ │ │ - 0x00d3cd30 28642c20 64292021 3d20302e 3029200a (d, d) != 0.0) . │ │ │ │ - 0x00d3cd40 20202020 20207265 7475726e 206f7269 return ori │ │ │ │ - 0x00d3cd50 67696e61 6c417869 73506f73 202b206e ginalAxisPos + n │ │ │ │ - 0x00d3cd60 6f726d61 6c697a65 28642920 2a206861 ormalize(d) * ha │ │ │ │ - 0x00d3cd70 6c665769 6474683b 200a2020 2020656c lfWidth; . el │ │ │ │ - 0x00d3cd80 7365200a 20202020 20207265 7475726e se . return │ │ │ │ - 0x00d3cd90 206f7269 67696e61 6c417869 73506f73 originalAxisPos │ │ │ │ - 0x00d3cda0 3b200a20 207d200a 2020766f 6964206d ; . } . void m │ │ │ │ - 0x00d3cdb0 61696e28 29200a20 207b200a 20202020 ain() . { . │ │ │ │ - 0x00d3cdc0 76656332 206e6f72 6d616c20 3d20615f vec2 normal = a_ │ │ │ │ - 0x00d3cdd0 6e6f726d 616c2e78 793b200a 20202020 normal.xy; . │ │ │ │ - 0x00d3cde0 666c6f61 74206861 6c665769 64746820 float halfWidth │ │ │ │ - 0x00d3cdf0 3d206c65 6e677468 286e6f72 6d616c29 = length(normal) │ │ │ │ - 0x00d3ce00 3b200a20 20202076 65633220 7472616e ; . vec2 tran │ │ │ │ - 0x00d3ce10 73666f72 6d656441 78697350 6f73203d sformedAxisPos = │ │ │ │ - 0x00d3ce20 20287665 63342861 5f706f73 6974696f (vec4(a_positio │ │ │ │ - 0x00d3ce30 6e2e7879 2c20302e 302c2031 2e302920 n.xy, 0.0, 1.0) │ │ │ │ - 0x00d3ce40 2a20755f 6d6f6465 6c566965 77292e78 * u_modelView).x │ │ │ │ - 0x00d3ce50 793b200a 20202020 69662028 68616c66 y; . if (half │ │ │ │ - 0x00d3ce60 57696474 6820213d 20302e30 29200a20 Width != 0.0) . │ │ │ │ - 0x00d3ce70 2020207b 200a2020 20202020 7472616e { . tran │ │ │ │ - 0x00d3ce80 73666f72 6d656441 78697350 6f73203d sformedAxisPos = │ │ │ │ - 0x00d3ce90 2063616c 634c696e 65547261 6e73666f calcLineTransfo │ │ │ │ - 0x00d3cea0 726d6564 41786973 506f7328 7472616e rmedAxisPos(tran │ │ │ │ - 0x00d3ceb0 73666f72 6d656441 78697350 6f732c20 sformedAxisPos, │ │ │ │ - 0x00d3cec0 615f706f 73697469 6f6e2e78 79202b20 a_position.xy + │ │ │ │ - 0x00d3ced0 6e6f726d 616c2c20 0a202020 20202020 normal, . │ │ │ │ - 0x00d3cee0 20202020 20202020 20202020 20202020 │ │ │ │ - 0x00d3cef0 20202020 20202020 20202020 20202020 │ │ │ │ - 0x00d3cf00 20202020 20202020 20202020 20202075 u │ │ │ │ - 0x00d3cf10 5f6d6f64 656c5669 65772c20 68616c66 _modelView, half │ │ │ │ - 0x00d3cf20 57696474 68293b20 0a202020 207d200a Width); . } . │ │ │ │ - 0x00d3cf30 20202020 666c6f61 7420754f 66667365 float uOffse │ │ │ │ - 0x00d3cf40 74203d20 6d696e28 6c656e67 74682876 t = min(length(v │ │ │ │ - 0x00d3cf50 65633428 6b536861 7065436f 6f726453 ec4(kShapeCoordS │ │ │ │ - 0x00d3cf60 63616c61 722c2030 2c20302c 20302920 calar, 0, 0, 0) │ │ │ │ - 0x00d3cf70 2a20755f 6d6f6465 6c566965 7729202a * u_modelView) * │ │ │ │ - 0x00d3cf80 20615f6d 61736b54 6578436f 6f72642e a_maskTexCoord. │ │ │ │ - 0x00d3cf90 782c2031 2e30293b 200a2020 2020765f x, 1.0); . v_ │ │ │ │ - 0x00d3cfa0 636f6c6f 72546578 436f6f72 64203d20 colorTexCoord = │ │ │ │ - 0x00d3cfb0 615f636f 6c6f7254 6578436f 6f72643b a_colorTexCoord; │ │ │ │ - 0x00d3cfc0 200a2020 2020765f 6d61736b 54657843 . v_maskTexC │ │ │ │ - 0x00d3cfd0 6f6f7264 203d2076 65633228 615f6d61 oord = vec2(a_ma │ │ │ │ - 0x00d3cfe0 736b5465 78436f6f 72642e79 202b2075 skTexCoord.y + u │ │ │ │ - 0x00d3cff0 4f666673 6574202a 20615f6d 61736b54 Offset * a_maskT │ │ │ │ - 0x00d3d000 6578436f 6f72642e 7a2c2061 5f6d6173 exCoord.z, a_mas │ │ │ │ - 0x00d3d010 6b546578 436f6f72 642e7729 3b200a20 kTexCoord.w); . │ │ │ │ - 0x00d3d020 20202076 65633420 706f7320 3d207665 vec4 pos = ve │ │ │ │ - 0x00d3d030 63342874 72616e73 666f726d 65644178 c4(transformedAx │ │ │ │ - 0x00d3d040 6973506f 732c2061 5f706f73 6974696f isPos, a_positio │ │ │ │ - 0x00d3d050 6e2e7a2c 20312e30 29202a20 755f7072 n.z, 1.0) * u_pr │ │ │ │ - 0x00d3d060 6f6a6563 74696f6e 3b200a20 20202067 ojection; . g │ │ │ │ - 0x00d3d070 6c5f506f 73697469 6f6e203d 20617070 l_Position = app │ │ │ │ - 0x00d3d080 6c795069 766f7454 72616e73 666f726d lyPivotTransform │ │ │ │ - 0x00d3d090 28706f73 2c20755f 7069766f 74547261 (pos, u_pivotTra │ │ │ │ - 0x00d3d0a0 6e73666f 726d2c20 302e3029 3b200a20 nsform, 0.0); . │ │ │ │ - 0x00d3d0b0 207d200a 00000000 00000000 00000000 } ............. │ │ │ │ - 0x00d3d0c0 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d3d0d0 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d3d0e0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d3d0f0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d3d100 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d3d110 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d3d120 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d3d130 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d3d140 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d3d150 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d3d160 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d3d170 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d3d180 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d3d190 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d3d1a0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d3d1b0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d3d1c0 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d3d1d0 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d3d1e0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d3d1f0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d3d200 2023656e 64696620 0a20206f 75742076 #endif . out v │ │ │ │ - 0x00d3d210 65633420 765f4672 6167436f 6c6f723b ec4 v_FragColor; │ │ │ │ - 0x00d3d220 200a2020 756e6966 6f726d20 76656334 . uniform vec4 │ │ │ │ - 0x00d3d230 20755f63 6f6c6f72 3b200a20 20636f6e u_color; . con │ │ │ │ - 0x00d3d240 73742066 6c6f6174 206b5368 61706543 st float kShapeC │ │ │ │ - 0x00d3d250 6f6f7264 5363616c 6172203d 20313030 oordScalar = 100 │ │ │ │ - 0x00d3d260 302e303b 200a2020 766f6964 206d6169 0.0; . void mai │ │ │ │ - 0x00d3d270 6e282920 0a20207b 200a2020 2020765f n() . { . v_ │ │ │ │ - 0x00d3d280 46726167 436f6c6f 72203d20 755f636f FragColor = u_co │ │ │ │ - 0x00d3d290 6c6f723b 200a2020 7d200a00 00000000 lor; . } ...... │ │ │ │ - 0x00d3d2a0 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d3d2b0 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d3d2c0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d3d2d0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d3d2e0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d3d2f0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d3d300 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d3d310 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d3d320 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d3d330 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d3d340 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d3d350 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d3d360 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d3d370 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d3d380 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d3d390 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d3d3a0 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d3d3b0 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d3d3c0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d3d3d0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d3d3e0 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d3d3f0 63322061 5f706f73 6974696f 6e3b200a c2 a_position; . │ │ │ │ - 0x00d3d400 2020636f 6e737420 666c6f61 74206b53 const float kS │ │ │ │ - 0x00d3d410 68617065 436f6f72 64536361 6c617220 hapeCoordScalar │ │ │ │ - 0x00d3d420 3d203130 30302e30 3b200a20 20766563 = 1000.0; . vec │ │ │ │ - 0x00d3d430 34206170 706c7950 69766f74 5472616e 4 applyPivotTran │ │ │ │ - 0x00d3d440 73666f72 6d287665 63342070 69766f74 sform(vec4 pivot │ │ │ │ - 0x00d3d450 2c206d61 74342070 69766f74 5472616e , mat4 pivotTran │ │ │ │ - 0x00d3d460 73666f72 6d2c2066 6c6f6174 20706976 sform, float piv │ │ │ │ - 0x00d3d470 6f745265 616c5a29 200a2020 7b200a20 otRealZ) . { . │ │ │ │ - 0x00d3d480 20202076 65633420 7472616e 73666f72 vec4 transfor │ │ │ │ - 0x00d3d490 6d656450 69766f74 203d2070 69766f74 medPivot = pivot │ │ │ │ - 0x00d3d4a0 3b200a20 20202066 6c6f6174 2077203d ; . float w = │ │ │ │ - 0x00d3d4b0 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ - 0x00d3d4c0 742e773b 200a2020 20207472 616e7366 t.w; . transf │ │ │ │ - 0x00d3d4d0 6f726d65 64506976 6f742e78 7977203d ormedPivot.xyw = │ │ │ │ - 0x00d3d4e0 20287069 766f7454 72616e73 666f726d (pivotTransform │ │ │ │ - 0x00d3d4f0 202a2076 65633428 7472616e 73666f72 * vec4(transfor │ │ │ │ - 0x00d3d500 6d656450 69766f74 2e78792c 20706976 medPivot.xy, piv │ │ │ │ - 0x00d3d510 6f745265 616c5a2c 20772929 2e787977 otRealZ, w)).xyw │ │ │ │ - 0x00d3d520 3b200a20 20202074 72616e73 666f726d ; . transform │ │ │ │ - 0x00d3d530 65645069 766f742e 7a202a3d 20747261 edPivot.z *= tra │ │ │ │ - 0x00d3d540 6e73666f 726d6564 5069766f 742e7720 nsformedPivot.w │ │ │ │ - 0x00d3d550 2f20773b 200a2020 23696664 65662056 / w; . #ifdef V │ │ │ │ - 0x00d3d560 554c4b41 4e200a20 20202074 72616e73 ULKAN . trans │ │ │ │ - 0x00d3d570 666f726d 65645069 766f742e 79203d20 formedPivot.y = │ │ │ │ - 0x00d3d580 2d747261 6e73666f 726d6564 5069766f -transformedPivo │ │ │ │ - 0x00d3d590 742e793b 200a2020 20207472 616e7366 t.y; . transf │ │ │ │ - 0x00d3d5a0 6f726d65 64506976 6f742e7a 203d2028 ormedPivot.z = ( │ │ │ │ - 0x00d3d5b0 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ - 0x00d3d5c0 2e7a2020 2b207472 616e7366 6f726d65 .z + transforme │ │ │ │ - 0x00d3d5d0 64506976 6f742e77 29202f20 322e303b dPivot.w) / 2.0; │ │ │ │ - 0x00d3d5e0 200a2020 23656e64 6966200a 20202020 . #endif . │ │ │ │ - 0x00d3d5f0 72657475 726e2074 72616e73 666f726d return transform │ │ │ │ - 0x00d3d600 65645069 766f743b 200a2020 7d200a20 edPivot; . } . │ │ │ │ - 0x00d3d610 20766563 34206170 706c7942 696c6c62 vec4 applyBillb │ │ │ │ - 0x00d3d620 6f617264 5069766f 74547261 6e73666f oardPivotTransfo │ │ │ │ - 0x00d3d630 726d2876 65633420 7069766f 742c206d rm(vec4 pivot, m │ │ │ │ - 0x00d3d640 61743420 7069766f 74547261 6e73666f at4 pivotTransfo │ │ │ │ - 0x00d3d650 726d2c20 666c6f61 74207069 766f7452 rm, float pivotR │ │ │ │ - 0x00d3d660 65616c5a 2c207665 6332206f 66667365 ealZ, vec2 offse │ │ │ │ - 0x00d3d670 7429200a 20207b20 0a202020 20666c6f t) . { . flo │ │ │ │ - 0x00d3d680 6174206c 6f676963 5a203d20 7069766f at logicZ = pivo │ │ │ │ - 0x00d3d690 742e7a20 2f207069 766f742e 773b200a t.z / pivot.w; . │ │ │ │ - 0x00d3d6a0 20202020 76656334 20747261 6e73666f vec4 transfo │ │ │ │ - 0x00d3d6b0 726d6564 5069766f 74203d20 7069766f rmedPivot = pivo │ │ │ │ - 0x00d3d6c0 74547261 6e73666f 726d202a 20766563 tTransform * vec │ │ │ │ - 0x00d3d6d0 34287069 766f742e 78792c20 7069766f 4(pivot.xy, pivo │ │ │ │ - 0x00d3d6e0 74526561 6c5a2c20 7069766f 742e7729 tRealZ, pivot.w) │ │ │ │ - 0x00d3d6f0 3b200a20 20202076 65633420 7363616c ; . vec4 scal │ │ │ │ - 0x00d3d700 65203d20 7069766f 74547261 6e73666f e = pivotTransfo │ │ │ │ - 0x00d3d710 726d202a 20766563 3428312e 302c202d rm * vec4(1.0, - │ │ │ │ - 0x00d3d720 312e302c 20302e30 2c20312e 30293b20 1.0, 0.0, 1.0); │ │ │ │ - 0x00d3d730 0a202020 20766563 3420706f 73697469 . vec4 positi │ │ │ │ - 0x00d3d740 6f6e203d 20766563 34287472 616e7366 on = vec4(transf │ │ │ │ - 0x00d3d750 6f726d65 64506976 6f742e78 79202f20 ormedPivot.xy / │ │ │ │ - 0x00d3d760 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ - 0x00d3d770 2e772c20 6c6f6769 635a2c20 312e3029 .w, logicZ, 1.0) │ │ │ │ - 0x00d3d780 202b2076 65633428 6f666673 6574202f + vec4(offset / │ │ │ │ - 0x00d3d790 20736361 6c652e77 202a2073 63616c65 scale.w * scale │ │ │ │ - 0x00d3d7a0 2e782c20 302e302c 20302e30 293b200a .x, 0.0, 0.0); . │ │ │ │ - 0x00d3d7b0 20202369 66646566 2056554c 4b414e20 #ifdef VULKAN │ │ │ │ - 0x00d3d7c0 0a202020 20706f73 6974696f 6e2e7920 . position.y │ │ │ │ - 0x00d3d7d0 3d202d70 6f736974 696f6e2e 793b200a = -position.y; . │ │ │ │ - 0x00d3d7e0 20202020 706f7369 74696f6e 2e7a203d position.z = │ │ │ │ - 0x00d3d7f0 2028706f 73697469 6f6e2e7a 20202b20 (position.z + │ │ │ │ - 0x00d3d800 706f7369 74696f6e 2e772920 2f20322e position.w) / 2. │ │ │ │ - 0x00d3d810 303b200a 20202365 6e646966 200a2020 0; . #endif . │ │ │ │ - 0x00d3d820 20207265 7475726e 20706f73 6974696f return positio │ │ │ │ - 0x00d3d830 6e3b200a 20207d20 0a202076 65633220 n; . } . vec2 │ │ │ │ - 0x00d3d840 63616c63 4c696e65 5472616e 73666f72 calcLineTransfor │ │ │ │ - 0x00d3d850 6d656441 78697350 6f732876 65633220 medAxisPos(vec2 │ │ │ │ - 0x00d3d860 6f726967 696e616c 41786973 506f732c originalAxisPos, │ │ │ │ - 0x00d3d870 20766563 32207368 69667465 64506f73 vec2 shiftedPos │ │ │ │ - 0x00d3d880 2c206d61 7434206d 6f64656c 56696577 , mat4 modelView │ │ │ │ - 0x00d3d890 2c20666c 6f617420 68616c66 57696474 , float halfWidt │ │ │ │ - 0x00d3d8a0 6829200a 20207b20 0a202020 20766563 h) . { . vec │ │ │ │ - 0x00d3d8b0 32207020 3d202876 65633428 73686966 2 p = (vec4(shif │ │ │ │ - 0x00d3d8c0 74656450 6f732c20 302e302c 20312e30 tedPos, 0.0, 1.0 │ │ │ │ - 0x00d3d8d0 29202a20 6d6f6465 6c566965 77292e78 ) * modelView).x │ │ │ │ - 0x00d3d8e0 793b200a 20202020 76656332 2064203d y; . vec2 d = │ │ │ │ - 0x00d3d8f0 2070202d 206f7269 67696e61 6c417869 p - originalAxi │ │ │ │ - 0x00d3d900 73506f73 3b200a20 20202069 66202864 sPos; . if (d │ │ │ │ - 0x00d3d910 6f742864 2c206429 20213d20 302e3029 ot(d, d) != 0.0) │ │ │ │ - 0x00d3d920 200a2020 20202020 72657475 726e206f . return o │ │ │ │ - 0x00d3d930 72696769 6e616c41 78697350 6f73202b riginalAxisPos + │ │ │ │ - 0x00d3d940 206e6f72 6d616c69 7a652864 29202a20 normalize(d) * │ │ │ │ - 0x00d3d950 68616c66 57696474 683b200a 20202020 halfWidth; . │ │ │ │ - 0x00d3d960 656c7365 200a2020 20202020 72657475 else . retu │ │ │ │ - 0x00d3d970 726e206f 72696769 6e616c41 78697350 rn originalAxisP │ │ │ │ - 0x00d3d980 6f733b20 0a20207d 200a2020 766f6964 os; . } . void │ │ │ │ - 0x00d3d990 206d6169 6e282920 0a20207b 200a2020 main() . { . │ │ │ │ - 0x00d3d9a0 2020676c 5f506f73 6974696f 6e203d20 gl_Position = │ │ │ │ - 0x00d3d9b0 76656334 28615f70 6f736974 696f6e2c vec4(a_position, │ │ │ │ - 0x00d3d9c0 20302c20 31293b20 0a202023 69666465 0, 1); . #ifde │ │ │ │ - 0x00d3d9d0 66205655 4c4b414e 200a2020 2020676c f VULKAN . gl │ │ │ │ - 0x00d3d9e0 5f506f73 6974696f 6e2e7920 3d202d67 _Position.y = -g │ │ │ │ - 0x00d3d9f0 6c5f506f 73697469 6f6e2e79 3b200a20 l_Position.y; . │ │ │ │ - 0x00d3da00 20202067 6c5f506f 73697469 6f6e2e7a gl_Position.z │ │ │ │ - 0x00d3da10 203d2028 676c5f50 6f736974 696f6e2e = (gl_Position. │ │ │ │ - 0x00d3da20 7a20202b 20676c5f 506f7369 74696f6e z + gl_Position │ │ │ │ - 0x00d3da30 2e772920 2a20302e 353b200a 20202365 .w) * 0.5; . #e │ │ │ │ - 0x00d3da40 6e646966 200a2020 7d200a00 00000000 ndif . } ...... │ │ │ │ - 0x00d3da50 00000000 00000000 00000000 00000000 ................ │ │ │ │ - 0x00d3da60 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d3da70 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d3da80 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d3da90 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d3daa0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d3dab0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d3dac0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d3dad0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d3dae0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d3daf0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d3db00 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d3db10 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d3db20 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d3db30 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d3db40 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d3db50 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d3db60 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d3db70 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d3db80 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d3db90 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d3dba0 2023656e 64696620 0a202023 69666465 #endif . #ifde │ │ │ │ - 0x00d3dbb0 6620454e 41424c45 5f565446 200a2020 f ENABLE_VTF . │ │ │ │ - 0x00d3dbc0 696e204c 4f575f50 20766563 3420765f in LOW_P vec4 v_ │ │ │ │ - 0x00d3dbd0 636f6c6f 723b200a 20202365 6c736520 color; . #else │ │ │ │ - 0x00d3dbe0 0a202069 6e207665 63322076 5f636f6c . in vec2 v_col │ │ │ │ - 0x00d3dbf0 6f725465 78436f6f 7264733b 200a2020 orTexCoords; . │ │ │ │ - 0x00d3dc00 756e6966 6f726d20 73616d70 6c657232 uniform sampler2 │ │ │ │ - 0x00d3dc10 4420755f 636f6c6f 72546578 3b200a20 D u_colorTex; . │ │ │ │ - 0x00d3dc20 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d3dc30 63322076 5f6d6173 6b546578 436f6f72 c2 v_maskTexCoor │ │ │ │ - 0x00d3dc40 64733b20 0a20206f 75742076 65633420 ds; . out vec4 │ │ │ │ - 0x00d3dc50 765f4672 6167436f 6c6f723b 200a2020 v_FragColor; . │ │ │ │ - 0x00d3dc60 756e6966 6f726d20 6d617434 20755f6d uniform mat4 u_m │ │ │ │ - 0x00d3dc70 6f64656c 56696577 3b200a20 20756e69 odelView; . uni │ │ │ │ - 0x00d3dc80 666f726d 206d6174 3420755f 70726f6a form mat4 u_proj │ │ │ │ - 0x00d3dc90 65637469 6f6e3b20 0a202075 6e69666f ection; . unifo │ │ │ │ - 0x00d3dca0 726d206d 61743420 755f7069 766f7454 rm mat4 u_pivotT │ │ │ │ - 0x00d3dcb0 72616e73 666f726d 3b200a20 20756e69 ransform; . uni │ │ │ │ - 0x00d3dcc0 666f726d 20766563 3220755f 636f6e74 form vec2 u_cont │ │ │ │ - 0x00d3dcd0 72617374 47616d6d 613b200a 2020756e rastGamma; . un │ │ │ │ - 0x00d3dce0 69666f72 6d20666c 6f617420 755f6f70 iform float u_op │ │ │ │ - 0x00d3dcf0 61636974 793b200a 2020756e 69666f72 acity; . unifor │ │ │ │ - 0x00d3dd00 6d20666c 6f617420 755f7a53 63616c65 m float u_zScale │ │ │ │ - 0x00d3dd10 3b200a20 20756e69 666f726d 20666c6f ; . uniform flo │ │ │ │ - 0x00d3dd20 61742075 5f696e74 6572706f 6c617469 at u_interpolati │ │ │ │ - 0x00d3dd30 6f6e3b20 0a202075 6e69666f 726d2066 on; . uniform f │ │ │ │ - 0x00d3dd40 6c6f6174 20755f69 734f7574 6c696e65 loat u_isOutline │ │ │ │ - 0x00d3dd50 50617373 3b200a20 20756e69 666f726d Pass; . uniform │ │ │ │ - 0x00d3dd60 2073616d 706c6572 32442075 5f6d6173 sampler2D u_mas │ │ │ │ - 0x00d3dd70 6b546578 3b200a20 20636f6e 73742066 kTex; . const f │ │ │ │ - 0x00d3dd80 6c6f6174 206b5368 61706543 6f6f7264 loat kShapeCoord │ │ │ │ - 0x00d3dd90 5363616c 6172203d 20313030 302e303b Scalar = 1000.0; │ │ │ │ - 0x00d3dda0 200a2020 766f6964 206d6169 6e282920 . void main() │ │ │ │ - 0x00d3ddb0 0a20207b 200a2020 23696664 65662045 . { . #ifdef E │ │ │ │ - 0x00d3ddc0 4e41424c 455f5654 46200a20 2020204c NABLE_VTF . L │ │ │ │ - 0x00d3ddd0 4f575f50 20766563 3420636f 6c6f7220 OW_P vec4 color │ │ │ │ - 0x00d3dde0 3d20765f 636f6c6f 723b200a 20202365 = v_color; . #e │ │ │ │ - 0x00d3ddf0 6c736520 0a202020 204c4f57 5f502076 lse . LOW_P v │ │ │ │ - 0x00d3de00 65633420 636f6c6f 72203d20 74657874 ec4 color = text │ │ │ │ - 0x00d3de10 75726528 755f636f 6c6f7254 65782c20 ure(u_colorTex, │ │ │ │ - 0x00d3de20 765f636f 6c6f7254 6578436f 6f726473 v_colorTexCoords │ │ │ │ - 0x00d3de30 293b200a 20202365 6e646966 200a2020 ); . #endif . │ │ │ │ - 0x00d3de40 2020636f 6c6f7220 2a3d2074 65787475 color *= textu │ │ │ │ - 0x00d3de50 72652875 5f6d6173 6b546578 2c20765f re(u_maskTex, v_ │ │ │ │ - 0x00d3de60 6d61736b 54657843 6f6f7264 73293b20 maskTexCoords); │ │ │ │ - 0x00d3de70 0a202020 20636f6c 6f722e61 202a3d20 . color.a *= │ │ │ │ - 0x00d3de80 755f6f70 61636974 793b200a 20202020 u_opacity; . │ │ │ │ - 0x00d3de90 765f4672 6167436f 6c6f7220 3d20636f v_FragColor = co │ │ │ │ - 0x00d3dea0 6c6f723b 200a2020 7d200a00 00000000 lor; . } ...... │ │ │ │ - 0x00d3deb0 00000000 00000000 00000000 00000000 ................ │ │ │ │ - 0x00d3dec0 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d3ded0 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d3dee0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d3def0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d3df00 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d3df10 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d3df20 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d3df30 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d3df40 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d3df50 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d3df60 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d3df70 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d3df80 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d3df90 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d3dfa0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d3dfb0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d3dfc0 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d3dfd0 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d3dfe0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d3dff0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d3e000 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d3e010 63332061 5f706f73 6974696f 6e3b200a c3 a_position; . │ │ │ │ - 0x00d3e020 2020696e 20766563 3220615f 636f6c6f in vec2 a_colo │ │ │ │ - 0x00d3e030 72546578 436f6f72 64733b20 0a202069 rTexCoords; . i │ │ │ │ - 0x00d3e040 6e207665 63322061 5f6d6173 6b546578 n vec2 a_maskTex │ │ │ │ - 0x00d3e050 436f6f72 64733b20 0a202023 69666465 Coords; . #ifde │ │ │ │ - 0x00d3e060 6620454e 41424c45 5f565446 200a2020 f ENABLE_VTF . │ │ │ │ - 0x00d3e070 6f757420 4c4f575f 50207665 63342076 out LOW_P vec4 v │ │ │ │ - 0x00d3e080 5f636f6c 6f723b20 0a202023 656c7365 _color; . #else │ │ │ │ - 0x00d3e090 200a2020 6f757420 76656332 20765f63 . out vec2 v_c │ │ │ │ - 0x00d3e0a0 6f6c6f72 54657843 6f6f7264 733b200a olorTexCoords; . │ │ │ │ - 0x00d3e0b0 20202365 6e646966 200a2020 6f757420 #endif . out │ │ │ │ - 0x00d3e0c0 76656332 20765f6d 61736b54 6578436f vec2 v_maskTexCo │ │ │ │ - 0x00d3e0d0 6f726473 3b200a20 20756e69 666f726d ords; . uniform │ │ │ │ - 0x00d3e0e0 206d6174 3420755f 6d6f6465 6c566965 mat4 u_modelVie │ │ │ │ - 0x00d3e0f0 773b200a 2020756e 69666f72 6d206d61 w; . uniform ma │ │ │ │ - 0x00d3e100 74342075 5f70726f 6a656374 696f6e3b t4 u_projection; │ │ │ │ - 0x00d3e110 200a2020 756e6966 6f726d20 6d617434 . uniform mat4 │ │ │ │ - 0x00d3e120 20755f70 69766f74 5472616e 73666f72 u_pivotTransfor │ │ │ │ - 0x00d3e130 6d3b200a 2020756e 69666f72 6d207665 m; . uniform ve │ │ │ │ - 0x00d3e140 63322075 5f636f6e 74726173 7447616d c2 u_contrastGam │ │ │ │ - 0x00d3e150 6d613b20 0a202075 6e69666f 726d2066 ma; . uniform f │ │ │ │ - 0x00d3e160 6c6f6174 20755f6f 70616369 74793b20 loat u_opacity; │ │ │ │ - 0x00d3e170 0a202075 6e69666f 726d2066 6c6f6174 . uniform float │ │ │ │ - 0x00d3e180 20755f7a 5363616c 653b200a 2020756e u_zScale; . un │ │ │ │ - 0x00d3e190 69666f72 6d20666c 6f617420 755f696e iform float u_in │ │ │ │ - 0x00d3e1a0 74657270 6f6c6174 696f6e3b 200a2020 terpolation; . │ │ │ │ - 0x00d3e1b0 756e6966 6f726d20 666c6f61 7420755f uniform float u_ │ │ │ │ - 0x00d3e1c0 69734f75 746c696e 65506173 733b200a isOutlinePass; . │ │ │ │ - 0x00d3e1d0 20202369 66646566 20454e41 424c455f #ifdef ENABLE_ │ │ │ │ - 0x00d3e1e0 56544620 0a202075 6e69666f 726d2073 VTF . uniform s │ │ │ │ - 0x00d3e1f0 616d706c 65723244 20755f63 6f6c6f72 ampler2D u_color │ │ │ │ - 0x00d3e200 5465783b 200a2020 23656e64 6966200a Tex; . #endif . │ │ │ │ - 0x00d3e210 2020636f 6e737420 666c6f61 74206b53 const float kS │ │ │ │ - 0x00d3e220 68617065 436f6f72 64536361 6c617220 hapeCoordScalar │ │ │ │ - 0x00d3e230 3d203130 30302e30 3b200a20 20766563 = 1000.0; . vec │ │ │ │ - 0x00d3e240 34206170 706c7950 69766f74 5472616e 4 applyPivotTran │ │ │ │ - 0x00d3e250 73666f72 6d287665 63342070 69766f74 sform(vec4 pivot │ │ │ │ - 0x00d3e260 2c206d61 74342070 69766f74 5472616e , mat4 pivotTran │ │ │ │ - 0x00d3e270 73666f72 6d2c2066 6c6f6174 20706976 sform, float piv │ │ │ │ - 0x00d3e280 6f745265 616c5a29 200a2020 7b200a20 otRealZ) . { . │ │ │ │ - 0x00d3e290 20202076 65633420 7472616e 73666f72 vec4 transfor │ │ │ │ - 0x00d3e2a0 6d656450 69766f74 203d2070 69766f74 medPivot = pivot │ │ │ │ - 0x00d3e2b0 3b200a20 20202066 6c6f6174 2077203d ; . float w = │ │ │ │ - 0x00d3e2c0 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ - 0x00d3e2d0 742e773b 200a2020 20207472 616e7366 t.w; . transf │ │ │ │ - 0x00d3e2e0 6f726d65 64506976 6f742e78 7977203d ormedPivot.xyw = │ │ │ │ - 0x00d3e2f0 20287069 766f7454 72616e73 666f726d (pivotTransform │ │ │ │ - 0x00d3e300 202a2076 65633428 7472616e 73666f72 * vec4(transfor │ │ │ │ - 0x00d3e310 6d656450 69766f74 2e78792c 20706976 medPivot.xy, piv │ │ │ │ - 0x00d3e320 6f745265 616c5a2c 20772929 2e787977 otRealZ, w)).xyw │ │ │ │ - 0x00d3e330 3b200a20 20202074 72616e73 666f726d ; . transform │ │ │ │ - 0x00d3e340 65645069 766f742e 7a202a3d 20747261 edPivot.z *= tra │ │ │ │ - 0x00d3e350 6e73666f 726d6564 5069766f 742e7720 nsformedPivot.w │ │ │ │ - 0x00d3e360 2f20773b 200a2020 23696664 65662056 / w; . #ifdef V │ │ │ │ - 0x00d3e370 554c4b41 4e200a20 20202074 72616e73 ULKAN . trans │ │ │ │ - 0x00d3e380 666f726d 65645069 766f742e 79203d20 formedPivot.y = │ │ │ │ - 0x00d3e390 2d747261 6e73666f 726d6564 5069766f -transformedPivo │ │ │ │ - 0x00d3e3a0 742e793b 200a2020 20207472 616e7366 t.y; . transf │ │ │ │ - 0x00d3e3b0 6f726d65 64506976 6f742e7a 203d2028 ormedPivot.z = ( │ │ │ │ - 0x00d3e3c0 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ - 0x00d3e3d0 2e7a2020 2b207472 616e7366 6f726d65 .z + transforme │ │ │ │ - 0x00d3e3e0 64506976 6f742e77 29202f20 322e303b dPivot.w) / 2.0; │ │ │ │ - 0x00d3e3f0 200a2020 23656e64 6966200a 20202020 . #endif . │ │ │ │ - 0x00d3e400 72657475 726e2074 72616e73 666f726d return transform │ │ │ │ - 0x00d3e410 65645069 766f743b 200a2020 7d200a20 edPivot; . } . │ │ │ │ - 0x00d3e420 20766563 34206170 706c7942 696c6c62 vec4 applyBillb │ │ │ │ - 0x00d3e430 6f617264 5069766f 74547261 6e73666f oardPivotTransfo │ │ │ │ - 0x00d3e440 726d2876 65633420 7069766f 742c206d rm(vec4 pivot, m │ │ │ │ - 0x00d3e450 61743420 7069766f 74547261 6e73666f at4 pivotTransfo │ │ │ │ - 0x00d3e460 726d2c20 666c6f61 74207069 766f7452 rm, float pivotR │ │ │ │ - 0x00d3e470 65616c5a 2c207665 6332206f 66667365 ealZ, vec2 offse │ │ │ │ - 0x00d3e480 7429200a 20207b20 0a202020 20666c6f t) . { . flo │ │ │ │ - 0x00d3e490 6174206c 6f676963 5a203d20 7069766f at logicZ = pivo │ │ │ │ - 0x00d3e4a0 742e7a20 2f207069 766f742e 773b200a t.z / pivot.w; . │ │ │ │ - 0x00d3e4b0 20202020 76656334 20747261 6e73666f vec4 transfo │ │ │ │ - 0x00d3e4c0 726d6564 5069766f 74203d20 7069766f rmedPivot = pivo │ │ │ │ - 0x00d3e4d0 74547261 6e73666f 726d202a 20766563 tTransform * vec │ │ │ │ - 0x00d3e4e0 34287069 766f742e 78792c20 7069766f 4(pivot.xy, pivo │ │ │ │ - 0x00d3e4f0 74526561 6c5a2c20 7069766f 742e7729 tRealZ, pivot.w) │ │ │ │ - 0x00d3e500 3b200a20 20202076 65633420 7363616c ; . vec4 scal │ │ │ │ - 0x00d3e510 65203d20 7069766f 74547261 6e73666f e = pivotTransfo │ │ │ │ - 0x00d3e520 726d202a 20766563 3428312e 302c202d rm * vec4(1.0, - │ │ │ │ - 0x00d3e530 312e302c 20302e30 2c20312e 30293b20 1.0, 0.0, 1.0); │ │ │ │ - 0x00d3e540 0a202020 20766563 3420706f 73697469 . vec4 positi │ │ │ │ - 0x00d3e550 6f6e203d 20766563 34287472 616e7366 on = vec4(transf │ │ │ │ - 0x00d3e560 6f726d65 64506976 6f742e78 79202f20 ormedPivot.xy / │ │ │ │ - 0x00d3e570 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ - 0x00d3e580 2e772c20 6c6f6769 635a2c20 312e3029 .w, logicZ, 1.0) │ │ │ │ - 0x00d3e590 202b2076 65633428 6f666673 6574202f + vec4(offset / │ │ │ │ - 0x00d3e5a0 20736361 6c652e77 202a2073 63616c65 scale.w * scale │ │ │ │ - 0x00d3e5b0 2e782c20 302e302c 20302e30 293b200a .x, 0.0, 0.0); . │ │ │ │ - 0x00d3e5c0 20202369 66646566 2056554c 4b414e20 #ifdef VULKAN │ │ │ │ - 0x00d3e5d0 0a202020 20706f73 6974696f 6e2e7920 . position.y │ │ │ │ - 0x00d3e5e0 3d202d70 6f736974 696f6e2e 793b200a = -position.y; . │ │ │ │ - 0x00d3e5f0 20202020 706f7369 74696f6e 2e7a203d position.z = │ │ │ │ - 0x00d3e600 2028706f 73697469 6f6e2e7a 20202b20 (position.z + │ │ │ │ - 0x00d3e610 706f7369 74696f6e 2e772920 2f20322e position.w) / 2. │ │ │ │ - 0x00d3e620 303b200a 20202365 6e646966 200a2020 0; . #endif . │ │ │ │ - 0x00d3e630 20207265 7475726e 20706f73 6974696f return positio │ │ │ │ - 0x00d3e640 6e3b200a 20207d20 0a202076 65633220 n; . } . vec2 │ │ │ │ - 0x00d3e650 63616c63 4c696e65 5472616e 73666f72 calcLineTransfor │ │ │ │ - 0x00d3e660 6d656441 78697350 6f732876 65633220 medAxisPos(vec2 │ │ │ │ - 0x00d3e670 6f726967 696e616c 41786973 506f732c originalAxisPos, │ │ │ │ - 0x00d3e680 20766563 32207368 69667465 64506f73 vec2 shiftedPos │ │ │ │ - 0x00d3e690 2c206d61 7434206d 6f64656c 56696577 , mat4 modelView │ │ │ │ - 0x00d3e6a0 2c20666c 6f617420 68616c66 57696474 , float halfWidt │ │ │ │ - 0x00d3e6b0 6829200a 20207b20 0a202020 20766563 h) . { . vec │ │ │ │ - 0x00d3e6c0 32207020 3d202876 65633428 73686966 2 p = (vec4(shif │ │ │ │ - 0x00d3e6d0 74656450 6f732c20 302e302c 20312e30 tedPos, 0.0, 1.0 │ │ │ │ - 0x00d3e6e0 29202a20 6d6f6465 6c566965 77292e78 ) * modelView).x │ │ │ │ - 0x00d3e6f0 793b200a 20202020 76656332 2064203d y; . vec2 d = │ │ │ │ - 0x00d3e700 2070202d 206f7269 67696e61 6c417869 p - originalAxi │ │ │ │ - 0x00d3e710 73506f73 3b200a20 20202069 66202864 sPos; . if (d │ │ │ │ - 0x00d3e720 6f742864 2c206429 20213d20 302e3029 ot(d, d) != 0.0) │ │ │ │ - 0x00d3e730 200a2020 20202020 72657475 726e206f . return o │ │ │ │ - 0x00d3e740 72696769 6e616c41 78697350 6f73202b riginalAxisPos + │ │ │ │ - 0x00d3e750 206e6f72 6d616c69 7a652864 29202a20 normalize(d) * │ │ │ │ - 0x00d3e760 68616c66 57696474 683b200a 20202020 halfWidth; . │ │ │ │ - 0x00d3e770 656c7365 200a2020 20202020 72657475 else . retu │ │ │ │ - 0x00d3e780 726e206f 72696769 6e616c41 78697350 rn originalAxisP │ │ │ │ - 0x00d3e790 6f733b20 0a20207d 200a2020 766f6964 os; . } . void │ │ │ │ - 0x00d3e7a0 206d6169 6e282920 0a20207b 200a2020 main() . { . │ │ │ │ - 0x00d3e7b0 20207665 63342070 6f73203d 20766563 vec4 pos = vec │ │ │ │ - 0x00d3e7c0 3428615f 706f7369 74696f6e 2c203129 4(a_position, 1) │ │ │ │ - 0x00d3e7d0 202a2075 5f6d6f64 656c5669 6577202a * u_modelView * │ │ │ │ - 0x00d3e7e0 20755f70 726f6a65 6374696f 6e3b200a u_projection; . │ │ │ │ - 0x00d3e7f0 20202020 676c5f50 6f736974 696f6e20 gl_Position │ │ │ │ - 0x00d3e800 3d206170 706c7950 69766f74 5472616e = applyPivotTran │ │ │ │ - 0x00d3e810 73666f72 6d28706f 732c2075 5f706976 sform(pos, u_piv │ │ │ │ - 0x00d3e820 6f745472 616e7366 6f726d2c 20302e30 otTransform, 0.0 │ │ │ │ - 0x00d3e830 293b200a 20202369 66646566 20454e41 ); . #ifdef ENA │ │ │ │ - 0x00d3e840 424c455f 56544620 0a202020 20765f63 BLE_VTF . v_c │ │ │ │ - 0x00d3e850 6f6c6f72 203d2074 65787475 72652875 olor = texture(u │ │ │ │ - 0x00d3e860 5f636f6c 6f725465 782c2061 5f636f6c _colorTex, a_col │ │ │ │ - 0x00d3e870 6f725465 78436f6f 72647329 3b200a20 orTexCoords); . │ │ │ │ - 0x00d3e880 2023656c 7365200a 20202020 765f636f #else . v_co │ │ │ │ - 0x00d3e890 6c6f7254 6578436f 6f726473 203d2061 lorTexCoords = a │ │ │ │ - 0x00d3e8a0 5f636f6c 6f725465 78436f6f 7264733b _colorTexCoords; │ │ │ │ - 0x00d3e8b0 200a2020 23656e64 6966200a 20202020 . #endif . │ │ │ │ - 0x00d3e8c0 765f6d61 736b5465 78436f6f 72647320 v_maskTexCoords │ │ │ │ - 0x00d3e8d0 3d20615f 6d61736b 54657843 6f6f7264 = a_maskTexCoord │ │ │ │ - 0x00d3e8e0 733b200a 20207d20 0a000000 00000000 s; . } ........ │ │ │ │ - 0x00d3e8f0 00000000 00000000 00000000 00000000 ................ │ │ │ │ - 0x00d3e900 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d3e910 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d3e920 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d3e930 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d3e940 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d3e950 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d3e960 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d3e970 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d3e980 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d3e990 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d3e9a0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d3e9b0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d3e9c0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d3e9d0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d3e9e0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d3e9f0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d3ea00 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d3ea10 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d3ea20 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d3ea30 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d3ea40 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d3ea50 63322076 5f746578 436f6f72 64733b20 c2 v_texCoords; │ │ │ │ - 0x00d3ea60 0a202069 6e207665 63342076 5f636f6c . in vec4 v_col │ │ │ │ - 0x00d3ea70 6f723b20 0a20206f 75742076 65633420 or; . out vec4 │ │ │ │ - 0x00d3ea80 765f4672 6167436f 6c6f723b 200a2020 v_FragColor; . │ │ │ │ - 0x00d3ea90 756e6966 6f726d20 73616d70 6c657232 uniform sampler2 │ │ │ │ - 0x00d3eaa0 4420755f 636f6c6f 72546578 3b200a20 D u_colorTex; . │ │ │ │ - 0x00d3eab0 20636f6e 73742066 6c6f6174 206b5368 const float kSh │ │ │ │ - 0x00d3eac0 61706543 6f6f7264 5363616c 6172203d apeCoordScalar = │ │ │ │ - 0x00d3ead0 20313030 302e303b 200a2020 766f6964 1000.0; . void │ │ │ │ - 0x00d3eae0 206d6169 6e282920 0a20207b 200a2020 main() . { . │ │ │ │ - 0x00d3eaf0 20204c4f 575f5020 76656334 20636f6c LOW_P vec4 col │ │ │ │ - 0x00d3eb00 6f72203d 20746578 74757265 28755f63 or = texture(u_c │ │ │ │ - 0x00d3eb10 6f6c6f72 5465782c 20765f74 6578436f olorTex, v_texCo │ │ │ │ - 0x00d3eb20 6f726473 293b200a 20202020 765f4672 ords); . v_Fr │ │ │ │ - 0x00d3eb30 6167436f 6c6f7220 3d20636f 6c6f7220 agColor = color │ │ │ │ - 0x00d3eb40 2a20765f 636f6c6f 723b200a 20207d20 * v_color; . } │ │ │ │ - 0x00d3eb50 0a000000 00000000 00000000 00000000 ................ │ │ │ │ - 0x00d3eb60 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d3eb70 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d3eb80 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d3eb90 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d3eba0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d3ebb0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d3ebc0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d3ebd0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d3ebe0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d3ebf0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d3ec00 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d3ec10 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d3ec20 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d3ec30 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d3ec40 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d3ec50 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d3ec60 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d3ec70 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d3ec80 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d3ec90 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d3eca0 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d3ecb0 63322061 5f706f73 6974696f 6e3b200a c2 a_position; . │ │ │ │ - 0x00d3ecc0 2020696e 20766563 3220615f 74657843 in vec2 a_texC │ │ │ │ - 0x00d3ecd0 6f6f7264 733b200a 2020696e 20766563 oords; . in vec │ │ │ │ - 0x00d3ece0 3420615f 636f6c6f 723b200a 20206f75 4 a_color; . ou │ │ │ │ - 0x00d3ecf0 74207665 63322076 5f746578 436f6f72 t vec2 v_texCoor │ │ │ │ - 0x00d3ed00 64733b20 0a20206f 75742076 65633420 ds; . out vec4 │ │ │ │ - 0x00d3ed10 765f636f 6c6f723b 200a2020 756e6966 v_color; . unif │ │ │ │ - 0x00d3ed20 6f726d20 6d617434 20755f70 726f6a65 orm mat4 u_proje │ │ │ │ - 0x00d3ed30 6374696f 6e3b200a 2020636f 6e737420 ction; . const │ │ │ │ - 0x00d3ed40 666c6f61 74206b53 68617065 436f6f72 float kShapeCoor │ │ │ │ - 0x00d3ed50 64536361 6c617220 3d203130 30302e30 dScalar = 1000.0 │ │ │ │ - 0x00d3ed60 3b200a20 20766563 34206170 706c7950 ; . vec4 applyP │ │ │ │ - 0x00d3ed70 69766f74 5472616e 73666f72 6d287665 ivotTransform(ve │ │ │ │ - 0x00d3ed80 63342070 69766f74 2c206d61 74342070 c4 pivot, mat4 p │ │ │ │ - 0x00d3ed90 69766f74 5472616e 73666f72 6d2c2066 ivotTransform, f │ │ │ │ - 0x00d3eda0 6c6f6174 20706976 6f745265 616c5a29 loat pivotRealZ) │ │ │ │ - 0x00d3edb0 200a2020 7b200a20 20202076 65633420 . { . vec4 │ │ │ │ - 0x00d3edc0 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ - 0x00d3edd0 203d2070 69766f74 3b200a20 20202066 = pivot; . f │ │ │ │ - 0x00d3ede0 6c6f6174 2077203d 20747261 6e73666f loat w = transfo │ │ │ │ - 0x00d3edf0 726d6564 5069766f 742e773b 200a2020 rmedPivot.w; . │ │ │ │ - 0x00d3ee00 20207472 616e7366 6f726d65 64506976 transformedPiv │ │ │ │ - 0x00d3ee10 6f742e78 7977203d 20287069 766f7454 ot.xyw = (pivotT │ │ │ │ - 0x00d3ee20 72616e73 666f726d 202a2076 65633428 ransform * vec4( │ │ │ │ - 0x00d3ee30 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ - 0x00d3ee40 2e78792c 20706976 6f745265 616c5a2c .xy, pivotRealZ, │ │ │ │ - 0x00d3ee50 20772929 2e787977 3b200a20 20202074 w)).xyw; . t │ │ │ │ - 0x00d3ee60 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ - 0x00d3ee70 7a202a3d 20747261 6e73666f 726d6564 z *= transformed │ │ │ │ - 0x00d3ee80 5069766f 742e7720 2f20773b 200a2020 Pivot.w / w; . │ │ │ │ - 0x00d3ee90 23696664 65662056 554c4b41 4e200a20 #ifdef VULKAN . │ │ │ │ - 0x00d3eea0 20202074 72616e73 666f726d 65645069 transformedPi │ │ │ │ - 0x00d3eeb0 766f742e 79203d20 2d747261 6e73666f vot.y = -transfo │ │ │ │ - 0x00d3eec0 726d6564 5069766f 742e793b 200a2020 rmedPivot.y; . │ │ │ │ - 0x00d3eed0 20207472 616e7366 6f726d65 64506976 transformedPiv │ │ │ │ - 0x00d3eee0 6f742e7a 203d2028 7472616e 73666f72 ot.z = (transfor │ │ │ │ - 0x00d3eef0 6d656450 69766f74 2e7a2020 2b207472 medPivot.z + tr │ │ │ │ - 0x00d3ef00 616e7366 6f726d65 64506976 6f742e77 ansformedPivot.w │ │ │ │ - 0x00d3ef10 29202f20 322e303b 200a2020 23656e64 ) / 2.0; . #end │ │ │ │ - 0x00d3ef20 6966200a 20202020 72657475 726e2074 if . return t │ │ │ │ - 0x00d3ef30 72616e73 666f726d 65645069 766f743b ransformedPivot; │ │ │ │ - 0x00d3ef40 200a2020 7d200a20 20766563 34206170 . } . vec4 ap │ │ │ │ - 0x00d3ef50 706c7942 696c6c62 6f617264 5069766f plyBillboardPivo │ │ │ │ - 0x00d3ef60 74547261 6e73666f 726d2876 65633420 tTransform(vec4 │ │ │ │ - 0x00d3ef70 7069766f 742c206d 61743420 7069766f pivot, mat4 pivo │ │ │ │ - 0x00d3ef80 74547261 6e73666f 726d2c20 666c6f61 tTransform, floa │ │ │ │ - 0x00d3ef90 74207069 766f7452 65616c5a 2c207665 t pivotRealZ, ve │ │ │ │ - 0x00d3efa0 6332206f 66667365 7429200a 20207b20 c2 offset) . { │ │ │ │ - 0x00d3efb0 0a202020 20666c6f 6174206c 6f676963 . float logic │ │ │ │ - 0x00d3efc0 5a203d20 7069766f 742e7a20 2f207069 Z = pivot.z / pi │ │ │ │ - 0x00d3efd0 766f742e 773b200a 20202020 76656334 vot.w; . vec4 │ │ │ │ - 0x00d3efe0 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ - 0x00d3eff0 74203d20 7069766f 74547261 6e73666f t = pivotTransfo │ │ │ │ - 0x00d3f000 726d202a 20766563 34287069 766f742e rm * vec4(pivot. │ │ │ │ - 0x00d3f010 78792c20 7069766f 74526561 6c5a2c20 xy, pivotRealZ, │ │ │ │ - 0x00d3f020 7069766f 742e7729 3b200a20 20202076 pivot.w); . v │ │ │ │ - 0x00d3f030 65633420 7363616c 65203d20 7069766f ec4 scale = pivo │ │ │ │ - 0x00d3f040 74547261 6e73666f 726d202a 20766563 tTransform * vec │ │ │ │ - 0x00d3f050 3428312e 302c202d 312e302c 20302e30 4(1.0, -1.0, 0.0 │ │ │ │ - 0x00d3f060 2c20312e 30293b20 0a202020 20766563 , 1.0); . vec │ │ │ │ - 0x00d3f070 3420706f 73697469 6f6e203d 20766563 4 position = vec │ │ │ │ - 0x00d3f080 34287472 616e7366 6f726d65 64506976 4(transformedPiv │ │ │ │ - 0x00d3f090 6f742e78 79202f20 7472616e 73666f72 ot.xy / transfor │ │ │ │ - 0x00d3f0a0 6d656450 69766f74 2e772c20 6c6f6769 medPivot.w, logi │ │ │ │ - 0x00d3f0b0 635a2c20 312e3029 202b2076 65633428 cZ, 1.0) + vec4( │ │ │ │ - 0x00d3f0c0 6f666673 6574202f 20736361 6c652e77 offset / scale.w │ │ │ │ - 0x00d3f0d0 202a2073 63616c65 2e782c20 302e302c * scale.x, 0.0, │ │ │ │ - 0x00d3f0e0 20302e30 293b200a 20202369 66646566 0.0); . #ifdef │ │ │ │ - 0x00d3f0f0 2056554c 4b414e20 0a202020 20706f73 VULKAN . pos │ │ │ │ - 0x00d3f100 6974696f 6e2e7920 3d202d70 6f736974 ition.y = -posit │ │ │ │ - 0x00d3f110 696f6e2e 793b200a 20202020 706f7369 ion.y; . posi │ │ │ │ - 0x00d3f120 74696f6e 2e7a203d 2028706f 73697469 tion.z = (positi │ │ │ │ - 0x00d3f130 6f6e2e7a 20202b20 706f7369 74696f6e on.z + position │ │ │ │ - 0x00d3f140 2e772920 2f20322e 303b200a 20202365 .w) / 2.0; . #e │ │ │ │ - 0x00d3f150 6e646966 200a2020 20207265 7475726e ndif . return │ │ │ │ - 0x00d3f160 20706f73 6974696f 6e3b200a 20207d20 position; . } │ │ │ │ - 0x00d3f170 0a202076 65633220 63616c63 4c696e65 . vec2 calcLine │ │ │ │ - 0x00d3f180 5472616e 73666f72 6d656441 78697350 TransformedAxisP │ │ │ │ - 0x00d3f190 6f732876 65633220 6f726967 696e616c os(vec2 original │ │ │ │ - 0x00d3f1a0 41786973 506f732c 20766563 32207368 AxisPos, vec2 sh │ │ │ │ - 0x00d3f1b0 69667465 64506f73 2c206d61 7434206d iftedPos, mat4 m │ │ │ │ - 0x00d3f1c0 6f64656c 56696577 2c20666c 6f617420 odelView, float │ │ │ │ - 0x00d3f1d0 68616c66 57696474 6829200a 20207b20 halfWidth) . { │ │ │ │ - 0x00d3f1e0 0a202020 20766563 32207020 3d202876 . vec2 p = (v │ │ │ │ - 0x00d3f1f0 65633428 73686966 74656450 6f732c20 ec4(shiftedPos, │ │ │ │ - 0x00d3f200 302e302c 20312e30 29202a20 6d6f6465 0.0, 1.0) * mode │ │ │ │ - 0x00d3f210 6c566965 77292e78 793b200a 20202020 lView).xy; . │ │ │ │ - 0x00d3f220 76656332 2064203d 2070202d 206f7269 vec2 d = p - ori │ │ │ │ - 0x00d3f230 67696e61 6c417869 73506f73 3b200a20 ginalAxisPos; . │ │ │ │ - 0x00d3f240 20202069 66202864 6f742864 2c206429 if (dot(d, d) │ │ │ │ - 0x00d3f250 20213d20 302e3029 200a2020 20202020 != 0.0) . │ │ │ │ - 0x00d3f260 72657475 726e206f 72696769 6e616c41 return originalA │ │ │ │ - 0x00d3f270 78697350 6f73202b 206e6f72 6d616c69 xisPos + normali │ │ │ │ - 0x00d3f280 7a652864 29202a20 68616c66 57696474 ze(d) * halfWidt │ │ │ │ - 0x00d3f290 683b200a 20202020 656c7365 200a2020 h; . else . │ │ │ │ - 0x00d3f2a0 20202020 72657475 726e206f 72696769 return origi │ │ │ │ - 0x00d3f2b0 6e616c41 78697350 6f733b20 0a20207d nalAxisPos; . } │ │ │ │ - 0x00d3f2c0 200a2020 766f6964 206d6169 6e282920 . void main() │ │ │ │ - 0x00d3f2d0 0a20207b 200a2020 2020765f 74657843 . { . v_texC │ │ │ │ - 0x00d3f2e0 6f6f7264 73203d20 615f7465 78436f6f oords = a_texCoo │ │ │ │ - 0x00d3f2f0 7264733b 200a2020 2020765f 636f6c6f rds; . v_colo │ │ │ │ - 0x00d3f300 72203d20 615f636f 6c6f723b 200a2020 r = a_color; . │ │ │ │ - 0x00d3f310 2020676c 5f506f73 6974696f 6e203d20 gl_Position = │ │ │ │ - 0x00d3f320 76656334 28615f70 6f736974 696f6e2c vec4(a_position, │ │ │ │ - 0x00d3f330 20302c20 3129202a 20755f70 726f6a65 0, 1) * u_proje │ │ │ │ - 0x00d3f340 6374696f 6e3b200a 20202369 66646566 ction; . #ifdef │ │ │ │ - 0x00d3f350 2056554c 4b414e20 0a202020 20676c5f VULKAN . gl_ │ │ │ │ - 0x00d3f360 506f7369 74696f6e 2e79203d 202d676c Position.y = -gl │ │ │ │ - 0x00d3f370 5f506f73 6974696f 6e2e793b 200a2020 _Position.y; . │ │ │ │ - 0x00d3f380 2020676c 5f506f73 6974696f 6e2e7a20 gl_Position.z │ │ │ │ - 0x00d3f390 3d202867 6c5f506f 73697469 6f6e2e7a = (gl_Position.z │ │ │ │ - 0x00d3f3a0 20202b20 676c5f50 6f736974 696f6e2e + gl_Position. │ │ │ │ - 0x00d3f3b0 7729202a 20302e35 3b200a20 2023656e w) * 0.5; . #en │ │ │ │ - 0x00d3f3c0 64696620 0a20207d 200a0000 00000000 dif . } ....... │ │ │ │ - 0x00d3f3d0 00000000 00000000 00000000 00000000 ................ │ │ │ │ - 0x00d3f3e0 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d3f3f0 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d3f400 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d3f410 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d3f420 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d3f430 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d3f440 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d3f450 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d3f460 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d3f470 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d3f480 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d3f490 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d3f4a0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d3f4b0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d3f4c0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d3f4d0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d3f4e0 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d3f4f0 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d3f500 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d3f510 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d3f520 2023656e 64696620 0a202023 69666465 #endif . #ifde │ │ │ │ - 0x00d3f530 6620454e 41424c45 5f565446 200a2020 f ENABLE_VTF . │ │ │ │ - 0x00d3f540 696e204c 4f575f50 20766563 3420765f in LOW_P vec4 v_ │ │ │ │ - 0x00d3f550 636f6c6f 723b200a 20202365 6c736520 color; . #else │ │ │ │ - 0x00d3f560 0a202069 6e207665 63322076 5f636f6c . in vec2 v_col │ │ │ │ - 0x00d3f570 6f725465 78436f6f 72643b20 0a202075 orTexCoord; . u │ │ │ │ - 0x00d3f580 6e69666f 726d2073 616d706c 65723244 niform sampler2D │ │ │ │ - 0x00d3f590 20755f63 6f6c6f72 5465783b 200a2020 u_colorTex; . │ │ │ │ - 0x00d3f5a0 23656e64 6966200a 20206f75 74207665 #endif . out ve │ │ │ │ - 0x00d3f5b0 63342076 5f467261 67436f6c 6f723b20 c4 v_FragColor; │ │ │ │ - 0x00d3f5c0 0a202075 6e69666f 726d206d 61743420 . uniform mat4 │ │ │ │ - 0x00d3f5d0 755f6d6f 64656c56 6965773b 200a2020 u_modelView; . │ │ │ │ - 0x00d3f5e0 756e6966 6f726d20 6d617434 20755f70 uniform mat4 u_p │ │ │ │ - 0x00d3f5f0 726f6a65 6374696f 6e3b200a 2020756e rojection; . un │ │ │ │ - 0x00d3f600 69666f72 6d206d61 74342075 5f706976 iform mat4 u_piv │ │ │ │ - 0x00d3f610 6f745472 616e7366 6f726d3b 200a2020 otTransform; . │ │ │ │ - 0x00d3f620 756e6966 6f726d20 76656332 20755f63 uniform vec2 u_c │ │ │ │ - 0x00d3f630 6f6e7472 61737447 616d6d61 3b200a20 ontrastGamma; . │ │ │ │ - 0x00d3f640 20756e69 666f726d 20666c6f 61742075 uniform float u │ │ │ │ - 0x00d3f650 5f6f7061 63697479 3b200a20 20756e69 _opacity; . uni │ │ │ │ - 0x00d3f660 666f726d 20666c6f 61742075 5f7a5363 form float u_zSc │ │ │ │ - 0x00d3f670 616c653b 200a2020 756e6966 6f726d20 ale; . uniform │ │ │ │ - 0x00d3f680 666c6f61 7420755f 696e7465 72706f6c float u_interpol │ │ │ │ - 0x00d3f690 6174696f 6e3b200a 2020756e 69666f72 ation; . unifor │ │ │ │ - 0x00d3f6a0 6d20666c 6f617420 755f6973 4f75746c m float u_isOutl │ │ │ │ - 0x00d3f6b0 696e6550 6173733b 200a2020 636f6e73 inePass; . cons │ │ │ │ - 0x00d3f6c0 7420666c 6f617420 6b536861 7065436f t float kShapeCo │ │ │ │ - 0x00d3f6d0 6f726453 63616c61 72203d20 31303030 ordScalar = 1000 │ │ │ │ - 0x00d3f6e0 2e303b20 0a202076 6f696420 6d61696e .0; . void main │ │ │ │ - 0x00d3f6f0 2829200a 20207b20 0a202023 69666465 () . { . #ifde │ │ │ │ - 0x00d3f700 6620454e 41424c45 5f565446 200a2020 f ENABLE_VTF . │ │ │ │ - 0x00d3f710 20204c4f 575f5020 76656334 20636f6c LOW_P vec4 col │ │ │ │ - 0x00d3f720 6f72203d 20765f63 6f6c6f72 3b200a20 or = v_color; . │ │ │ │ - 0x00d3f730 2023656c 7365200a 20202020 4c4f575f #else . LOW_ │ │ │ │ - 0x00d3f740 50207665 63342063 6f6c6f72 203d2074 P vec4 color = t │ │ │ │ - 0x00d3f750 65787475 72652875 5f636f6c 6f725465 exture(u_colorTe │ │ │ │ - 0x00d3f760 782c2076 5f636f6c 6f725465 78436f6f x, v_colorTexCoo │ │ │ │ - 0x00d3f770 7264293b 200a2020 23656e64 6966200a rd); . #endif . │ │ │ │ - 0x00d3f780 20202020 636f6c6f 722e6120 2a3d2075 color.a *= u │ │ │ │ - 0x00d3f790 5f6f7061 63697479 3b200a20 20202076 _opacity; . v │ │ │ │ - 0x00d3f7a0 5f467261 67436f6c 6f72203d 20636f6c _FragColor = col │ │ │ │ - 0x00d3f7b0 6f723b20 0a20207d 200a0000 00000000 or; . } ....... │ │ │ │ - 0x00d3f7c0 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d3f7d0 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d3f7e0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d3f7f0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d3f800 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d3f810 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d3f820 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d3f830 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d3f840 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d3f850 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d3f860 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d3f870 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d3f880 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d3f890 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d3f8a0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d3f8b0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d3f8c0 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d3f8d0 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d3f8e0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d3f8f0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d3f900 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d3f910 63332061 5f706f73 6974696f 6e3b200a c3 a_position; . │ │ │ │ - 0x00d3f920 2020696e 20766563 3320615f 6e6f726d in vec3 a_norm │ │ │ │ - 0x00d3f930 616c3b20 0a202069 6e207665 63322061 al; . in vec2 a │ │ │ │ - 0x00d3f940 5f636f6c 6f725465 78436f6f 72643b20 _colorTexCoord; │ │ │ │ - 0x00d3f950 0a202023 69666465 6620454e 41424c45 . #ifdef ENABLE │ │ │ │ - 0x00d3f960 5f565446 200a2020 6f757420 4c4f575f _VTF . out LOW_ │ │ │ │ - 0x00d3f970 50207665 63342076 5f636f6c 6f723b20 P vec4 v_color; │ │ │ │ - 0x00d3f980 0a202023 656c7365 200a2020 6f757420 . #else . out │ │ │ │ - 0x00d3f990 76656332 20765f63 6f6c6f72 54657843 vec2 v_colorTexC │ │ │ │ - 0x00d3f9a0 6f6f7264 3b200a20 2023656e 64696620 oord; . #endif │ │ │ │ - 0x00d3f9b0 0a202075 6e69666f 726d206d 61743420 . uniform mat4 │ │ │ │ - 0x00d3f9c0 755f6d6f 64656c56 6965773b 200a2020 u_modelView; . │ │ │ │ - 0x00d3f9d0 756e6966 6f726d20 6d617434 20755f70 uniform mat4 u_p │ │ │ │ - 0x00d3f9e0 726f6a65 6374696f 6e3b200a 2020756e rojection; . un │ │ │ │ - 0x00d3f9f0 69666f72 6d206d61 74342075 5f706976 iform mat4 u_piv │ │ │ │ - 0x00d3fa00 6f745472 616e7366 6f726d3b 200a2020 otTransform; . │ │ │ │ - 0x00d3fa10 756e6966 6f726d20 76656332 20755f63 uniform vec2 u_c │ │ │ │ - 0x00d3fa20 6f6e7472 61737447 616d6d61 3b200a20 ontrastGamma; . │ │ │ │ - 0x00d3fa30 20756e69 666f726d 20666c6f 61742075 uniform float u │ │ │ │ - 0x00d3fa40 5f6f7061 63697479 3b200a20 20756e69 _opacity; . uni │ │ │ │ - 0x00d3fa50 666f726d 20666c6f 61742075 5f7a5363 form float u_zSc │ │ │ │ - 0x00d3fa60 616c653b 200a2020 756e6966 6f726d20 ale; . uniform │ │ │ │ - 0x00d3fa70 666c6f61 7420755f 696e7465 72706f6c float u_interpol │ │ │ │ - 0x00d3fa80 6174696f 6e3b200a 2020756e 69666f72 ation; . unifor │ │ │ │ - 0x00d3fa90 6d20666c 6f617420 755f6973 4f75746c m float u_isOutl │ │ │ │ - 0x00d3faa0 696e6550 6173733b 200a2020 23696664 inePass; . #ifd │ │ │ │ - 0x00d3fab0 65662045 4e41424c 455f5654 46200a20 ef ENABLE_VTF . │ │ │ │ - 0x00d3fac0 20756e69 666f726d 2073616d 706c6572 uniform sampler │ │ │ │ - 0x00d3fad0 32442075 5f636f6c 6f725465 783b200a 2D u_colorTex; . │ │ │ │ - 0x00d3fae0 20202365 6e646966 200a2020 636f6e73 #endif . cons │ │ │ │ - 0x00d3faf0 7420666c 6f617420 6b536861 7065436f t float kShapeCo │ │ │ │ - 0x00d3fb00 6f726453 63616c61 72203d20 31303030 ordScalar = 1000 │ │ │ │ - 0x00d3fb10 2e303b20 0a202076 65633420 6170706c .0; . vec4 appl │ │ │ │ - 0x00d3fb20 79506976 6f745472 616e7366 6f726d28 yPivotTransform( │ │ │ │ - 0x00d3fb30 76656334 20706976 6f742c20 6d617434 vec4 pivot, mat4 │ │ │ │ - 0x00d3fb40 20706976 6f745472 616e7366 6f726d2c pivotTransform, │ │ │ │ - 0x00d3fb50 20666c6f 61742070 69766f74 5265616c float pivotReal │ │ │ │ - 0x00d3fb60 5a29200a 20207b20 0a202020 20766563 Z) . { . vec │ │ │ │ - 0x00d3fb70 34207472 616e7366 6f726d65 64506976 4 transformedPiv │ │ │ │ - 0x00d3fb80 6f74203d 20706976 6f743b20 0a202020 ot = pivot; . │ │ │ │ - 0x00d3fb90 20666c6f 61742077 203d2074 72616e73 float w = trans │ │ │ │ - 0x00d3fba0 666f726d 65645069 766f742e 773b200a formedPivot.w; . │ │ │ │ - 0x00d3fbb0 20202020 7472616e 73666f72 6d656450 transformedP │ │ │ │ - 0x00d3fbc0 69766f74 2e787977 203d2028 7069766f ivot.xyw = (pivo │ │ │ │ - 0x00d3fbd0 74547261 6e73666f 726d202a 20766563 tTransform * vec │ │ │ │ - 0x00d3fbe0 34287472 616e7366 6f726d65 64506976 4(transformedPiv │ │ │ │ - 0x00d3fbf0 6f742e78 792c2070 69766f74 5265616c ot.xy, pivotReal │ │ │ │ - 0x00d3fc00 5a2c2077 29292e78 79773b20 0a202020 Z, w)).xyw; . │ │ │ │ - 0x00d3fc10 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ - 0x00d3fc20 742e7a20 2a3d2074 72616e73 666f726d t.z *= transform │ │ │ │ - 0x00d3fc30 65645069 766f742e 77202f20 773b200a edPivot.w / w; . │ │ │ │ - 0x00d3fc40 20202369 66646566 2056554c 4b414e20 #ifdef VULKAN │ │ │ │ - 0x00d3fc50 0a202020 20747261 6e73666f 726d6564 . transformed │ │ │ │ - 0x00d3fc60 5069766f 742e7920 3d202d74 72616e73 Pivot.y = -trans │ │ │ │ - 0x00d3fc70 666f726d 65645069 766f742e 793b200a formedPivot.y; . │ │ │ │ - 0x00d3fc80 20202020 7472616e 73666f72 6d656450 transformedP │ │ │ │ - 0x00d3fc90 69766f74 2e7a203d 20287472 616e7366 ivot.z = (transf │ │ │ │ - 0x00d3fca0 6f726d65 64506976 6f742e7a 20202b20 ormedPivot.z + │ │ │ │ - 0x00d3fcb0 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ - 0x00d3fcc0 2e772920 2f20322e 303b200a 20202365 .w) / 2.0; . #e │ │ │ │ - 0x00d3fcd0 6e646966 200a2020 20207265 7475726e ndif . return │ │ │ │ - 0x00d3fce0 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ - 0x00d3fcf0 743b200a 20207d20 0a202076 65633420 t; . } . vec4 │ │ │ │ - 0x00d3fd00 6170706c 7942696c 6c626f61 72645069 applyBillboardPi │ │ │ │ - 0x00d3fd10 766f7454 72616e73 666f726d 28766563 votTransform(vec │ │ │ │ - 0x00d3fd20 34207069 766f742c 206d6174 34207069 4 pivot, mat4 pi │ │ │ │ - 0x00d3fd30 766f7454 72616e73 666f726d 2c20666c votTransform, fl │ │ │ │ - 0x00d3fd40 6f617420 7069766f 74526561 6c5a2c20 oat pivotRealZ, │ │ │ │ - 0x00d3fd50 76656332 206f6666 73657429 200a2020 vec2 offset) . │ │ │ │ - 0x00d3fd60 7b200a20 20202066 6c6f6174 206c6f67 { . float log │ │ │ │ - 0x00d3fd70 69635a20 3d207069 766f742e 7a202f20 icZ = pivot.z / │ │ │ │ - 0x00d3fd80 7069766f 742e773b 200a2020 20207665 pivot.w; . ve │ │ │ │ - 0x00d3fd90 63342074 72616e73 666f726d 65645069 c4 transformedPi │ │ │ │ - 0x00d3fda0 766f7420 3d207069 766f7454 72616e73 vot = pivotTrans │ │ │ │ - 0x00d3fdb0 666f726d 202a2076 65633428 7069766f form * vec4(pivo │ │ │ │ - 0x00d3fdc0 742e7879 2c207069 766f7452 65616c5a t.xy, pivotRealZ │ │ │ │ - 0x00d3fdd0 2c207069 766f742e 77293b20 0a202020 , pivot.w); . │ │ │ │ - 0x00d3fde0 20766563 34207363 616c6520 3d207069 vec4 scale = pi │ │ │ │ - 0x00d3fdf0 766f7454 72616e73 666f726d 202a2076 votTransform * v │ │ │ │ - 0x00d3fe00 65633428 312e302c 202d312e 302c2030 ec4(1.0, -1.0, 0 │ │ │ │ - 0x00d3fe10 2e302c20 312e3029 3b200a20 20202076 .0, 1.0); . v │ │ │ │ - 0x00d3fe20 65633420 706f7369 74696f6e 203d2076 ec4 position = v │ │ │ │ - 0x00d3fe30 65633428 7472616e 73666f72 6d656450 ec4(transformedP │ │ │ │ - 0x00d3fe40 69766f74 2e787920 2f207472 616e7366 ivot.xy / transf │ │ │ │ - 0x00d3fe50 6f726d65 64506976 6f742e77 2c206c6f ormedPivot.w, lo │ │ │ │ - 0x00d3fe60 6769635a 2c20312e 3029202b 20766563 gicZ, 1.0) + vec │ │ │ │ - 0x00d3fe70 34286f66 66736574 202f2073 63616c65 4(offset / scale │ │ │ │ - 0x00d3fe80 2e77202a 20736361 6c652e78 2c20302e .w * scale.x, 0. │ │ │ │ - 0x00d3fe90 302c2030 2e30293b 200a2020 23696664 0, 0.0); . #ifd │ │ │ │ - 0x00d3fea0 65662056 554c4b41 4e200a20 20202070 ef VULKAN . p │ │ │ │ - 0x00d3feb0 6f736974 696f6e2e 79203d20 2d706f73 osition.y = -pos │ │ │ │ - 0x00d3fec0 6974696f 6e2e793b 200a2020 2020706f ition.y; . po │ │ │ │ - 0x00d3fed0 73697469 6f6e2e7a 203d2028 706f7369 sition.z = (posi │ │ │ │ - 0x00d3fee0 74696f6e 2e7a2020 2b20706f 73697469 tion.z + positi │ │ │ │ - 0x00d3fef0 6f6e2e77 29202f20 322e303b 200a2020 on.w) / 2.0; . │ │ │ │ - 0x00d3ff00 23656e64 6966200a 20202020 72657475 #endif . retu │ │ │ │ - 0x00d3ff10 726e2070 6f736974 696f6e3b 200a2020 rn position; . │ │ │ │ - 0x00d3ff20 7d200a20 20766563 32206361 6c634c69 } . vec2 calcLi │ │ │ │ - 0x00d3ff30 6e655472 616e7366 6f726d65 64417869 neTransformedAxi │ │ │ │ - 0x00d3ff40 73506f73 28766563 32206f72 6967696e sPos(vec2 origin │ │ │ │ - 0x00d3ff50 616c4178 6973506f 732c2076 65633220 alAxisPos, vec2 │ │ │ │ - 0x00d3ff60 73686966 74656450 6f732c20 6d617434 shiftedPos, mat4 │ │ │ │ - 0x00d3ff70 206d6f64 656c5669 65772c20 666c6f61 modelView, floa │ │ │ │ - 0x00d3ff80 74206861 6c665769 64746829 200a2020 t halfWidth) . │ │ │ │ - 0x00d3ff90 7b200a20 20202076 65633220 70203d20 { . vec2 p = │ │ │ │ - 0x00d3ffa0 28766563 34287368 69667465 64506f73 (vec4(shiftedPos │ │ │ │ - 0x00d3ffb0 2c20302e 302c2031 2e302920 2a206d6f , 0.0, 1.0) * mo │ │ │ │ - 0x00d3ffc0 64656c56 69657729 2e78793b 200a2020 delView).xy; . │ │ │ │ - 0x00d3ffd0 20207665 63322064 203d2070 202d206f vec2 d = p - o │ │ │ │ - 0x00d3ffe0 72696769 6e616c41 78697350 6f733b20 riginalAxisPos; │ │ │ │ - 0x00d3fff0 0a202020 20696620 28646f74 28642c20 . if (dot(d, │ │ │ │ - 0x00d40000 64292021 3d20302e 3029200a 20202020 d) != 0.0) . │ │ │ │ - 0x00d40010 20207265 7475726e 206f7269 67696e61 return origina │ │ │ │ - 0x00d40020 6c417869 73506f73 202b206e 6f726d61 lAxisPos + norma │ │ │ │ - 0x00d40030 6c697a65 28642920 2a206861 6c665769 lize(d) * halfWi │ │ │ │ - 0x00d40040 6474683b 200a2020 2020656c 7365200a dth; . else . │ │ │ │ - 0x00d40050 20202020 20207265 7475726e 206f7269 return ori │ │ │ │ - 0x00d40060 67696e61 6c417869 73506f73 3b200a20 ginalAxisPos; . │ │ │ │ - 0x00d40070 207d200a 2020766f 6964206d 61696e28 } . void main( │ │ │ │ - 0x00d40080 29200a20 207b200a 20202020 76656332 ) . { . vec2 │ │ │ │ - 0x00d40090 206e6f72 6d616c20 3d20615f 6e6f726d normal = a_norm │ │ │ │ - 0x00d400a0 616c2e78 793b200a 20202020 666c6f61 al.xy; . floa │ │ │ │ - 0x00d400b0 74206861 6c665769 64746820 3d206c65 t halfWidth = le │ │ │ │ - 0x00d400c0 6e677468 286e6f72 6d616c29 3b200a20 ngth(normal); . │ │ │ │ - 0x00d400d0 20202076 65633220 7472616e 73666f72 vec2 transfor │ │ │ │ - 0x00d400e0 6d656441 78697350 6f73203d 20287665 medAxisPos = (ve │ │ │ │ - 0x00d400f0 63342861 5f706f73 6974696f 6e2e7879 c4(a_position.xy │ │ │ │ - 0x00d40100 2c20302e 302c2031 2e302920 2a20755f , 0.0, 1.0) * u_ │ │ │ │ - 0x00d40110 6d6f6465 6c566965 77292e78 793b200a modelView).xy; . │ │ │ │ - 0x00d40120 20202020 69662028 68616c66 57696474 if (halfWidt │ │ │ │ - 0x00d40130 6820213d 20302e30 29200a20 2020207b h != 0.0) . { │ │ │ │ - 0x00d40140 200a2020 20202020 7472616e 73666f72 . transfor │ │ │ │ - 0x00d40150 6d656441 78697350 6f73203d 2063616c medAxisPos = cal │ │ │ │ - 0x00d40160 634c696e 65547261 6e73666f 726d6564 cLineTransformed │ │ │ │ - 0x00d40170 41786973 506f7328 7472616e 73666f72 AxisPos(transfor │ │ │ │ - 0x00d40180 6d656441 78697350 6f732c20 615f706f medAxisPos, a_po │ │ │ │ - 0x00d40190 73697469 6f6e2e78 79202b20 6e6f726d sition.xy + norm │ │ │ │ - 0x00d401a0 616c2c20 0a202020 20202020 20202020 al, . │ │ │ │ - 0x00d401b0 20202020 20202020 20202020 20202020 │ │ │ │ - 0x00d401c0 20202020 20202020 20202020 20202020 │ │ │ │ - 0x00d401d0 20202020 20202020 20202075 5f6d6f64 u_mod │ │ │ │ - 0x00d401e0 656c5669 65772c20 68616c66 57696474 elView, halfWidt │ │ │ │ - 0x00d401f0 68293b20 0a202020 207d200a 20202369 h); . } . #i │ │ │ │ - 0x00d40200 66646566 20454e41 424c455f 56544620 fdef ENABLE_VTF │ │ │ │ - 0x00d40210 0a202020 20765f63 6f6c6f72 203d2074 . v_color = t │ │ │ │ - 0x00d40220 65787475 72652875 5f636f6c 6f725465 exture(u_colorTe │ │ │ │ - 0x00d40230 782c2061 5f636f6c 6f725465 78436f6f x, a_colorTexCoo │ │ │ │ - 0x00d40240 7264293b 200a2020 23656c73 65200a20 rd); . #else . │ │ │ │ - 0x00d40250 20202076 5f636f6c 6f725465 78436f6f v_colorTexCoo │ │ │ │ - 0x00d40260 7264203d 20615f63 6f6c6f72 54657843 rd = a_colorTexC │ │ │ │ - 0x00d40270 6f6f7264 3b200a20 2023656e 64696620 oord; . #endif │ │ │ │ - 0x00d40280 0a202020 20766563 3420706f 73203d20 . vec4 pos = │ │ │ │ - 0x00d40290 76656334 28747261 6e73666f 726d6564 vec4(transformed │ │ │ │ - 0x00d402a0 41786973 506f732c 20615f70 6f736974 AxisPos, a_posit │ │ │ │ - 0x00d402b0 696f6e2e 7a2c2031 2e302920 2a20755f ion.z, 1.0) * u_ │ │ │ │ - 0x00d402c0 70726f6a 65637469 6f6e3b20 0a202020 projection; . │ │ │ │ - 0x00d402d0 20676c5f 506f7369 74696f6e 203d2061 gl_Position = a │ │ │ │ - 0x00d402e0 70706c79 5069766f 74547261 6e73666f pplyPivotTransfo │ │ │ │ - 0x00d402f0 726d2870 6f732c20 755f7069 766f7454 rm(pos, u_pivotT │ │ │ │ - 0x00d40300 72616e73 666f726d 2c20302e 30293b20 ransform, 0.0); │ │ │ │ - 0x00d40310 0a20207d 200a0000 00000000 00000000 . } ........... │ │ │ │ - 0x00d40320 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d40330 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d40340 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d40350 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d40360 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d40370 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d40380 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d40390 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d403a0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d403b0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d403c0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d403d0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d403e0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d403f0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d40400 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d40410 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d40420 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d40430 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d40440 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d40450 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d40460 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d40470 63322076 5f636f6c 6f725465 78436f6f c2 v_colorTexCoo │ │ │ │ - 0x00d40480 7264733b 200a2020 696e2076 65633220 rds; . in vec2 │ │ │ │ - 0x00d40490 765f6d61 736b5465 78436f6f 7264733b v_maskTexCoords; │ │ │ │ - 0x00d404a0 200a2020 6f757420 76656334 20765f46 . out vec4 v_F │ │ │ │ - 0x00d404b0 72616743 6f6c6f72 3b200a20 20756e69 ragColor; . uni │ │ │ │ - 0x00d404c0 666f726d 206d6174 3420755f 6d6f6465 form mat4 u_mode │ │ │ │ - 0x00d404d0 6c566965 773b200a 2020756e 69666f72 lView; . unifor │ │ │ │ - 0x00d404e0 6d206d61 74342075 5f70726f 6a656374 m mat4 u_project │ │ │ │ - 0x00d404f0 696f6e3b 200a2020 756e6966 6f726d20 ion; . uniform │ │ │ │ - 0x00d40500 6d617434 20755f70 69766f74 5472616e mat4 u_pivotTran │ │ │ │ - 0x00d40510 73666f72 6d3b200a 2020756e 69666f72 sform; . unifor │ │ │ │ - 0x00d40520 6d207665 63322075 5f636f6e 74726173 m vec2 u_contras │ │ │ │ - 0x00d40530 7447616d 6d613b20 0a202075 6e69666f tGamma; . unifo │ │ │ │ - 0x00d40540 726d2066 6c6f6174 20755f6f 70616369 rm float u_opaci │ │ │ │ - 0x00d40550 74793b20 0a202075 6e69666f 726d2066 ty; . uniform f │ │ │ │ - 0x00d40560 6c6f6174 20755f7a 5363616c 653b200a loat u_zScale; . │ │ │ │ - 0x00d40570 2020756e 69666f72 6d20666c 6f617420 uniform float │ │ │ │ - 0x00d40580 755f696e 74657270 6f6c6174 696f6e3b u_interpolation; │ │ │ │ - 0x00d40590 200a2020 756e6966 6f726d20 666c6f61 . uniform floa │ │ │ │ - 0x00d405a0 7420755f 69734f75 746c696e 65506173 t u_isOutlinePas │ │ │ │ - 0x00d405b0 733b200a 2020756e 69666f72 6d207361 s; . uniform sa │ │ │ │ - 0x00d405c0 6d706c65 72324420 755f636f 6c6f7254 mpler2D u_colorT │ │ │ │ - 0x00d405d0 65783b20 0a202075 6e69666f 726d2073 ex; . uniform s │ │ │ │ - 0x00d405e0 616d706c 65723244 20755f6d 61736b54 ampler2D u_maskT │ │ │ │ - 0x00d405f0 65783b20 0a202063 6f6e7374 20666c6f ex; . const flo │ │ │ │ - 0x00d40600 6174206b 53686170 65436f6f 72645363 at kShapeCoordSc │ │ │ │ - 0x00d40610 616c6172 203d2031 3030302e 303b200a alar = 1000.0; . │ │ │ │ - 0x00d40620 2020766f 6964206d 61696e28 29200a20 void main() . │ │ │ │ - 0x00d40630 207b200a 20202020 76656334 2066696e { . vec4 fin │ │ │ │ - 0x00d40640 616c436f 6c6f7220 3d207465 78747572 alColor = textur │ │ │ │ - 0x00d40650 6528755f 636f6c6f 72546578 2c20765f e(u_colorTex, v_ │ │ │ │ - 0x00d40660 636f6c6f 72546578 436f6f72 64732920 colorTexCoords) │ │ │ │ - 0x00d40670 2a207465 78747572 6528755f 6d61736b * texture(u_mask │ │ │ │ - 0x00d40680 5465782c 20765f6d 61736b54 6578436f Tex, v_maskTexCo │ │ │ │ - 0x00d40690 6f726473 293b200a 20202020 66696e61 ords); . fina │ │ │ │ - 0x00d406a0 6c436f6c 6f722e61 202a3d20 755f6f70 lColor.a *= u_op │ │ │ │ - 0x00d406b0 61636974 793b200a 20202020 765f4672 acity; . v_Fr │ │ │ │ - 0x00d406c0 6167436f 6c6f7220 3d206669 6e616c43 agColor = finalC │ │ │ │ - 0x00d406d0 6f6c6f72 3b200a20 207d200a 00000000 olor; . } ..... │ │ │ │ - 0x00d406e0 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d406f0 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d40700 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d40710 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d40720 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d40730 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d40740 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d40750 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d40760 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d40770 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d40780 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d40790 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d407a0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d407b0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d407c0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d407d0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d407e0 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d407f0 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d40800 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d40810 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d40820 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d40830 63342061 5f706f73 6974696f 6e3b200a c4 a_position; . │ │ │ │ - 0x00d40840 2020696e 20766563 3220615f 6e6f726d in vec2 a_norm │ │ │ │ - 0x00d40850 616c3b20 0a202069 6e207665 63322061 al; . in vec2 a │ │ │ │ - 0x00d40860 5f636f6c 6f725465 78436f6f 7264733b _colorTexCoords; │ │ │ │ - 0x00d40870 200a2020 696e2076 65633220 615f6d61 . in vec2 a_ma │ │ │ │ - 0x00d40880 736b5465 78436f6f 7264733b 200a2020 skTexCoords; . │ │ │ │ - 0x00d40890 6f757420 76656332 20765f63 6f6c6f72 out vec2 v_color │ │ │ │ - 0x00d408a0 54657843 6f6f7264 733b200a 20206f75 TexCoords; . ou │ │ │ │ - 0x00d408b0 74207665 63322076 5f6d6173 6b546578 t vec2 v_maskTex │ │ │ │ - 0x00d408c0 436f6f72 64733b20 0a202075 6e69666f Coords; . unifo │ │ │ │ - 0x00d408d0 726d206d 61743420 755f6d6f 64656c56 rm mat4 u_modelV │ │ │ │ - 0x00d408e0 6965773b 200a2020 756e6966 6f726d20 iew; . uniform │ │ │ │ - 0x00d408f0 6d617434 20755f70 726f6a65 6374696f mat4 u_projectio │ │ │ │ - 0x00d40900 6e3b200a 2020756e 69666f72 6d206d61 n; . uniform ma │ │ │ │ - 0x00d40910 74342075 5f706976 6f745472 616e7366 t4 u_pivotTransf │ │ │ │ - 0x00d40920 6f726d3b 200a2020 756e6966 6f726d20 orm; . uniform │ │ │ │ - 0x00d40930 76656332 20755f63 6f6e7472 61737447 vec2 u_contrastG │ │ │ │ - 0x00d40940 616d6d61 3b200a20 20756e69 666f726d amma; . uniform │ │ │ │ - 0x00d40950 20666c6f 61742075 5f6f7061 63697479 float u_opacity │ │ │ │ - 0x00d40960 3b200a20 20756e69 666f726d 20666c6f ; . uniform flo │ │ │ │ - 0x00d40970 61742075 5f7a5363 616c653b 200a2020 at u_zScale; . │ │ │ │ - 0x00d40980 756e6966 6f726d20 666c6f61 7420755f uniform float u_ │ │ │ │ - 0x00d40990 696e7465 72706f6c 6174696f 6e3b200a interpolation; . │ │ │ │ - 0x00d409a0 2020756e 69666f72 6d20666c 6f617420 uniform float │ │ │ │ - 0x00d409b0 755f6973 4f75746c 696e6550 6173733b u_isOutlinePass; │ │ │ │ - 0x00d409c0 200a2020 636f6e73 7420666c 6f617420 . const float │ │ │ │ - 0x00d409d0 6b536861 7065436f 6f726453 63616c61 kShapeCoordScala │ │ │ │ - 0x00d409e0 72203d20 31303030 2e303b20 0a202076 r = 1000.0; . v │ │ │ │ - 0x00d409f0 65633420 6170706c 79506976 6f745472 ec4 applyPivotTr │ │ │ │ - 0x00d40a00 616e7366 6f726d28 76656334 20706976 ansform(vec4 piv │ │ │ │ - 0x00d40a10 6f742c20 6d617434 20706976 6f745472 ot, mat4 pivotTr │ │ │ │ - 0x00d40a20 616e7366 6f726d2c 20666c6f 61742070 ansform, float p │ │ │ │ - 0x00d40a30 69766f74 5265616c 5a29200a 20207b20 ivotRealZ) . { │ │ │ │ - 0x00d40a40 0a202020 20766563 34207472 616e7366 . vec4 transf │ │ │ │ - 0x00d40a50 6f726d65 64506976 6f74203d 20706976 ormedPivot = piv │ │ │ │ - 0x00d40a60 6f743b20 0a202020 20666c6f 61742077 ot; . float w │ │ │ │ - 0x00d40a70 203d2074 72616e73 666f726d 65645069 = transformedPi │ │ │ │ - 0x00d40a80 766f742e 773b200a 20202020 7472616e vot.w; . tran │ │ │ │ - 0x00d40a90 73666f72 6d656450 69766f74 2e787977 sformedPivot.xyw │ │ │ │ - 0x00d40aa0 203d2028 7069766f 74547261 6e73666f = (pivotTransfo │ │ │ │ - 0x00d40ab0 726d202a 20766563 34287472 616e7366 rm * vec4(transf │ │ │ │ - 0x00d40ac0 6f726d65 64506976 6f742e78 792c2070 ormedPivot.xy, p │ │ │ │ - 0x00d40ad0 69766f74 5265616c 5a2c2077 29292e78 ivotRealZ, w)).x │ │ │ │ - 0x00d40ae0 79773b20 0a202020 20747261 6e73666f yw; . transfo │ │ │ │ - 0x00d40af0 726d6564 5069766f 742e7a20 2a3d2074 rmedPivot.z *= t │ │ │ │ - 0x00d40b00 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ - 0x00d40b10 77202f20 773b200a 20202369 66646566 w / w; . #ifdef │ │ │ │ - 0x00d40b20 2056554c 4b414e20 0a202020 20747261 VULKAN . tra │ │ │ │ - 0x00d40b30 6e73666f 726d6564 5069766f 742e7920 nsformedPivot.y │ │ │ │ - 0x00d40b40 3d202d74 72616e73 666f726d 65645069 = -transformedPi │ │ │ │ - 0x00d40b50 766f742e 793b200a 20202020 7472616e vot.y; . tran │ │ │ │ - 0x00d40b60 73666f72 6d656450 69766f74 2e7a203d sformedPivot.z = │ │ │ │ - 0x00d40b70 20287472 616e7366 6f726d65 64506976 (transformedPiv │ │ │ │ - 0x00d40b80 6f742e7a 20202b20 7472616e 73666f72 ot.z + transfor │ │ │ │ - 0x00d40b90 6d656450 69766f74 2e772920 2f20322e medPivot.w) / 2. │ │ │ │ - 0x00d40ba0 303b200a 20202365 6e646966 200a2020 0; . #endif . │ │ │ │ - 0x00d40bb0 20207265 7475726e 20747261 6e73666f return transfo │ │ │ │ - 0x00d40bc0 726d6564 5069766f 743b200a 20207d20 rmedPivot; . } │ │ │ │ - 0x00d40bd0 0a202076 65633420 6170706c 7942696c . vec4 applyBil │ │ │ │ - 0x00d40be0 6c626f61 72645069 766f7454 72616e73 lboardPivotTrans │ │ │ │ - 0x00d40bf0 666f726d 28766563 34207069 766f742c form(vec4 pivot, │ │ │ │ - 0x00d40c00 206d6174 34207069 766f7454 72616e73 mat4 pivotTrans │ │ │ │ - 0x00d40c10 666f726d 2c20666c 6f617420 7069766f form, float pivo │ │ │ │ - 0x00d40c20 74526561 6c5a2c20 76656332 206f6666 tRealZ, vec2 off │ │ │ │ - 0x00d40c30 73657429 200a2020 7b200a20 20202066 set) . { . f │ │ │ │ - 0x00d40c40 6c6f6174 206c6f67 69635a20 3d207069 loat logicZ = pi │ │ │ │ - 0x00d40c50 766f742e 7a202f20 7069766f 742e773b vot.z / pivot.w; │ │ │ │ - 0x00d40c60 200a2020 20207665 63342074 72616e73 . vec4 trans │ │ │ │ - 0x00d40c70 666f726d 65645069 766f7420 3d207069 formedPivot = pi │ │ │ │ - 0x00d40c80 766f7454 72616e73 666f726d 202a2076 votTransform * v │ │ │ │ - 0x00d40c90 65633428 7069766f 742e7879 2c207069 ec4(pivot.xy, pi │ │ │ │ - 0x00d40ca0 766f7452 65616c5a 2c207069 766f742e votRealZ, pivot. │ │ │ │ - 0x00d40cb0 77293b20 0a202020 20766563 34207363 w); . vec4 sc │ │ │ │ - 0x00d40cc0 616c6520 3d207069 766f7454 72616e73 ale = pivotTrans │ │ │ │ - 0x00d40cd0 666f726d 202a2076 65633428 312e302c form * vec4(1.0, │ │ │ │ - 0x00d40ce0 202d312e 302c2030 2e302c20 312e3029 -1.0, 0.0, 1.0) │ │ │ │ - 0x00d40cf0 3b200a20 20202076 65633420 706f7369 ; . vec4 posi │ │ │ │ - 0x00d40d00 74696f6e 203d2076 65633428 7472616e tion = vec4(tran │ │ │ │ - 0x00d40d10 73666f72 6d656450 69766f74 2e787920 sformedPivot.xy │ │ │ │ - 0x00d40d20 2f207472 616e7366 6f726d65 64506976 / transformedPiv │ │ │ │ - 0x00d40d30 6f742e77 2c206c6f 6769635a 2c20312e ot.w, logicZ, 1. │ │ │ │ - 0x00d40d40 3029202b 20766563 34286f66 66736574 0) + vec4(offset │ │ │ │ - 0x00d40d50 202f2073 63616c65 2e77202a 20736361 / scale.w * sca │ │ │ │ - 0x00d40d60 6c652e78 2c20302e 302c2030 2e30293b le.x, 0.0, 0.0); │ │ │ │ - 0x00d40d70 200a2020 23696664 65662056 554c4b41 . #ifdef VULKA │ │ │ │ - 0x00d40d80 4e200a20 20202070 6f736974 696f6e2e N . position. │ │ │ │ - 0x00d40d90 79203d20 2d706f73 6974696f 6e2e793b y = -position.y; │ │ │ │ - 0x00d40da0 200a2020 2020706f 73697469 6f6e2e7a . position.z │ │ │ │ - 0x00d40db0 203d2028 706f7369 74696f6e 2e7a2020 = (position.z │ │ │ │ - 0x00d40dc0 2b20706f 73697469 6f6e2e77 29202f20 + position.w) / │ │ │ │ - 0x00d40dd0 322e303b 200a2020 23656e64 6966200a 2.0; . #endif . │ │ │ │ - 0x00d40de0 20202020 72657475 726e2070 6f736974 return posit │ │ │ │ - 0x00d40df0 696f6e3b 200a2020 7d200a20 20766563 ion; . } . vec │ │ │ │ - 0x00d40e00 32206361 6c634c69 6e655472 616e7366 2 calcLineTransf │ │ │ │ - 0x00d40e10 6f726d65 64417869 73506f73 28766563 ormedAxisPos(vec │ │ │ │ - 0x00d40e20 32206f72 6967696e 616c4178 6973506f 2 originalAxisPo │ │ │ │ - 0x00d40e30 732c2076 65633220 73686966 74656450 s, vec2 shiftedP │ │ │ │ - 0x00d40e40 6f732c20 6d617434 206d6f64 656c5669 os, mat4 modelVi │ │ │ │ - 0x00d40e50 65772c20 666c6f61 74206861 6c665769 ew, float halfWi │ │ │ │ - 0x00d40e60 64746829 200a2020 7b200a20 20202076 dth) . { . v │ │ │ │ - 0x00d40e70 65633220 70203d20 28766563 34287368 ec2 p = (vec4(sh │ │ │ │ - 0x00d40e80 69667465 64506f73 2c20302e 302c2031 iftedPos, 0.0, 1 │ │ │ │ - 0x00d40e90 2e302920 2a206d6f 64656c56 69657729 .0) * modelView) │ │ │ │ - 0x00d40ea0 2e78793b 200a2020 20207665 63322064 .xy; . vec2 d │ │ │ │ - 0x00d40eb0 203d2070 202d206f 72696769 6e616c41 = p - originalA │ │ │ │ - 0x00d40ec0 78697350 6f733b20 0a202020 20696620 xisPos; . if │ │ │ │ - 0x00d40ed0 28646f74 28642c20 64292021 3d20302e (dot(d, d) != 0. │ │ │ │ - 0x00d40ee0 3029200a 20202020 20207265 7475726e 0) . return │ │ │ │ - 0x00d40ef0 206f7269 67696e61 6c417869 73506f73 originalAxisPos │ │ │ │ - 0x00d40f00 202b206e 6f726d61 6c697a65 28642920 + normalize(d) │ │ │ │ - 0x00d40f10 2a206861 6c665769 6474683b 200a2020 * halfWidth; . │ │ │ │ - 0x00d40f20 2020656c 7365200a 20202020 20207265 else . re │ │ │ │ - 0x00d40f30 7475726e 206f7269 67696e61 6c417869 turn originalAxi │ │ │ │ - 0x00d40f40 73506f73 3b200a20 207d200a 2020766f sPos; . } . vo │ │ │ │ - 0x00d40f50 6964206d 61696e28 29200a20 207b200a id main() . { . │ │ │ │ - 0x00d40f60 20202020 76656334 20706f73 203d2076 vec4 pos = v │ │ │ │ - 0x00d40f70 65633428 615f706f 73697469 6f6e2e78 ec4(a_position.x │ │ │ │ - 0x00d40f80 797a2c20 3129202a 20755f6d 6f64656c yz, 1) * u_model │ │ │ │ - 0x00d40f90 56696577 3b200a20 20202076 65633420 View; . vec4 │ │ │ │ - 0x00d40fa0 73686966 74656450 6f73203d 20766563 shiftedPos = vec │ │ │ │ - 0x00d40fb0 3428615f 6e6f726d 616c2c20 302c2030 4(a_normal, 0, 0 │ │ │ │ - 0x00d40fc0 29202b20 706f733b 200a2020 2020676c ) + pos; . gl │ │ │ │ - 0x00d40fd0 5f506f73 6974696f 6e203d20 6170706c _Position = appl │ │ │ │ - 0x00d40fe0 79506976 6f745472 616e7366 6f726d28 yPivotTransform( │ │ │ │ - 0x00d40ff0 73686966 74656450 6f73202a 20755f70 shiftedPos * u_p │ │ │ │ - 0x00d41000 726f6a65 6374696f 6e2c2075 5f706976 rojection, u_piv │ │ │ │ - 0x00d41010 6f745472 616e7366 6f726d2c 20302e30 otTransform, 0.0 │ │ │ │ - 0x00d41020 293b200a 20202020 765f636f 6c6f7254 ); . v_colorT │ │ │ │ - 0x00d41030 6578436f 6f726473 203d2061 5f636f6c exCoords = a_col │ │ │ │ - 0x00d41040 6f725465 78436f6f 7264733b 200a2020 orTexCoords; . │ │ │ │ - 0x00d41050 2020765f 6d61736b 54657843 6f6f7264 v_maskTexCoord │ │ │ │ - 0x00d41060 73203d20 615f6d61 736b5465 78436f6f s = a_maskTexCoo │ │ │ │ - 0x00d41070 7264733b 200a2020 7d200a00 00000000 rds; . } ...... │ │ │ │ - 0x00d41080 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d41090 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d410a0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d410b0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d410c0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d410d0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d410e0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d410f0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d41100 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d41110 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d41120 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d41130 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d41140 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d41150 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d41160 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d41170 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d41180 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d41190 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d411a0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d411b0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d411c0 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d411d0 63342061 5f706f73 6974696f 6e3b200a c4 a_position; . │ │ │ │ - 0x00d411e0 2020696e 20766563 3220615f 6e6f726d in vec2 a_norm │ │ │ │ - 0x00d411f0 616c3b20 0a202069 6e207665 63322061 al; . in vec2 a │ │ │ │ - 0x00d41200 5f636f6c 6f725465 78436f6f 7264733b _colorTexCoords; │ │ │ │ - 0x00d41210 200a2020 696e2076 65633220 615f6d61 . in vec2 a_ma │ │ │ │ - 0x00d41220 736b5465 78436f6f 7264733b 200a2020 skTexCoords; . │ │ │ │ - 0x00d41230 6f757420 76656332 20765f63 6f6c6f72 out vec2 v_color │ │ │ │ - 0x00d41240 54657843 6f6f7264 733b200a 20206f75 TexCoords; . ou │ │ │ │ - 0x00d41250 74207665 63322076 5f6d6173 6b546578 t vec2 v_maskTex │ │ │ │ - 0x00d41260 436f6f72 64733b20 0a202075 6e69666f Coords; . unifo │ │ │ │ - 0x00d41270 726d206d 61743420 755f6d6f 64656c56 rm mat4 u_modelV │ │ │ │ - 0x00d41280 6965773b 200a2020 756e6966 6f726d20 iew; . uniform │ │ │ │ - 0x00d41290 6d617434 20755f70 726f6a65 6374696f mat4 u_projectio │ │ │ │ - 0x00d412a0 6e3b200a 2020756e 69666f72 6d206d61 n; . uniform ma │ │ │ │ - 0x00d412b0 74342075 5f706976 6f745472 616e7366 t4 u_pivotTransf │ │ │ │ - 0x00d412c0 6f726d3b 200a2020 756e6966 6f726d20 orm; . uniform │ │ │ │ - 0x00d412d0 76656332 20755f63 6f6e7472 61737447 vec2 u_contrastG │ │ │ │ - 0x00d412e0 616d6d61 3b200a20 20756e69 666f726d amma; . uniform │ │ │ │ - 0x00d412f0 20666c6f 61742075 5f6f7061 63697479 float u_opacity │ │ │ │ - 0x00d41300 3b200a20 20756e69 666f726d 20666c6f ; . uniform flo │ │ │ │ - 0x00d41310 61742075 5f7a5363 616c653b 200a2020 at u_zScale; . │ │ │ │ - 0x00d41320 756e6966 6f726d20 666c6f61 7420755f uniform float u_ │ │ │ │ - 0x00d41330 696e7465 72706f6c 6174696f 6e3b200a interpolation; . │ │ │ │ - 0x00d41340 2020756e 69666f72 6d20666c 6f617420 uniform float │ │ │ │ - 0x00d41350 755f6973 4f75746c 696e6550 6173733b u_isOutlinePass; │ │ │ │ - 0x00d41360 200a2020 636f6e73 7420666c 6f617420 . const float │ │ │ │ - 0x00d41370 6b536861 7065436f 6f726453 63616c61 kShapeCoordScala │ │ │ │ - 0x00d41380 72203d20 31303030 2e303b20 0a202076 r = 1000.0; . v │ │ │ │ - 0x00d41390 65633420 6170706c 79506976 6f745472 ec4 applyPivotTr │ │ │ │ - 0x00d413a0 616e7366 6f726d28 76656334 20706976 ansform(vec4 piv │ │ │ │ - 0x00d413b0 6f742c20 6d617434 20706976 6f745472 ot, mat4 pivotTr │ │ │ │ - 0x00d413c0 616e7366 6f726d2c 20666c6f 61742070 ansform, float p │ │ │ │ - 0x00d413d0 69766f74 5265616c 5a29200a 20207b20 ivotRealZ) . { │ │ │ │ - 0x00d413e0 0a202020 20766563 34207472 616e7366 . vec4 transf │ │ │ │ - 0x00d413f0 6f726d65 64506976 6f74203d 20706976 ormedPivot = piv │ │ │ │ - 0x00d41400 6f743b20 0a202020 20666c6f 61742077 ot; . float w │ │ │ │ - 0x00d41410 203d2074 72616e73 666f726d 65645069 = transformedPi │ │ │ │ - 0x00d41420 766f742e 773b200a 20202020 7472616e vot.w; . tran │ │ │ │ - 0x00d41430 73666f72 6d656450 69766f74 2e787977 sformedPivot.xyw │ │ │ │ - 0x00d41440 203d2028 7069766f 74547261 6e73666f = (pivotTransfo │ │ │ │ - 0x00d41450 726d202a 20766563 34287472 616e7366 rm * vec4(transf │ │ │ │ - 0x00d41460 6f726d65 64506976 6f742e78 792c2070 ormedPivot.xy, p │ │ │ │ - 0x00d41470 69766f74 5265616c 5a2c2077 29292e78 ivotRealZ, w)).x │ │ │ │ - 0x00d41480 79773b20 0a202020 20747261 6e73666f yw; . transfo │ │ │ │ - 0x00d41490 726d6564 5069766f 742e7a20 2a3d2074 rmedPivot.z *= t │ │ │ │ - 0x00d414a0 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ - 0x00d414b0 77202f20 773b200a 20202369 66646566 w / w; . #ifdef │ │ │ │ - 0x00d414c0 2056554c 4b414e20 0a202020 20747261 VULKAN . tra │ │ │ │ - 0x00d414d0 6e73666f 726d6564 5069766f 742e7920 nsformedPivot.y │ │ │ │ - 0x00d414e0 3d202d74 72616e73 666f726d 65645069 = -transformedPi │ │ │ │ - 0x00d414f0 766f742e 793b200a 20202020 7472616e vot.y; . tran │ │ │ │ - 0x00d41500 73666f72 6d656450 69766f74 2e7a203d sformedPivot.z = │ │ │ │ - 0x00d41510 20287472 616e7366 6f726d65 64506976 (transformedPiv │ │ │ │ - 0x00d41520 6f742e7a 20202b20 7472616e 73666f72 ot.z + transfor │ │ │ │ - 0x00d41530 6d656450 69766f74 2e772920 2f20322e medPivot.w) / 2. │ │ │ │ - 0x00d41540 303b200a 20202365 6e646966 200a2020 0; . #endif . │ │ │ │ - 0x00d41550 20207265 7475726e 20747261 6e73666f return transfo │ │ │ │ - 0x00d41560 726d6564 5069766f 743b200a 20207d20 rmedPivot; . } │ │ │ │ - 0x00d41570 0a202076 65633420 6170706c 7942696c . vec4 applyBil │ │ │ │ - 0x00d41580 6c626f61 72645069 766f7454 72616e73 lboardPivotTrans │ │ │ │ - 0x00d41590 666f726d 28766563 34207069 766f742c form(vec4 pivot, │ │ │ │ - 0x00d415a0 206d6174 34207069 766f7454 72616e73 mat4 pivotTrans │ │ │ │ - 0x00d415b0 666f726d 2c20666c 6f617420 7069766f form, float pivo │ │ │ │ - 0x00d415c0 74526561 6c5a2c20 76656332 206f6666 tRealZ, vec2 off │ │ │ │ - 0x00d415d0 73657429 200a2020 7b200a20 20202066 set) . { . f │ │ │ │ - 0x00d415e0 6c6f6174 206c6f67 69635a20 3d207069 loat logicZ = pi │ │ │ │ - 0x00d415f0 766f742e 7a202f20 7069766f 742e773b vot.z / pivot.w; │ │ │ │ - 0x00d41600 200a2020 20207665 63342074 72616e73 . vec4 trans │ │ │ │ - 0x00d41610 666f726d 65645069 766f7420 3d207069 formedPivot = pi │ │ │ │ - 0x00d41620 766f7454 72616e73 666f726d 202a2076 votTransform * v │ │ │ │ - 0x00d41630 65633428 7069766f 742e7879 2c207069 ec4(pivot.xy, pi │ │ │ │ - 0x00d41640 766f7452 65616c5a 2c207069 766f742e votRealZ, pivot. │ │ │ │ - 0x00d41650 77293b20 0a202020 20766563 34207363 w); . vec4 sc │ │ │ │ - 0x00d41660 616c6520 3d207069 766f7454 72616e73 ale = pivotTrans │ │ │ │ - 0x00d41670 666f726d 202a2076 65633428 312e302c form * vec4(1.0, │ │ │ │ - 0x00d41680 202d312e 302c2030 2e302c20 312e3029 -1.0, 0.0, 1.0) │ │ │ │ - 0x00d41690 3b200a20 20202076 65633420 706f7369 ; . vec4 posi │ │ │ │ - 0x00d416a0 74696f6e 203d2076 65633428 7472616e tion = vec4(tran │ │ │ │ - 0x00d416b0 73666f72 6d656450 69766f74 2e787920 sformedPivot.xy │ │ │ │ - 0x00d416c0 2f207472 616e7366 6f726d65 64506976 / transformedPiv │ │ │ │ - 0x00d416d0 6f742e77 2c206c6f 6769635a 2c20312e ot.w, logicZ, 1. │ │ │ │ - 0x00d416e0 3029202b 20766563 34286f66 66736574 0) + vec4(offset │ │ │ │ - 0x00d416f0 202f2073 63616c65 2e77202a 20736361 / scale.w * sca │ │ │ │ - 0x00d41700 6c652e78 2c20302e 302c2030 2e30293b le.x, 0.0, 0.0); │ │ │ │ - 0x00d41710 200a2020 23696664 65662056 554c4b41 . #ifdef VULKA │ │ │ │ - 0x00d41720 4e200a20 20202070 6f736974 696f6e2e N . position. │ │ │ │ - 0x00d41730 79203d20 2d706f73 6974696f 6e2e793b y = -position.y; │ │ │ │ - 0x00d41740 200a2020 2020706f 73697469 6f6e2e7a . position.z │ │ │ │ - 0x00d41750 203d2028 706f7369 74696f6e 2e7a2020 = (position.z │ │ │ │ - 0x00d41760 2b20706f 73697469 6f6e2e77 29202f20 + position.w) / │ │ │ │ - 0x00d41770 322e303b 200a2020 23656e64 6966200a 2.0; . #endif . │ │ │ │ - 0x00d41780 20202020 72657475 726e2070 6f736974 return posit │ │ │ │ - 0x00d41790 696f6e3b 200a2020 7d200a20 20766563 ion; . } . vec │ │ │ │ - 0x00d417a0 32206361 6c634c69 6e655472 616e7366 2 calcLineTransf │ │ │ │ - 0x00d417b0 6f726d65 64417869 73506f73 28766563 ormedAxisPos(vec │ │ │ │ - 0x00d417c0 32206f72 6967696e 616c4178 6973506f 2 originalAxisPo │ │ │ │ - 0x00d417d0 732c2076 65633220 73686966 74656450 s, vec2 shiftedP │ │ │ │ - 0x00d417e0 6f732c20 6d617434 206d6f64 656c5669 os, mat4 modelVi │ │ │ │ - 0x00d417f0 65772c20 666c6f61 74206861 6c665769 ew, float halfWi │ │ │ │ - 0x00d41800 64746829 200a2020 7b200a20 20202076 dth) . { . v │ │ │ │ - 0x00d41810 65633220 70203d20 28766563 34287368 ec2 p = (vec4(sh │ │ │ │ - 0x00d41820 69667465 64506f73 2c20302e 302c2031 iftedPos, 0.0, 1 │ │ │ │ - 0x00d41830 2e302920 2a206d6f 64656c56 69657729 .0) * modelView) │ │ │ │ - 0x00d41840 2e78793b 200a2020 20207665 63322064 .xy; . vec2 d │ │ │ │ - 0x00d41850 203d2070 202d206f 72696769 6e616c41 = p - originalA │ │ │ │ - 0x00d41860 78697350 6f733b20 0a202020 20696620 xisPos; . if │ │ │ │ - 0x00d41870 28646f74 28642c20 64292021 3d20302e (dot(d, d) != 0. │ │ │ │ - 0x00d41880 3029200a 20202020 20207265 7475726e 0) . return │ │ │ │ - 0x00d41890 206f7269 67696e61 6c417869 73506f73 originalAxisPos │ │ │ │ - 0x00d418a0 202b206e 6f726d61 6c697a65 28642920 + normalize(d) │ │ │ │ - 0x00d418b0 2a206861 6c665769 6474683b 200a2020 * halfWidth; . │ │ │ │ - 0x00d418c0 2020656c 7365200a 20202020 20207265 else . re │ │ │ │ - 0x00d418d0 7475726e 206f7269 67696e61 6c417869 turn originalAxi │ │ │ │ - 0x00d418e0 73506f73 3b200a20 207d200a 2020766f sPos; . } . vo │ │ │ │ - 0x00d418f0 6964206d 61696e28 29200a20 207b200a id main() . { . │ │ │ │ - 0x00d41900 20202020 76656334 20706976 6f74203d vec4 pivot = │ │ │ │ - 0x00d41910 20766563 3428615f 706f7369 74696f6e vec4(a_position │ │ │ │ - 0x00d41920 2e78797a 2c20312e 3029202a 20755f6d .xyz, 1.0) * u_m │ │ │ │ - 0x00d41930 6f64656c 56696577 3b200a20 20202076 odelView; . v │ │ │ │ - 0x00d41940 65633420 6f666673 6574203d 20766563 ec4 offset = vec │ │ │ │ - 0x00d41950 3428615f 6e6f726d 616c2c20 302e302c 4(a_normal, 0.0, │ │ │ │ - 0x00d41960 20302e30 29202a20 755f7072 6f6a6563 0.0) * u_projec │ │ │ │ - 0x00d41970 74696f6e 3b200a20 20202067 6c5f506f tion; . gl_Po │ │ │ │ - 0x00d41980 73697469 6f6e203d 20617070 6c794269 sition = applyBi │ │ │ │ - 0x00d41990 6c6c626f 61726450 69766f74 5472616e llboardPivotTran │ │ │ │ - 0x00d419a0 73666f72 6d287069 766f7420 2a20755f sform(pivot * u_ │ │ │ │ - 0x00d419b0 70726f6a 65637469 6f6e2c20 755f7069 projection, u_pi │ │ │ │ - 0x00d419c0 766f7454 72616e73 666f726d 2c200a20 votTransform, . │ │ │ │ - 0x00d419d0 20202020 20202020 20202020 20202020 │ │ │ │ - 0x00d419e0 20202020 20202020 20202020 20202020 │ │ │ │ - 0x00d419f0 20202020 20202020 20202020 2020615f a_ │ │ │ │ - 0x00d41a00 706f7369 74696f6e 2e77202a 20755f7a position.w * u_z │ │ │ │ - 0x00d41a10 5363616c 652c206f 66667365 742e7879 Scale, offset.xy │ │ │ │ - 0x00d41a20 293b200a 20202020 765f636f 6c6f7254 ); . v_colorT │ │ │ │ - 0x00d41a30 6578436f 6f726473 203d2061 5f636f6c exCoords = a_col │ │ │ │ - 0x00d41a40 6f725465 78436f6f 7264733b 200a2020 orTexCoords; . │ │ │ │ - 0x00d41a50 2020765f 6d61736b 54657843 6f6f7264 v_maskTexCoord │ │ │ │ - 0x00d41a60 73203d20 615f6d61 736b5465 78436f6f s = a_maskTexCoo │ │ │ │ - 0x00d41a70 7264733b 200a2020 7d200a00 00000000 rds; . } ...... │ │ │ │ - 0x00d41a80 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d41a90 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d41aa0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d41ab0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d41ac0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d41ad0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d41ae0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d41af0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d41b00 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d41b10 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d41b20 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d41b30 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d41b40 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d41b50 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d41b60 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d41b70 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d41b80 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d41b90 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d41ba0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d41bb0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d41bc0 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d41bd0 63322061 5f6e6f72 6d616c3b 200a2020 c2 a_normal; . │ │ │ │ - 0x00d41be0 696e2076 65633220 615f636f 6c6f7254 in vec2 a_colorT │ │ │ │ - 0x00d41bf0 6578436f 6f726473 3b200a20 206f7574 exCoords; . out │ │ │ │ - 0x00d41c00 20766563 3220765f 636f6c6f 72546578 vec2 v_colorTex │ │ │ │ - 0x00d41c10 436f6f72 64733b20 0a202075 6e69666f Coords; . unifo │ │ │ │ - 0x00d41c20 726d206d 61743420 755f6d6f 64656c56 rm mat4 u_modelV │ │ │ │ - 0x00d41c30 6965773b 200a2020 756e6966 6f726d20 iew; . uniform │ │ │ │ - 0x00d41c40 6d617434 20755f70 726f6a65 6374696f mat4 u_projectio │ │ │ │ - 0x00d41c50 6e3b200a 2020756e 69666f72 6d206d61 n; . uniform ma │ │ │ │ - 0x00d41c60 74342075 5f706976 6f745472 616e7366 t4 u_pivotTransf │ │ │ │ - 0x00d41c70 6f726d3b 200a2020 756e6966 6f726d20 orm; . uniform │ │ │ │ - 0x00d41c80 76656334 20755f70 6f736974 696f6e3b vec4 u_position; │ │ │ │ - 0x00d41c90 200a2020 756e6966 6f726d20 76656332 . uniform vec2 │ │ │ │ - 0x00d41ca0 20755f6c 696e6550 6172616d 733b200a u_lineParams; . │ │ │ │ - 0x00d41cb0 2020756e 69666f72 6d20666c 6f617420 uniform float │ │ │ │ - 0x00d41cc0 755f6163 63757261 63793b20 0a202075 u_accuracy; . u │ │ │ │ - 0x00d41cd0 6e69666f 726d2066 6c6f6174 20755f7a niform float u_z │ │ │ │ - 0x00d41ce0 5363616c 653b200a 2020756e 69666f72 Scale; . unifor │ │ │ │ - 0x00d41cf0 6d20666c 6f617420 755f6f70 61636974 m float u_opacit │ │ │ │ - 0x00d41d00 793b200a 2020756e 69666f72 6d20666c y; . uniform fl │ │ │ │ - 0x00d41d10 6f617420 755f617a 696d7574 3b200a20 oat u_azimut; . │ │ │ │ - 0x00d41d20 20636f6e 73742066 6c6f6174 206b5368 const float kSh │ │ │ │ - 0x00d41d30 61706543 6f6f7264 5363616c 6172203d apeCoordScalar = │ │ │ │ - 0x00d41d40 20313030 302e303b 200a2020 76656334 1000.0; . vec4 │ │ │ │ - 0x00d41d50 20617070 6c795069 766f7454 72616e73 applyPivotTrans │ │ │ │ - 0x00d41d60 666f726d 28766563 34207069 766f742c form(vec4 pivot, │ │ │ │ - 0x00d41d70 206d6174 34207069 766f7454 72616e73 mat4 pivotTrans │ │ │ │ - 0x00d41d80 666f726d 2c20666c 6f617420 7069766f form, float pivo │ │ │ │ - 0x00d41d90 74526561 6c5a2920 0a20207b 200a2020 tRealZ) . { . │ │ │ │ - 0x00d41da0 20207665 63342074 72616e73 666f726d vec4 transform │ │ │ │ - 0x00d41db0 65645069 766f7420 3d207069 766f743b edPivot = pivot; │ │ │ │ - 0x00d41dc0 200a2020 2020666c 6f617420 77203d20 . float w = │ │ │ │ + 0x00d37e10 63322076 5f636f6c 6f725465 78436f6f c2 v_colorTexCoo │ │ │ │ + 0x00d37e20 72643b20 0a202069 6e207665 63322076 rd; . in vec2 v │ │ │ │ + 0x00d37e30 5f6d6173 6b546578 436f6f72 643b200a _maskTexCoord; . │ │ │ │ + 0x00d37e40 2020696e 20666c6f 61742076 5f68616c in float v_hal │ │ │ │ + 0x00d37e50 664c656e 6774683b 200a2020 6f757420 fLength; . out │ │ │ │ + 0x00d37e60 76656334 20765f46 72616743 6f6c6f72 vec4 v_FragColor │ │ │ │ + 0x00d37e70 3b200a20 20756e69 666f726d 206d6174 ; . uniform mat │ │ │ │ + 0x00d37e80 3420755f 6d6f6465 6c566965 773b200a 4 u_modelView; . │ │ │ │ + 0x00d37e90 2020756e 69666f72 6d206d61 74342075 uniform mat4 u │ │ │ │ + 0x00d37ea0 5f70726f 6a656374 696f6e3b 200a2020 _projection; . │ │ │ │ + 0x00d37eb0 756e6966 6f726d20 6d617434 20755f70 uniform mat4 u_p │ │ │ │ + 0x00d37ec0 69766f74 5472616e 73666f72 6d3b200a ivotTransform; . │ │ │ │ + 0x00d37ed0 2020756e 69666f72 6d207665 63342075 uniform vec4 u │ │ │ │ + 0x00d37ee0 5f747261 66666963 50617261 6d733b20 _trafficParams; │ │ │ │ + 0x00d37ef0 0a202075 6e69666f 726d2076 65633420 . uniform vec4 │ │ │ │ + 0x00d37f00 755f6f75 746c696e 65436f6c 6f723b20 u_outlineColor; │ │ │ │ + 0x00d37f10 0a202075 6e69666f 726d2076 65633420 . uniform vec4 │ │ │ │ + 0x00d37f20 755f6c69 67687441 72726f77 436f6c6f u_lightArrowColo │ │ │ │ + 0x00d37f30 723b200a 2020756e 69666f72 6d207665 r; . uniform ve │ │ │ │ + 0x00d37f40 63342075 5f646172 6b417272 6f77436f c4 u_darkArrowCo │ │ │ │ + 0x00d37f50 6c6f723b 200a2020 756e6966 6f726d20 lor; . uniform │ │ │ │ + 0x00d37f60 666c6f61 7420755f 6f75746c 696e653b float u_outline; │ │ │ │ + 0x00d37f70 200a2020 756e6966 6f726d20 666c6f61 . uniform floa │ │ │ │ + 0x00d37f80 7420755f 6f706163 6974793b 200a2020 t u_opacity; . │ │ │ │ + 0x00d37f90 756e6966 6f726d20 73616d70 6c657232 uniform sampler2 │ │ │ │ + 0x00d37fa0 4420755f 636f6c6f 72546578 3b200a20 D u_colorTex; . │ │ │ │ + 0x00d37fb0 20756e69 666f726d 2073616d 706c6572 uniform sampler │ │ │ │ + 0x00d37fc0 32442075 5f6d6173 6b546578 3b200a20 2D u_maskTex; . │ │ │ │ + 0x00d37fd0 20636f6e 73742066 6c6f6174 206b416e const float kAn │ │ │ │ + 0x00d37fe0 7469616c 69617369 6e675468 72657368 tialiasingThresh │ │ │ │ + 0x00d37ff0 6f6c6420 3d20302e 39323b20 0a202063 old = 0.92; . c │ │ │ │ + 0x00d38000 6f6e7374 20666c6f 6174206b 4f75746c onst float kOutl │ │ │ │ + 0x00d38010 696e6554 68726573 686f6c64 31203d20 ineThreshold1 = │ │ │ │ + 0x00d38020 302e383b 200a2020 636f6e73 7420666c 0.8; . const fl │ │ │ │ + 0x00d38030 6f617420 6b4f7574 6c696e65 54687265 oat kOutlineThre │ │ │ │ + 0x00d38040 73686f6c 6432203d 20302e35 3b200a20 shold2 = 0.5; . │ │ │ │ + 0x00d38050 20636f6e 73742066 6c6f6174 206b4d61 const float kMa │ │ │ │ + 0x00d38060 736b4f70 61636974 79203d20 302e373b skOpacity = 0.7; │ │ │ │ + 0x00d38070 200a2020 636f6e73 7420666c 6f617420 . const float │ │ │ │ + 0x00d38080 6b536861 7065436f 6f726453 63616c61 kShapeCoordScala │ │ │ │ + 0x00d38090 72203d20 31303030 2e303b20 0a202076 r = 1000.0; . v │ │ │ │ + 0x00d380a0 6f696420 6d61696e 2829200a 20207b20 oid main() . { │ │ │ │ + 0x00d380b0 0a202020 20766563 3420636f 6c6f7220 . vec4 color │ │ │ │ + 0x00d380c0 3d207465 78747572 6528755f 636f6c6f = texture(u_colo │ │ │ │ + 0x00d380d0 72546578 2c20765f 636f6c6f 72546578 rTex, v_colorTex │ │ │ │ + 0x00d380e0 436f6f72 64293b20 0a202020 20666c6f Coord); . flo │ │ │ │ + 0x00d380f0 61742061 6c706861 436f6465 203d2063 at alphaCode = c │ │ │ │ + 0x00d38100 6f6c6f72 2e613b20 0a202020 20766563 olor.a; . vec │ │ │ │ + 0x00d38110 34206d61 736b203d 20746578 74757265 4 mask = texture │ │ │ │ + 0x00d38120 28755f6d 61736b54 65782c20 765f6d61 (u_maskTex, v_ma │ │ │ │ + 0x00d38130 736b5465 78436f6f 7264293b 200a2020 skTexCoord); . │ │ │ │ + 0x00d38140 2020636f 6c6f722e 61203d20 755f6f70 color.a = u_op │ │ │ │ + 0x00d38150 61636974 79202a20 28312e30 202d2073 acity * (1.0 - s │ │ │ │ + 0x00d38160 6d6f6f74 68737465 70286b41 6e746961 moothstep(kAntia │ │ │ │ + 0x00d38170 6c696173 696e6754 68726573 686f6c64 liasingThreshold │ │ │ │ + 0x00d38180 2c20312e 302c2061 62732876 5f68616c , 1.0, abs(v_hal │ │ │ │ + 0x00d38190 664c656e 67746829 29293b20 0a202020 fLength))); . │ │ │ │ + 0x00d381a0 20636f6c 6f722e72 6762203d 206d6978 color.rgb = mix │ │ │ │ + 0x00d381b0 28636f6c 6f722e72 67622c20 6d61736b (color.rgb, mask │ │ │ │ + 0x00d381c0 2e726762 202a206d 69782875 5f6c6967 .rgb * mix(u_lig │ │ │ │ + 0x00d381d0 68744172 726f7743 6f6c6f72 2e726762 htArrowColor.rgb │ │ │ │ + 0x00d381e0 2c20755f 6461726b 4172726f 77436f6c , u_darkArrowCol │ │ │ │ + 0x00d381f0 6f722e72 67622c20 73746570 28616c70 or.rgb, step(alp │ │ │ │ + 0x00d38200 6861436f 64652c20 302e3629 292c206d haCode, 0.6)), m │ │ │ │ + 0x00d38210 61736b2e 61202a20 6b4d6173 6b4f7061 ask.a * kMaskOpa │ │ │ │ + 0x00d38220 63697479 293b200a 20202020 69662028 city); . if ( │ │ │ │ + 0x00d38230 755f6f75 746c696e 65203e20 302e3029 u_outline > 0.0) │ │ │ │ + 0x00d38240 200a2020 20207b20 0a202020 20202063 . { . c │ │ │ │ + 0x00d38250 6f6c6f72 2e726762 203d206d 69782863 olor.rgb = mix(c │ │ │ │ + 0x00d38260 6f6c6f72 2e726762 2c20755f 6f75746c olor.rgb, u_outl │ │ │ │ + 0x00d38270 696e6543 6f6c6f72 2e726762 2c207374 ineColor.rgb, st │ │ │ │ + 0x00d38280 6570286b 4f75746c 696e6554 68726573 ep(kOutlineThres │ │ │ │ + 0x00d38290 686f6c64 312c2061 62732876 5f68616c hold1, abs(v_hal │ │ │ │ + 0x00d382a0 664c656e 67746829 29293b20 0a202020 fLength))); . │ │ │ │ + 0x00d382b0 20202063 6f6c6f72 2e726762 203d206d color.rgb = m │ │ │ │ + 0x00d382c0 69782863 6f6c6f72 2e726762 2c20755f ix(color.rgb, u_ │ │ │ │ + 0x00d382d0 6f75746c 696e6543 6f6c6f72 2e726762 outlineColor.rgb │ │ │ │ + 0x00d382e0 2c20736d 6f6f7468 73746570 286b4f75 , smoothstep(kOu │ │ │ │ + 0x00d382f0 746c696e 65546872 6573686f 6c64322c tlineThreshold2, │ │ │ │ + 0x00d38300 206b4f75 746c696e 65546872 6573686f kOutlineThresho │ │ │ │ + 0x00d38310 6c64312c 20616273 28765f68 616c664c ld1, abs(v_halfL │ │ │ │ + 0x00d38320 656e6774 68292929 3b200a20 2020207d ength))); . } │ │ │ │ + 0x00d38330 200a2020 2020765f 46726167 436f6c6f . v_FragColo │ │ │ │ + 0x00d38340 72203d20 636f6c6f 723b200a 20207d20 r = color; . } │ │ │ │ + 0x00d38350 0a000000 00000000 00000000 00000000 ................ │ │ │ │ + 0x00d38360 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d38370 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d38380 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d38390 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d383a0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d383b0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d383c0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d383d0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d383e0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d383f0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d38400 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d38410 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d38420 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d38430 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d38440 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d38450 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d38460 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d38470 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d38480 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d38490 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d384a0 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d384b0 63322061 5f706f73 3b200a20 20696e20 c2 a_pos; . in │ │ │ │ + 0x00d384c0 76656332 20615f74 636f6f72 643b200a vec2 a_tcoord; . │ │ │ │ + 0x00d384d0 20206f75 74207665 63322076 5f636f6c out vec2 v_col │ │ │ │ + 0x00d384e0 6f725465 78436f6f 7264733b 200a2020 orTexCoords; . │ │ │ │ + 0x00d384f0 6f757420 76656334 20765f6f 66667365 out vec4 v_offse │ │ │ │ + 0x00d38500 74303b20 0a20206f 75742076 65633420 t0; . out vec4 │ │ │ │ + 0x00d38510 765f6f66 66736574 313b200a 20206f75 v_offset1; . ou │ │ │ │ + 0x00d38520 74207665 63342076 5f6f6666 73657432 t vec4 v_offset2 │ │ │ │ + 0x00d38530 3b200a20 20756e69 666f726d 20766563 ; . uniform vec │ │ │ │ + 0x00d38540 3420755f 6672616d 65627566 6665724d 4 u_framebufferM │ │ │ │ + 0x00d38550 65747269 63733b20 0a202063 6f6e7374 etrics; . const │ │ │ │ + 0x00d38560 20666c6f 6174206b 53686170 65436f6f float kShapeCoo │ │ │ │ + 0x00d38570 72645363 616c6172 203d2031 3030302e rdScalar = 1000. │ │ │ │ + 0x00d38580 303b200a 20207665 63342061 70706c79 0; . vec4 apply │ │ │ │ + 0x00d38590 5069766f 74547261 6e73666f 726d2876 PivotTransform(v │ │ │ │ + 0x00d385a0 65633420 7069766f 742c206d 61743420 ec4 pivot, mat4 │ │ │ │ + 0x00d385b0 7069766f 74547261 6e73666f 726d2c20 pivotTransform, │ │ │ │ + 0x00d385c0 666c6f61 74207069 766f7452 65616c5a float pivotRealZ │ │ │ │ + 0x00d385d0 29200a20 207b200a 20202020 76656334 ) . { . vec4 │ │ │ │ + 0x00d385e0 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ + 0x00d385f0 74203d20 7069766f 743b200a 20202020 t = pivot; . │ │ │ │ + 0x00d38600 666c6f61 74207720 3d207472 616e7366 float w = transf │ │ │ │ + 0x00d38610 6f726d65 64506976 6f742e77 3b200a20 ormedPivot.w; . │ │ │ │ + 0x00d38620 20202074 72616e73 666f726d 65645069 transformedPi │ │ │ │ + 0x00d38630 766f742e 78797720 3d202870 69766f74 vot.xyw = (pivot │ │ │ │ + 0x00d38640 5472616e 73666f72 6d202a20 76656334 Transform * vec4 │ │ │ │ + 0x00d38650 28747261 6e73666f 726d6564 5069766f (transformedPivo │ │ │ │ + 0x00d38660 742e7879 2c207069 766f7452 65616c5a t.xy, pivotRealZ │ │ │ │ + 0x00d38670 2c207729 292e7879 773b200a 20202020 , w)).xyw; . │ │ │ │ + 0x00d38680 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ + 0x00d38690 2e7a202a 3d207472 616e7366 6f726d65 .z *= transforme │ │ │ │ + 0x00d386a0 64506976 6f742e77 202f2077 3b200a20 dPivot.w / w; . │ │ │ │ + 0x00d386b0 20236966 64656620 56554c4b 414e200a #ifdef VULKAN . │ │ │ │ + 0x00d386c0 20202020 7472616e 73666f72 6d656450 transformedP │ │ │ │ + 0x00d386d0 69766f74 2e79203d 202d7472 616e7366 ivot.y = -transf │ │ │ │ + 0x00d386e0 6f726d65 64506976 6f742e79 3b200a20 ormedPivot.y; . │ │ │ │ + 0x00d386f0 20202074 72616e73 666f726d 65645069 transformedPi │ │ │ │ + 0x00d38700 766f742e 7a203d20 28747261 6e73666f vot.z = (transfo │ │ │ │ + 0x00d38710 726d6564 5069766f 742e7a20 202b2074 rmedPivot.z + t │ │ │ │ + 0x00d38720 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ + 0x00d38730 7729202f 20322e30 3b200a20 2023656e w) / 2.0; . #en │ │ │ │ + 0x00d38740 64696620 0a202020 20726574 75726e20 dif . return │ │ │ │ + 0x00d38750 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ + 0x00d38760 3b200a20 207d200a 20207665 63342061 ; . } . vec4 a │ │ │ │ + 0x00d38770 70706c79 42696c6c 626f6172 64506976 pplyBillboardPiv │ │ │ │ + 0x00d38780 6f745472 616e7366 6f726d28 76656334 otTransform(vec4 │ │ │ │ + 0x00d38790 20706976 6f742c20 6d617434 20706976 pivot, mat4 piv │ │ │ │ + 0x00d387a0 6f745472 616e7366 6f726d2c 20666c6f otTransform, flo │ │ │ │ + 0x00d387b0 61742070 69766f74 5265616c 5a2c2076 at pivotRealZ, v │ │ │ │ + 0x00d387c0 65633220 6f666673 65742920 0a20207b ec2 offset) . { │ │ │ │ + 0x00d387d0 200a2020 2020666c 6f617420 6c6f6769 . float logi │ │ │ │ + 0x00d387e0 635a203d 20706976 6f742e7a 202f2070 cZ = pivot.z / p │ │ │ │ + 0x00d387f0 69766f74 2e773b20 0a202020 20766563 ivot.w; . vec │ │ │ │ + 0x00d38800 34207472 616e7366 6f726d65 64506976 4 transformedPiv │ │ │ │ + 0x00d38810 6f74203d 20706976 6f745472 616e7366 ot = pivotTransf │ │ │ │ + 0x00d38820 6f726d20 2a207665 63342870 69766f74 orm * vec4(pivot │ │ │ │ + 0x00d38830 2e78792c 20706976 6f745265 616c5a2c .xy, pivotRealZ, │ │ │ │ + 0x00d38840 20706976 6f742e77 293b200a 20202020 pivot.w); . │ │ │ │ + 0x00d38850 76656334 20736361 6c65203d 20706976 vec4 scale = piv │ │ │ │ + 0x00d38860 6f745472 616e7366 6f726d20 2a207665 otTransform * ve │ │ │ │ + 0x00d38870 63342831 2e302c20 2d312e30 2c20302e c4(1.0, -1.0, 0. │ │ │ │ + 0x00d38880 302c2031 2e30293b 200a2020 20207665 0, 1.0); . ve │ │ │ │ + 0x00d38890 63342070 6f736974 696f6e20 3d207665 c4 position = ve │ │ │ │ + 0x00d388a0 63342874 72616e73 666f726d 65645069 c4(transformedPi │ │ │ │ + 0x00d388b0 766f742e 7879202f 20747261 6e73666f vot.xy / transfo │ │ │ │ + 0x00d388c0 726d6564 5069766f 742e772c 206c6f67 rmedPivot.w, log │ │ │ │ + 0x00d388d0 69635a2c 20312e30 29202b20 76656334 icZ, 1.0) + vec4 │ │ │ │ + 0x00d388e0 286f6666 73657420 2f207363 616c652e (offset / scale. │ │ │ │ + 0x00d388f0 77202a20 7363616c 652e782c 20302e30 w * scale.x, 0.0 │ │ │ │ + 0x00d38900 2c20302e 30293b20 0a202023 69666465 , 0.0); . #ifde │ │ │ │ + 0x00d38910 66205655 4c4b414e 200a2020 2020706f f VULKAN . po │ │ │ │ + 0x00d38920 73697469 6f6e2e79 203d202d 706f7369 sition.y = -posi │ │ │ │ + 0x00d38930 74696f6e 2e793b20 0a202020 20706f73 tion.y; . pos │ │ │ │ + 0x00d38940 6974696f 6e2e7a20 3d202870 6f736974 ition.z = (posit │ │ │ │ + 0x00d38950 696f6e2e 7a20202b 20706f73 6974696f ion.z + positio │ │ │ │ + 0x00d38960 6e2e7729 202f2032 2e303b20 0a202023 n.w) / 2.0; . # │ │ │ │ + 0x00d38970 656e6469 66200a20 20202072 65747572 endif . retur │ │ │ │ + 0x00d38980 6e20706f 73697469 6f6e3b20 0a20207d n position; . } │ │ │ │ + 0x00d38990 200a2020 76656332 2063616c 634c696e . vec2 calcLin │ │ │ │ + 0x00d389a0 65547261 6e73666f 726d6564 41786973 eTransformedAxis │ │ │ │ + 0x00d389b0 506f7328 76656332 206f7269 67696e61 Pos(vec2 origina │ │ │ │ + 0x00d389c0 6c417869 73506f73 2c207665 63322073 lAxisPos, vec2 s │ │ │ │ + 0x00d389d0 68696674 6564506f 732c206d 61743420 hiftedPos, mat4 │ │ │ │ + 0x00d389e0 6d6f6465 6c566965 772c2066 6c6f6174 modelView, float │ │ │ │ + 0x00d389f0 2068616c 66576964 74682920 0a20207b halfWidth) . { │ │ │ │ + 0x00d38a00 200a2020 20207665 63322070 203d2028 . vec2 p = ( │ │ │ │ + 0x00d38a10 76656334 28736869 66746564 506f732c vec4(shiftedPos, │ │ │ │ + 0x00d38a20 20302e30 2c20312e 3029202a 206d6f64 0.0, 1.0) * mod │ │ │ │ + 0x00d38a30 656c5669 6577292e 78793b20 0a202020 elView).xy; . │ │ │ │ + 0x00d38a40 20766563 32206420 3d207020 2d206f72 vec2 d = p - or │ │ │ │ + 0x00d38a50 6967696e 616c4178 6973506f 733b200a iginalAxisPos; . │ │ │ │ + 0x00d38a60 20202020 69662028 646f7428 642c2064 if (dot(d, d │ │ │ │ + 0x00d38a70 2920213d 20302e30 29200a20 20202020 ) != 0.0) . │ │ │ │ + 0x00d38a80 20726574 75726e20 6f726967 696e616c return original │ │ │ │ + 0x00d38a90 41786973 506f7320 2b206e6f 726d616c AxisPos + normal │ │ │ │ + 0x00d38aa0 697a6528 6429202a 2068616c 66576964 ize(d) * halfWid │ │ │ │ + 0x00d38ab0 74683b20 0a202020 20656c73 65200a20 th; . else . │ │ │ │ + 0x00d38ac0 20202020 20726574 75726e20 6f726967 return orig │ │ │ │ + 0x00d38ad0 696e616c 41786973 506f733b 200a2020 inalAxisPos; . │ │ │ │ + 0x00d38ae0 7d200a20 20766f69 64206d61 696e2829 } . void main() │ │ │ │ + 0x00d38af0 200a2020 7b200a20 20202076 5f636f6c . { . v_col │ │ │ │ + 0x00d38b00 6f725465 78436f6f 72647320 3d20615f orTexCoords = a_ │ │ │ │ + 0x00d38b10 74636f6f 72643b20 0a202020 20765f6f tcoord; . v_o │ │ │ │ + 0x00d38b20 66667365 7430203d 20755f66 72616d65 ffset0 = u_frame │ │ │ │ + 0x00d38b30 62756666 65724d65 74726963 732e7879 bufferMetrics.xy │ │ │ │ + 0x00d38b40 7879202a 20766563 34282d31 2e302c20 xy * vec4(-1.0, │ │ │ │ + 0x00d38b50 302e302c 20302e30 2c202d31 2e302920 0.0, 0.0, -1.0) │ │ │ │ + 0x00d38b60 2b20615f 74636f6f 72642e78 7978793b + a_tcoord.xyxy; │ │ │ │ + 0x00d38b70 200a2020 2020765f 6f666673 65743120 . v_offset1 │ │ │ │ + 0x00d38b80 3d20755f 6672616d 65627566 6665724d = u_framebufferM │ │ │ │ + 0x00d38b90 65747269 63732e78 79787920 2a207665 etrics.xyxy * ve │ │ │ │ + 0x00d38ba0 63342820 312e302c 20302e30 2c20302e c4( 1.0, 0.0, 0. │ │ │ │ + 0x00d38bb0 302c2020 312e3029 202b2061 5f74636f 0, 1.0) + a_tco │ │ │ │ + 0x00d38bc0 6f72642e 78797879 3b200a20 20202076 ord.xyxy; . v │ │ │ │ + 0x00d38bd0 5f6f6666 73657432 203d2075 5f667261 _offset2 = u_fra │ │ │ │ + 0x00d38be0 6d656275 66666572 4d657472 6963732e mebufferMetrics. │ │ │ │ + 0x00d38bf0 78797879 202a2076 65633428 2d322e30 xyxy * vec4(-2.0 │ │ │ │ + 0x00d38c00 2c20302e 302c2030 2e302c20 2d322e30 , 0.0, 0.0, -2.0 │ │ │ │ + 0x00d38c10 29202b20 615f7463 6f6f7264 2e787978 ) + a_tcoord.xyx │ │ │ │ + 0x00d38c20 793b200a 20202020 676c5f50 6f736974 y; . gl_Posit │ │ │ │ + 0x00d38c30 696f6e20 3d207665 63342861 5f706f73 ion = vec4(a_pos │ │ │ │ + 0x00d38c40 2c20302e 302c2031 2e30293b 200a2020 , 0.0, 1.0); . │ │ │ │ + 0x00d38c50 7d200a00 00000000 00000000 00000000 } .............. │ │ │ │ + 0x00d38c60 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d38c70 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d38c80 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d38c90 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d38ca0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d38cb0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d38cc0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d38cd0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d38ce0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d38cf0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d38d00 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d38d10 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d38d20 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d38d30 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d38d40 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d38d50 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d38d60 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d38d70 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d38d80 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d38d90 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d38da0 2023656e 64696620 0a202023 69666465 #endif . #ifde │ │ │ │ + 0x00d38db0 6620454e 41424c45 5f565446 200a2020 f ENABLE_VTF . │ │ │ │ + 0x00d38dc0 696e204c 4f575f50 20766563 3420765f in LOW_P vec4 v_ │ │ │ │ + 0x00d38dd0 636f6c6f 723b200a 20202365 6c736520 color; . #else │ │ │ │ + 0x00d38de0 0a202069 6e207665 63322076 5f636f6c . in vec2 v_col │ │ │ │ + 0x00d38df0 6f725465 78436f6f 7264733b 200a2020 orTexCoords; . │ │ │ │ + 0x00d38e00 756e6966 6f726d20 73616d70 6c657232 uniform sampler2 │ │ │ │ + 0x00d38e10 4420755f 636f6c6f 72546578 3b200a20 D u_colorTex; . │ │ │ │ + 0x00d38e20 2023656e 64696620 0a20206f 75742076 #endif . out v │ │ │ │ + 0x00d38e30 65633420 765f4672 6167436f 6c6f723b ec4 v_FragColor; │ │ │ │ + 0x00d38e40 200a2020 756e6966 6f726d20 6d617434 . uniform mat4 │ │ │ │ + 0x00d38e50 20755f6d 6f64656c 56696577 3b200a20 u_modelView; . │ │ │ │ + 0x00d38e60 20756e69 666f726d 206d6174 3420755f uniform mat4 u_ │ │ │ │ + 0x00d38e70 70726f6a 65637469 6f6e3b20 0a202075 projection; . u │ │ │ │ + 0x00d38e80 6e69666f 726d206d 61743420 755f7069 niform mat4 u_pi │ │ │ │ + 0x00d38e90 766f7454 72616e73 666f726d 3b200a20 votTransform; . │ │ │ │ + 0x00d38ea0 20756e69 666f726d 20766563 3220755f uniform vec2 u_ │ │ │ │ + 0x00d38eb0 636f6e74 72617374 47616d6d 613b200a contrastGamma; . │ │ │ │ + 0x00d38ec0 2020756e 69666f72 6d20666c 6f617420 uniform float │ │ │ │ + 0x00d38ed0 755f6f70 61636974 793b200a 2020756e u_opacity; . un │ │ │ │ + 0x00d38ee0 69666f72 6d20666c 6f617420 755f7a53 iform float u_zS │ │ │ │ + 0x00d38ef0 63616c65 3b200a20 20756e69 666f726d cale; . uniform │ │ │ │ + 0x00d38f00 20666c6f 61742075 5f696e74 6572706f float u_interpo │ │ │ │ + 0x00d38f10 6c617469 6f6e3b20 0a202075 6e69666f lation; . unifo │ │ │ │ + 0x00d38f20 726d2066 6c6f6174 20755f69 734f7574 rm float u_isOut │ │ │ │ + 0x00d38f30 6c696e65 50617373 3b200a20 20636f6e linePass; . con │ │ │ │ + 0x00d38f40 73742066 6c6f6174 206b5368 61706543 st float kShapeC │ │ │ │ + 0x00d38f50 6f6f7264 5363616c 6172203d 20313030 oordScalar = 100 │ │ │ │ + 0x00d38f60 302e303b 200a2020 766f6964 206d6169 0.0; . void mai │ │ │ │ + 0x00d38f70 6e282920 0a20207b 200a2020 23696664 n() . { . #ifd │ │ │ │ + 0x00d38f80 65662045 4e41424c 455f5654 46200a20 ef ENABLE_VTF . │ │ │ │ + 0x00d38f90 2020204c 4f575f50 20766563 34206669 LOW_P vec4 fi │ │ │ │ + 0x00d38fa0 6e616c43 6f6c6f72 203d2076 5f636f6c nalColor = v_col │ │ │ │ + 0x00d38fb0 6f723b20 0a202023 656c7365 200a2020 or; . #else . │ │ │ │ + 0x00d38fc0 20204c4f 575f5020 76656334 2066696e LOW_P vec4 fin │ │ │ │ + 0x00d38fd0 616c436f 6c6f7220 3d207465 78747572 alColor = textur │ │ │ │ + 0x00d38fe0 6528755f 636f6c6f 72546578 2c20765f e(u_colorTex, v_ │ │ │ │ + 0x00d38ff0 636f6c6f 72546578 436f6f72 6473293b colorTexCoords); │ │ │ │ + 0x00d39000 200a2020 23656e64 6966200a 20202020 . #endif . │ │ │ │ + 0x00d39010 66696e61 6c436f6c 6f722e61 202a3d20 finalColor.a *= │ │ │ │ + 0x00d39020 755f6f70 61636974 793b200a 20202020 u_opacity; . │ │ │ │ + 0x00d39030 765f4672 6167436f 6c6f7220 3d206669 v_FragColor = fi │ │ │ │ + 0x00d39040 6e616c43 6f6c6f72 3b200a20 207d200a nalColor; . } . │ │ │ │ + 0x00d39050 00000000 00000000 00000000 00000000 ................ │ │ │ │ + 0x00d39060 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d39070 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d39080 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d39090 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d390a0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d390b0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d390c0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d390d0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d390e0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d390f0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d39100 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d39110 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d39120 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d39130 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d39140 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d39150 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d39160 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d39170 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d39180 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d39190 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d391a0 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d391b0 63332076 5f726164 6975733b 200a2020 c3 v_radius; . │ │ │ │ + 0x00d391c0 696e2076 65633420 765f636f 6c6f723b in vec4 v_color; │ │ │ │ + 0x00d391d0 200a2020 6f757420 76656334 20765f46 . out vec4 v_F │ │ │ │ + 0x00d391e0 72616743 6f6c6f72 3b200a20 20756e69 ragColor; . uni │ │ │ │ + 0x00d391f0 666f726d 206d6174 3420755f 6d6f6465 form mat4 u_mode │ │ │ │ + 0x00d39200 6c566965 773b200a 2020756e 69666f72 lView; . unifor │ │ │ │ + 0x00d39210 6d206d61 74342075 5f70726f 6a656374 m mat4 u_project │ │ │ │ + 0x00d39220 696f6e3b 200a2020 756e6966 6f726d20 ion; . uniform │ │ │ │ + 0x00d39230 6d617434 20755f70 69766f74 5472616e mat4 u_pivotTran │ │ │ │ + 0x00d39240 73666f72 6d3b200a 2020756e 69666f72 sform; . unifor │ │ │ │ + 0x00d39250 6d207665 63322075 5f636f6e 74726173 m vec2 u_contras │ │ │ │ + 0x00d39260 7447616d 6d613b20 0a202075 6e69666f tGamma; . unifo │ │ │ │ + 0x00d39270 726d2066 6c6f6174 20755f6f 70616369 rm float u_opaci │ │ │ │ + 0x00d39280 74793b20 0a202075 6e69666f 726d2066 ty; . uniform f │ │ │ │ + 0x00d39290 6c6f6174 20755f7a 5363616c 653b200a loat u_zScale; . │ │ │ │ + 0x00d392a0 2020756e 69666f72 6d20666c 6f617420 uniform float │ │ │ │ + 0x00d392b0 755f696e 74657270 6f6c6174 696f6e3b u_interpolation; │ │ │ │ + 0x00d392c0 200a2020 756e6966 6f726d20 666c6f61 . uniform floa │ │ │ │ + 0x00d392d0 7420755f 69734f75 746c696e 65506173 t u_isOutlinePas │ │ │ │ + 0x00d392e0 733b200a 2020636f 6e737420 666c6f61 s; . const floa │ │ │ │ + 0x00d392f0 74206b41 6e746961 6c696173 696e6753 t kAntialiasingS │ │ │ │ + 0x00d39300 63616c61 72203d20 302e393b 200a2020 calar = 0.9; . │ │ │ │ + 0x00d39310 636f6e73 7420666c 6f617420 6b536861 const float kSha │ │ │ │ + 0x00d39320 7065436f 6f726453 63616c61 72203d20 peCoordScalar = │ │ │ │ + 0x00d39330 31303030 2e303b20 0a202076 6f696420 1000.0; . void │ │ │ │ + 0x00d39340 6d61696e 2829200a 20207b20 0a202020 main() . { . │ │ │ │ + 0x00d39350 20666c6f 61742064 203d2064 6f742876 float d = dot(v │ │ │ │ + 0x00d39360 5f726164 6975732e 78792c20 765f7261 _radius.xy, v_ra │ │ │ │ + 0x00d39370 64697573 2e787929 3b200a20 20202076 dius.xy); . v │ │ │ │ + 0x00d39380 65633420 66696e61 6c436f6c 6f72203d ec4 finalColor = │ │ │ │ + 0x00d39390 20765f63 6f6c6f72 3b200a20 20202066 v_color; . f │ │ │ │ + 0x00d393a0 6c6f6174 20616152 61646975 73203d20 loat aaRadius = │ │ │ │ + 0x00d393b0 765f7261 64697573 2e7a202a 206b416e v_radius.z * kAn │ │ │ │ + 0x00d393c0 7469616c 69617369 6e675363 616c6172 tialiasingScalar │ │ │ │ + 0x00d393d0 3b200a20 20202066 6c6f6174 20737465 ; . float ste │ │ │ │ + 0x00d393e0 7056616c 7565203d 20736d6f 6f746873 pValue = smooths │ │ │ │ + 0x00d393f0 74657028 61615261 64697573 202a2061 tep(aaRadius * a │ │ │ │ + 0x00d39400 61526164 6975732c 20765f72 61646975 aRadius, v_radiu │ │ │ │ + 0x00d39410 732e7a20 2a20765f 72616469 75732e7a s.z * v_radius.z │ │ │ │ + 0x00d39420 2c206429 3b200a20 20202066 696e616c , d); . final │ │ │ │ + 0x00d39430 436f6c6f 722e6120 3d206669 6e616c43 Color.a = finalC │ │ │ │ + 0x00d39440 6f6c6f72 2e61202a 20755f6f 70616369 olor.a * u_opaci │ │ │ │ + 0x00d39450 7479202a 2028312e 30202d20 73746570 ty * (1.0 - step │ │ │ │ + 0x00d39460 56616c75 65293b20 0a202020 20765f46 Value); . v_F │ │ │ │ + 0x00d39470 72616743 6f6c6f72 203d2066 696e616c ragColor = final │ │ │ │ + 0x00d39480 436f6c6f 723b200a 20207d20 0a000000 Color; . } .... │ │ │ │ + 0x00d39490 00000000 00000000 00000000 00000000 ................ │ │ │ │ + 0x00d394a0 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d394b0 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d394c0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d394d0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d394e0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d394f0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d39500 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d39510 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d39520 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d39530 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d39540 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d39550 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d39560 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d39570 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d39580 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d39590 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d395a0 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d395b0 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d395c0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d395d0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d395e0 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d395f0 63332061 5f706f73 6974696f 6e3b200a c3 a_position; . │ │ │ │ + 0x00d39600 2020696e 20766563 3220615f 636f6c6f in vec2 a_colo │ │ │ │ + 0x00d39610 72546578 436f6f72 643b200a 20206f75 rTexCoord; . ou │ │ │ │ + 0x00d39620 74207665 63322076 5f636f6c 6f725465 t vec2 v_colorTe │ │ │ │ + 0x00d39630 78436f6f 72643b20 0a202075 6e69666f xCoord; . unifo │ │ │ │ + 0x00d39640 726d206d 61743420 755f6d6f 64656c56 rm mat4 u_modelV │ │ │ │ + 0x00d39650 6965773b 200a2020 756e6966 6f726d20 iew; . uniform │ │ │ │ + 0x00d39660 6d617434 20755f70 726f6a65 6374696f mat4 u_projectio │ │ │ │ + 0x00d39670 6e3b200a 2020756e 69666f72 6d206d61 n; . uniform ma │ │ │ │ + 0x00d39680 74342075 5f706976 6f745472 616e7366 t4 u_pivotTransf │ │ │ │ + 0x00d39690 6f726d3b 200a2020 756e6966 6f726d20 orm; . uniform │ │ │ │ + 0x00d396a0 76656334 20755f74 72616666 69635061 vec4 u_trafficPa │ │ │ │ + 0x00d396b0 72616d73 3b200a20 20756e69 666f726d rams; . uniform │ │ │ │ + 0x00d396c0 20766563 3420755f 6f75746c 696e6543 vec4 u_outlineC │ │ │ │ + 0x00d396d0 6f6c6f72 3b200a20 20756e69 666f726d olor; . uniform │ │ │ │ + 0x00d396e0 20766563 3420755f 6c696768 74417272 vec4 u_lightArr │ │ │ │ + 0x00d396f0 6f77436f 6c6f723b 200a2020 756e6966 owColor; . unif │ │ │ │ + 0x00d39700 6f726d20 76656334 20755f64 61726b41 orm vec4 u_darkA │ │ │ │ + 0x00d39710 72726f77 436f6c6f 723b200a 2020756e rrowColor; . un │ │ │ │ + 0x00d39720 69666f72 6d20666c 6f617420 755f6f75 iform float u_ou │ │ │ │ + 0x00d39730 746c696e 653b200a 2020756e 69666f72 tline; . unifor │ │ │ │ + 0x00d39740 6d20666c 6f617420 755f6f70 61636974 m float u_opacit │ │ │ │ + 0x00d39750 793b200a 2020636f 6e737420 666c6f61 y; . const floa │ │ │ │ + 0x00d39760 74206b53 68617065 436f6f72 64536361 t kShapeCoordSca │ │ │ │ + 0x00d39770 6c617220 3d203130 30302e30 3b200a20 lar = 1000.0; . │ │ │ │ + 0x00d39780 20766563 34206170 706c7950 69766f74 vec4 applyPivot │ │ │ │ + 0x00d39790 5472616e 73666f72 6d287665 63342070 Transform(vec4 p │ │ │ │ + 0x00d397a0 69766f74 2c206d61 74342070 69766f74 ivot, mat4 pivot │ │ │ │ + 0x00d397b0 5472616e 73666f72 6d2c2066 6c6f6174 Transform, float │ │ │ │ + 0x00d397c0 20706976 6f745265 616c5a29 200a2020 pivotRealZ) . │ │ │ │ + 0x00d397d0 7b200a20 20202076 65633420 7472616e { . vec4 tran │ │ │ │ + 0x00d397e0 73666f72 6d656450 69766f74 203d2070 sformedPivot = p │ │ │ │ + 0x00d397f0 69766f74 3b200a20 20202066 6c6f6174 ivot; . float │ │ │ │ + 0x00d39800 2077203d 20747261 6e73666f 726d6564 w = transformed │ │ │ │ + 0x00d39810 5069766f 742e773b 200a2020 20207472 Pivot.w; . tr │ │ │ │ + 0x00d39820 616e7366 6f726d65 64506976 6f742e78 ansformedPivot.x │ │ │ │ + 0x00d39830 7977203d 20287069 766f7454 72616e73 yw = (pivotTrans │ │ │ │ + 0x00d39840 666f726d 202a2076 65633428 7472616e form * vec4(tran │ │ │ │ + 0x00d39850 73666f72 6d656450 69766f74 2e78792c sformedPivot.xy, │ │ │ │ + 0x00d39860 20706976 6f745265 616c5a2c 20772929 pivotRealZ, w)) │ │ │ │ + 0x00d39870 2e787977 3b200a20 20202074 72616e73 .xyw; . trans │ │ │ │ + 0x00d39880 666f726d 65645069 766f742e 7a202a3d formedPivot.z *= │ │ │ │ + 0x00d39890 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ + 0x00d398a0 742e7720 2f20773b 200a2020 23696664 t.w / w; . #ifd │ │ │ │ + 0x00d398b0 65662056 554c4b41 4e200a20 20202074 ef VULKAN . t │ │ │ │ + 0x00d398c0 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ + 0x00d398d0 79203d20 2d747261 6e73666f 726d6564 y = -transformed │ │ │ │ + 0x00d398e0 5069766f 742e793b 200a2020 20207472 Pivot.y; . tr │ │ │ │ + 0x00d398f0 616e7366 6f726d65 64506976 6f742e7a ansformedPivot.z │ │ │ │ + 0x00d39900 203d2028 7472616e 73666f72 6d656450 = (transformedP │ │ │ │ + 0x00d39910 69766f74 2e7a2020 2b207472 616e7366 ivot.z + transf │ │ │ │ + 0x00d39920 6f726d65 64506976 6f742e77 29202f20 ormedPivot.w) / │ │ │ │ + 0x00d39930 322e303b 200a2020 23656e64 6966200a 2.0; . #endif . │ │ │ │ + 0x00d39940 20202020 72657475 726e2074 72616e73 return trans │ │ │ │ + 0x00d39950 666f726d 65645069 766f743b 200a2020 formedPivot; . │ │ │ │ + 0x00d39960 7d200a20 20766563 34206170 706c7942 } . vec4 applyB │ │ │ │ + 0x00d39970 696c6c62 6f617264 5069766f 74547261 illboardPivotTra │ │ │ │ + 0x00d39980 6e73666f 726d2876 65633420 7069766f nsform(vec4 pivo │ │ │ │ + 0x00d39990 742c206d 61743420 7069766f 74547261 t, mat4 pivotTra │ │ │ │ + 0x00d399a0 6e73666f 726d2c20 666c6f61 74207069 nsform, float pi │ │ │ │ + 0x00d399b0 766f7452 65616c5a 2c207665 6332206f votRealZ, vec2 o │ │ │ │ + 0x00d399c0 66667365 7429200a 20207b20 0a202020 ffset) . { . │ │ │ │ + 0x00d399d0 20666c6f 6174206c 6f676963 5a203d20 float logicZ = │ │ │ │ + 0x00d399e0 7069766f 742e7a20 2f207069 766f742e pivot.z / pivot. │ │ │ │ + 0x00d399f0 773b200a 20202020 76656334 20747261 w; . vec4 tra │ │ │ │ + 0x00d39a00 6e73666f 726d6564 5069766f 74203d20 nsformedPivot = │ │ │ │ + 0x00d39a10 7069766f 74547261 6e73666f 726d202a pivotTransform * │ │ │ │ + 0x00d39a20 20766563 34287069 766f742e 78792c20 vec4(pivot.xy, │ │ │ │ + 0x00d39a30 7069766f 74526561 6c5a2c20 7069766f pivotRealZ, pivo │ │ │ │ + 0x00d39a40 742e7729 3b200a20 20202076 65633420 t.w); . vec4 │ │ │ │ + 0x00d39a50 7363616c 65203d20 7069766f 74547261 scale = pivotTra │ │ │ │ + 0x00d39a60 6e73666f 726d202a 20766563 3428312e nsform * vec4(1. │ │ │ │ + 0x00d39a70 302c202d 312e302c 20302e30 2c20312e 0, -1.0, 0.0, 1. │ │ │ │ + 0x00d39a80 30293b20 0a202020 20766563 3420706f 0); . vec4 po │ │ │ │ + 0x00d39a90 73697469 6f6e203d 20766563 34287472 sition = vec4(tr │ │ │ │ + 0x00d39aa0 616e7366 6f726d65 64506976 6f742e78 ansformedPivot.x │ │ │ │ + 0x00d39ab0 79202f20 7472616e 73666f72 6d656450 y / transformedP │ │ │ │ + 0x00d39ac0 69766f74 2e772c20 6c6f6769 635a2c20 ivot.w, logicZ, │ │ │ │ + 0x00d39ad0 312e3029 202b2076 65633428 6f666673 1.0) + vec4(offs │ │ │ │ + 0x00d39ae0 6574202f 20736361 6c652e77 202a2073 et / scale.w * s │ │ │ │ + 0x00d39af0 63616c65 2e782c20 302e302c 20302e30 cale.x, 0.0, 0.0 │ │ │ │ + 0x00d39b00 293b200a 20202369 66646566 2056554c ); . #ifdef VUL │ │ │ │ + 0x00d39b10 4b414e20 0a202020 20706f73 6974696f KAN . positio │ │ │ │ + 0x00d39b20 6e2e7920 3d202d70 6f736974 696f6e2e n.y = -position. │ │ │ │ + 0x00d39b30 793b200a 20202020 706f7369 74696f6e y; . position │ │ │ │ + 0x00d39b40 2e7a203d 2028706f 73697469 6f6e2e7a .z = (position.z │ │ │ │ + 0x00d39b50 20202b20 706f7369 74696f6e 2e772920 + position.w) │ │ │ │ + 0x00d39b60 2f20322e 303b200a 20202365 6e646966 / 2.0; . #endif │ │ │ │ + 0x00d39b70 200a2020 20207265 7475726e 20706f73 . return pos │ │ │ │ + 0x00d39b80 6974696f 6e3b200a 20207d20 0a202076 ition; . } . v │ │ │ │ + 0x00d39b90 65633220 63616c63 4c696e65 5472616e ec2 calcLineTran │ │ │ │ + 0x00d39ba0 73666f72 6d656441 78697350 6f732876 sformedAxisPos(v │ │ │ │ + 0x00d39bb0 65633220 6f726967 696e616c 41786973 ec2 originalAxis │ │ │ │ + 0x00d39bc0 506f732c 20766563 32207368 69667465 Pos, vec2 shifte │ │ │ │ + 0x00d39bd0 64506f73 2c206d61 7434206d 6f64656c dPos, mat4 model │ │ │ │ + 0x00d39be0 56696577 2c20666c 6f617420 68616c66 View, float half │ │ │ │ + 0x00d39bf0 57696474 6829200a 20207b20 0a202020 Width) . { . │ │ │ │ + 0x00d39c00 20766563 32207020 3d202876 65633428 vec2 p = (vec4( │ │ │ │ + 0x00d39c10 73686966 74656450 6f732c20 302e302c shiftedPos, 0.0, │ │ │ │ + 0x00d39c20 20312e30 29202a20 6d6f6465 6c566965 1.0) * modelVie │ │ │ │ + 0x00d39c30 77292e78 793b200a 20202020 76656332 w).xy; . vec2 │ │ │ │ + 0x00d39c40 2064203d 2070202d 206f7269 67696e61 d = p - origina │ │ │ │ + 0x00d39c50 6c417869 73506f73 3b200a20 20202069 lAxisPos; . i │ │ │ │ + 0x00d39c60 66202864 6f742864 2c206429 20213d20 f (dot(d, d) != │ │ │ │ + 0x00d39c70 302e3029 200a2020 20202020 72657475 0.0) . retu │ │ │ │ + 0x00d39c80 726e206f 72696769 6e616c41 78697350 rn originalAxisP │ │ │ │ + 0x00d39c90 6f73202b 206e6f72 6d616c69 7a652864 os + normalize(d │ │ │ │ + 0x00d39ca0 29202a20 68616c66 57696474 683b200a ) * halfWidth; . │ │ │ │ + 0x00d39cb0 20202020 656c7365 200a2020 20202020 else . │ │ │ │ + 0x00d39cc0 72657475 726e206f 72696769 6e616c41 return originalA │ │ │ │ + 0x00d39cd0 78697350 6f733b20 0a20207d 200a2020 xisPos; . } . │ │ │ │ + 0x00d39ce0 766f6964 206d6169 6e282920 0a20207b void main() . { │ │ │ │ + 0x00d39cf0 200a2020 20207665 63322074 72616e73 . vec2 trans │ │ │ │ + 0x00d39d00 666f726d 65644178 6973506f 73203d20 formedAxisPos = │ │ │ │ + 0x00d39d10 28766563 3428615f 706f7369 74696f6e (vec4(a_position │ │ │ │ + 0x00d39d20 2e78792c 20302e30 2c20312e 3029202a .xy, 0.0, 1.0) * │ │ │ │ + 0x00d39d30 20755f6d 6f64656c 56696577 292e7879 u_modelView).xy │ │ │ │ + 0x00d39d40 3b200a20 20202076 65633420 706f7320 ; . vec4 pos │ │ │ │ + 0x00d39d50 3d207665 63342874 72616e73 666f726d = vec4(transform │ │ │ │ + 0x00d39d60 65644178 6973506f 732c2061 5f706f73 edAxisPos, a_pos │ │ │ │ + 0x00d39d70 6974696f 6e2e7a2c 20312e30 29202a20 ition.z, 1.0) * │ │ │ │ + 0x00d39d80 755f7072 6f6a6563 74696f6e 3b200a20 u_projection; . │ │ │ │ + 0x00d39d90 20202076 5f636f6c 6f725465 78436f6f v_colorTexCoo │ │ │ │ + 0x00d39da0 7264203d 20615f63 6f6c6f72 54657843 rd = a_colorTexC │ │ │ │ + 0x00d39db0 6f6f7264 3b200a20 20202067 6c5f506f oord; . gl_Po │ │ │ │ + 0x00d39dc0 73697469 6f6e203d 20617070 6c795069 sition = applyPi │ │ │ │ + 0x00d39dd0 766f7454 72616e73 666f726d 28706f73 votTransform(pos │ │ │ │ + 0x00d39de0 2c20755f 7069766f 74547261 6e73666f , u_pivotTransfo │ │ │ │ + 0x00d39df0 726d2c20 302e3029 3b200a20 207d200a rm, 0.0); . } . │ │ │ │ + 0x00d39e00 00000000 00000000 00000000 00000000 ................ │ │ │ │ + 0x00d39e10 00000000 00000000 00000000 00000000 ................ │ │ │ │ + 0x00d39e20 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d39e30 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d39e40 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d39e50 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d39e60 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d39e70 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d39e80 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d39e90 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d39ea0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d39eb0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d39ec0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d39ed0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d39ee0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d39ef0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d39f00 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d39f10 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d39f20 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d39f30 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d39f40 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d39f50 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d39f60 2023656e 64696620 0a202023 69666465 #endif . #ifde │ │ │ │ + 0x00d39f70 6620454e 41424c45 5f565446 200a2020 f ENABLE_VTF . │ │ │ │ + 0x00d39f80 696e204c 4f575f50 20766563 3420765f in LOW_P vec4 v_ │ │ │ │ + 0x00d39f90 636f6c6f 723b200a 20202365 6c736520 color; . #else │ │ │ │ + 0x00d39fa0 0a202069 6e207665 63322076 5f636f6c . in vec2 v_col │ │ │ │ + 0x00d39fb0 6f725465 78436f6f 7264733b 200a2020 orTexCoords; . │ │ │ │ + 0x00d39fc0 756e6966 6f726d20 73616d70 6c657232 uniform sampler2 │ │ │ │ + 0x00d39fd0 4420755f 636f6c6f 72546578 3b200a20 D u_colorTex; . │ │ │ │ + 0x00d39fe0 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d39ff0 63332076 5f726164 6975733b 200a2020 c3 v_radius; . │ │ │ │ + 0x00d3a000 6f757420 76656334 20765f46 72616743 out vec4 v_FragC │ │ │ │ + 0x00d3a010 6f6c6f72 3b200a20 20756e69 666f726d olor; . uniform │ │ │ │ + 0x00d3a020 206d6174 3420755f 6d6f6465 6c566965 mat4 u_modelVie │ │ │ │ + 0x00d3a030 773b200a 2020756e 69666f72 6d206d61 w; . uniform ma │ │ │ │ + 0x00d3a040 74342075 5f70726f 6a656374 696f6e3b t4 u_projection; │ │ │ │ + 0x00d3a050 200a2020 756e6966 6f726d20 6d617434 . uniform mat4 │ │ │ │ + 0x00d3a060 20755f70 69766f74 5472616e 73666f72 u_pivotTransfor │ │ │ │ + 0x00d3a070 6d3b200a 2020756e 69666f72 6d207665 m; . uniform ve │ │ │ │ + 0x00d3a080 63322075 5f636f6e 74726173 7447616d c2 u_contrastGam │ │ │ │ + 0x00d3a090 6d613b20 0a202075 6e69666f 726d2066 ma; . uniform f │ │ │ │ + 0x00d3a0a0 6c6f6174 20755f6f 70616369 74793b20 loat u_opacity; │ │ │ │ + 0x00d3a0b0 0a202075 6e69666f 726d2066 6c6f6174 . uniform float │ │ │ │ + 0x00d3a0c0 20755f7a 5363616c 653b200a 2020756e u_zScale; . un │ │ │ │ + 0x00d3a0d0 69666f72 6d20666c 6f617420 755f696e iform float u_in │ │ │ │ + 0x00d3a0e0 74657270 6f6c6174 696f6e3b 200a2020 terpolation; . │ │ │ │ + 0x00d3a0f0 756e6966 6f726d20 666c6f61 7420755f uniform float u_ │ │ │ │ + 0x00d3a100 69734f75 746c696e 65506173 733b200a isOutlinePass; . │ │ │ │ + 0x00d3a110 2020636f 6e737420 666c6f61 74206161 const float aa │ │ │ │ + 0x00d3a120 50697865 6c73436f 756e7420 3d20322e PixelsCount = 2. │ │ │ │ + 0x00d3a130 353b200a 2020636f 6e737420 666c6f61 5; . const floa │ │ │ │ + 0x00d3a140 74206b53 68617065 436f6f72 64536361 t kShapeCoordSca │ │ │ │ + 0x00d3a150 6c617220 3d203130 30302e30 3b200a20 lar = 1000.0; . │ │ │ │ + 0x00d3a160 20766f69 64206d61 696e2829 200a2020 void main() . │ │ │ │ + 0x00d3a170 7b200a20 20236966 64656620 454e4142 { . #ifdef ENAB │ │ │ │ + 0x00d3a180 4c455f56 5446200a 20202020 4c4f575f LE_VTF . LOW_ │ │ │ │ + 0x00d3a190 50207665 63342066 696e616c 436f6c6f P vec4 finalColo │ │ │ │ + 0x00d3a1a0 72203d20 765f636f 6c6f723b 200a2020 r = v_color; . │ │ │ │ + 0x00d3a1b0 23656c73 65200a20 2020204c 4f575f50 #else . LOW_P │ │ │ │ + 0x00d3a1c0 20766563 34206669 6e616c43 6f6c6f72 vec4 finalColor │ │ │ │ + 0x00d3a1d0 203d2074 65787475 72652875 5f636f6c = texture(u_col │ │ │ │ + 0x00d3a1e0 6f725465 782c2076 5f636f6c 6f725465 orTex, v_colorTe │ │ │ │ + 0x00d3a1f0 78436f6f 72647329 3b200a20 2023656e xCoords); . #en │ │ │ │ + 0x00d3a200 64696620 0a202020 20666c6f 61742073 dif . float s │ │ │ │ + 0x00d3a210 6d616c6c 52616469 7573203d 20765f72 mallRadius = v_r │ │ │ │ + 0x00d3a220 61646975 732e7a20 2d206161 50697865 adius.z - aaPixe │ │ │ │ + 0x00d3a230 6c73436f 756e743b 200a2020 2020666c lsCount; . fl │ │ │ │ + 0x00d3a240 6f617420 73746570 56616c75 65203d20 oat stepValue = │ │ │ │ + 0x00d3a250 736d6f6f 74687374 65702873 6d616c6c smoothstep(small │ │ │ │ + 0x00d3a260 52616469 7573202a 20736d61 6c6c5261 Radius * smallRa │ │ │ │ + 0x00d3a270 64697573 2c20765f 72616469 75732e7a dius, v_radius.z │ │ │ │ + 0x00d3a280 202a2076 5f726164 6975732e 7a2c200a * v_radius.z, . │ │ │ │ + 0x00d3a290 20202020 20202020 20202020 20202020 │ │ │ │ + 0x00d3a2a0 20202020 20202020 20202020 20202020 │ │ │ │ + 0x00d3a2b0 20765f72 61646975 732e7820 2a20765f v_radius.x * v_ │ │ │ │ + 0x00d3a2c0 72616469 75732e78 202b2076 5f726164 radius.x + v_rad │ │ │ │ + 0x00d3a2d0 6975732e 79202a20 765f7261 64697573 ius.y * v_radius │ │ │ │ + 0x00d3a2e0 2e79293b 200a2020 20206669 6e616c43 .y); . finalC │ │ │ │ + 0x00d3a2f0 6f6c6f72 2e61203d 2066696e 616c436f olor.a = finalCo │ │ │ │ + 0x00d3a300 6c6f722e 61202a20 755f6f70 61636974 lor.a * u_opacit │ │ │ │ + 0x00d3a310 79202a20 28312e30 202d2073 74657056 y * (1.0 - stepV │ │ │ │ + 0x00d3a320 616c7565 293b200a 20202020 765f4672 alue); . v_Fr │ │ │ │ + 0x00d3a330 6167436f 6c6f7220 3d206669 6e616c43 agColor = finalC │ │ │ │ + 0x00d3a340 6f6c6f72 3b200a20 207d200a 00000000 olor; . } ..... │ │ │ │ + 0x00d3a350 00000000 00000000 00000000 00000000 ................ │ │ │ │ + 0x00d3a360 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d3a370 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d3a380 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d3a390 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d3a3a0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d3a3b0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d3a3c0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d3a3d0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d3a3e0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d3a3f0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d3a400 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d3a410 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d3a420 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d3a430 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d3a440 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d3a450 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d3a460 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d3a470 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d3a480 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d3a490 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d3a4a0 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d3a4b0 63342061 5f706f73 6974696f 6e3b200a c4 a_position; . │ │ │ │ + 0x00d3a4c0 2020696e 20766563 3220615f 6e6f726d in vec2 a_norm │ │ │ │ + 0x00d3a4d0 616c3b20 0a202069 6e207665 63322061 al; . in vec2 a │ │ │ │ + 0x00d3a4e0 5f636f6c 6f725465 78436f6f 7264733b _colorTexCoords; │ │ │ │ + 0x00d3a4f0 200a2020 696e2076 65633220 615f6d61 . in vec2 a_ma │ │ │ │ + 0x00d3a500 736b5465 78436f6f 7264733b 200a2020 skTexCoords; . │ │ │ │ + 0x00d3a510 6f757420 76656332 20765f63 6f6c6f72 out vec2 v_color │ │ │ │ + 0x00d3a520 54657843 6f6f7264 733b200a 20206f75 TexCoords; . ou │ │ │ │ + 0x00d3a530 74207665 63322076 5f6d6173 6b546578 t vec2 v_maskTex │ │ │ │ + 0x00d3a540 436f6f72 64733b20 0a202075 6e69666f Coords; . unifo │ │ │ │ + 0x00d3a550 726d206d 61743420 755f6d6f 64656c56 rm mat4 u_modelV │ │ │ │ + 0x00d3a560 6965773b 200a2020 756e6966 6f726d20 iew; . uniform │ │ │ │ + 0x00d3a570 6d617434 20755f70 726f6a65 6374696f mat4 u_projectio │ │ │ │ + 0x00d3a580 6e3b200a 2020756e 69666f72 6d206d61 n; . uniform ma │ │ │ │ + 0x00d3a590 74342075 5f706976 6f745472 616e7366 t4 u_pivotTransf │ │ │ │ + 0x00d3a5a0 6f726d3b 200a2020 756e6966 6f726d20 orm; . uniform │ │ │ │ + 0x00d3a5b0 76656332 20755f63 6f6e7472 61737447 vec2 u_contrastG │ │ │ │ + 0x00d3a5c0 616d6d61 3b200a20 20756e69 666f726d amma; . uniform │ │ │ │ + 0x00d3a5d0 20666c6f 61742075 5f6f7061 63697479 float u_opacity │ │ │ │ + 0x00d3a5e0 3b200a20 20756e69 666f726d 20666c6f ; . uniform flo │ │ │ │ + 0x00d3a5f0 61742075 5f7a5363 616c653b 200a2020 at u_zScale; . │ │ │ │ + 0x00d3a600 756e6966 6f726d20 666c6f61 7420755f uniform float u_ │ │ │ │ + 0x00d3a610 696e7465 72706f6c 6174696f 6e3b200a interpolation; . │ │ │ │ + 0x00d3a620 2020756e 69666f72 6d20666c 6f617420 uniform float │ │ │ │ + 0x00d3a630 755f6973 4f75746c 696e6550 6173733b u_isOutlinePass; │ │ │ │ + 0x00d3a640 200a2020 636f6e73 7420666c 6f617420 . const float │ │ │ │ + 0x00d3a650 6b536861 7065436f 6f726453 63616c61 kShapeCoordScala │ │ │ │ + 0x00d3a660 72203d20 31303030 2e303b20 0a202076 r = 1000.0; . v │ │ │ │ + 0x00d3a670 65633420 6170706c 79506976 6f745472 ec4 applyPivotTr │ │ │ │ + 0x00d3a680 616e7366 6f726d28 76656334 20706976 ansform(vec4 piv │ │ │ │ + 0x00d3a690 6f742c20 6d617434 20706976 6f745472 ot, mat4 pivotTr │ │ │ │ + 0x00d3a6a0 616e7366 6f726d2c 20666c6f 61742070 ansform, float p │ │ │ │ + 0x00d3a6b0 69766f74 5265616c 5a29200a 20207b20 ivotRealZ) . { │ │ │ │ + 0x00d3a6c0 0a202020 20766563 34207472 616e7366 . vec4 transf │ │ │ │ + 0x00d3a6d0 6f726d65 64506976 6f74203d 20706976 ormedPivot = piv │ │ │ │ + 0x00d3a6e0 6f743b20 0a202020 20666c6f 61742077 ot; . float w │ │ │ │ + 0x00d3a6f0 203d2074 72616e73 666f726d 65645069 = transformedPi │ │ │ │ + 0x00d3a700 766f742e 773b200a 20202020 7472616e vot.w; . tran │ │ │ │ + 0x00d3a710 73666f72 6d656450 69766f74 2e787977 sformedPivot.xyw │ │ │ │ + 0x00d3a720 203d2028 7069766f 74547261 6e73666f = (pivotTransfo │ │ │ │ + 0x00d3a730 726d202a 20766563 34287472 616e7366 rm * vec4(transf │ │ │ │ + 0x00d3a740 6f726d65 64506976 6f742e78 792c2070 ormedPivot.xy, p │ │ │ │ + 0x00d3a750 69766f74 5265616c 5a2c2077 29292e78 ivotRealZ, w)).x │ │ │ │ + 0x00d3a760 79773b20 0a202020 20747261 6e73666f yw; . transfo │ │ │ │ + 0x00d3a770 726d6564 5069766f 742e7a20 2a3d2074 rmedPivot.z *= t │ │ │ │ + 0x00d3a780 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ + 0x00d3a790 77202f20 773b200a 20202369 66646566 w / w; . #ifdef │ │ │ │ + 0x00d3a7a0 2056554c 4b414e20 0a202020 20747261 VULKAN . tra │ │ │ │ + 0x00d3a7b0 6e73666f 726d6564 5069766f 742e7920 nsformedPivot.y │ │ │ │ + 0x00d3a7c0 3d202d74 72616e73 666f726d 65645069 = -transformedPi │ │ │ │ + 0x00d3a7d0 766f742e 793b200a 20202020 7472616e vot.y; . tran │ │ │ │ + 0x00d3a7e0 73666f72 6d656450 69766f74 2e7a203d sformedPivot.z = │ │ │ │ + 0x00d3a7f0 20287472 616e7366 6f726d65 64506976 (transformedPiv │ │ │ │ + 0x00d3a800 6f742e7a 20202b20 7472616e 73666f72 ot.z + transfor │ │ │ │ + 0x00d3a810 6d656450 69766f74 2e772920 2f20322e medPivot.w) / 2. │ │ │ │ + 0x00d3a820 303b200a 20202365 6e646966 200a2020 0; . #endif . │ │ │ │ + 0x00d3a830 20207265 7475726e 20747261 6e73666f return transfo │ │ │ │ + 0x00d3a840 726d6564 5069766f 743b200a 20207d20 rmedPivot; . } │ │ │ │ + 0x00d3a850 0a202076 65633420 6170706c 7942696c . vec4 applyBil │ │ │ │ + 0x00d3a860 6c626f61 72645069 766f7454 72616e73 lboardPivotTrans │ │ │ │ + 0x00d3a870 666f726d 28766563 34207069 766f742c form(vec4 pivot, │ │ │ │ + 0x00d3a880 206d6174 34207069 766f7454 72616e73 mat4 pivotTrans │ │ │ │ + 0x00d3a890 666f726d 2c20666c 6f617420 7069766f form, float pivo │ │ │ │ + 0x00d3a8a0 74526561 6c5a2c20 76656332 206f6666 tRealZ, vec2 off │ │ │ │ + 0x00d3a8b0 73657429 200a2020 7b200a20 20202066 set) . { . f │ │ │ │ + 0x00d3a8c0 6c6f6174 206c6f67 69635a20 3d207069 loat logicZ = pi │ │ │ │ + 0x00d3a8d0 766f742e 7a202f20 7069766f 742e773b vot.z / pivot.w; │ │ │ │ + 0x00d3a8e0 200a2020 20207665 63342074 72616e73 . vec4 trans │ │ │ │ + 0x00d3a8f0 666f726d 65645069 766f7420 3d207069 formedPivot = pi │ │ │ │ + 0x00d3a900 766f7454 72616e73 666f726d 202a2076 votTransform * v │ │ │ │ + 0x00d3a910 65633428 7069766f 742e7879 2c207069 ec4(pivot.xy, pi │ │ │ │ + 0x00d3a920 766f7452 65616c5a 2c207069 766f742e votRealZ, pivot. │ │ │ │ + 0x00d3a930 77293b20 0a202020 20766563 34207363 w); . vec4 sc │ │ │ │ + 0x00d3a940 616c6520 3d207069 766f7454 72616e73 ale = pivotTrans │ │ │ │ + 0x00d3a950 666f726d 202a2076 65633428 312e302c form * vec4(1.0, │ │ │ │ + 0x00d3a960 202d312e 302c2030 2e302c20 312e3029 -1.0, 0.0, 1.0) │ │ │ │ + 0x00d3a970 3b200a20 20202076 65633420 706f7369 ; . vec4 posi │ │ │ │ + 0x00d3a980 74696f6e 203d2076 65633428 7472616e tion = vec4(tran │ │ │ │ + 0x00d3a990 73666f72 6d656450 69766f74 2e787920 sformedPivot.xy │ │ │ │ + 0x00d3a9a0 2f207472 616e7366 6f726d65 64506976 / transformedPiv │ │ │ │ + 0x00d3a9b0 6f742e77 2c206c6f 6769635a 2c20312e ot.w, logicZ, 1. │ │ │ │ + 0x00d3a9c0 3029202b 20766563 34286f66 66736574 0) + vec4(offset │ │ │ │ + 0x00d3a9d0 202f2073 63616c65 2e77202a 20736361 / scale.w * sca │ │ │ │ + 0x00d3a9e0 6c652e78 2c20302e 302c2030 2e30293b le.x, 0.0, 0.0); │ │ │ │ + 0x00d3a9f0 200a2020 23696664 65662056 554c4b41 . #ifdef VULKA │ │ │ │ + 0x00d3aa00 4e200a20 20202070 6f736974 696f6e2e N . position. │ │ │ │ + 0x00d3aa10 79203d20 2d706f73 6974696f 6e2e793b y = -position.y; │ │ │ │ + 0x00d3aa20 200a2020 2020706f 73697469 6f6e2e7a . position.z │ │ │ │ + 0x00d3aa30 203d2028 706f7369 74696f6e 2e7a2020 = (position.z │ │ │ │ + 0x00d3aa40 2b20706f 73697469 6f6e2e77 29202f20 + position.w) / │ │ │ │ + 0x00d3aa50 322e303b 200a2020 23656e64 6966200a 2.0; . #endif . │ │ │ │ + 0x00d3aa60 20202020 72657475 726e2070 6f736974 return posit │ │ │ │ + 0x00d3aa70 696f6e3b 200a2020 7d200a20 20766563 ion; . } . vec │ │ │ │ + 0x00d3aa80 32206361 6c634c69 6e655472 616e7366 2 calcLineTransf │ │ │ │ + 0x00d3aa90 6f726d65 64417869 73506f73 28766563 ormedAxisPos(vec │ │ │ │ + 0x00d3aaa0 32206f72 6967696e 616c4178 6973506f 2 originalAxisPo │ │ │ │ + 0x00d3aab0 732c2076 65633220 73686966 74656450 s, vec2 shiftedP │ │ │ │ + 0x00d3aac0 6f732c20 6d617434 206d6f64 656c5669 os, mat4 modelVi │ │ │ │ + 0x00d3aad0 65772c20 666c6f61 74206861 6c665769 ew, float halfWi │ │ │ │ + 0x00d3aae0 64746829 200a2020 7b200a20 20202076 dth) . { . v │ │ │ │ + 0x00d3aaf0 65633220 70203d20 28766563 34287368 ec2 p = (vec4(sh │ │ │ │ + 0x00d3ab00 69667465 64506f73 2c20302e 302c2031 iftedPos, 0.0, 1 │ │ │ │ + 0x00d3ab10 2e302920 2a206d6f 64656c56 69657729 .0) * modelView) │ │ │ │ + 0x00d3ab20 2e78793b 200a2020 20207665 63322064 .xy; . vec2 d │ │ │ │ + 0x00d3ab30 203d2070 202d206f 72696769 6e616c41 = p - originalA │ │ │ │ + 0x00d3ab40 78697350 6f733b20 0a202020 20696620 xisPos; . if │ │ │ │ + 0x00d3ab50 28646f74 28642c20 64292021 3d20302e (dot(d, d) != 0. │ │ │ │ + 0x00d3ab60 3029200a 20202020 20207265 7475726e 0) . return │ │ │ │ + 0x00d3ab70 206f7269 67696e61 6c417869 73506f73 originalAxisPos │ │ │ │ + 0x00d3ab80 202b206e 6f726d61 6c697a65 28642920 + normalize(d) │ │ │ │ + 0x00d3ab90 2a206861 6c665769 6474683b 200a2020 * halfWidth; . │ │ │ │ + 0x00d3aba0 2020656c 7365200a 20202020 20207265 else . re │ │ │ │ + 0x00d3abb0 7475726e 206f7269 67696e61 6c417869 turn originalAxi │ │ │ │ + 0x00d3abc0 73506f73 3b200a20 207d200a 2020766f sPos; . } . vo │ │ │ │ + 0x00d3abd0 6964206d 61696e28 29200a20 207b200a id main() . { . │ │ │ │ + 0x00d3abe0 20202020 76656334 20706f73 203d2076 vec4 pos = v │ │ │ │ + 0x00d3abf0 65633428 615f706f 73697469 6f6e2e78 ec4(a_position.x │ │ │ │ + 0x00d3ac00 797a2c20 3129202a 20755f6d 6f64656c yz, 1) * u_model │ │ │ │ + 0x00d3ac10 56696577 3b200a20 20202076 65633420 View; . vec4 │ │ │ │ + 0x00d3ac20 73686966 74656450 6f73203d 20766563 shiftedPos = vec │ │ │ │ + 0x00d3ac30 3428615f 6e6f726d 616c2c20 302c2030 4(a_normal, 0, 0 │ │ │ │ + 0x00d3ac40 29202b20 706f733b 200a2020 2020676c ) + pos; . gl │ │ │ │ + 0x00d3ac50 5f506f73 6974696f 6e203d20 6170706c _Position = appl │ │ │ │ + 0x00d3ac60 79506976 6f745472 616e7366 6f726d28 yPivotTransform( │ │ │ │ + 0x00d3ac70 73686966 74656450 6f73202a 20755f70 shiftedPos * u_p │ │ │ │ + 0x00d3ac80 726f6a65 6374696f 6e2c2075 5f706976 rojection, u_piv │ │ │ │ + 0x00d3ac90 6f745472 616e7366 6f726d2c 20302e30 otTransform, 0.0 │ │ │ │ + 0x00d3aca0 293b200a 20202020 765f636f 6c6f7254 ); . v_colorT │ │ │ │ + 0x00d3acb0 6578436f 6f726473 203d2061 5f636f6c exCoords = a_col │ │ │ │ + 0x00d3acc0 6f725465 78436f6f 7264733b 200a2020 orTexCoords; . │ │ │ │ + 0x00d3acd0 2020765f 6d61736b 54657843 6f6f7264 v_maskTexCoord │ │ │ │ + 0x00d3ace0 73203d20 615f6d61 736b5465 78436f6f s = a_maskTexCoo │ │ │ │ + 0x00d3acf0 7264733b 200a2020 7d200a00 00000000 rds; . } ...... │ │ │ │ + 0x00d3ad00 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d3ad10 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d3ad20 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d3ad30 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d3ad40 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d3ad50 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d3ad60 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d3ad70 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d3ad80 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d3ad90 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d3ada0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d3adb0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d3adc0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d3add0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d3ade0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d3adf0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d3ae00 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d3ae10 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d3ae20 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d3ae30 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d3ae40 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d3ae50 63322061 5f6e6f72 6d616c3b 200a2020 c2 a_normal; . │ │ │ │ + 0x00d3ae60 696e2076 65633220 615f636f 6c6f7254 in vec2 a_colorT │ │ │ │ + 0x00d3ae70 6578436f 6f726473 3b200a20 206f7574 exCoords; . out │ │ │ │ + 0x00d3ae80 20766563 3220765f 636f6c6f 72546578 vec2 v_colorTex │ │ │ │ + 0x00d3ae90 436f6f72 64733b20 0a202075 6e69666f Coords; . unifo │ │ │ │ + 0x00d3aea0 726d206d 61743420 755f6d6f 64656c56 rm mat4 u_modelV │ │ │ │ + 0x00d3aeb0 6965773b 200a2020 756e6966 6f726d20 iew; . uniform │ │ │ │ + 0x00d3aec0 6d617434 20755f70 726f6a65 6374696f mat4 u_projectio │ │ │ │ + 0x00d3aed0 6e3b200a 2020756e 69666f72 6d206d61 n; . uniform ma │ │ │ │ + 0x00d3aee0 74342075 5f706976 6f745472 616e7366 t4 u_pivotTransf │ │ │ │ + 0x00d3aef0 6f726d3b 200a2020 756e6966 6f726d20 orm; . uniform │ │ │ │ + 0x00d3af00 76656334 20755f70 6f736974 696f6e3b vec4 u_position; │ │ │ │ + 0x00d3af10 200a2020 756e6966 6f726d20 76656332 . uniform vec2 │ │ │ │ + 0x00d3af20 20755f6c 696e6550 6172616d 733b200a u_lineParams; . │ │ │ │ + 0x00d3af30 2020756e 69666f72 6d20666c 6f617420 uniform float │ │ │ │ + 0x00d3af40 755f6163 63757261 63793b20 0a202075 u_accuracy; . u │ │ │ │ + 0x00d3af50 6e69666f 726d2066 6c6f6174 20755f7a niform float u_z │ │ │ │ + 0x00d3af60 5363616c 653b200a 2020756e 69666f72 Scale; . unifor │ │ │ │ + 0x00d3af70 6d20666c 6f617420 755f6f70 61636974 m float u_opacit │ │ │ │ + 0x00d3af80 793b200a 2020756e 69666f72 6d20666c y; . uniform fl │ │ │ │ + 0x00d3af90 6f617420 755f617a 696d7574 3b200a20 oat u_azimut; . │ │ │ │ + 0x00d3afa0 20636f6e 73742066 6c6f6174 206b5368 const float kSh │ │ │ │ + 0x00d3afb0 61706543 6f6f7264 5363616c 6172203d apeCoordScalar = │ │ │ │ + 0x00d3afc0 20313030 302e303b 200a2020 76656334 1000.0; . vec4 │ │ │ │ + 0x00d3afd0 20617070 6c795069 766f7454 72616e73 applyPivotTrans │ │ │ │ + 0x00d3afe0 666f726d 28766563 34207069 766f742c form(vec4 pivot, │ │ │ │ + 0x00d3aff0 206d6174 34207069 766f7454 72616e73 mat4 pivotTrans │ │ │ │ + 0x00d3b000 666f726d 2c20666c 6f617420 7069766f form, float pivo │ │ │ │ + 0x00d3b010 74526561 6c5a2920 0a20207b 200a2020 tRealZ) . { . │ │ │ │ + 0x00d3b020 20207665 63342074 72616e73 666f726d vec4 transform │ │ │ │ + 0x00d3b030 65645069 766f7420 3d207069 766f743b edPivot = pivot; │ │ │ │ + 0x00d3b040 200a2020 2020666c 6f617420 77203d20 . float w = │ │ │ │ + 0x00d3b050 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ + 0x00d3b060 2e773b20 0a202020 20747261 6e73666f .w; . transfo │ │ │ │ + 0x00d3b070 726d6564 5069766f 742e7879 77203d20 rmedPivot.xyw = │ │ │ │ + 0x00d3b080 28706976 6f745472 616e7366 6f726d20 (pivotTransform │ │ │ │ + 0x00d3b090 2a207665 63342874 72616e73 666f726d * vec4(transform │ │ │ │ + 0x00d3b0a0 65645069 766f742e 78792c20 7069766f edPivot.xy, pivo │ │ │ │ + 0x00d3b0b0 74526561 6c5a2c20 7729292e 7879773b tRealZ, w)).xyw; │ │ │ │ + 0x00d3b0c0 200a2020 20207472 616e7366 6f726d65 . transforme │ │ │ │ + 0x00d3b0d0 64506976 6f742e7a 202a3d20 7472616e dPivot.z *= tran │ │ │ │ + 0x00d3b0e0 73666f72 6d656450 69766f74 2e77202f sformedPivot.w / │ │ │ │ + 0x00d3b0f0 20773b20 0a202023 69666465 66205655 w; . #ifdef VU │ │ │ │ + 0x00d3b100 4c4b414e 200a2020 20207472 616e7366 LKAN . transf │ │ │ │ + 0x00d3b110 6f726d65 64506976 6f742e79 203d202d ormedPivot.y = - │ │ │ │ + 0x00d3b120 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ + 0x00d3b130 2e793b20 0a202020 20747261 6e73666f .y; . transfo │ │ │ │ + 0x00d3b140 726d6564 5069766f 742e7a20 3d202874 rmedPivot.z = (t │ │ │ │ + 0x00d3b150 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ + 0x00d3b160 7a20202b 20747261 6e73666f 726d6564 z + transformed │ │ │ │ + 0x00d3b170 5069766f 742e7729 202f2032 2e303b20 Pivot.w) / 2.0; │ │ │ │ + 0x00d3b180 0a202023 656e6469 66200a20 20202072 . #endif . r │ │ │ │ + 0x00d3b190 65747572 6e207472 616e7366 6f726d65 eturn transforme │ │ │ │ + 0x00d3b1a0 64506976 6f743b20 0a20207d 200a2020 dPivot; . } . │ │ │ │ + 0x00d3b1b0 76656334 20617070 6c794269 6c6c626f vec4 applyBillbo │ │ │ │ + 0x00d3b1c0 61726450 69766f74 5472616e 73666f72 ardPivotTransfor │ │ │ │ + 0x00d3b1d0 6d287665 63342070 69766f74 2c206d61 m(vec4 pivot, ma │ │ │ │ + 0x00d3b1e0 74342070 69766f74 5472616e 73666f72 t4 pivotTransfor │ │ │ │ + 0x00d3b1f0 6d2c2066 6c6f6174 20706976 6f745265 m, float pivotRe │ │ │ │ + 0x00d3b200 616c5a2c 20766563 32206f66 66736574 alZ, vec2 offset │ │ │ │ + 0x00d3b210 29200a20 207b200a 20202020 666c6f61 ) . { . floa │ │ │ │ + 0x00d3b220 74206c6f 6769635a 203d2070 69766f74 t logicZ = pivot │ │ │ │ + 0x00d3b230 2e7a202f 20706976 6f742e77 3b200a20 .z / pivot.w; . │ │ │ │ + 0x00d3b240 20202076 65633420 7472616e 73666f72 vec4 transfor │ │ │ │ + 0x00d3b250 6d656450 69766f74 203d2070 69766f74 medPivot = pivot │ │ │ │ + 0x00d3b260 5472616e 73666f72 6d202a20 76656334 Transform * vec4 │ │ │ │ + 0x00d3b270 28706976 6f742e78 792c2070 69766f74 (pivot.xy, pivot │ │ │ │ + 0x00d3b280 5265616c 5a2c2070 69766f74 2e77293b RealZ, pivot.w); │ │ │ │ + 0x00d3b290 200a2020 20207665 63342073 63616c65 . vec4 scale │ │ │ │ + 0x00d3b2a0 203d2070 69766f74 5472616e 73666f72 = pivotTransfor │ │ │ │ + 0x00d3b2b0 6d202a20 76656334 28312e30 2c202d31 m * vec4(1.0, -1 │ │ │ │ + 0x00d3b2c0 2e302c20 302e302c 20312e30 293b200a .0, 0.0, 1.0); . │ │ │ │ + 0x00d3b2d0 20202020 76656334 20706f73 6974696f vec4 positio │ │ │ │ + 0x00d3b2e0 6e203d20 76656334 28747261 6e73666f n = vec4(transfo │ │ │ │ + 0x00d3b2f0 726d6564 5069766f 742e7879 202f2074 rmedPivot.xy / t │ │ │ │ + 0x00d3b300 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ + 0x00d3b310 772c206c 6f676963 5a2c2031 2e302920 w, logicZ, 1.0) │ │ │ │ + 0x00d3b320 2b207665 6334286f 66667365 74202f20 + vec4(offset / │ │ │ │ + 0x00d3b330 7363616c 652e7720 2a207363 616c652e scale.w * scale. │ │ │ │ + 0x00d3b340 782c2030 2e302c20 302e3029 3b200a20 x, 0.0, 0.0); . │ │ │ │ + 0x00d3b350 20236966 64656620 56554c4b 414e200a #ifdef VULKAN . │ │ │ │ + 0x00d3b360 20202020 706f7369 74696f6e 2e79203d position.y = │ │ │ │ + 0x00d3b370 202d706f 73697469 6f6e2e79 3b200a20 -position.y; . │ │ │ │ + 0x00d3b380 20202070 6f736974 696f6e2e 7a203d20 position.z = │ │ │ │ + 0x00d3b390 28706f73 6974696f 6e2e7a20 202b2070 (position.z + p │ │ │ │ + 0x00d3b3a0 6f736974 696f6e2e 7729202f 20322e30 osition.w) / 2.0 │ │ │ │ + 0x00d3b3b0 3b200a20 2023656e 64696620 0a202020 ; . #endif . │ │ │ │ + 0x00d3b3c0 20726574 75726e20 706f7369 74696f6e return position │ │ │ │ + 0x00d3b3d0 3b200a20 207d200a 20207665 63322063 ; . } . vec2 c │ │ │ │ + 0x00d3b3e0 616c634c 696e6554 72616e73 666f726d alcLineTransform │ │ │ │ + 0x00d3b3f0 65644178 6973506f 73287665 6332206f edAxisPos(vec2 o │ │ │ │ + 0x00d3b400 72696769 6e616c41 78697350 6f732c20 riginalAxisPos, │ │ │ │ + 0x00d3b410 76656332 20736869 66746564 506f732c vec2 shiftedPos, │ │ │ │ + 0x00d3b420 206d6174 34206d6f 64656c56 6965772c mat4 modelView, │ │ │ │ + 0x00d3b430 20666c6f 61742068 616c6657 69647468 float halfWidth │ │ │ │ + 0x00d3b440 29200a20 207b200a 20202020 76656332 ) . { . vec2 │ │ │ │ + 0x00d3b450 2070203d 20287665 63342873 68696674 p = (vec4(shift │ │ │ │ + 0x00d3b460 6564506f 732c2030 2e302c20 312e3029 edPos, 0.0, 1.0) │ │ │ │ + 0x00d3b470 202a206d 6f64656c 56696577 292e7879 * modelView).xy │ │ │ │ + 0x00d3b480 3b200a20 20202076 65633220 64203d20 ; . vec2 d = │ │ │ │ + 0x00d3b490 70202d20 6f726967 696e616c 41786973 p - originalAxis │ │ │ │ + 0x00d3b4a0 506f733b 200a2020 20206966 2028646f Pos; . if (do │ │ │ │ + 0x00d3b4b0 7428642c 20642920 213d2030 2e302920 t(d, d) != 0.0) │ │ │ │ + 0x00d3b4c0 0a202020 20202072 65747572 6e206f72 . return or │ │ │ │ + 0x00d3b4d0 6967696e 616c4178 6973506f 73202b20 iginalAxisPos + │ │ │ │ + 0x00d3b4e0 6e6f726d 616c697a 65286429 202a2068 normalize(d) * h │ │ │ │ + 0x00d3b4f0 616c6657 69647468 3b200a20 20202065 alfWidth; . e │ │ │ │ + 0x00d3b500 6c736520 0a202020 20202072 65747572 lse . retur │ │ │ │ + 0x00d3b510 6e206f72 6967696e 616c4178 6973506f n originalAxisPo │ │ │ │ + 0x00d3b520 733b200a 20207d20 0a202076 6f696420 s; . } . void │ │ │ │ + 0x00d3b530 6d61696e 2829200a 20207b20 0a202020 main() . { . │ │ │ │ + 0x00d3b540 20666c6f 61742073 696e5620 3d207369 float sinV = si │ │ │ │ + 0x00d3b550 6e28755f 617a696d 7574293b 200a2020 n(u_azimut); . │ │ │ │ + 0x00d3b560 2020666c 6f617420 636f7356 203d2063 float cosV = c │ │ │ │ + 0x00d3b570 6f732875 5f617a69 6d757429 3b200a20 os(u_azimut); . │ │ │ │ + 0x00d3b580 2020206d 61743420 726f7461 74696f6e mat4 rotation │ │ │ │ + 0x00d3b590 3b200a20 20202072 6f746174 696f6e5b ; . rotation[ │ │ │ │ + 0x00d3b5a0 305d203d 20766563 3428636f 73562c20 0] = vec4(cosV, │ │ │ │ + 0x00d3b5b0 73696e56 2c20302e 302c2030 2e30293b sinV, 0.0, 0.0); │ │ │ │ + 0x00d3b5c0 200a2020 2020726f 74617469 6f6e5b31 . rotation[1 │ │ │ │ + 0x00d3b5d0 5d203d20 76656334 282d7369 6e562c20 ] = vec4(-sinV, │ │ │ │ + 0x00d3b5e0 636f7356 2c20302e 302c2030 2e30293b cosV, 0.0, 0.0); │ │ │ │ + 0x00d3b5f0 200a2020 2020726f 74617469 6f6e5b32 . rotation[2 │ │ │ │ + 0x00d3b600 5d203d20 76656334 28302e30 2c20302e ] = vec4(0.0, 0. │ │ │ │ + 0x00d3b610 302c2031 2e302c20 302e3029 3b200a20 0, 1.0, 0.0); . │ │ │ │ + 0x00d3b620 20202072 6f746174 696f6e5b 335d203d rotation[3] = │ │ │ │ + 0x00d3b630 20766563 3428302e 302c2030 2e302c20 vec4(0.0, 0.0, │ │ │ │ + 0x00d3b640 302e302c 20312e30 293b200a 20202020 0.0, 1.0); . │ │ │ │ + 0x00d3b650 76656334 20706f73 203d2076 65633428 vec4 pos = vec4( │ │ │ │ + 0x00d3b660 755f706f 73697469 6f6e2e78 797a2c20 u_position.xyz, │ │ │ │ + 0x00d3b670 312e3029 202a2075 5f6d6f64 656c5669 1.0) * u_modelVi │ │ │ │ + 0x00d3b680 65773b20 0a202020 20766563 34206e6f ew; . vec4 no │ │ │ │ + 0x00d3b690 726d616c 203d2076 65633428 615f6e6f rmal = vec4(a_no │ │ │ │ + 0x00d3b6a0 726d616c 2c20302c 2030293b 200a2020 rmal, 0, 0); . │ │ │ │ + 0x00d3b6b0 20207665 63342073 68696674 6564506f vec4 shiftedPo │ │ │ │ + 0x00d3b6c0 73203d20 6e6f726d 616c202a 20726f74 s = normal * rot │ │ │ │ + 0x00d3b6d0 6174696f 6e202b20 706f733b 200a2020 ation + pos; . │ │ │ │ + 0x00d3b6e0 2020676c 5f506f73 6974696f 6e203d20 gl_Position = │ │ │ │ + 0x00d3b6f0 6170706c 79506976 6f745472 616e7366 applyPivotTransf │ │ │ │ + 0x00d3b700 6f726d28 73686966 74656450 6f73202a orm(shiftedPos * │ │ │ │ + 0x00d3b710 20755f70 726f6a65 6374696f 6e2c2075 u_projection, u │ │ │ │ + 0x00d3b720 5f706976 6f745472 616e7366 6f726d2c _pivotTransform, │ │ │ │ + 0x00d3b730 20302e30 293b200a 20202020 765f636f 0.0); . v_co │ │ │ │ + 0x00d3b740 6c6f7254 6578436f 6f726473 203d2061 lorTexCoords = a │ │ │ │ + 0x00d3b750 5f636f6c 6f725465 78436f6f 7264733b _colorTexCoords; │ │ │ │ + 0x00d3b760 200a2020 7d200a00 00000000 00000000 . } .......... │ │ │ │ + 0x00d3b770 00000000 00000000 00000000 00000000 ................ │ │ │ │ + 0x00d3b780 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d3b790 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d3b7a0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d3b7b0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d3b7c0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d3b7d0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d3b7e0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d3b7f0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d3b800 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d3b810 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d3b820 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d3b830 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d3b840 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d3b850 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d3b860 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d3b870 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d3b880 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d3b890 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d3b8a0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d3b8b0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d3b8c0 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d3b8d0 63332076 5f726164 6975733b 200a2020 c3 v_radius; . │ │ │ │ + 0x00d3b8e0 696e2076 65633420 765f636f 6c6f723b in vec4 v_color; │ │ │ │ + 0x00d3b8f0 200a2020 6f757420 76656334 20765f46 . out vec4 v_F │ │ │ │ + 0x00d3b900 72616743 6f6c6f72 3b200a20 20636f6e ragColor; . con │ │ │ │ + 0x00d3b910 73742066 6c6f6174 20616150 6978656c st float aaPixel │ │ │ │ + 0x00d3b920 73436f75 6e74203d 20322e35 3b200a20 sCount = 2.5; . │ │ │ │ + 0x00d3b930 20636f6e 73742066 6c6f6174 206b5368 const float kSh │ │ │ │ + 0x00d3b940 61706543 6f6f7264 5363616c 6172203d apeCoordScalar = │ │ │ │ + 0x00d3b950 20313030 302e303b 200a2020 766f6964 1000.0; . void │ │ │ │ + 0x00d3b960 206d6169 6e282920 0a20207b 200a2020 main() . { . │ │ │ │ + 0x00d3b970 20207665 63342066 696e616c 436f6c6f vec4 finalColo │ │ │ │ + 0x00d3b980 72203d20 765f636f 6c6f723b 200a2020 r = v_color; . │ │ │ │ + 0x00d3b990 2020666c 6f617420 736d616c 6c526164 float smallRad │ │ │ │ + 0x00d3b9a0 69757320 3d20765f 72616469 75732e7a ius = v_radius.z │ │ │ │ + 0x00d3b9b0 202d2061 61506978 656c7343 6f756e74 - aaPixelsCount │ │ │ │ + 0x00d3b9c0 3b200a20 20202066 6c6f6174 20737465 ; . float ste │ │ │ │ + 0x00d3b9d0 7056616c 7565203d 20736d6f 6f746873 pValue = smooths │ │ │ │ + 0x00d3b9e0 74657028 736d616c 6c526164 69757320 tep(smallRadius │ │ │ │ + 0x00d3b9f0 2a20736d 616c6c52 61646975 732c2076 * smallRadius, v │ │ │ │ + 0x00d3ba00 5f726164 6975732e 7a202a20 765f7261 _radius.z * v_ra │ │ │ │ + 0x00d3ba10 64697573 2e7a2c20 0a202020 20202020 dius.z, . │ │ │ │ + 0x00d3ba20 20202020 20202020 20202020 20202020 │ │ │ │ + 0x00d3ba30 20202020 20202020 20646f74 28765f72 dot(v_r │ │ │ │ + 0x00d3ba40 61646975 732e7879 2c20765f 72616469 adius.xy, v_radi │ │ │ │ + 0x00d3ba50 75732e78 7929293b 200a2020 20206669 us.xy)); . fi │ │ │ │ + 0x00d3ba60 6e616c43 6f6c6f72 2e61203d 2066696e nalColor.a = fin │ │ │ │ + 0x00d3ba70 616c436f 6c6f722e 61202a20 28312e30 alColor.a * (1.0 │ │ │ │ + 0x00d3ba80 202d2073 74657056 616c7565 293b200a - stepValue); . │ │ │ │ + 0x00d3ba90 20202020 69662028 66696e61 6c436f6c if (finalCol │ │ │ │ + 0x00d3baa0 6f722e61 203c2030 2e303129 200a2020 or.a < 0.01) . │ │ │ │ + 0x00d3bab0 20202020 64697363 6172643b 200a2020 discard; . │ │ │ │ + 0x00d3bac0 2020765f 46726167 436f6c6f 72203d20 v_FragColor = │ │ │ │ + 0x00d3bad0 66696e61 6c436f6c 6f723b20 0a20207d finalColor; . } │ │ │ │ + 0x00d3bae0 200a0000 00000000 00000000 00000000 ............... │ │ │ │ + 0x00d3baf0 00000000 00000000 00000000 00000000 ................ │ │ │ │ + 0x00d3bb00 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d3bb10 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d3bb20 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d3bb30 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d3bb40 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d3bb50 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d3bb60 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d3bb70 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d3bb80 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d3bb90 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d3bba0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d3bbb0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d3bbc0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d3bbd0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d3bbe0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d3bbf0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d3bc00 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d3bc10 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d3bc20 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d3bc30 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d3bc40 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d3bc50 63322061 5f706f73 3b200a20 20696e20 c2 a_pos; . in │ │ │ │ + 0x00d3bc60 76656332 20615f74 636f6f72 643b200a vec2 a_tcoord; . │ │ │ │ + 0x00d3bc70 20206f75 74207665 63322076 5f636f6c out vec2 v_col │ │ │ │ + 0x00d3bc80 6f725465 78436f6f 7264733b 200a2020 orTexCoords; . │ │ │ │ + 0x00d3bc90 6f757420 76656334 20765f6f 66667365 out vec4 v_offse │ │ │ │ + 0x00d3bca0 743b200a 2020756e 69666f72 6d207665 t; . uniform ve │ │ │ │ + 0x00d3bcb0 63342075 5f667261 6d656275 66666572 c4 u_framebuffer │ │ │ │ + 0x00d3bcc0 4d657472 6963733b 200a2020 636f6e73 Metrics; . cons │ │ │ │ + 0x00d3bcd0 7420666c 6f617420 6b536861 7065436f t float kShapeCo │ │ │ │ + 0x00d3bce0 6f726453 63616c61 72203d20 31303030 ordScalar = 1000 │ │ │ │ + 0x00d3bcf0 2e303b20 0a202076 65633420 6170706c .0; . vec4 appl │ │ │ │ + 0x00d3bd00 79506976 6f745472 616e7366 6f726d28 yPivotTransform( │ │ │ │ + 0x00d3bd10 76656334 20706976 6f742c20 6d617434 vec4 pivot, mat4 │ │ │ │ + 0x00d3bd20 20706976 6f745472 616e7366 6f726d2c pivotTransform, │ │ │ │ + 0x00d3bd30 20666c6f 61742070 69766f74 5265616c float pivotReal │ │ │ │ + 0x00d3bd40 5a29200a 20207b20 0a202020 20766563 Z) . { . vec │ │ │ │ + 0x00d3bd50 34207472 616e7366 6f726d65 64506976 4 transformedPiv │ │ │ │ + 0x00d3bd60 6f74203d 20706976 6f743b20 0a202020 ot = pivot; . │ │ │ │ + 0x00d3bd70 20666c6f 61742077 203d2074 72616e73 float w = trans │ │ │ │ + 0x00d3bd80 666f726d 65645069 766f742e 773b200a formedPivot.w; . │ │ │ │ + 0x00d3bd90 20202020 7472616e 73666f72 6d656450 transformedP │ │ │ │ + 0x00d3bda0 69766f74 2e787977 203d2028 7069766f ivot.xyw = (pivo │ │ │ │ + 0x00d3bdb0 74547261 6e73666f 726d202a 20766563 tTransform * vec │ │ │ │ + 0x00d3bdc0 34287472 616e7366 6f726d65 64506976 4(transformedPiv │ │ │ │ + 0x00d3bdd0 6f742e78 792c2070 69766f74 5265616c ot.xy, pivotReal │ │ │ │ + 0x00d3bde0 5a2c2077 29292e78 79773b20 0a202020 Z, w)).xyw; . │ │ │ │ + 0x00d3bdf0 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ + 0x00d3be00 742e7a20 2a3d2074 72616e73 666f726d t.z *= transform │ │ │ │ + 0x00d3be10 65645069 766f742e 77202f20 773b200a edPivot.w / w; . │ │ │ │ + 0x00d3be20 20202369 66646566 2056554c 4b414e20 #ifdef VULKAN │ │ │ │ + 0x00d3be30 0a202020 20747261 6e73666f 726d6564 . transformed │ │ │ │ + 0x00d3be40 5069766f 742e7920 3d202d74 72616e73 Pivot.y = -trans │ │ │ │ + 0x00d3be50 666f726d 65645069 766f742e 793b200a formedPivot.y; . │ │ │ │ + 0x00d3be60 20202020 7472616e 73666f72 6d656450 transformedP │ │ │ │ + 0x00d3be70 69766f74 2e7a203d 20287472 616e7366 ivot.z = (transf │ │ │ │ + 0x00d3be80 6f726d65 64506976 6f742e7a 20202b20 ormedPivot.z + │ │ │ │ + 0x00d3be90 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ + 0x00d3bea0 2e772920 2f20322e 303b200a 20202365 .w) / 2.0; . #e │ │ │ │ + 0x00d3beb0 6e646966 200a2020 20207265 7475726e ndif . return │ │ │ │ + 0x00d3bec0 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ + 0x00d3bed0 743b200a 20207d20 0a202076 65633420 t; . } . vec4 │ │ │ │ + 0x00d3bee0 6170706c 7942696c 6c626f61 72645069 applyBillboardPi │ │ │ │ + 0x00d3bef0 766f7454 72616e73 666f726d 28766563 votTransform(vec │ │ │ │ + 0x00d3bf00 34207069 766f742c 206d6174 34207069 4 pivot, mat4 pi │ │ │ │ + 0x00d3bf10 766f7454 72616e73 666f726d 2c20666c votTransform, fl │ │ │ │ + 0x00d3bf20 6f617420 7069766f 74526561 6c5a2c20 oat pivotRealZ, │ │ │ │ + 0x00d3bf30 76656332 206f6666 73657429 200a2020 vec2 offset) . │ │ │ │ + 0x00d3bf40 7b200a20 20202066 6c6f6174 206c6f67 { . float log │ │ │ │ + 0x00d3bf50 69635a20 3d207069 766f742e 7a202f20 icZ = pivot.z / │ │ │ │ + 0x00d3bf60 7069766f 742e773b 200a2020 20207665 pivot.w; . ve │ │ │ │ + 0x00d3bf70 63342074 72616e73 666f726d 65645069 c4 transformedPi │ │ │ │ + 0x00d3bf80 766f7420 3d207069 766f7454 72616e73 vot = pivotTrans │ │ │ │ + 0x00d3bf90 666f726d 202a2076 65633428 7069766f form * vec4(pivo │ │ │ │ + 0x00d3bfa0 742e7879 2c207069 766f7452 65616c5a t.xy, pivotRealZ │ │ │ │ + 0x00d3bfb0 2c207069 766f742e 77293b20 0a202020 , pivot.w); . │ │ │ │ + 0x00d3bfc0 20766563 34207363 616c6520 3d207069 vec4 scale = pi │ │ │ │ + 0x00d3bfd0 766f7454 72616e73 666f726d 202a2076 votTransform * v │ │ │ │ + 0x00d3bfe0 65633428 312e302c 202d312e 302c2030 ec4(1.0, -1.0, 0 │ │ │ │ + 0x00d3bff0 2e302c20 312e3029 3b200a20 20202076 .0, 1.0); . v │ │ │ │ + 0x00d3c000 65633420 706f7369 74696f6e 203d2076 ec4 position = v │ │ │ │ + 0x00d3c010 65633428 7472616e 73666f72 6d656450 ec4(transformedP │ │ │ │ + 0x00d3c020 69766f74 2e787920 2f207472 616e7366 ivot.xy / transf │ │ │ │ + 0x00d3c030 6f726d65 64506976 6f742e77 2c206c6f ormedPivot.w, lo │ │ │ │ + 0x00d3c040 6769635a 2c20312e 3029202b 20766563 gicZ, 1.0) + vec │ │ │ │ + 0x00d3c050 34286f66 66736574 202f2073 63616c65 4(offset / scale │ │ │ │ + 0x00d3c060 2e77202a 20736361 6c652e78 2c20302e .w * scale.x, 0. │ │ │ │ + 0x00d3c070 302c2030 2e30293b 200a2020 23696664 0, 0.0); . #ifd │ │ │ │ + 0x00d3c080 65662056 554c4b41 4e200a20 20202070 ef VULKAN . p │ │ │ │ + 0x00d3c090 6f736974 696f6e2e 79203d20 2d706f73 osition.y = -pos │ │ │ │ + 0x00d3c0a0 6974696f 6e2e793b 200a2020 2020706f ition.y; . po │ │ │ │ + 0x00d3c0b0 73697469 6f6e2e7a 203d2028 706f7369 sition.z = (posi │ │ │ │ + 0x00d3c0c0 74696f6e 2e7a2020 2b20706f 73697469 tion.z + positi │ │ │ │ + 0x00d3c0d0 6f6e2e77 29202f20 322e303b 200a2020 on.w) / 2.0; . │ │ │ │ + 0x00d3c0e0 23656e64 6966200a 20202020 72657475 #endif . retu │ │ │ │ + 0x00d3c0f0 726e2070 6f736974 696f6e3b 200a2020 rn position; . │ │ │ │ + 0x00d3c100 7d200a20 20766563 32206361 6c634c69 } . vec2 calcLi │ │ │ │ + 0x00d3c110 6e655472 616e7366 6f726d65 64417869 neTransformedAxi │ │ │ │ + 0x00d3c120 73506f73 28766563 32206f72 6967696e sPos(vec2 origin │ │ │ │ + 0x00d3c130 616c4178 6973506f 732c2076 65633220 alAxisPos, vec2 │ │ │ │ + 0x00d3c140 73686966 74656450 6f732c20 6d617434 shiftedPos, mat4 │ │ │ │ + 0x00d3c150 206d6f64 656c5669 65772c20 666c6f61 modelView, floa │ │ │ │ + 0x00d3c160 74206861 6c665769 64746829 200a2020 t halfWidth) . │ │ │ │ + 0x00d3c170 7b200a20 20202076 65633220 70203d20 { . vec2 p = │ │ │ │ + 0x00d3c180 28766563 34287368 69667465 64506f73 (vec4(shiftedPos │ │ │ │ + 0x00d3c190 2c20302e 302c2031 2e302920 2a206d6f , 0.0, 1.0) * mo │ │ │ │ + 0x00d3c1a0 64656c56 69657729 2e78793b 200a2020 delView).xy; . │ │ │ │ + 0x00d3c1b0 20207665 63322064 203d2070 202d206f vec2 d = p - o │ │ │ │ + 0x00d3c1c0 72696769 6e616c41 78697350 6f733b20 riginalAxisPos; │ │ │ │ + 0x00d3c1d0 0a202020 20696620 28646f74 28642c20 . if (dot(d, │ │ │ │ + 0x00d3c1e0 64292021 3d20302e 3029200a 20202020 d) != 0.0) . │ │ │ │ + 0x00d3c1f0 20207265 7475726e 206f7269 67696e61 return origina │ │ │ │ + 0x00d3c200 6c417869 73506f73 202b206e 6f726d61 lAxisPos + norma │ │ │ │ + 0x00d3c210 6c697a65 28642920 2a206861 6c665769 lize(d) * halfWi │ │ │ │ + 0x00d3c220 6474683b 200a2020 2020656c 7365200a dth; . else . │ │ │ │ + 0x00d3c230 20202020 20207265 7475726e 206f7269 return ori │ │ │ │ + 0x00d3c240 67696e61 6c417869 73506f73 3b200a20 ginalAxisPos; . │ │ │ │ + 0x00d3c250 207d200a 2020766f 6964206d 61696e28 } . void main( │ │ │ │ + 0x00d3c260 29200a20 207b200a 20202020 765f636f ) . { . v_co │ │ │ │ + 0x00d3c270 6c6f7254 6578436f 6f726473 203d2061 lorTexCoords = a │ │ │ │ + 0x00d3c280 5f74636f 6f72643b 200a2020 2020765f _tcoord; . v_ │ │ │ │ + 0x00d3c290 6f666673 6574203d 20755f66 72616d65 offset = u_frame │ │ │ │ + 0x00d3c2a0 62756666 65724d65 74726963 732e7879 bufferMetrics.xy │ │ │ │ + 0x00d3c2b0 7879202a 20766563 3428312e 302c2030 xy * vec4(1.0, 0 │ │ │ │ + 0x00d3c2c0 2e302c20 302e302c 20312e30 29202b20 .0, 0.0, 1.0) + │ │ │ │ + 0x00d3c2d0 615f7463 6f6f7264 2e787978 793b200a a_tcoord.xyxy; . │ │ │ │ + 0x00d3c2e0 20202020 676c5f50 6f736974 696f6e20 gl_Position │ │ │ │ + 0x00d3c2f0 3d207665 63342861 5f706f73 2c20302e = vec4(a_pos, 0. │ │ │ │ + 0x00d3c300 302c2031 2e30293b 200a2020 7d200a00 0, 1.0); . } .. │ │ │ │ + 0x00d3c310 00000000 00000000 00000000 00000000 ................ │ │ │ │ + 0x00d3c320 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d3c330 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d3c340 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d3c350 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d3c360 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d3c370 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d3c380 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d3c390 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d3c3a0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d3c3b0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d3c3c0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d3c3d0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d3c3e0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d3c3f0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d3c400 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d3c410 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d3c420 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d3c430 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d3c440 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d3c450 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d3c460 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d3c470 63342076 5f636f6c 6f723b20 0a20206f c4 v_color; . o │ │ │ │ + 0x00d3c480 75742076 65633420 765f4672 6167436f ut vec4 v_FragCo │ │ │ │ + 0x00d3c490 6c6f723b 200a2020 636f6e73 7420666c lor; . const fl │ │ │ │ + 0x00d3c4a0 6f617420 6b536861 7065436f 6f726453 oat kShapeCoordS │ │ │ │ + 0x00d3c4b0 63616c61 72203d20 31303030 2e303b20 calar = 1000.0; │ │ │ │ + 0x00d3c4c0 0a202076 6f696420 6d61696e 2829200a . void main() . │ │ │ │ + 0x00d3c4d0 20207b20 0a202020 20765f46 72616743 { . v_FragC │ │ │ │ + 0x00d3c4e0 6f6c6f72 203d2076 5f636f6c 6f723b20 olor = v_color; │ │ │ │ + 0x00d3c4f0 0a20207d 200a0000 00000000 00000000 . } ........... │ │ │ │ + 0x00d3c500 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d3c510 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d3c520 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d3c530 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d3c540 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d3c550 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d3c560 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d3c570 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d3c580 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d3c590 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d3c5a0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d3c5b0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d3c5c0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d3c5d0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d3c5e0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d3c5f0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d3c600 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d3c610 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d3c620 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d3c630 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d3c640 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d3c650 63332061 5f706f73 6974696f 6e3b200a c3 a_position; . │ │ │ │ + 0x00d3c660 2020696e 20766563 3220615f 636f6c6f in vec2 a_colo │ │ │ │ + 0x00d3c670 72546578 436f6f72 643b200a 2020696e rTexCoord; . in │ │ │ │ + 0x00d3c680 20766563 3220615f 6f75746c 696e6543 vec2 a_outlineC │ │ │ │ + 0x00d3c690 6f6c6f72 54657843 6f6f7264 3b200a20 olorTexCoord; . │ │ │ │ + 0x00d3c6a0 20696e20 76656332 20615f6e 6f726d61 in vec2 a_norma │ │ │ │ + 0x00d3c6b0 6c3b200a 2020696e 20766563 3220615f l; . in vec2 a_ │ │ │ │ + 0x00d3c6c0 6d61736b 54657843 6f6f7264 3b200a20 maskTexCoord; . │ │ │ │ + 0x00d3c6d0 20236966 64656620 454e4142 4c455f56 #ifdef ENABLE_V │ │ │ │ + 0x00d3c6e0 5446200a 20206f75 74204c4f 575f5020 TF . out LOW_P │ │ │ │ + 0x00d3c6f0 76656334 20765f63 6f6c6f72 3b200a20 vec4 v_color; . │ │ │ │ + 0x00d3c700 2023656c 7365200a 20206f75 74207665 #else . out ve │ │ │ │ + 0x00d3c710 63322076 5f636f6c 6f725465 78436f6f c2 v_colorTexCoo │ │ │ │ + 0x00d3c720 72643b20 0a202023 656e6469 66200a20 rd; . #endif . │ │ │ │ + 0x00d3c730 206f7574 20766563 3220765f 6d61736b out vec2 v_mask │ │ │ │ + 0x00d3c740 54657843 6f6f7264 3b200a20 20756e69 TexCoord; . uni │ │ │ │ + 0x00d3c750 666f726d 206d6174 3420755f 6d6f6465 form mat4 u_mode │ │ │ │ + 0x00d3c760 6c566965 773b200a 2020756e 69666f72 lView; . unifor │ │ │ │ + 0x00d3c770 6d206d61 74342075 5f70726f 6a656374 m mat4 u_project │ │ │ │ + 0x00d3c780 696f6e3b 200a2020 756e6966 6f726d20 ion; . uniform │ │ │ │ + 0x00d3c790 76656332 20755f63 6f6e7472 61737447 vec2 u_contrastG │ │ │ │ + 0x00d3c7a0 616d6d61 3b200a20 20756e69 666f726d amma; . uniform │ │ │ │ + 0x00d3c7b0 20766563 3220755f 706f7369 74696f6e vec2 u_position │ │ │ │ + 0x00d3c7c0 3b200a20 20756e69 666f726d 20666c6f ; . uniform flo │ │ │ │ + 0x00d3c7d0 61742075 5f69734f 75746c69 6e655061 at u_isOutlinePa │ │ │ │ + 0x00d3c7e0 73733b20 0a202075 6e69666f 726d2066 ss; . uniform f │ │ │ │ + 0x00d3c7f0 6c6f6174 20755f6f 70616369 74793b20 loat u_opacity; │ │ │ │ + 0x00d3c800 0a202075 6e69666f 726d2066 6c6f6174 . uniform float │ │ │ │ + 0x00d3c810 20755f6c 656e6774 683b200a 20202369 u_length; . #i │ │ │ │ + 0x00d3c820 66646566 20454e41 424c455f 56544620 fdef ENABLE_VTF │ │ │ │ + 0x00d3c830 0a202075 6e69666f 726d2073 616d706c . uniform sampl │ │ │ │ + 0x00d3c840 65723244 20755f63 6f6c6f72 5465783b er2D u_colorTex; │ │ │ │ + 0x00d3c850 200a2020 23656e64 6966200a 2020636f . #endif . co │ │ │ │ + 0x00d3c860 6e737420 666c6f61 74206b42 61736544 nst float kBaseD │ │ │ │ + 0x00d3c870 65707468 53686966 74203d20 2d31302e epthShift = -10. │ │ │ │ + 0x00d3c880 303b200a 2020636f 6e737420 666c6f61 0; . const floa │ │ │ │ + 0x00d3c890 74206b53 68617065 436f6f72 64536361 t kShapeCoordSca │ │ │ │ + 0x00d3c8a0 6c617220 3d203130 30302e30 3b200a20 lar = 1000.0; . │ │ │ │ + 0x00d3c8b0 20766563 34206170 706c7950 69766f74 vec4 applyPivot │ │ │ │ + 0x00d3c8c0 5472616e 73666f72 6d287665 63342070 Transform(vec4 p │ │ │ │ + 0x00d3c8d0 69766f74 2c206d61 74342070 69766f74 ivot, mat4 pivot │ │ │ │ + 0x00d3c8e0 5472616e 73666f72 6d2c2066 6c6f6174 Transform, float │ │ │ │ + 0x00d3c8f0 20706976 6f745265 616c5a29 200a2020 pivotRealZ) . │ │ │ │ + 0x00d3c900 7b200a20 20202076 65633420 7472616e { . vec4 tran │ │ │ │ + 0x00d3c910 73666f72 6d656450 69766f74 203d2070 sformedPivot = p │ │ │ │ + 0x00d3c920 69766f74 3b200a20 20202066 6c6f6174 ivot; . float │ │ │ │ + 0x00d3c930 2077203d 20747261 6e73666f 726d6564 w = transformed │ │ │ │ + 0x00d3c940 5069766f 742e773b 200a2020 20207472 Pivot.w; . tr │ │ │ │ + 0x00d3c950 616e7366 6f726d65 64506976 6f742e78 ansformedPivot.x │ │ │ │ + 0x00d3c960 7977203d 20287069 766f7454 72616e73 yw = (pivotTrans │ │ │ │ + 0x00d3c970 666f726d 202a2076 65633428 7472616e form * vec4(tran │ │ │ │ + 0x00d3c980 73666f72 6d656450 69766f74 2e78792c sformedPivot.xy, │ │ │ │ + 0x00d3c990 20706976 6f745265 616c5a2c 20772929 pivotRealZ, w)) │ │ │ │ + 0x00d3c9a0 2e787977 3b200a20 20202074 72616e73 .xyw; . trans │ │ │ │ + 0x00d3c9b0 666f726d 65645069 766f742e 7a202a3d formedPivot.z *= │ │ │ │ + 0x00d3c9c0 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ + 0x00d3c9d0 742e7720 2f20773b 200a2020 23696664 t.w / w; . #ifd │ │ │ │ + 0x00d3c9e0 65662056 554c4b41 4e200a20 20202074 ef VULKAN . t │ │ │ │ + 0x00d3c9f0 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ + 0x00d3ca00 79203d20 2d747261 6e73666f 726d6564 y = -transformed │ │ │ │ + 0x00d3ca10 5069766f 742e793b 200a2020 20207472 Pivot.y; . tr │ │ │ │ + 0x00d3ca20 616e7366 6f726d65 64506976 6f742e7a ansformedPivot.z │ │ │ │ + 0x00d3ca30 203d2028 7472616e 73666f72 6d656450 = (transformedP │ │ │ │ + 0x00d3ca40 69766f74 2e7a2020 2b207472 616e7366 ivot.z + transf │ │ │ │ + 0x00d3ca50 6f726d65 64506976 6f742e77 29202f20 ormedPivot.w) / │ │ │ │ + 0x00d3ca60 322e303b 200a2020 23656e64 6966200a 2.0; . #endif . │ │ │ │ + 0x00d3ca70 20202020 72657475 726e2074 72616e73 return trans │ │ │ │ + 0x00d3ca80 666f726d 65645069 766f743b 200a2020 formedPivot; . │ │ │ │ + 0x00d3ca90 7d200a20 20766563 34206170 706c7942 } . vec4 applyB │ │ │ │ + 0x00d3caa0 696c6c62 6f617264 5069766f 74547261 illboardPivotTra │ │ │ │ + 0x00d3cab0 6e73666f 726d2876 65633420 7069766f nsform(vec4 pivo │ │ │ │ + 0x00d3cac0 742c206d 61743420 7069766f 74547261 t, mat4 pivotTra │ │ │ │ + 0x00d3cad0 6e73666f 726d2c20 666c6f61 74207069 nsform, float pi │ │ │ │ + 0x00d3cae0 766f7452 65616c5a 2c207665 6332206f votRealZ, vec2 o │ │ │ │ + 0x00d3caf0 66667365 7429200a 20207b20 0a202020 ffset) . { . │ │ │ │ + 0x00d3cb00 20666c6f 6174206c 6f676963 5a203d20 float logicZ = │ │ │ │ + 0x00d3cb10 7069766f 742e7a20 2f207069 766f742e pivot.z / pivot. │ │ │ │ + 0x00d3cb20 773b200a 20202020 76656334 20747261 w; . vec4 tra │ │ │ │ + 0x00d3cb30 6e73666f 726d6564 5069766f 74203d20 nsformedPivot = │ │ │ │ + 0x00d3cb40 7069766f 74547261 6e73666f 726d202a pivotTransform * │ │ │ │ + 0x00d3cb50 20766563 34287069 766f742e 78792c20 vec4(pivot.xy, │ │ │ │ + 0x00d3cb60 7069766f 74526561 6c5a2c20 7069766f pivotRealZ, pivo │ │ │ │ + 0x00d3cb70 742e7729 3b200a20 20202076 65633420 t.w); . vec4 │ │ │ │ + 0x00d3cb80 7363616c 65203d20 7069766f 74547261 scale = pivotTra │ │ │ │ + 0x00d3cb90 6e73666f 726d202a 20766563 3428312e nsform * vec4(1. │ │ │ │ + 0x00d3cba0 302c202d 312e302c 20302e30 2c20312e 0, -1.0, 0.0, 1. │ │ │ │ + 0x00d3cbb0 30293b20 0a202020 20766563 3420706f 0); . vec4 po │ │ │ │ + 0x00d3cbc0 73697469 6f6e203d 20766563 34287472 sition = vec4(tr │ │ │ │ + 0x00d3cbd0 616e7366 6f726d65 64506976 6f742e78 ansformedPivot.x │ │ │ │ + 0x00d3cbe0 79202f20 7472616e 73666f72 6d656450 y / transformedP │ │ │ │ + 0x00d3cbf0 69766f74 2e772c20 6c6f6769 635a2c20 ivot.w, logicZ, │ │ │ │ + 0x00d3cc00 312e3029 202b2076 65633428 6f666673 1.0) + vec4(offs │ │ │ │ + 0x00d3cc10 6574202f 20736361 6c652e77 202a2073 et / scale.w * s │ │ │ │ + 0x00d3cc20 63616c65 2e782c20 302e302c 20302e30 cale.x, 0.0, 0.0 │ │ │ │ + 0x00d3cc30 293b200a 20202369 66646566 2056554c ); . #ifdef VUL │ │ │ │ + 0x00d3cc40 4b414e20 0a202020 20706f73 6974696f KAN . positio │ │ │ │ + 0x00d3cc50 6e2e7920 3d202d70 6f736974 696f6e2e n.y = -position. │ │ │ │ + 0x00d3cc60 793b200a 20202020 706f7369 74696f6e y; . position │ │ │ │ + 0x00d3cc70 2e7a203d 2028706f 73697469 6f6e2e7a .z = (position.z │ │ │ │ + 0x00d3cc80 20202b20 706f7369 74696f6e 2e772920 + position.w) │ │ │ │ + 0x00d3cc90 2f20322e 303b200a 20202365 6e646966 / 2.0; . #endif │ │ │ │ + 0x00d3cca0 200a2020 20207265 7475726e 20706f73 . return pos │ │ │ │ + 0x00d3ccb0 6974696f 6e3b200a 20207d20 0a202076 ition; . } . v │ │ │ │ + 0x00d3ccc0 65633220 63616c63 4c696e65 5472616e ec2 calcLineTran │ │ │ │ + 0x00d3ccd0 73666f72 6d656441 78697350 6f732876 sformedAxisPos(v │ │ │ │ + 0x00d3cce0 65633220 6f726967 696e616c 41786973 ec2 originalAxis │ │ │ │ + 0x00d3ccf0 506f732c 20766563 32207368 69667465 Pos, vec2 shifte │ │ │ │ + 0x00d3cd00 64506f73 2c206d61 7434206d 6f64656c dPos, mat4 model │ │ │ │ + 0x00d3cd10 56696577 2c20666c 6f617420 68616c66 View, float half │ │ │ │ + 0x00d3cd20 57696474 6829200a 20207b20 0a202020 Width) . { . │ │ │ │ + 0x00d3cd30 20766563 32207020 3d202876 65633428 vec2 p = (vec4( │ │ │ │ + 0x00d3cd40 73686966 74656450 6f732c20 302e302c shiftedPos, 0.0, │ │ │ │ + 0x00d3cd50 20312e30 29202a20 6d6f6465 6c566965 1.0) * modelVie │ │ │ │ + 0x00d3cd60 77292e78 793b200a 20202020 76656332 w).xy; . vec2 │ │ │ │ + 0x00d3cd70 2064203d 2070202d 206f7269 67696e61 d = p - origina │ │ │ │ + 0x00d3cd80 6c417869 73506f73 3b200a20 20202069 lAxisPos; . i │ │ │ │ + 0x00d3cd90 66202864 6f742864 2c206429 20213d20 f (dot(d, d) != │ │ │ │ + 0x00d3cda0 302e3029 200a2020 20202020 72657475 0.0) . retu │ │ │ │ + 0x00d3cdb0 726e206f 72696769 6e616c41 78697350 rn originalAxisP │ │ │ │ + 0x00d3cdc0 6f73202b 206e6f72 6d616c69 7a652864 os + normalize(d │ │ │ │ + 0x00d3cdd0 29202a20 68616c66 57696474 683b200a ) * halfWidth; . │ │ │ │ + 0x00d3cde0 20202020 656c7365 200a2020 20202020 else . │ │ │ │ + 0x00d3cdf0 72657475 726e206f 72696769 6e616c41 return originalA │ │ │ │ + 0x00d3ce00 78697350 6f733b20 0a20207d 200a2020 xisPos; . } . │ │ │ │ + 0x00d3ce10 766f6964 206d6169 6e282920 0a20207b void main() . { │ │ │ │ + 0x00d3ce20 200a2020 2020666c 6f617420 69734f75 . float isOu │ │ │ │ + 0x00d3ce30 746c696e 65203d20 73746570 28302e35 tline = step(0.5 │ │ │ │ + 0x00d3ce40 2c20755f 69734f75 746c696e 65506173 , u_isOutlinePas │ │ │ │ + 0x00d3ce50 73293b20 0a202020 20666c6f 61742064 s); . float d │ │ │ │ + 0x00d3ce60 65707468 53686966 74203d20 6b426173 epthShift = kBas │ │ │ │ + 0x00d3ce70 65446570 74685368 69667420 2a206973 eDepthShift * is │ │ │ │ + 0x00d3ce80 4f75746c 696e653b 200a2020 20207665 Outline; . ve │ │ │ │ + 0x00d3ce90 63342070 6f73203d 20287665 63342861 c4 pos = (vec4(a │ │ │ │ + 0x00d3cea0 5f706f73 6974696f 6e2c2031 2e302920 _position, 1.0) │ │ │ │ + 0x00d3ceb0 2b207665 63342830 2e302c20 302e302c + vec4(0.0, 0.0, │ │ │ │ + 0x00d3cec0 20646570 74685368 6966742c 20302e30 depthShift, 0.0 │ │ │ │ + 0x00d3ced0 2929202a 20755f6d 6f64656c 56696577 )) * u_modelView │ │ │ │ + 0x00d3cee0 3b200a20 20202076 65633420 73686966 ; . vec4 shif │ │ │ │ + 0x00d3cef0 74656450 6f73203d 20766563 3428615f tedPos = vec4(a_ │ │ │ │ + 0x00d3cf00 6e6f726d 616c2c20 302e302c 20302e30 normal, 0.0, 0.0 │ │ │ │ + 0x00d3cf10 29202b20 706f733b 200a2020 2020676c ) + pos; . gl │ │ │ │ + 0x00d3cf20 5f506f73 6974696f 6e203d20 73686966 _Position = shif │ │ │ │ + 0x00d3cf30 74656450 6f73202a 20755f70 726f6a65 tedPos * u_proje │ │ │ │ + 0x00d3cf40 6374696f 6e3b200a 20202369 66646566 ction; . #ifdef │ │ │ │ + 0x00d3cf50 2056554c 4b414e20 0a202020 20676c5f VULKAN . gl_ │ │ │ │ + 0x00d3cf60 506f7369 74696f6e 2e79203d 202d676c Position.y = -gl │ │ │ │ + 0x00d3cf70 5f506f73 6974696f 6e2e793b 200a2020 _Position.y; . │ │ │ │ + 0x00d3cf80 2020676c 5f506f73 6974696f 6e2e7a20 gl_Position.z │ │ │ │ + 0x00d3cf90 3d202867 6c5f506f 73697469 6f6e2e7a = (gl_Position.z │ │ │ │ + 0x00d3cfa0 20202b20 676c5f50 6f736974 696f6e2e + gl_Position. │ │ │ │ + 0x00d3cfb0 7729202a 20302e35 3b200a20 2023656e w) * 0.5; . #en │ │ │ │ + 0x00d3cfc0 64696620 0a202020 20766563 3220636f dif . vec2 co │ │ │ │ + 0x00d3cfd0 6c6f7254 6578436f 6f726420 3d206d69 lorTexCoord = mi │ │ │ │ + 0x00d3cfe0 7828615f 636f6c6f 72546578 436f6f72 x(a_colorTexCoor │ │ │ │ + 0x00d3cff0 642c2061 5f6f7574 6c696e65 436f6c6f d, a_outlineColo │ │ │ │ + 0x00d3d000 72546578 436f6f72 642c2069 734f7574 rTexCoord, isOut │ │ │ │ + 0x00d3d010 6c696e65 293b200a 20202369 66646566 line); . #ifdef │ │ │ │ + 0x00d3d020 20454e41 424c455f 56544620 0a202020 ENABLE_VTF . │ │ │ │ + 0x00d3d030 20765f63 6f6c6f72 203d2074 65787475 v_color = textu │ │ │ │ + 0x00d3d040 72652875 5f636f6c 6f725465 782c2063 re(u_colorTex, c │ │ │ │ + 0x00d3d050 6f6c6f72 54657843 6f6f7264 293b200a olorTexCoord); . │ │ │ │ + 0x00d3d060 20202365 6c736520 0a202020 20765f63 #else . v_c │ │ │ │ + 0x00d3d070 6f6c6f72 54657843 6f6f7264 203d2063 olorTexCoord = c │ │ │ │ + 0x00d3d080 6f6c6f72 54657843 6f6f7264 3b200a20 olorTexCoord; . │ │ │ │ + 0x00d3d090 2023656e 64696620 0a202020 20765f6d #endif . v_m │ │ │ │ + 0x00d3d0a0 61736b54 6578436f 6f726420 3d20615f askTexCoord = a_ │ │ │ │ + 0x00d3d0b0 6d61736b 54657843 6f6f7264 3b200a20 maskTexCoord; . │ │ │ │ + 0x00d3d0c0 207d200a 00000000 00000000 00000000 } ............. │ │ │ │ + 0x00d3d0d0 00000000 00000000 00000000 00000000 ................ │ │ │ │ + 0x00d3d0e0 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d3d0f0 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d3d100 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d3d110 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d3d120 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d3d130 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d3d140 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d3d150 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d3d160 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d3d170 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d3d180 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d3d190 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d3d1a0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d3d1b0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d3d1c0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d3d1d0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d3d1e0 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d3d1f0 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d3d200 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d3d210 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d3d220 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d3d230 63322076 5f636f6c 6f725465 78436f6f c2 v_colorTexCoo │ │ │ │ + 0x00d3d240 7264733b 200a2020 6f757420 76656334 rds; . out vec4 │ │ │ │ + 0x00d3d250 20765f46 72616743 6f6c6f72 3b200a20 v_FragColor; . │ │ │ │ + 0x00d3d260 20756e69 666f726d 206d6174 3420755f uniform mat4 u_ │ │ │ │ + 0x00d3d270 6d6f6465 6c566965 773b200a 2020756e modelView; . un │ │ │ │ + 0x00d3d280 69666f72 6d206d61 74342075 5f70726f iform mat4 u_pro │ │ │ │ + 0x00d3d290 6a656374 696f6e3b 200a2020 756e6966 jection; . unif │ │ │ │ + 0x00d3d2a0 6f726d20 76656332 20755f63 6f6e7472 orm vec2 u_contr │ │ │ │ + 0x00d3d2b0 61737447 616d6d61 3b200a20 20756e69 astGamma; . uni │ │ │ │ + 0x00d3d2c0 666f726d 20766563 3220755f 706f7369 form vec2 u_posi │ │ │ │ + 0x00d3d2d0 74696f6e 3b200a20 20756e69 666f726d tion; . uniform │ │ │ │ + 0x00d3d2e0 20666c6f 61742075 5f69734f 75746c69 float u_isOutli │ │ │ │ + 0x00d3d2f0 6e655061 73733b20 0a202075 6e69666f nePass; . unifo │ │ │ │ + 0x00d3d300 726d2066 6c6f6174 20755f6f 70616369 rm float u_opaci │ │ │ │ + 0x00d3d310 74793b20 0a202075 6e69666f 726d2066 ty; . uniform f │ │ │ │ + 0x00d3d320 6c6f6174 20755f6c 656e6774 683b200a loat u_length; . │ │ │ │ + 0x00d3d330 2020756e 69666f72 6d207361 6d706c65 uniform sample │ │ │ │ + 0x00d3d340 72324420 755f636f 6c6f7254 65783b20 r2D u_colorTex; │ │ │ │ + 0x00d3d350 0a202063 6f6e7374 20666c6f 6174206b . const float k │ │ │ │ + 0x00d3d360 53686170 65436f6f 72645363 616c6172 ShapeCoordScalar │ │ │ │ + 0x00d3d370 203d2031 3030302e 303b200a 2020766f = 1000.0; . vo │ │ │ │ + 0x00d3d380 6964206d 61696e28 29200a20 207b200a id main() . { . │ │ │ │ + 0x00d3d390 20202020 76656334 2066696e 616c436f vec4 finalCo │ │ │ │ + 0x00d3d3a0 6c6f7220 3d207465 78747572 6528755f lor = texture(u_ │ │ │ │ + 0x00d3d3b0 636f6c6f 72546578 2c20765f 636f6c6f colorTex, v_colo │ │ │ │ + 0x00d3d3c0 72546578 436f6f72 6473293b 200a2020 rTexCoords); . │ │ │ │ + 0x00d3d3d0 20206669 6e616c43 6f6c6f72 2e61202a finalColor.a * │ │ │ │ + 0x00d3d3e0 3d20755f 6f706163 6974793b 200a2020 = u_opacity; . │ │ │ │ + 0x00d3d3f0 2020765f 46726167 436f6c6f 72203d20 v_FragColor = │ │ │ │ + 0x00d3d400 66696e61 6c436f6c 6f723b20 0a20207d finalColor; . } │ │ │ │ + 0x00d3d410 200a0000 00000000 00000000 00000000 ............... │ │ │ │ + 0x00d3d420 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d3d430 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d3d440 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d3d450 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d3d460 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d3d470 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d3d480 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d3d490 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d3d4a0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d3d4b0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d3d4c0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d3d4d0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d3d4e0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d3d4f0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d3d500 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d3d510 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d3d520 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d3d530 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d3d540 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d3d550 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d3d560 2023656e 64696620 0a202075 6e69666f #endif . unifo │ │ │ │ + 0x00d3d570 726d2073 616d706c 65723244 20755f63 rm sampler2D u_c │ │ │ │ + 0x00d3d580 6f6c6f72 5465783b 200a2020 696e2076 olorTex; . in v │ │ │ │ + 0x00d3d590 65633320 765f7465 78436f6f 7264733b ec3 v_texCoords; │ │ │ │ + 0x00d3d5a0 200a2020 6f757420 76656334 20765f46 . out vec4 v_F │ │ │ │ + 0x00d3d5b0 72616743 6f6c6f72 3b200a20 20636f6e ragColor; . con │ │ │ │ + 0x00d3d5c0 73742066 6c6f6174 206b5368 61706543 st float kShapeC │ │ │ │ + 0x00d3d5d0 6f6f7264 5363616c 6172203d 20313030 oordScalar = 100 │ │ │ │ + 0x00d3d5e0 302e303b 200a2020 766f6964 206d6169 0.0; . void mai │ │ │ │ + 0x00d3d5f0 6e282920 0a20207b 200a2020 2020765f n() . { . v_ │ │ │ │ + 0x00d3d600 46726167 436f6c6f 72203d20 74657874 FragColor = text │ │ │ │ + 0x00d3d610 75726528 755f636f 6c6f7254 65782c20 ure(u_colorTex, │ │ │ │ + 0x00d3d620 765f7465 78436f6f 7264732e 7879293b v_texCoords.xy); │ │ │ │ + 0x00d3d630 200a2020 7d200a00 00000000 00000000 . } .......... │ │ │ │ + 0x00d3d640 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d3d650 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d3d660 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d3d670 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d3d680 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d3d690 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d3d6a0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d3d6b0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d3d6c0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d3d6d0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d3d6e0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d3d6f0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d3d700 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d3d710 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d3d720 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d3d730 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d3d740 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d3d750 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d3d760 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d3d770 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d3d780 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d3d790 63342061 5f706f73 6974696f 6e3b200a c4 a_position; . │ │ │ │ + 0x00d3d7a0 2020696e 20766563 3320615f 6e6f726d in vec3 a_norm │ │ │ │ + 0x00d3d7b0 616c3b20 0a202069 6e207665 63342061 al; . in vec4 a │ │ │ │ + 0x00d3d7c0 5f636f6c 6f723b20 0a20206f 75742076 _color; . out v │ │ │ │ + 0x00d3d7d0 65633420 765f7261 64697573 3b200a20 ec4 v_radius; . │ │ │ │ + 0x00d3d7e0 206f7574 20766563 3420765f 636f6c6f out vec4 v_colo │ │ │ │ + 0x00d3d7f0 723b200a 2020756e 69666f72 6d206d61 r; . uniform ma │ │ │ │ + 0x00d3d800 74342075 5f6d6f64 656c5669 65773b20 t4 u_modelView; │ │ │ │ + 0x00d3d810 0a202075 6e69666f 726d206d 61743420 . uniform mat4 │ │ │ │ + 0x00d3d820 755f7072 6f6a6563 74696f6e 3b200a20 u_projection; . │ │ │ │ + 0x00d3d830 20756e69 666f726d 206d6174 3420755f uniform mat4 u_ │ │ │ │ + 0x00d3d840 7069766f 74547261 6e73666f 726d3b20 pivotTransform; │ │ │ │ + 0x00d3d850 0a202075 6e69666f 726d2076 65633420 . uniform vec4 │ │ │ │ + 0x00d3d860 755f726f 75746550 6172616d 733b200a u_routeParams; . │ │ │ │ + 0x00d3d870 2020756e 69666f72 6d207665 63342075 uniform vec4 u │ │ │ │ + 0x00d3d880 5f636f6c 6f723b20 0a202075 6e69666f _color; . unifo │ │ │ │ + 0x00d3d890 726d2076 65633420 755f6d61 736b436f rm vec4 u_maskCo │ │ │ │ + 0x00d3d8a0 6c6f723b 200a2020 756e6966 6f726d20 lor; . uniform │ │ │ │ + 0x00d3d8b0 76656334 20755f6f 75746c69 6e65436f vec4 u_outlineCo │ │ │ │ + 0x00d3d8c0 6c6f723b 200a2020 756e6966 6f726d20 lor; . uniform │ │ │ │ + 0x00d3d8d0 76656334 20755f66 616b6543 6f6c6f72 vec4 u_fakeColor │ │ │ │ + 0x00d3d8e0 3b200a20 20756e69 666f726d 20766563 ; . uniform vec │ │ │ │ + 0x00d3d8f0 3420755f 66616b65 4f75746c 696e6543 4 u_fakeOutlineC │ │ │ │ + 0x00d3d900 6f6c6f72 3b200a20 20756e69 666f726d olor; . uniform │ │ │ │ + 0x00d3d910 20766563 3220755f 66616b65 426f7264 vec2 u_fakeBord │ │ │ │ + 0x00d3d920 6572733b 200a2020 756e6966 6f726d20 ers; . uniform │ │ │ │ + 0x00d3d930 76656332 20755f70 61747465 726e3b20 vec2 u_pattern; │ │ │ │ + 0x00d3d940 0a202075 6e69666f 726d2076 65633220 . uniform vec2 │ │ │ │ + 0x00d3d950 755f616e 676c6543 6f735369 6e3b200a u_angleCosSin; . │ │ │ │ + 0x00d3d960 2020756e 69666f72 6d20666c 6f617420 uniform float │ │ │ │ + 0x00d3d970 755f6172 726f7748 616c6657 69647468 u_arrowHalfWidth │ │ │ │ + 0x00d3d980 3b200a20 20756e69 666f726d 20666c6f ; . uniform flo │ │ │ │ + 0x00d3d990 61742075 5f6f7061 63697479 3b200a20 at u_opacity; . │ │ │ │ + 0x00d3d9a0 20636f6e 73742066 6c6f6174 206b5368 const float kSh │ │ │ │ + 0x00d3d9b0 61706543 6f6f7264 5363616c 6172203d apeCoordScalar = │ │ │ │ + 0x00d3d9c0 20313030 302e303b 200a2020 76656334 1000.0; . vec4 │ │ │ │ + 0x00d3d9d0 20617070 6c795069 766f7454 72616e73 applyPivotTrans │ │ │ │ + 0x00d3d9e0 666f726d 28766563 34207069 766f742c form(vec4 pivot, │ │ │ │ + 0x00d3d9f0 206d6174 34207069 766f7454 72616e73 mat4 pivotTrans │ │ │ │ + 0x00d3da00 666f726d 2c20666c 6f617420 7069766f form, float pivo │ │ │ │ + 0x00d3da10 74526561 6c5a2920 0a20207b 200a2020 tRealZ) . { . │ │ │ │ + 0x00d3da20 20207665 63342074 72616e73 666f726d vec4 transform │ │ │ │ + 0x00d3da30 65645069 766f7420 3d207069 766f743b edPivot = pivot; │ │ │ │ + 0x00d3da40 200a2020 2020666c 6f617420 77203d20 . float w = │ │ │ │ + 0x00d3da50 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ + 0x00d3da60 2e773b20 0a202020 20747261 6e73666f .w; . transfo │ │ │ │ + 0x00d3da70 726d6564 5069766f 742e7879 77203d20 rmedPivot.xyw = │ │ │ │ + 0x00d3da80 28706976 6f745472 616e7366 6f726d20 (pivotTransform │ │ │ │ + 0x00d3da90 2a207665 63342874 72616e73 666f726d * vec4(transform │ │ │ │ + 0x00d3daa0 65645069 766f742e 78792c20 7069766f edPivot.xy, pivo │ │ │ │ + 0x00d3dab0 74526561 6c5a2c20 7729292e 7879773b tRealZ, w)).xyw; │ │ │ │ + 0x00d3dac0 200a2020 20207472 616e7366 6f726d65 . transforme │ │ │ │ + 0x00d3dad0 64506976 6f742e7a 202a3d20 7472616e dPivot.z *= tran │ │ │ │ + 0x00d3dae0 73666f72 6d656450 69766f74 2e77202f sformedPivot.w / │ │ │ │ + 0x00d3daf0 20773b20 0a202023 69666465 66205655 w; . #ifdef VU │ │ │ │ + 0x00d3db00 4c4b414e 200a2020 20207472 616e7366 LKAN . transf │ │ │ │ + 0x00d3db10 6f726d65 64506976 6f742e79 203d202d ormedPivot.y = - │ │ │ │ + 0x00d3db20 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ + 0x00d3db30 2e793b20 0a202020 20747261 6e73666f .y; . transfo │ │ │ │ + 0x00d3db40 726d6564 5069766f 742e7a20 3d202874 rmedPivot.z = (t │ │ │ │ + 0x00d3db50 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ + 0x00d3db60 7a20202b 20747261 6e73666f 726d6564 z + transformed │ │ │ │ + 0x00d3db70 5069766f 742e7729 202f2032 2e303b20 Pivot.w) / 2.0; │ │ │ │ + 0x00d3db80 0a202023 656e6469 66200a20 20202072 . #endif . r │ │ │ │ + 0x00d3db90 65747572 6e207472 616e7366 6f726d65 eturn transforme │ │ │ │ + 0x00d3dba0 64506976 6f743b20 0a20207d 200a2020 dPivot; . } . │ │ │ │ + 0x00d3dbb0 76656334 20617070 6c794269 6c6c626f vec4 applyBillbo │ │ │ │ + 0x00d3dbc0 61726450 69766f74 5472616e 73666f72 ardPivotTransfor │ │ │ │ + 0x00d3dbd0 6d287665 63342070 69766f74 2c206d61 m(vec4 pivot, ma │ │ │ │ + 0x00d3dbe0 74342070 69766f74 5472616e 73666f72 t4 pivotTransfor │ │ │ │ + 0x00d3dbf0 6d2c2066 6c6f6174 20706976 6f745265 m, float pivotRe │ │ │ │ + 0x00d3dc00 616c5a2c 20766563 32206f66 66736574 alZ, vec2 offset │ │ │ │ + 0x00d3dc10 29200a20 207b200a 20202020 666c6f61 ) . { . floa │ │ │ │ + 0x00d3dc20 74206c6f 6769635a 203d2070 69766f74 t logicZ = pivot │ │ │ │ + 0x00d3dc30 2e7a202f 20706976 6f742e77 3b200a20 .z / pivot.w; . │ │ │ │ + 0x00d3dc40 20202076 65633420 7472616e 73666f72 vec4 transfor │ │ │ │ + 0x00d3dc50 6d656450 69766f74 203d2070 69766f74 medPivot = pivot │ │ │ │ + 0x00d3dc60 5472616e 73666f72 6d202a20 76656334 Transform * vec4 │ │ │ │ + 0x00d3dc70 28706976 6f742e78 792c2070 69766f74 (pivot.xy, pivot │ │ │ │ + 0x00d3dc80 5265616c 5a2c2070 69766f74 2e77293b RealZ, pivot.w); │ │ │ │ + 0x00d3dc90 200a2020 20207665 63342073 63616c65 . vec4 scale │ │ │ │ + 0x00d3dca0 203d2070 69766f74 5472616e 73666f72 = pivotTransfor │ │ │ │ + 0x00d3dcb0 6d202a20 76656334 28312e30 2c202d31 m * vec4(1.0, -1 │ │ │ │ + 0x00d3dcc0 2e302c20 302e302c 20312e30 293b200a .0, 0.0, 1.0); . │ │ │ │ + 0x00d3dcd0 20202020 76656334 20706f73 6974696f vec4 positio │ │ │ │ + 0x00d3dce0 6e203d20 76656334 28747261 6e73666f n = vec4(transfo │ │ │ │ + 0x00d3dcf0 726d6564 5069766f 742e7879 202f2074 rmedPivot.xy / t │ │ │ │ + 0x00d3dd00 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ + 0x00d3dd10 772c206c 6f676963 5a2c2031 2e302920 w, logicZ, 1.0) │ │ │ │ + 0x00d3dd20 2b207665 6334286f 66667365 74202f20 + vec4(offset / │ │ │ │ + 0x00d3dd30 7363616c 652e7720 2a207363 616c652e scale.w * scale. │ │ │ │ + 0x00d3dd40 782c2030 2e302c20 302e3029 3b200a20 x, 0.0, 0.0); . │ │ │ │ + 0x00d3dd50 20236966 64656620 56554c4b 414e200a #ifdef VULKAN . │ │ │ │ + 0x00d3dd60 20202020 706f7369 74696f6e 2e79203d position.y = │ │ │ │ + 0x00d3dd70 202d706f 73697469 6f6e2e79 3b200a20 -position.y; . │ │ │ │ + 0x00d3dd80 20202070 6f736974 696f6e2e 7a203d20 position.z = │ │ │ │ + 0x00d3dd90 28706f73 6974696f 6e2e7a20 202b2070 (position.z + p │ │ │ │ + 0x00d3dda0 6f736974 696f6e2e 7729202f 20322e30 osition.w) / 2.0 │ │ │ │ + 0x00d3ddb0 3b200a20 2023656e 64696620 0a202020 ; . #endif . │ │ │ │ + 0x00d3ddc0 20726574 75726e20 706f7369 74696f6e return position │ │ │ │ + 0x00d3ddd0 3b200a20 207d200a 20207665 63322063 ; . } . vec2 c │ │ │ │ + 0x00d3dde0 616c634c 696e6554 72616e73 666f726d alcLineTransform │ │ │ │ + 0x00d3ddf0 65644178 6973506f 73287665 6332206f edAxisPos(vec2 o │ │ │ │ + 0x00d3de00 72696769 6e616c41 78697350 6f732c20 riginalAxisPos, │ │ │ │ + 0x00d3de10 76656332 20736869 66746564 506f732c vec2 shiftedPos, │ │ │ │ + 0x00d3de20 206d6174 34206d6f 64656c56 6965772c mat4 modelView, │ │ │ │ + 0x00d3de30 20666c6f 61742068 616c6657 69647468 float halfWidth │ │ │ │ + 0x00d3de40 29200a20 207b200a 20202020 76656332 ) . { . vec2 │ │ │ │ + 0x00d3de50 2070203d 20287665 63342873 68696674 p = (vec4(shift │ │ │ │ + 0x00d3de60 6564506f 732c2030 2e302c20 312e3029 edPos, 0.0, 1.0) │ │ │ │ + 0x00d3de70 202a206d 6f64656c 56696577 292e7879 * modelView).xy │ │ │ │ + 0x00d3de80 3b200a20 20202076 65633220 64203d20 ; . vec2 d = │ │ │ │ + 0x00d3de90 70202d20 6f726967 696e616c 41786973 p - originalAxis │ │ │ │ + 0x00d3dea0 506f733b 200a2020 20206966 2028646f Pos; . if (do │ │ │ │ + 0x00d3deb0 7428642c 20642920 213d2030 2e302920 t(d, d) != 0.0) │ │ │ │ + 0x00d3dec0 0a202020 20202072 65747572 6e206f72 . return or │ │ │ │ + 0x00d3ded0 6967696e 616c4178 6973506f 73202b20 iginalAxisPos + │ │ │ │ + 0x00d3dee0 6e6f726d 616c697a 65286429 202a2068 normalize(d) * h │ │ │ │ + 0x00d3def0 616c6657 69647468 3b200a20 20202065 alfWidth; . e │ │ │ │ + 0x00d3df00 6c736520 0a202020 20202072 65747572 lse . retur │ │ │ │ + 0x00d3df10 6e206f72 6967696e 616c4178 6973506f n originalAxisPo │ │ │ │ + 0x00d3df20 733b200a 20207d20 0a202076 6f696420 s; . } . void │ │ │ │ + 0x00d3df30 6d61696e 2829200a 20207b20 0a202020 main() . { . │ │ │ │ + 0x00d3df40 20666c6f 61742072 203d2075 5f726f75 float r = u_rou │ │ │ │ + 0x00d3df50 74655061 72616d73 2e78202a 20615f6e teParams.x * a_n │ │ │ │ + 0x00d3df60 6f726d61 6c2e7a3b 200a2020 20207665 ormal.z; . ve │ │ │ │ + 0x00d3df70 6332206e 6f726d61 6c203d20 76656332 c2 normal = vec2 │ │ │ │ + 0x00d3df80 28615f6e 6f726d61 6c2e7820 2a20755f (a_normal.x * u_ │ │ │ │ + 0x00d3df90 616e676c 65436f73 53696e2e 78202d20 angleCosSin.x - │ │ │ │ + 0x00d3dfa0 615f6e6f 726d616c 2e79202a 20755f61 a_normal.y * u_a │ │ │ │ + 0x00d3dfb0 6e676c65 436f7353 696e2e79 2c200a20 ngleCosSin.y, . │ │ │ │ + 0x00d3dfc0 20202020 20202020 20202020 20202020 │ │ │ │ + 0x00d3dfd0 20202020 2020615f 6e6f726d 616c2e78 a_normal.x │ │ │ │ + 0x00d3dfe0 202a2075 5f616e67 6c65436f 7353696e * u_angleCosSin │ │ │ │ + 0x00d3dff0 2e79202b 20615f6e 6f726d61 6c2e7920 .y + a_normal.y │ │ │ │ + 0x00d3e000 2a20755f 616e676c 65436f73 53696e2e * u_angleCosSin. │ │ │ │ + 0x00d3e010 78293b20 0a202020 20766563 34207261 x); . vec4 ra │ │ │ │ + 0x00d3e020 64697573 203d2076 65633428 6e6f726d dius = vec4(norm │ │ │ │ + 0x00d3e030 616c2e78 79202a20 722c2072 2c20615f al.xy * r, r, a_ │ │ │ │ + 0x00d3e040 706f7369 74696f6e 2e77293b 200a2020 position.w); . │ │ │ │ + 0x00d3e050 20207665 63342070 6f73203d 20766563 vec4 pos = vec │ │ │ │ + 0x00d3e060 3428615f 706f7369 74696f6e 2e78792c 4(a_position.xy, │ │ │ │ + 0x00d3e070 20302c20 3129202a 20755f6d 6f64656c 0, 1) * u_model │ │ │ │ + 0x00d3e080 56696577 3b200a20 20202076 65633220 View; . vec2 │ │ │ │ + 0x00d3e090 73686966 74656450 6f73203d 20726164 shiftedPos = rad │ │ │ │ + 0x00d3e0a0 6975732e 7879202b 20706f73 2e78793b ius.xy + pos.xy; │ │ │ │ + 0x00d3e0b0 200a2020 2020706f 73203d20 76656334 . pos = vec4 │ │ │ │ + 0x00d3e0c0 28736869 66746564 506f732c 20615f70 (shiftedPos, a_p │ │ │ │ + 0x00d3e0d0 6f736974 696f6e2e 7a2c2031 2e302920 osition.z, 1.0) │ │ │ │ + 0x00d3e0e0 2a20755f 70726f6a 65637469 6f6e3b20 * u_projection; │ │ │ │ + 0x00d3e0f0 0a202020 20676c5f 506f7369 74696f6e . gl_Position │ │ │ │ + 0x00d3e100 203d2061 70706c79 5069766f 74547261 = applyPivotTra │ │ │ │ + 0x00d3e110 6e73666f 726d2870 6f732c20 755f7069 nsform(pos, u_pi │ │ │ │ + 0x00d3e120 766f7454 72616e73 666f726d 2c20302e votTransform, 0. │ │ │ │ + 0x00d3e130 30293b20 0a202020 20765f72 61646975 0); . v_radiu │ │ │ │ + 0x00d3e140 73203d20 72616469 75733b20 0a202020 s = radius; . │ │ │ │ + 0x00d3e150 20765f63 6f6c6f72 203d2061 5f636f6c v_color = a_col │ │ │ │ + 0x00d3e160 6f723b20 0a20207d 200a0000 00000000 or; . } ....... │ │ │ │ + 0x00d3e170 00000000 00000000 00000000 00000000 ................ │ │ │ │ + 0x00d3e180 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d3e190 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d3e1a0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d3e1b0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d3e1c0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d3e1d0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d3e1e0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d3e1f0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d3e200 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d3e210 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d3e220 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d3e230 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d3e240 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d3e250 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d3e260 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d3e270 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d3e280 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d3e290 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d3e2a0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d3e2b0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d3e2c0 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d3e2d0 63322061 5f706f73 6974696f 6e3b200a c2 a_position; . │ │ │ │ + 0x00d3e2e0 2020696e 20766563 3220615f 6e6f726d in vec2 a_norm │ │ │ │ + 0x00d3e2f0 616c3b20 0a202069 6e207665 63322061 al; . in vec2 a │ │ │ │ + 0x00d3e300 5f636f6c 6f725465 78436f6f 7264733b _colorTexCoords; │ │ │ │ + 0x00d3e310 200a2020 6f757420 76656332 20765f63 . out vec2 v_c │ │ │ │ + 0x00d3e320 6f6c6f72 54657843 6f6f7264 733b200a olorTexCoords; . │ │ │ │ + 0x00d3e330 2020756e 69666f72 6d206d61 74342075 uniform mat4 u │ │ │ │ + 0x00d3e340 5f6d6f64 656c5669 65773b20 0a202075 _modelView; . u │ │ │ │ + 0x00d3e350 6e69666f 726d206d 61743420 755f7072 niform mat4 u_pr │ │ │ │ + 0x00d3e360 6f6a6563 74696f6e 3b200a20 20756e69 ojection; . uni │ │ │ │ + 0x00d3e370 666f726d 20766563 3220755f 636f6e74 form vec2 u_cont │ │ │ │ + 0x00d3e380 72617374 47616d6d 613b200a 2020756e rastGamma; . un │ │ │ │ + 0x00d3e390 69666f72 6d207665 63322075 5f706f73 iform vec2 u_pos │ │ │ │ + 0x00d3e3a0 6974696f 6e3b200a 2020756e 69666f72 ition; . unifor │ │ │ │ + 0x00d3e3b0 6d20666c 6f617420 755f6973 4f75746c m float u_isOutl │ │ │ │ + 0x00d3e3c0 696e6550 6173733b 200a2020 756e6966 inePass; . unif │ │ │ │ + 0x00d3e3d0 6f726d20 666c6f61 7420755f 6f706163 orm float u_opac │ │ │ │ + 0x00d3e3e0 6974793b 200a2020 756e6966 6f726d20 ity; . uniform │ │ │ │ + 0x00d3e3f0 666c6f61 7420755f 6c656e67 74683b20 float u_length; │ │ │ │ + 0x00d3e400 0a202063 6f6e7374 20666c6f 6174206b . const float k │ │ │ │ + 0x00d3e410 53686170 65436f6f 72645363 616c6172 ShapeCoordScalar │ │ │ │ + 0x00d3e420 203d2031 3030302e 303b200a 20207665 = 1000.0; . ve │ │ │ │ + 0x00d3e430 63342061 70706c79 5069766f 74547261 c4 applyPivotTra │ │ │ │ + 0x00d3e440 6e73666f 726d2876 65633420 7069766f nsform(vec4 pivo │ │ │ │ + 0x00d3e450 742c206d 61743420 7069766f 74547261 t, mat4 pivotTra │ │ │ │ + 0x00d3e460 6e73666f 726d2c20 666c6f61 74207069 nsform, float pi │ │ │ │ + 0x00d3e470 766f7452 65616c5a 29200a20 207b200a votRealZ) . { . │ │ │ │ + 0x00d3e480 20202020 76656334 20747261 6e73666f vec4 transfo │ │ │ │ + 0x00d3e490 726d6564 5069766f 74203d20 7069766f rmedPivot = pivo │ │ │ │ + 0x00d3e4a0 743b200a 20202020 666c6f61 74207720 t; . float w │ │ │ │ + 0x00d3e4b0 3d207472 616e7366 6f726d65 64506976 = transformedPiv │ │ │ │ + 0x00d3e4c0 6f742e77 3b200a20 20202074 72616e73 ot.w; . trans │ │ │ │ + 0x00d3e4d0 666f726d 65645069 766f742e 78797720 formedPivot.xyw │ │ │ │ + 0x00d3e4e0 3d202870 69766f74 5472616e 73666f72 = (pivotTransfor │ │ │ │ + 0x00d3e4f0 6d202a20 76656334 28747261 6e73666f m * vec4(transfo │ │ │ │ + 0x00d3e500 726d6564 5069766f 742e7879 2c207069 rmedPivot.xy, pi │ │ │ │ + 0x00d3e510 766f7452 65616c5a 2c207729 292e7879 votRealZ, w)).xy │ │ │ │ + 0x00d3e520 773b200a 20202020 7472616e 73666f72 w; . transfor │ │ │ │ + 0x00d3e530 6d656450 69766f74 2e7a202a 3d207472 medPivot.z *= tr │ │ │ │ + 0x00d3e540 616e7366 6f726d65 64506976 6f742e77 ansformedPivot.w │ │ │ │ + 0x00d3e550 202f2077 3b200a20 20236966 64656620 / w; . #ifdef │ │ │ │ + 0x00d3e560 56554c4b 414e200a 20202020 7472616e VULKAN . tran │ │ │ │ + 0x00d3e570 73666f72 6d656450 69766f74 2e79203d sformedPivot.y = │ │ │ │ + 0x00d3e580 202d7472 616e7366 6f726d65 64506976 -transformedPiv │ │ │ │ + 0x00d3e590 6f742e79 3b200a20 20202074 72616e73 ot.y; . trans │ │ │ │ + 0x00d3e5a0 666f726d 65645069 766f742e 7a203d20 formedPivot.z = │ │ │ │ + 0x00d3e5b0 28747261 6e73666f 726d6564 5069766f (transformedPivo │ │ │ │ + 0x00d3e5c0 742e7a20 202b2074 72616e73 666f726d t.z + transform │ │ │ │ + 0x00d3e5d0 65645069 766f742e 7729202f 20322e30 edPivot.w) / 2.0 │ │ │ │ + 0x00d3e5e0 3b200a20 2023656e 64696620 0a202020 ; . #endif . │ │ │ │ + 0x00d3e5f0 20726574 75726e20 7472616e 73666f72 return transfor │ │ │ │ + 0x00d3e600 6d656450 69766f74 3b200a20 207d200a medPivot; . } . │ │ │ │ + 0x00d3e610 20207665 63342061 70706c79 42696c6c vec4 applyBill │ │ │ │ + 0x00d3e620 626f6172 64506976 6f745472 616e7366 boardPivotTransf │ │ │ │ + 0x00d3e630 6f726d28 76656334 20706976 6f742c20 orm(vec4 pivot, │ │ │ │ + 0x00d3e640 6d617434 20706976 6f745472 616e7366 mat4 pivotTransf │ │ │ │ + 0x00d3e650 6f726d2c 20666c6f 61742070 69766f74 orm, float pivot │ │ │ │ + 0x00d3e660 5265616c 5a2c2076 65633220 6f666673 RealZ, vec2 offs │ │ │ │ + 0x00d3e670 65742920 0a20207b 200a2020 2020666c et) . { . fl │ │ │ │ + 0x00d3e680 6f617420 6c6f6769 635a203d 20706976 oat logicZ = piv │ │ │ │ + 0x00d3e690 6f742e7a 202f2070 69766f74 2e773b20 ot.z / pivot.w; │ │ │ │ + 0x00d3e6a0 0a202020 20766563 34207472 616e7366 . vec4 transf │ │ │ │ + 0x00d3e6b0 6f726d65 64506976 6f74203d 20706976 ormedPivot = piv │ │ │ │ + 0x00d3e6c0 6f745472 616e7366 6f726d20 2a207665 otTransform * ve │ │ │ │ + 0x00d3e6d0 63342870 69766f74 2e78792c 20706976 c4(pivot.xy, piv │ │ │ │ + 0x00d3e6e0 6f745265 616c5a2c 20706976 6f742e77 otRealZ, pivot.w │ │ │ │ + 0x00d3e6f0 293b200a 20202020 76656334 20736361 ); . vec4 sca │ │ │ │ + 0x00d3e700 6c65203d 20706976 6f745472 616e7366 le = pivotTransf │ │ │ │ + 0x00d3e710 6f726d20 2a207665 63342831 2e302c20 orm * vec4(1.0, │ │ │ │ + 0x00d3e720 2d312e30 2c20302e 302c2031 2e30293b -1.0, 0.0, 1.0); │ │ │ │ + 0x00d3e730 200a2020 20207665 63342070 6f736974 . vec4 posit │ │ │ │ + 0x00d3e740 696f6e20 3d207665 63342874 72616e73 ion = vec4(trans │ │ │ │ + 0x00d3e750 666f726d 65645069 766f742e 7879202f formedPivot.xy / │ │ │ │ + 0x00d3e760 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ + 0x00d3e770 742e772c 206c6f67 69635a2c 20312e30 t.w, logicZ, 1.0 │ │ │ │ + 0x00d3e780 29202b20 76656334 286f6666 73657420 ) + vec4(offset │ │ │ │ + 0x00d3e790 2f207363 616c652e 77202a20 7363616c / scale.w * scal │ │ │ │ + 0x00d3e7a0 652e782c 20302e30 2c20302e 30293b20 e.x, 0.0, 0.0); │ │ │ │ + 0x00d3e7b0 0a202023 69666465 66205655 4c4b414e . #ifdef VULKAN │ │ │ │ + 0x00d3e7c0 200a2020 2020706f 73697469 6f6e2e79 . position.y │ │ │ │ + 0x00d3e7d0 203d202d 706f7369 74696f6e 2e793b20 = -position.y; │ │ │ │ + 0x00d3e7e0 0a202020 20706f73 6974696f 6e2e7a20 . position.z │ │ │ │ + 0x00d3e7f0 3d202870 6f736974 696f6e2e 7a20202b = (position.z + │ │ │ │ + 0x00d3e800 20706f73 6974696f 6e2e7729 202f2032 position.w) / 2 │ │ │ │ + 0x00d3e810 2e303b20 0a202023 656e6469 66200a20 .0; . #endif . │ │ │ │ + 0x00d3e820 20202072 65747572 6e20706f 73697469 return positi │ │ │ │ + 0x00d3e830 6f6e3b20 0a20207d 200a2020 76656332 on; . } . vec2 │ │ │ │ + 0x00d3e840 2063616c 634c696e 65547261 6e73666f calcLineTransfo │ │ │ │ + 0x00d3e850 726d6564 41786973 506f7328 76656332 rmedAxisPos(vec2 │ │ │ │ + 0x00d3e860 206f7269 67696e61 6c417869 73506f73 originalAxisPos │ │ │ │ + 0x00d3e870 2c207665 63322073 68696674 6564506f , vec2 shiftedPo │ │ │ │ + 0x00d3e880 732c206d 61743420 6d6f6465 6c566965 s, mat4 modelVie │ │ │ │ + 0x00d3e890 772c2066 6c6f6174 2068616c 66576964 w, float halfWid │ │ │ │ + 0x00d3e8a0 74682920 0a20207b 200a2020 20207665 th) . { . ve │ │ │ │ + 0x00d3e8b0 63322070 203d2028 76656334 28736869 c2 p = (vec4(shi │ │ │ │ + 0x00d3e8c0 66746564 506f732c 20302e30 2c20312e ftedPos, 0.0, 1. │ │ │ │ + 0x00d3e8d0 3029202a 206d6f64 656c5669 6577292e 0) * modelView). │ │ │ │ + 0x00d3e8e0 78793b20 0a202020 20766563 32206420 xy; . vec2 d │ │ │ │ + 0x00d3e8f0 3d207020 2d206f72 6967696e 616c4178 = p - originalAx │ │ │ │ + 0x00d3e900 6973506f 733b200a 20202020 69662028 isPos; . if ( │ │ │ │ + 0x00d3e910 646f7428 642c2064 2920213d 20302e30 dot(d, d) != 0.0 │ │ │ │ + 0x00d3e920 29200a20 20202020 20726574 75726e20 ) . return │ │ │ │ + 0x00d3e930 6f726967 696e616c 41786973 506f7320 originalAxisPos │ │ │ │ + 0x00d3e940 2b206e6f 726d616c 697a6528 6429202a + normalize(d) * │ │ │ │ + 0x00d3e950 2068616c 66576964 74683b20 0a202020 halfWidth; . │ │ │ │ + 0x00d3e960 20656c73 65200a20 20202020 20726574 else . ret │ │ │ │ + 0x00d3e970 75726e20 6f726967 696e616c 41786973 urn originalAxis │ │ │ │ + 0x00d3e980 506f733b 200a2020 7d200a20 20766f69 Pos; . } . voi │ │ │ │ + 0x00d3e990 64206d61 696e2829 200a2020 7b200a20 d main() . { . │ │ │ │ + 0x00d3e9a0 20202067 6c5f506f 73697469 6f6e203d gl_Position = │ │ │ │ + 0x00d3e9b0 20766563 3428755f 706f7369 74696f6e vec4(u_position │ │ │ │ + 0x00d3e9c0 202b2061 5f706f73 6974696f 6e202b20 + a_position + │ │ │ │ + 0x00d3e9d0 755f6c65 6e677468 202a2061 5f6e6f72 u_length * a_nor │ │ │ │ + 0x00d3e9e0 6d616c2c 20302c20 3129202a 20755f70 mal, 0, 1) * u_p │ │ │ │ + 0x00d3e9f0 726f6a65 6374696f 6e3b200a 20202369 rojection; . #i │ │ │ │ + 0x00d3ea00 66646566 2056554c 4b414e20 0a202020 fdef VULKAN . │ │ │ │ + 0x00d3ea10 20676c5f 506f7369 74696f6e 2e79203d gl_Position.y = │ │ │ │ + 0x00d3ea20 202d676c 5f506f73 6974696f 6e2e793b -gl_Position.y; │ │ │ │ + 0x00d3ea30 200a2020 2020676c 5f506f73 6974696f . gl_Positio │ │ │ │ + 0x00d3ea40 6e2e7a20 3d202867 6c5f506f 73697469 n.z = (gl_Positi │ │ │ │ + 0x00d3ea50 6f6e2e7a 20202b20 676c5f50 6f736974 on.z + gl_Posit │ │ │ │ + 0x00d3ea60 696f6e2e 7729202a 20302e35 3b200a20 ion.w) * 0.5; . │ │ │ │ + 0x00d3ea70 2023656e 64696620 0a202020 20765f63 #endif . v_c │ │ │ │ + 0x00d3ea80 6f6c6f72 54657843 6f6f7264 73203d20 olorTexCoords = │ │ │ │ + 0x00d3ea90 615f636f 6c6f7254 6578436f 6f726473 a_colorTexCoords │ │ │ │ + 0x00d3eaa0 3b200a20 207d200a 00000000 00000000 ; . } ......... │ │ │ │ + 0x00d3eab0 00000000 00000000 00000000 00000000 ................ │ │ │ │ + 0x00d3eac0 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d3ead0 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d3eae0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d3eaf0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d3eb00 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d3eb10 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d3eb20 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d3eb30 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d3eb40 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d3eb50 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d3eb60 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d3eb70 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d3eb80 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d3eb90 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d3eba0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d3ebb0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d3ebc0 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d3ebd0 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d3ebe0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d3ebf0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d3ec00 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d3ec10 63322076 5f636f6c 6f725465 78436f6f c2 v_colorTexCoo │ │ │ │ + 0x00d3ec20 7264733b 200a2020 696e2076 65633420 rds; . in vec4 │ │ │ │ + 0x00d3ec30 765f6f66 66736574 3b200a20 206f7574 v_offset; . out │ │ │ │ + 0x00d3ec40 20766563 3420765f 46726167 436f6c6f vec4 v_FragColo │ │ │ │ + 0x00d3ec50 723b200a 2020756e 69666f72 6d207665 r; . uniform ve │ │ │ │ + 0x00d3ec60 63342075 5f667261 6d656275 66666572 c4 u_framebuffer │ │ │ │ + 0x00d3ec70 4d657472 6963733b 200a2020 756e6966 Metrics; . unif │ │ │ │ + 0x00d3ec80 6f726d20 73616d70 6c657232 4420755f orm sampler2D u_ │ │ │ │ + 0x00d3ec90 636f6c6f 72546578 3b200a20 20756e69 colorTex; . uni │ │ │ │ + 0x00d3eca0 666f726d 2073616d 706c6572 32442075 form sampler2D u │ │ │ │ + 0x00d3ecb0 5f626c65 6e64696e 67576569 67687454 _blendingWeightT │ │ │ │ + 0x00d3ecc0 65783b20 0a202023 64656669 6e652053 ex; . #define S │ │ │ │ + 0x00d3ecd0 4d414153 616d706c 654c6576 656c5a65 MAASampleLevelZe │ │ │ │ + 0x00d3ece0 726f2874 65782c20 636f6f72 64292074 ro(tex, coord) t │ │ │ │ + 0x00d3ecf0 65787475 72654c6f 64287465 782c2063 extureLod(tex, c │ │ │ │ + 0x00d3ed00 6f6f7264 2c20302e 3029200a 2020636f oord, 0.0) . co │ │ │ │ + 0x00d3ed10 6e737420 666c6f61 74206b53 68617065 nst float kShape │ │ │ │ + 0x00d3ed20 436f6f72 64536361 6c617220 3d203130 CoordScalar = 10 │ │ │ │ + 0x00d3ed30 30302e30 3b200a20 20766f69 64206d61 00.0; . void ma │ │ │ │ + 0x00d3ed40 696e2829 200a2020 7b200a20 20202076 in() . { . v │ │ │ │ + 0x00d3ed50 65633420 613b200a 20202020 612e7820 ec4 a; . a.x │ │ │ │ + 0x00d3ed60 3d207465 78747572 6528755f 626c656e = texture(u_blen │ │ │ │ + 0x00d3ed70 64696e67 57656967 68745465 782c2076 dingWeightTex, v │ │ │ │ + 0x00d3ed80 5f6f6666 7365742e 7879292e 613b202f _offset.xy).a; / │ │ │ │ + 0x00d3ed90 2f205269 67687420 0a202020 20612e79 / Right . a.y │ │ │ │ + 0x00d3eda0 203d2074 65787475 72652875 5f626c65 = texture(u_ble │ │ │ │ + 0x00d3edb0 6e64696e 67576569 67687454 65782c20 ndingWeightTex, │ │ │ │ + 0x00d3edc0 765f6f66 66736574 2e7a7729 2e673b20 v_offset.zw).g; │ │ │ │ + 0x00d3edd0 2f2f2054 6f70200a 20202020 612e777a // Top . a.wz │ │ │ │ + 0x00d3ede0 203d2074 65787475 72652875 5f626c65 = texture(u_ble │ │ │ │ + 0x00d3edf0 6e64696e 67576569 67687454 65782c20 ndingWeightTex, │ │ │ │ + 0x00d3ee00 765f636f 6c6f7254 6578436f 6f726473 v_colorTexCoords │ │ │ │ + 0x00d3ee10 292e787a 3b202f2f 20426f74 746f6d20 ).xz; // Bottom │ │ │ │ + 0x00d3ee20 2f204c65 6674200a 20202020 69662028 / Left . if ( │ │ │ │ + 0x00d3ee30 646f7428 612c2076 65633428 312e302c dot(a, vec4(1.0, │ │ │ │ + 0x00d3ee40 20312e30 2c20312e 302c2031 2e302929 1.0, 1.0, 1.0)) │ │ │ │ + 0x00d3ee50 203c2031 652d3529 200a2020 20207b20 < 1e-5) . { │ │ │ │ + 0x00d3ee60 0a202020 20202076 5f467261 67436f6c . v_FragCol │ │ │ │ + 0x00d3ee70 6f72203d 20746578 74757265 28755f63 or = texture(u_c │ │ │ │ + 0x00d3ee80 6f6c6f72 5465782c 20765f63 6f6c6f72 olorTex, v_color │ │ │ │ + 0x00d3ee90 54657843 6f6f7264 73293b20 0a202020 TexCoords); . │ │ │ │ + 0x00d3eea0 207d200a 20202020 656c7365 200a2020 } . else . │ │ │ │ + 0x00d3eeb0 20207b20 0a202020 20202076 65633420 { . vec4 │ │ │ │ + 0x00d3eec0 626c656e 64696e67 4f666673 6574203d blendingOffset = │ │ │ │ + 0x00d3eed0 20766563 3428302e 302c2061 2e792c20 vec4(0.0, a.y, │ │ │ │ + 0x00d3eee0 302e302c 20612e77 293b200a 20202020 0.0, a.w); . │ │ │ │ + 0x00d3eef0 20207665 63322062 6c656e64 696e6757 vec2 blendingW │ │ │ │ + 0x00d3ef00 65696768 74203d20 612e7977 3b200a20 eight = a.yw; . │ │ │ │ + 0x00d3ef10 20202020 20696620 286d6178 28612e78 if (max(a.x │ │ │ │ + 0x00d3ef20 2c20612e 7a29203e 206d6178 28612e79 , a.z) > max(a.y │ │ │ │ + 0x00d3ef30 2c20612e 77292920 0a202020 2020207b , a.w)) . { │ │ │ │ + 0x00d3ef40 200a2020 20202020 2020626c 656e6469 . blendi │ │ │ │ + 0x00d3ef50 6e674f66 66736574 203d2076 65633428 ngOffset = vec4( │ │ │ │ + 0x00d3ef60 612e782c 20302e30 2c20612e 7a2c2030 a.x, 0.0, a.z, 0 │ │ │ │ + 0x00d3ef70 2e30293b 200a2020 20202020 2020626c .0); . bl │ │ │ │ + 0x00d3ef80 656e6469 6e675765 69676874 203d2061 endingWeight = a │ │ │ │ + 0x00d3ef90 2e787a3b 200a2020 20202020 7d200a20 .xz; . } . │ │ │ │ + 0x00d3efa0 20202020 20626c65 6e64696e 67576569 blendingWei │ │ │ │ + 0x00d3efb0 67687420 2f3d2064 6f742862 6c656e64 ght /= dot(blend │ │ │ │ + 0x00d3efc0 696e6757 65696768 742c2076 65633228 ingWeight, vec2( │ │ │ │ + 0x00d3efd0 312e302c 20312e30 29293b20 0a202020 1.0, 1.0)); . │ │ │ │ + 0x00d3efe0 20202076 65633420 6263203d 20626c65 vec4 bc = ble │ │ │ │ + 0x00d3eff0 6e64696e 674f6666 73657420 2a207665 ndingOffset * ve │ │ │ │ + 0x00d3f000 63342875 5f667261 6d656275 66666572 c4(u_framebuffer │ │ │ │ + 0x00d3f010 4d657472 6963732e 78792c20 2d755f66 Metrics.xy, -u_f │ │ │ │ + 0x00d3f020 72616d65 62756666 65724d65 74726963 ramebufferMetric │ │ │ │ + 0x00d3f030 732e7879 293b200a 20202020 20206263 s.xy); . bc │ │ │ │ + 0x00d3f040 202b3d20 765f636f 6c6f7254 6578436f += v_colorTexCo │ │ │ │ + 0x00d3f050 6f726473 2e787978 793b200a 20202020 ords.xyxy; . │ │ │ │ + 0x00d3f060 20207665 63342063 6f6c6f72 203d2062 vec4 color = b │ │ │ │ + 0x00d3f070 6c656e64 696e6757 65696768 742e7820 lendingWeight.x │ │ │ │ + 0x00d3f080 2a20534d 41415361 6d706c65 4c657665 * SMAASampleLeve │ │ │ │ + 0x00d3f090 6c5a6572 6f28755f 636f6c6f 72546578 lZero(u_colorTex │ │ │ │ + 0x00d3f0a0 2c206263 2e787929 3b200a20 20202020 , bc.xy); . │ │ │ │ + 0x00d3f0b0 20636f6c 6f72202b 3d20626c 656e6469 color += blendi │ │ │ │ + 0x00d3f0c0 6e675765 69676874 2e79202a 20534d41 ngWeight.y * SMA │ │ │ │ + 0x00d3f0d0 4153616d 706c654c 6576656c 5a65726f ASampleLevelZero │ │ │ │ + 0x00d3f0e0 28755f63 6f6c6f72 5465782c 2062632e (u_colorTex, bc. │ │ │ │ + 0x00d3f0f0 7a77293b 200a2020 20202020 765f4672 zw); . v_Fr │ │ │ │ + 0x00d3f100 6167436f 6c6f7220 3d20636f 6c6f723b agColor = color; │ │ │ │ + 0x00d3f110 200a2020 20207d20 0a20207d 200a0000 . } . } ... │ │ │ │ + 0x00d3f120 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d3f130 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d3f140 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d3f150 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d3f160 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d3f170 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d3f180 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d3f190 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d3f1a0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d3f1b0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d3f1c0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d3f1d0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d3f1e0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d3f1f0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d3f200 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d3f210 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d3f220 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d3f230 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d3f240 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d3f250 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d3f260 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d3f270 63332061 5f706f73 6974696f 6e3b200a c3 a_position; . │ │ │ │ + 0x00d3f280 2020696e 20766563 3320615f 6e6f726d in vec3 a_norm │ │ │ │ + 0x00d3f290 616c3b20 0a202069 6e207665 63322061 al; . in vec2 a │ │ │ │ + 0x00d3f2a0 5f636f6c 6f725465 78436f6f 7264733b _colorTexCoords; │ │ │ │ + 0x00d3f2b0 200a2020 23696664 65662045 4e41424c . #ifdef ENABL │ │ │ │ + 0x00d3f2c0 455f5654 46200a20 206f7574 204c4f57 E_VTF . out LOW │ │ │ │ + 0x00d3f2d0 5f502076 65633420 765f636f 6c6f723b _P vec4 v_color; │ │ │ │ + 0x00d3f2e0 200a2020 23656c73 65200a20 206f7574 . #else . out │ │ │ │ + 0x00d3f2f0 20766563 3220765f 636f6c6f 72546578 vec2 v_colorTex │ │ │ │ + 0x00d3f300 436f6f72 64733b20 0a202023 656e6469 Coords; . #endi │ │ │ │ + 0x00d3f310 66200a20 206f7574 20766563 3320765f f . out vec3 v_ │ │ │ │ + 0x00d3f320 72616469 75733b20 0a202075 6e69666f radius; . unifo │ │ │ │ + 0x00d3f330 726d206d 61743420 755f6d6f 64656c56 rm mat4 u_modelV │ │ │ │ + 0x00d3f340 6965773b 200a2020 756e6966 6f726d20 iew; . uniform │ │ │ │ + 0x00d3f350 6d617434 20755f70 726f6a65 6374696f mat4 u_projectio │ │ │ │ + 0x00d3f360 6e3b200a 2020756e 69666f72 6d206d61 n; . uniform ma │ │ │ │ + 0x00d3f370 74342075 5f706976 6f745472 616e7366 t4 u_pivotTransf │ │ │ │ + 0x00d3f380 6f726d3b 200a2020 756e6966 6f726d20 orm; . uniform │ │ │ │ + 0x00d3f390 76656332 20755f63 6f6e7472 61737447 vec2 u_contrastG │ │ │ │ + 0x00d3f3a0 616d6d61 3b200a20 20756e69 666f726d amma; . uniform │ │ │ │ + 0x00d3f3b0 20666c6f 61742075 5f6f7061 63697479 float u_opacity │ │ │ │ + 0x00d3f3c0 3b200a20 20756e69 666f726d 20666c6f ; . uniform flo │ │ │ │ + 0x00d3f3d0 61742075 5f7a5363 616c653b 200a2020 at u_zScale; . │ │ │ │ + 0x00d3f3e0 756e6966 6f726d20 666c6f61 7420755f uniform float u_ │ │ │ │ + 0x00d3f3f0 696e7465 72706f6c 6174696f 6e3b200a interpolation; . │ │ │ │ + 0x00d3f400 2020756e 69666f72 6d20666c 6f617420 uniform float │ │ │ │ + 0x00d3f410 755f6973 4f75746c 696e6550 6173733b u_isOutlinePass; │ │ │ │ + 0x00d3f420 200a2020 23696664 65662045 4e41424c . #ifdef ENABL │ │ │ │ + 0x00d3f430 455f5654 46200a20 20756e69 666f726d E_VTF . uniform │ │ │ │ + 0x00d3f440 2073616d 706c6572 32442075 5f636f6c sampler2D u_col │ │ │ │ + 0x00d3f450 6f725465 783b200a 20202365 6e646966 orTex; . #endif │ │ │ │ + 0x00d3f460 200a2020 636f6e73 7420666c 6f617420 . const float │ │ │ │ + 0x00d3f470 6b536861 7065436f 6f726453 63616c61 kShapeCoordScala │ │ │ │ + 0x00d3f480 72203d20 31303030 2e303b20 0a202076 r = 1000.0; . v │ │ │ │ + 0x00d3f490 65633420 6170706c 79506976 6f745472 ec4 applyPivotTr │ │ │ │ + 0x00d3f4a0 616e7366 6f726d28 76656334 20706976 ansform(vec4 piv │ │ │ │ + 0x00d3f4b0 6f742c20 6d617434 20706976 6f745472 ot, mat4 pivotTr │ │ │ │ + 0x00d3f4c0 616e7366 6f726d2c 20666c6f 61742070 ansform, float p │ │ │ │ + 0x00d3f4d0 69766f74 5265616c 5a29200a 20207b20 ivotRealZ) . { │ │ │ │ + 0x00d3f4e0 0a202020 20766563 34207472 616e7366 . vec4 transf │ │ │ │ + 0x00d3f4f0 6f726d65 64506976 6f74203d 20706976 ormedPivot = piv │ │ │ │ + 0x00d3f500 6f743b20 0a202020 20666c6f 61742077 ot; . float w │ │ │ │ + 0x00d3f510 203d2074 72616e73 666f726d 65645069 = transformedPi │ │ │ │ + 0x00d3f520 766f742e 773b200a 20202020 7472616e vot.w; . tran │ │ │ │ + 0x00d3f530 73666f72 6d656450 69766f74 2e787977 sformedPivot.xyw │ │ │ │ + 0x00d3f540 203d2028 7069766f 74547261 6e73666f = (pivotTransfo │ │ │ │ + 0x00d3f550 726d202a 20766563 34287472 616e7366 rm * vec4(transf │ │ │ │ + 0x00d3f560 6f726d65 64506976 6f742e78 792c2070 ormedPivot.xy, p │ │ │ │ + 0x00d3f570 69766f74 5265616c 5a2c2077 29292e78 ivotRealZ, w)).x │ │ │ │ + 0x00d3f580 79773b20 0a202020 20747261 6e73666f yw; . transfo │ │ │ │ + 0x00d3f590 726d6564 5069766f 742e7a20 2a3d2074 rmedPivot.z *= t │ │ │ │ + 0x00d3f5a0 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ + 0x00d3f5b0 77202f20 773b200a 20202369 66646566 w / w; . #ifdef │ │ │ │ + 0x00d3f5c0 2056554c 4b414e20 0a202020 20747261 VULKAN . tra │ │ │ │ + 0x00d3f5d0 6e73666f 726d6564 5069766f 742e7920 nsformedPivot.y │ │ │ │ + 0x00d3f5e0 3d202d74 72616e73 666f726d 65645069 = -transformedPi │ │ │ │ + 0x00d3f5f0 766f742e 793b200a 20202020 7472616e vot.y; . tran │ │ │ │ + 0x00d3f600 73666f72 6d656450 69766f74 2e7a203d sformedPivot.z = │ │ │ │ + 0x00d3f610 20287472 616e7366 6f726d65 64506976 (transformedPiv │ │ │ │ + 0x00d3f620 6f742e7a 20202b20 7472616e 73666f72 ot.z + transfor │ │ │ │ + 0x00d3f630 6d656450 69766f74 2e772920 2f20322e medPivot.w) / 2. │ │ │ │ + 0x00d3f640 303b200a 20202365 6e646966 200a2020 0; . #endif . │ │ │ │ + 0x00d3f650 20207265 7475726e 20747261 6e73666f return transfo │ │ │ │ + 0x00d3f660 726d6564 5069766f 743b200a 20207d20 rmedPivot; . } │ │ │ │ + 0x00d3f670 0a202076 65633420 6170706c 7942696c . vec4 applyBil │ │ │ │ + 0x00d3f680 6c626f61 72645069 766f7454 72616e73 lboardPivotTrans │ │ │ │ + 0x00d3f690 666f726d 28766563 34207069 766f742c form(vec4 pivot, │ │ │ │ + 0x00d3f6a0 206d6174 34207069 766f7454 72616e73 mat4 pivotTrans │ │ │ │ + 0x00d3f6b0 666f726d 2c20666c 6f617420 7069766f form, float pivo │ │ │ │ + 0x00d3f6c0 74526561 6c5a2c20 76656332 206f6666 tRealZ, vec2 off │ │ │ │ + 0x00d3f6d0 73657429 200a2020 7b200a20 20202066 set) . { . f │ │ │ │ + 0x00d3f6e0 6c6f6174 206c6f67 69635a20 3d207069 loat logicZ = pi │ │ │ │ + 0x00d3f6f0 766f742e 7a202f20 7069766f 742e773b vot.z / pivot.w; │ │ │ │ + 0x00d3f700 200a2020 20207665 63342074 72616e73 . vec4 trans │ │ │ │ + 0x00d3f710 666f726d 65645069 766f7420 3d207069 formedPivot = pi │ │ │ │ + 0x00d3f720 766f7454 72616e73 666f726d 202a2076 votTransform * v │ │ │ │ + 0x00d3f730 65633428 7069766f 742e7879 2c207069 ec4(pivot.xy, pi │ │ │ │ + 0x00d3f740 766f7452 65616c5a 2c207069 766f742e votRealZ, pivot. │ │ │ │ + 0x00d3f750 77293b20 0a202020 20766563 34207363 w); . vec4 sc │ │ │ │ + 0x00d3f760 616c6520 3d207069 766f7454 72616e73 ale = pivotTrans │ │ │ │ + 0x00d3f770 666f726d 202a2076 65633428 312e302c form * vec4(1.0, │ │ │ │ + 0x00d3f780 202d312e 302c2030 2e302c20 312e3029 -1.0, 0.0, 1.0) │ │ │ │ + 0x00d3f790 3b200a20 20202076 65633420 706f7369 ; . vec4 posi │ │ │ │ + 0x00d3f7a0 74696f6e 203d2076 65633428 7472616e tion = vec4(tran │ │ │ │ + 0x00d3f7b0 73666f72 6d656450 69766f74 2e787920 sformedPivot.xy │ │ │ │ + 0x00d3f7c0 2f207472 616e7366 6f726d65 64506976 / transformedPiv │ │ │ │ + 0x00d3f7d0 6f742e77 2c206c6f 6769635a 2c20312e ot.w, logicZ, 1. │ │ │ │ + 0x00d3f7e0 3029202b 20766563 34286f66 66736574 0) + vec4(offset │ │ │ │ + 0x00d3f7f0 202f2073 63616c65 2e77202a 20736361 / scale.w * sca │ │ │ │ + 0x00d3f800 6c652e78 2c20302e 302c2030 2e30293b le.x, 0.0, 0.0); │ │ │ │ + 0x00d3f810 200a2020 23696664 65662056 554c4b41 . #ifdef VULKA │ │ │ │ + 0x00d3f820 4e200a20 20202070 6f736974 696f6e2e N . position. │ │ │ │ + 0x00d3f830 79203d20 2d706f73 6974696f 6e2e793b y = -position.y; │ │ │ │ + 0x00d3f840 200a2020 2020706f 73697469 6f6e2e7a . position.z │ │ │ │ + 0x00d3f850 203d2028 706f7369 74696f6e 2e7a2020 = (position.z │ │ │ │ + 0x00d3f860 2b20706f 73697469 6f6e2e77 29202f20 + position.w) / │ │ │ │ + 0x00d3f870 322e303b 200a2020 23656e64 6966200a 2.0; . #endif . │ │ │ │ + 0x00d3f880 20202020 72657475 726e2070 6f736974 return posit │ │ │ │ + 0x00d3f890 696f6e3b 200a2020 7d200a20 20766563 ion; . } . vec │ │ │ │ + 0x00d3f8a0 32206361 6c634c69 6e655472 616e7366 2 calcLineTransf │ │ │ │ + 0x00d3f8b0 6f726d65 64417869 73506f73 28766563 ormedAxisPos(vec │ │ │ │ + 0x00d3f8c0 32206f72 6967696e 616c4178 6973506f 2 originalAxisPo │ │ │ │ + 0x00d3f8d0 732c2076 65633220 73686966 74656450 s, vec2 shiftedP │ │ │ │ + 0x00d3f8e0 6f732c20 6d617434 206d6f64 656c5669 os, mat4 modelVi │ │ │ │ + 0x00d3f8f0 65772c20 666c6f61 74206861 6c665769 ew, float halfWi │ │ │ │ + 0x00d3f900 64746829 200a2020 7b200a20 20202076 dth) . { . v │ │ │ │ + 0x00d3f910 65633220 70203d20 28766563 34287368 ec2 p = (vec4(sh │ │ │ │ + 0x00d3f920 69667465 64506f73 2c20302e 302c2031 iftedPos, 0.0, 1 │ │ │ │ + 0x00d3f930 2e302920 2a206d6f 64656c56 69657729 .0) * modelView) │ │ │ │ + 0x00d3f940 2e78793b 200a2020 20207665 63322064 .xy; . vec2 d │ │ │ │ + 0x00d3f950 203d2070 202d206f 72696769 6e616c41 = p - originalA │ │ │ │ + 0x00d3f960 78697350 6f733b20 0a202020 20696620 xisPos; . if │ │ │ │ + 0x00d3f970 28646f74 28642c20 64292021 3d20302e (dot(d, d) != 0. │ │ │ │ + 0x00d3f980 3029200a 20202020 20207265 7475726e 0) . return │ │ │ │ + 0x00d3f990 206f7269 67696e61 6c417869 73506f73 originalAxisPos │ │ │ │ + 0x00d3f9a0 202b206e 6f726d61 6c697a65 28642920 + normalize(d) │ │ │ │ + 0x00d3f9b0 2a206861 6c665769 6474683b 200a2020 * halfWidth; . │ │ │ │ + 0x00d3f9c0 2020656c 7365200a 20202020 20207265 else . re │ │ │ │ + 0x00d3f9d0 7475726e 206f7269 67696e61 6c417869 turn originalAxi │ │ │ │ + 0x00d3f9e0 73506f73 3b200a20 207d200a 2020766f sPos; . } . vo │ │ │ │ + 0x00d3f9f0 6964206d 61696e28 29200a20 207b200a id main() . { . │ │ │ │ + 0x00d3fa00 20202020 76656334 2070203d 20766563 vec4 p = vec │ │ │ │ + 0x00d3fa10 3428615f 706f7369 74696f6e 2c203129 4(a_position, 1) │ │ │ │ + 0x00d3fa20 202a2075 5f6d6f64 656c5669 65773b20 * u_modelView; │ │ │ │ + 0x00d3fa30 0a202020 20766563 3420706f 73203d20 . vec4 pos = │ │ │ │ + 0x00d3fa40 76656334 28615f6e 6f726d61 6c2e7879 vec4(a_normal.xy │ │ │ │ + 0x00d3fa50 2c20302c 20302920 2b20703b 200a2020 , 0, 0) + p; . │ │ │ │ + 0x00d3fa60 2020676c 5f506f73 6974696f 6e203d20 gl_Position = │ │ │ │ + 0x00d3fa70 6170706c 79506976 6f745472 616e7366 applyPivotTransf │ │ │ │ + 0x00d3fa80 6f726d28 706f7320 2a20755f 70726f6a orm(pos * u_proj │ │ │ │ + 0x00d3fa90 65637469 6f6e2c20 755f7069 766f7454 ection, u_pivotT │ │ │ │ + 0x00d3faa0 72616e73 666f726d 2c20302e 30293b20 ransform, 0.0); │ │ │ │ + 0x00d3fab0 0a202023 69666465 6620454e 41424c45 . #ifdef ENABLE │ │ │ │ + 0x00d3fac0 5f565446 200a2020 2020765f 636f6c6f _VTF . v_colo │ │ │ │ + 0x00d3fad0 72203d20 74657874 75726528 755f636f r = texture(u_co │ │ │ │ + 0x00d3fae0 6c6f7254 65782c20 615f636f 6c6f7254 lorTex, a_colorT │ │ │ │ + 0x00d3faf0 6578436f 6f726473 293b200a 20202365 exCoords); . #e │ │ │ │ + 0x00d3fb00 6c736520 0a202020 20765f63 6f6c6f72 lse . v_color │ │ │ │ + 0x00d3fb10 54657843 6f6f7264 73203d20 615f636f TexCoords = a_co │ │ │ │ + 0x00d3fb20 6c6f7254 6578436f 6f726473 3b200a20 lorTexCoords; . │ │ │ │ + 0x00d3fb30 2023656e 64696620 0a202020 20765f72 #endif . v_r │ │ │ │ + 0x00d3fb40 61646975 73203d20 615f6e6f 726d616c adius = a_normal │ │ │ │ + 0x00d3fb50 3b200a20 207d200a 00000000 00000000 ; . } ......... │ │ │ │ + 0x00d3fb60 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d3fb70 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d3fb80 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d3fb90 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d3fba0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d3fbb0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d3fbc0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d3fbd0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d3fbe0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d3fbf0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d3fc00 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d3fc10 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d3fc20 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d3fc30 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d3fc40 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d3fc50 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d3fc60 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d3fc70 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d3fc80 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d3fc90 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d3fca0 2023656e 64696620 0a202023 69666465 #endif . #ifde │ │ │ │ + 0x00d3fcb0 6620454e 41424c45 5f565446 200a2020 f ENABLE_VTF . │ │ │ │ + 0x00d3fcc0 696e204c 4f575f50 20766563 3420765f in LOW_P vec4 v_ │ │ │ │ + 0x00d3fcd0 636f6c6f 723b200a 20202365 6c736520 color; . #else │ │ │ │ + 0x00d3fce0 0a202069 6e207665 63322076 5f636f6c . in vec2 v_col │ │ │ │ + 0x00d3fcf0 6f725465 78436f6f 72643b20 0a202075 orTexCoord; . u │ │ │ │ + 0x00d3fd00 6e69666f 726d2073 616d706c 65723244 niform sampler2D │ │ │ │ + 0x00d3fd10 20755f63 6f6c6f72 5465783b 200a2020 u_colorTex; . │ │ │ │ + 0x00d3fd20 23656e64 6966200a 20206f75 74207665 #endif . out ve │ │ │ │ + 0x00d3fd30 63342076 5f467261 67436f6c 6f723b20 c4 v_FragColor; │ │ │ │ + 0x00d3fd40 0a202075 6e69666f 726d206d 61743420 . uniform mat4 │ │ │ │ + 0x00d3fd50 755f6d6f 64656c56 6965773b 200a2020 u_modelView; . │ │ │ │ + 0x00d3fd60 756e6966 6f726d20 6d617434 20755f70 uniform mat4 u_p │ │ │ │ + 0x00d3fd70 726f6a65 6374696f 6e3b200a 2020756e rojection; . un │ │ │ │ + 0x00d3fd80 69666f72 6d206d61 74342075 5f706976 iform mat4 u_piv │ │ │ │ + 0x00d3fd90 6f745472 616e7366 6f726d3b 200a2020 otTransform; . │ │ │ │ + 0x00d3fda0 756e6966 6f726d20 76656332 20755f63 uniform vec2 u_c │ │ │ │ + 0x00d3fdb0 6f6e7472 61737447 616d6d61 3b200a20 ontrastGamma; . │ │ │ │ + 0x00d3fdc0 20756e69 666f726d 20666c6f 61742075 uniform float u │ │ │ │ + 0x00d3fdd0 5f6f7061 63697479 3b200a20 20756e69 _opacity; . uni │ │ │ │ + 0x00d3fde0 666f726d 20666c6f 61742075 5f7a5363 form float u_zSc │ │ │ │ + 0x00d3fdf0 616c653b 200a2020 756e6966 6f726d20 ale; . uniform │ │ │ │ + 0x00d3fe00 666c6f61 7420755f 696e7465 72706f6c float u_interpol │ │ │ │ + 0x00d3fe10 6174696f 6e3b200a 2020756e 69666f72 ation; . unifor │ │ │ │ + 0x00d3fe20 6d20666c 6f617420 755f6973 4f75746c m float u_isOutl │ │ │ │ + 0x00d3fe30 696e6550 6173733b 200a2020 636f6e73 inePass; . cons │ │ │ │ + 0x00d3fe40 7420666c 6f617420 6b536861 7065436f t float kShapeCo │ │ │ │ + 0x00d3fe50 6f726453 63616c61 72203d20 31303030 ordScalar = 1000 │ │ │ │ + 0x00d3fe60 2e303b20 0a202076 6f696420 6d61696e .0; . void main │ │ │ │ + 0x00d3fe70 2829200a 20207b20 0a202023 69666465 () . { . #ifde │ │ │ │ + 0x00d3fe80 6620454e 41424c45 5f565446 200a2020 f ENABLE_VTF . │ │ │ │ + 0x00d3fe90 20204c4f 575f5020 76656334 20636f6c LOW_P vec4 col │ │ │ │ + 0x00d3fea0 6f72203d 20765f63 6f6c6f72 3b200a20 or = v_color; . │ │ │ │ + 0x00d3feb0 2023656c 7365200a 20202020 4c4f575f #else . LOW_ │ │ │ │ + 0x00d3fec0 50207665 63342063 6f6c6f72 203d2074 P vec4 color = t │ │ │ │ + 0x00d3fed0 65787475 72652875 5f636f6c 6f725465 exture(u_colorTe │ │ │ │ + 0x00d3fee0 782c2076 5f636f6c 6f725465 78436f6f x, v_colorTexCoo │ │ │ │ + 0x00d3fef0 7264293b 200a2020 23656e64 6966200a rd); . #endif . │ │ │ │ + 0x00d3ff00 20202020 636f6c6f 722e6120 2a3d2075 color.a *= u │ │ │ │ + 0x00d3ff10 5f6f7061 63697479 3b200a20 20202076 _opacity; . v │ │ │ │ + 0x00d3ff20 5f467261 67436f6c 6f72203d 20636f6c _FragColor = col │ │ │ │ + 0x00d3ff30 6f723b20 0a20207d 200a0000 00000000 or; . } ....... │ │ │ │ + 0x00d3ff40 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d3ff50 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d3ff60 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d3ff70 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d3ff80 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d3ff90 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d3ffa0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d3ffb0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d3ffc0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d3ffd0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d3ffe0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d3fff0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d40000 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d40010 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d40020 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d40030 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d40040 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d40050 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d40060 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d40070 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d40080 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d40090 63342076 5f746578 436f6f72 64733b20 c4 v_texCoords; │ │ │ │ + 0x00d400a0 0a202069 6e207665 63342076 5f6d6173 . in vec4 v_mas │ │ │ │ + 0x00d400b0 6b436f6c 6f723b20 0a20206f 75742076 kColor; . out v │ │ │ │ + 0x00d400c0 65633420 765f4672 6167436f 6c6f723b ec4 v_FragColor; │ │ │ │ + 0x00d400d0 200a2020 756e6966 6f726d20 6d617434 . uniform mat4 │ │ │ │ + 0x00d400e0 20755f6d 6f64656c 56696577 3b200a20 u_modelView; . │ │ │ │ + 0x00d400f0 20756e69 666f726d 206d6174 3420755f uniform mat4 u_ │ │ │ │ + 0x00d40100 70726f6a 65637469 6f6e3b20 0a202075 projection; . u │ │ │ │ + 0x00d40110 6e69666f 726d206d 61743420 755f7069 niform mat4 u_pi │ │ │ │ + 0x00d40120 766f7454 72616e73 666f726d 3b200a20 votTransform; . │ │ │ │ + 0x00d40130 20756e69 666f726d 20766563 3220755f uniform vec2 u_ │ │ │ │ + 0x00d40140 636f6e74 72617374 47616d6d 613b200a contrastGamma; . │ │ │ │ + 0x00d40150 2020756e 69666f72 6d20666c 6f617420 uniform float │ │ │ │ + 0x00d40160 755f6f70 61636974 793b200a 2020756e u_opacity; . un │ │ │ │ + 0x00d40170 69666f72 6d20666c 6f617420 755f7a53 iform float u_zS │ │ │ │ + 0x00d40180 63616c65 3b200a20 20756e69 666f726d cale; . uniform │ │ │ │ + 0x00d40190 20666c6f 61742075 5f696e74 6572706f float u_interpo │ │ │ │ + 0x00d401a0 6c617469 6f6e3b20 0a202075 6e69666f lation; . unifo │ │ │ │ + 0x00d401b0 726d2066 6c6f6174 20755f69 734f7574 rm float u_isOut │ │ │ │ + 0x00d401c0 6c696e65 50617373 3b200a20 20756e69 linePass; . uni │ │ │ │ + 0x00d401d0 666f726d 2073616d 706c6572 32442075 form sampler2D u │ │ │ │ + 0x00d401e0 5f636f6c 6f725465 783b200a 2020636f _colorTex; . co │ │ │ │ + 0x00d401f0 6e737420 666c6f61 74206b53 68617065 nst float kShape │ │ │ │ + 0x00d40200 436f6f72 64536361 6c617220 3d203130 CoordScalar = 10 │ │ │ │ + 0x00d40210 30302e30 3b200a20 20766f69 64206d61 00.0; . void ma │ │ │ │ + 0x00d40220 696e2829 200a2020 7b200a20 20202076 in() . { . v │ │ │ │ + 0x00d40230 65633420 636f6c6f 72203d20 74657874 ec4 color = text │ │ │ │ + 0x00d40240 75726528 755f636f 6c6f7254 65782c20 ure(u_colorTex, │ │ │ │ + 0x00d40250 765f7465 78436f6f 7264732e 7879293b v_texCoords.xy); │ │ │ │ + 0x00d40260 200a2020 20207665 63342062 67436f6c . vec4 bgCol │ │ │ │ + 0x00d40270 6f72203d 20746578 74757265 28755f63 or = texture(u_c │ │ │ │ + 0x00d40280 6f6c6f72 5465782c 20765f74 6578436f olorTex, v_texCo │ │ │ │ + 0x00d40290 6f726473 2e7a7729 202a2076 65633428 ords.zw) * vec4( │ │ │ │ + 0x00d402a0 765f6d61 736b436f 6c6f722e 78797a2c v_maskColor.xyz, │ │ │ │ + 0x00d402b0 20312e30 293b200a 20202020 76656334 1.0); . vec4 │ │ │ │ + 0x00d402c0 2066696e 616c436f 6c6f7220 3d206d69 finalColor = mi │ │ │ │ + 0x00d402d0 7828636f 6c6f722c 206d6978 28626743 x(color, mix(bgC │ │ │ │ + 0x00d402e0 6f6c6f72 2c20636f 6c6f722c 20636f6c olor, color, col │ │ │ │ + 0x00d402f0 6f722e61 292c2062 67436f6c 6f722e61 or.a), bgColor.a │ │ │ │ + 0x00d40300 293b200a 20202020 66696e61 6c436f6c ); . finalCol │ │ │ │ + 0x00d40310 6f722e61 203d2063 6c616d70 28636f6c or.a = clamp(col │ │ │ │ + 0x00d40320 6f722e61 202b2062 67436f6c 6f722e61 or.a + bgColor.a │ │ │ │ + 0x00d40330 2c20302e 302c2031 2e302920 2a20755f , 0.0, 1.0) * u_ │ │ │ │ + 0x00d40340 6f706163 69747920 2a20765f 6d61736b opacity * v_mask │ │ │ │ + 0x00d40350 436f6c6f 722e773b 200a2020 20206966 Color.w; . if │ │ │ │ + 0x00d40360 20286669 6e616c43 6f6c6f72 2e61203c (finalColor.a < │ │ │ │ + 0x00d40370 20302e30 3129200a 20202020 20206469 0.01) . di │ │ │ │ + 0x00d40380 73636172 643b200a 20202020 765f4672 scard; . v_Fr │ │ │ │ + 0x00d40390 6167436f 6c6f7220 3d206669 6e616c43 agColor = finalC │ │ │ │ + 0x00d403a0 6f6c6f72 3b200a20 207d200a 00000000 olor; . } ..... │ │ │ │ + 0x00d403b0 00000000 00000000 00000000 00000000 ................ │ │ │ │ + 0x00d403c0 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d403d0 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d403e0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d403f0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d40400 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d40410 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d40420 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d40430 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d40440 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d40450 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d40460 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d40470 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d40480 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d40490 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d404a0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d404b0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d404c0 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d404d0 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d404e0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d404f0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d40500 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d40510 63332061 5f706f73 6974696f 6e3b200a c3 a_position; . │ │ │ │ + 0x00d40520 2020696e 20766563 3220615f 636f6c6f in vec2 a_colo │ │ │ │ + 0x00d40530 72546578 436f6f72 64733b20 0a202069 rTexCoords; . i │ │ │ │ + 0x00d40540 6e207665 63322061 5f6d6173 6b546578 n vec2 a_maskTex │ │ │ │ + 0x00d40550 436f6f72 64733b20 0a202023 69666465 Coords; . #ifde │ │ │ │ + 0x00d40560 6620454e 41424c45 5f565446 200a2020 f ENABLE_VTF . │ │ │ │ + 0x00d40570 6f757420 4c4f575f 50207665 63342076 out LOW_P vec4 v │ │ │ │ + 0x00d40580 5f636f6c 6f723b20 0a202023 656c7365 _color; . #else │ │ │ │ + 0x00d40590 200a2020 6f757420 76656332 20765f63 . out vec2 v_c │ │ │ │ + 0x00d405a0 6f6c6f72 54657843 6f6f7264 733b200a olorTexCoords; . │ │ │ │ + 0x00d405b0 20202365 6e646966 200a2020 6f757420 #endif . out │ │ │ │ + 0x00d405c0 76656332 20765f6d 61736b54 6578436f vec2 v_maskTexCo │ │ │ │ + 0x00d405d0 6f726473 3b200a20 20756e69 666f726d ords; . uniform │ │ │ │ + 0x00d405e0 206d6174 3420755f 6d6f6465 6c566965 mat4 u_modelVie │ │ │ │ + 0x00d405f0 773b200a 2020756e 69666f72 6d206d61 w; . uniform ma │ │ │ │ + 0x00d40600 74342075 5f70726f 6a656374 696f6e3b t4 u_projection; │ │ │ │ + 0x00d40610 200a2020 756e6966 6f726d20 6d617434 . uniform mat4 │ │ │ │ + 0x00d40620 20755f70 69766f74 5472616e 73666f72 u_pivotTransfor │ │ │ │ + 0x00d40630 6d3b200a 2020756e 69666f72 6d207665 m; . uniform ve │ │ │ │ + 0x00d40640 63322075 5f636f6e 74726173 7447616d c2 u_contrastGam │ │ │ │ + 0x00d40650 6d613b20 0a202075 6e69666f 726d2066 ma; . uniform f │ │ │ │ + 0x00d40660 6c6f6174 20755f6f 70616369 74793b20 loat u_opacity; │ │ │ │ + 0x00d40670 0a202075 6e69666f 726d2066 6c6f6174 . uniform float │ │ │ │ + 0x00d40680 20755f7a 5363616c 653b200a 2020756e u_zScale; . un │ │ │ │ + 0x00d40690 69666f72 6d20666c 6f617420 755f696e iform float u_in │ │ │ │ + 0x00d406a0 74657270 6f6c6174 696f6e3b 200a2020 terpolation; . │ │ │ │ + 0x00d406b0 756e6966 6f726d20 666c6f61 7420755f uniform float u_ │ │ │ │ + 0x00d406c0 69734f75 746c696e 65506173 733b200a isOutlinePass; . │ │ │ │ + 0x00d406d0 20202369 66646566 20454e41 424c455f #ifdef ENABLE_ │ │ │ │ + 0x00d406e0 56544620 0a202075 6e69666f 726d2073 VTF . uniform s │ │ │ │ + 0x00d406f0 616d706c 65723244 20755f63 6f6c6f72 ampler2D u_color │ │ │ │ + 0x00d40700 5465783b 200a2020 23656e64 6966200a Tex; . #endif . │ │ │ │ + 0x00d40710 2020636f 6e737420 666c6f61 74206b53 const float kS │ │ │ │ + 0x00d40720 68617065 436f6f72 64536361 6c617220 hapeCoordScalar │ │ │ │ + 0x00d40730 3d203130 30302e30 3b200a20 20766563 = 1000.0; . vec │ │ │ │ + 0x00d40740 34206170 706c7950 69766f74 5472616e 4 applyPivotTran │ │ │ │ + 0x00d40750 73666f72 6d287665 63342070 69766f74 sform(vec4 pivot │ │ │ │ + 0x00d40760 2c206d61 74342070 69766f74 5472616e , mat4 pivotTran │ │ │ │ + 0x00d40770 73666f72 6d2c2066 6c6f6174 20706976 sform, float piv │ │ │ │ + 0x00d40780 6f745265 616c5a29 200a2020 7b200a20 otRealZ) . { . │ │ │ │ + 0x00d40790 20202076 65633420 7472616e 73666f72 vec4 transfor │ │ │ │ + 0x00d407a0 6d656450 69766f74 203d2070 69766f74 medPivot = pivot │ │ │ │ + 0x00d407b0 3b200a20 20202066 6c6f6174 2077203d ; . float w = │ │ │ │ + 0x00d407c0 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ + 0x00d407d0 742e773b 200a2020 20207472 616e7366 t.w; . transf │ │ │ │ + 0x00d407e0 6f726d65 64506976 6f742e78 7977203d ormedPivot.xyw = │ │ │ │ + 0x00d407f0 20287069 766f7454 72616e73 666f726d (pivotTransform │ │ │ │ + 0x00d40800 202a2076 65633428 7472616e 73666f72 * vec4(transfor │ │ │ │ + 0x00d40810 6d656450 69766f74 2e78792c 20706976 medPivot.xy, piv │ │ │ │ + 0x00d40820 6f745265 616c5a2c 20772929 2e787977 otRealZ, w)).xyw │ │ │ │ + 0x00d40830 3b200a20 20202074 72616e73 666f726d ; . transform │ │ │ │ + 0x00d40840 65645069 766f742e 7a202a3d 20747261 edPivot.z *= tra │ │ │ │ + 0x00d40850 6e73666f 726d6564 5069766f 742e7720 nsformedPivot.w │ │ │ │ + 0x00d40860 2f20773b 200a2020 23696664 65662056 / w; . #ifdef V │ │ │ │ + 0x00d40870 554c4b41 4e200a20 20202074 72616e73 ULKAN . trans │ │ │ │ + 0x00d40880 666f726d 65645069 766f742e 79203d20 formedPivot.y = │ │ │ │ + 0x00d40890 2d747261 6e73666f 726d6564 5069766f -transformedPivo │ │ │ │ + 0x00d408a0 742e793b 200a2020 20207472 616e7366 t.y; . transf │ │ │ │ + 0x00d408b0 6f726d65 64506976 6f742e7a 203d2028 ormedPivot.z = ( │ │ │ │ + 0x00d408c0 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ + 0x00d408d0 2e7a2020 2b207472 616e7366 6f726d65 .z + transforme │ │ │ │ + 0x00d408e0 64506976 6f742e77 29202f20 322e303b dPivot.w) / 2.0; │ │ │ │ + 0x00d408f0 200a2020 23656e64 6966200a 20202020 . #endif . │ │ │ │ + 0x00d40900 72657475 726e2074 72616e73 666f726d return transform │ │ │ │ + 0x00d40910 65645069 766f743b 200a2020 7d200a20 edPivot; . } . │ │ │ │ + 0x00d40920 20766563 34206170 706c7942 696c6c62 vec4 applyBillb │ │ │ │ + 0x00d40930 6f617264 5069766f 74547261 6e73666f oardPivotTransfo │ │ │ │ + 0x00d40940 726d2876 65633420 7069766f 742c206d rm(vec4 pivot, m │ │ │ │ + 0x00d40950 61743420 7069766f 74547261 6e73666f at4 pivotTransfo │ │ │ │ + 0x00d40960 726d2c20 666c6f61 74207069 766f7452 rm, float pivotR │ │ │ │ + 0x00d40970 65616c5a 2c207665 6332206f 66667365 ealZ, vec2 offse │ │ │ │ + 0x00d40980 7429200a 20207b20 0a202020 20666c6f t) . { . flo │ │ │ │ + 0x00d40990 6174206c 6f676963 5a203d20 7069766f at logicZ = pivo │ │ │ │ + 0x00d409a0 742e7a20 2f207069 766f742e 773b200a t.z / pivot.w; . │ │ │ │ + 0x00d409b0 20202020 76656334 20747261 6e73666f vec4 transfo │ │ │ │ + 0x00d409c0 726d6564 5069766f 74203d20 7069766f rmedPivot = pivo │ │ │ │ + 0x00d409d0 74547261 6e73666f 726d202a 20766563 tTransform * vec │ │ │ │ + 0x00d409e0 34287069 766f742e 78792c20 7069766f 4(pivot.xy, pivo │ │ │ │ + 0x00d409f0 74526561 6c5a2c20 7069766f 742e7729 tRealZ, pivot.w) │ │ │ │ + 0x00d40a00 3b200a20 20202076 65633420 7363616c ; . vec4 scal │ │ │ │ + 0x00d40a10 65203d20 7069766f 74547261 6e73666f e = pivotTransfo │ │ │ │ + 0x00d40a20 726d202a 20766563 3428312e 302c202d rm * vec4(1.0, - │ │ │ │ + 0x00d40a30 312e302c 20302e30 2c20312e 30293b20 1.0, 0.0, 1.0); │ │ │ │ + 0x00d40a40 0a202020 20766563 3420706f 73697469 . vec4 positi │ │ │ │ + 0x00d40a50 6f6e203d 20766563 34287472 616e7366 on = vec4(transf │ │ │ │ + 0x00d40a60 6f726d65 64506976 6f742e78 79202f20 ormedPivot.xy / │ │ │ │ + 0x00d40a70 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ + 0x00d40a80 2e772c20 6c6f6769 635a2c20 312e3029 .w, logicZ, 1.0) │ │ │ │ + 0x00d40a90 202b2076 65633428 6f666673 6574202f + vec4(offset / │ │ │ │ + 0x00d40aa0 20736361 6c652e77 202a2073 63616c65 scale.w * scale │ │ │ │ + 0x00d40ab0 2e782c20 302e302c 20302e30 293b200a .x, 0.0, 0.0); . │ │ │ │ + 0x00d40ac0 20202369 66646566 2056554c 4b414e20 #ifdef VULKAN │ │ │ │ + 0x00d40ad0 0a202020 20706f73 6974696f 6e2e7920 . position.y │ │ │ │ + 0x00d40ae0 3d202d70 6f736974 696f6e2e 793b200a = -position.y; . │ │ │ │ + 0x00d40af0 20202020 706f7369 74696f6e 2e7a203d position.z = │ │ │ │ + 0x00d40b00 2028706f 73697469 6f6e2e7a 20202b20 (position.z + │ │ │ │ + 0x00d40b10 706f7369 74696f6e 2e772920 2f20322e position.w) / 2. │ │ │ │ + 0x00d40b20 303b200a 20202365 6e646966 200a2020 0; . #endif . │ │ │ │ + 0x00d40b30 20207265 7475726e 20706f73 6974696f return positio │ │ │ │ + 0x00d40b40 6e3b200a 20207d20 0a202076 65633220 n; . } . vec2 │ │ │ │ + 0x00d40b50 63616c63 4c696e65 5472616e 73666f72 calcLineTransfor │ │ │ │ + 0x00d40b60 6d656441 78697350 6f732876 65633220 medAxisPos(vec2 │ │ │ │ + 0x00d40b70 6f726967 696e616c 41786973 506f732c originalAxisPos, │ │ │ │ + 0x00d40b80 20766563 32207368 69667465 64506f73 vec2 shiftedPos │ │ │ │ + 0x00d40b90 2c206d61 7434206d 6f64656c 56696577 , mat4 modelView │ │ │ │ + 0x00d40ba0 2c20666c 6f617420 68616c66 57696474 , float halfWidt │ │ │ │ + 0x00d40bb0 6829200a 20207b20 0a202020 20766563 h) . { . vec │ │ │ │ + 0x00d40bc0 32207020 3d202876 65633428 73686966 2 p = (vec4(shif │ │ │ │ + 0x00d40bd0 74656450 6f732c20 302e302c 20312e30 tedPos, 0.0, 1.0 │ │ │ │ + 0x00d40be0 29202a20 6d6f6465 6c566965 77292e78 ) * modelView).x │ │ │ │ + 0x00d40bf0 793b200a 20202020 76656332 2064203d y; . vec2 d = │ │ │ │ + 0x00d40c00 2070202d 206f7269 67696e61 6c417869 p - originalAxi │ │ │ │ + 0x00d40c10 73506f73 3b200a20 20202069 66202864 sPos; . if (d │ │ │ │ + 0x00d40c20 6f742864 2c206429 20213d20 302e3029 ot(d, d) != 0.0) │ │ │ │ + 0x00d40c30 200a2020 20202020 72657475 726e206f . return o │ │ │ │ + 0x00d40c40 72696769 6e616c41 78697350 6f73202b riginalAxisPos + │ │ │ │ + 0x00d40c50 206e6f72 6d616c69 7a652864 29202a20 normalize(d) * │ │ │ │ + 0x00d40c60 68616c66 57696474 683b200a 20202020 halfWidth; . │ │ │ │ + 0x00d40c70 656c7365 200a2020 20202020 72657475 else . retu │ │ │ │ + 0x00d40c80 726e206f 72696769 6e616c41 78697350 rn originalAxisP │ │ │ │ + 0x00d40c90 6f733b20 0a20207d 200a2020 766f6964 os; . } . void │ │ │ │ + 0x00d40ca0 206d6169 6e282920 0a20207b 200a2020 main() . { . │ │ │ │ + 0x00d40cb0 20207665 63342070 6f73203d 20766563 vec4 pos = vec │ │ │ │ + 0x00d40cc0 3428615f 706f7369 74696f6e 2c203129 4(a_position, 1) │ │ │ │ + 0x00d40cd0 202a2075 5f6d6f64 656c5669 6577202a * u_modelView * │ │ │ │ + 0x00d40ce0 20755f70 726f6a65 6374696f 6e3b200a u_projection; . │ │ │ │ + 0x00d40cf0 20202020 676c5f50 6f736974 696f6e20 gl_Position │ │ │ │ + 0x00d40d00 3d206170 706c7950 69766f74 5472616e = applyPivotTran │ │ │ │ + 0x00d40d10 73666f72 6d28706f 732c2075 5f706976 sform(pos, u_piv │ │ │ │ + 0x00d40d20 6f745472 616e7366 6f726d2c 20302e30 otTransform, 0.0 │ │ │ │ + 0x00d40d30 293b200a 20202369 66646566 20454e41 ); . #ifdef ENA │ │ │ │ + 0x00d40d40 424c455f 56544620 0a202020 20765f63 BLE_VTF . v_c │ │ │ │ + 0x00d40d50 6f6c6f72 203d2074 65787475 72652875 olor = texture(u │ │ │ │ + 0x00d40d60 5f636f6c 6f725465 782c2061 5f636f6c _colorTex, a_col │ │ │ │ + 0x00d40d70 6f725465 78436f6f 72647329 3b200a20 orTexCoords); . │ │ │ │ + 0x00d40d80 2023656c 7365200a 20202020 765f636f #else . v_co │ │ │ │ + 0x00d40d90 6c6f7254 6578436f 6f726473 203d2061 lorTexCoords = a │ │ │ │ + 0x00d40da0 5f636f6c 6f725465 78436f6f 7264733b _colorTexCoords; │ │ │ │ + 0x00d40db0 200a2020 23656e64 6966200a 20202020 . #endif . │ │ │ │ + 0x00d40dc0 765f6d61 736b5465 78436f6f 72647320 v_maskTexCoords │ │ │ │ + 0x00d40dd0 3d20615f 6d61736b 54657843 6f6f7264 = a_maskTexCoord │ │ │ │ + 0x00d40de0 733b200a 20207d20 0a000000 00000000 s; . } ........ │ │ │ │ + 0x00d40df0 00000000 00000000 00000000 00000000 ................ │ │ │ │ + 0x00d40e00 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d40e10 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d40e20 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d40e30 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d40e40 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d40e50 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d40e60 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d40e70 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d40e80 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d40e90 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d40ea0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d40eb0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d40ec0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d40ed0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d40ee0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d40ef0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d40f00 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d40f10 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d40f20 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d40f30 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d40f40 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d40f50 63332061 5f706f73 6974696f 6e3b200a c3 a_position; . │ │ │ │ + 0x00d40f60 2020696e 20766563 3220615f 6e6f726d in vec2 a_norm │ │ │ │ + 0x00d40f70 616c3b20 0a202069 6e207665 63332061 al; . in vec3 a │ │ │ │ + 0x00d40f80 5f6c656e 6774683b 200a2020 696e2076 _length; . in v │ │ │ │ + 0x00d40f90 65633420 615f636f 6c6f723b 200a2020 ec4 a_color; . │ │ │ │ + 0x00d40fa0 6f757420 76656333 20765f6c 656e6774 out vec3 v_lengt │ │ │ │ + 0x00d40fb0 683b200a 20206f75 74207665 63342076 h; . out vec4 v │ │ │ │ + 0x00d40fc0 5f636f6c 6f723b20 0a202075 6e69666f _color; . unifo │ │ │ │ + 0x00d40fd0 726d206d 61743420 755f6d6f 64656c56 rm mat4 u_modelV │ │ │ │ + 0x00d40fe0 6965773b 200a2020 756e6966 6f726d20 iew; . uniform │ │ │ │ + 0x00d40ff0 6d617434 20755f70 726f6a65 6374696f mat4 u_projectio │ │ │ │ + 0x00d41000 6e3b200a 2020756e 69666f72 6d206d61 n; . uniform ma │ │ │ │ + 0x00d41010 74342075 5f706976 6f745472 616e7366 t4 u_pivotTransf │ │ │ │ + 0x00d41020 6f726d3b 200a2020 756e6966 6f726d20 orm; . uniform │ │ │ │ + 0x00d41030 76656334 20755f72 6f757465 50617261 vec4 u_routePara │ │ │ │ + 0x00d41040 6d733b20 0a202075 6e69666f 726d2076 ms; . uniform v │ │ │ │ + 0x00d41050 65633420 755f636f 6c6f723b 200a2020 ec4 u_color; . │ │ │ │ + 0x00d41060 756e6966 6f726d20 76656334 20755f6d uniform vec4 u_m │ │ │ │ + 0x00d41070 61736b43 6f6c6f72 3b200a20 20756e69 askColor; . uni │ │ │ │ + 0x00d41080 666f726d 20766563 3420755f 6f75746c form vec4 u_outl │ │ │ │ + 0x00d41090 696e6543 6f6c6f72 3b200a20 20756e69 ineColor; . uni │ │ │ │ + 0x00d410a0 666f726d 20766563 3420755f 66616b65 form vec4 u_fake │ │ │ │ + 0x00d410b0 436f6c6f 723b200a 2020756e 69666f72 Color; . unifor │ │ │ │ + 0x00d410c0 6d207665 63342075 5f66616b 654f7574 m vec4 u_fakeOut │ │ │ │ + 0x00d410d0 6c696e65 436f6c6f 723b200a 2020756e lineColor; . un │ │ │ │ + 0x00d410e0 69666f72 6d207665 63322075 5f66616b iform vec2 u_fak │ │ │ │ + 0x00d410f0 65426f72 64657273 3b200a20 20756e69 eBorders; . uni │ │ │ │ + 0x00d41100 666f726d 20766563 3220755f 70617474 form vec2 u_patt │ │ │ │ + 0x00d41110 65726e3b 200a2020 756e6966 6f726d20 ern; . uniform │ │ │ │ + 0x00d41120 76656332 20755f61 6e676c65 436f7353 vec2 u_angleCosS │ │ │ │ + 0x00d41130 696e3b20 0a202075 6e69666f 726d2066 in; . uniform f │ │ │ │ + 0x00d41140 6c6f6174 20755f61 72726f77 48616c66 loat u_arrowHalf │ │ │ │ + 0x00d41150 57696474 683b200a 2020756e 69666f72 Width; . unifor │ │ │ │ + 0x00d41160 6d20666c 6f617420 755f6f70 61636974 m float u_opacit │ │ │ │ + 0x00d41170 793b200a 2020636f 6e737420 666c6f61 y; . const floa │ │ │ │ + 0x00d41180 74206b53 68617065 436f6f72 64536361 t kShapeCoordSca │ │ │ │ + 0x00d41190 6c617220 3d203130 30302e30 3b200a20 lar = 1000.0; . │ │ │ │ + 0x00d411a0 20766563 34206170 706c7950 69766f74 vec4 applyPivot │ │ │ │ + 0x00d411b0 5472616e 73666f72 6d287665 63342070 Transform(vec4 p │ │ │ │ + 0x00d411c0 69766f74 2c206d61 74342070 69766f74 ivot, mat4 pivot │ │ │ │ + 0x00d411d0 5472616e 73666f72 6d2c2066 6c6f6174 Transform, float │ │ │ │ + 0x00d411e0 20706976 6f745265 616c5a29 200a2020 pivotRealZ) . │ │ │ │ + 0x00d411f0 7b200a20 20202076 65633420 7472616e { . vec4 tran │ │ │ │ + 0x00d41200 73666f72 6d656450 69766f74 203d2070 sformedPivot = p │ │ │ │ + 0x00d41210 69766f74 3b200a20 20202066 6c6f6174 ivot; . float │ │ │ │ + 0x00d41220 2077203d 20747261 6e73666f 726d6564 w = transformed │ │ │ │ + 0x00d41230 5069766f 742e773b 200a2020 20207472 Pivot.w; . tr │ │ │ │ + 0x00d41240 616e7366 6f726d65 64506976 6f742e78 ansformedPivot.x │ │ │ │ + 0x00d41250 7977203d 20287069 766f7454 72616e73 yw = (pivotTrans │ │ │ │ + 0x00d41260 666f726d 202a2076 65633428 7472616e form * vec4(tran │ │ │ │ + 0x00d41270 73666f72 6d656450 69766f74 2e78792c sformedPivot.xy, │ │ │ │ + 0x00d41280 20706976 6f745265 616c5a2c 20772929 pivotRealZ, w)) │ │ │ │ + 0x00d41290 2e787977 3b200a20 20202074 72616e73 .xyw; . trans │ │ │ │ + 0x00d412a0 666f726d 65645069 766f742e 7a202a3d formedPivot.z *= │ │ │ │ + 0x00d412b0 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ + 0x00d412c0 742e7720 2f20773b 200a2020 23696664 t.w / w; . #ifd │ │ │ │ + 0x00d412d0 65662056 554c4b41 4e200a20 20202074 ef VULKAN . t │ │ │ │ + 0x00d412e0 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ + 0x00d412f0 79203d20 2d747261 6e73666f 726d6564 y = -transformed │ │ │ │ + 0x00d41300 5069766f 742e793b 200a2020 20207472 Pivot.y; . tr │ │ │ │ + 0x00d41310 616e7366 6f726d65 64506976 6f742e7a ansformedPivot.z │ │ │ │ + 0x00d41320 203d2028 7472616e 73666f72 6d656450 = (transformedP │ │ │ │ + 0x00d41330 69766f74 2e7a2020 2b207472 616e7366 ivot.z + transf │ │ │ │ + 0x00d41340 6f726d65 64506976 6f742e77 29202f20 ormedPivot.w) / │ │ │ │ + 0x00d41350 322e303b 200a2020 23656e64 6966200a 2.0; . #endif . │ │ │ │ + 0x00d41360 20202020 72657475 726e2074 72616e73 return trans │ │ │ │ + 0x00d41370 666f726d 65645069 766f743b 200a2020 formedPivot; . │ │ │ │ + 0x00d41380 7d200a20 20766563 34206170 706c7942 } . vec4 applyB │ │ │ │ + 0x00d41390 696c6c62 6f617264 5069766f 74547261 illboardPivotTra │ │ │ │ + 0x00d413a0 6e73666f 726d2876 65633420 7069766f nsform(vec4 pivo │ │ │ │ + 0x00d413b0 742c206d 61743420 7069766f 74547261 t, mat4 pivotTra │ │ │ │ + 0x00d413c0 6e73666f 726d2c20 666c6f61 74207069 nsform, float pi │ │ │ │ + 0x00d413d0 766f7452 65616c5a 2c207665 6332206f votRealZ, vec2 o │ │ │ │ + 0x00d413e0 66667365 7429200a 20207b20 0a202020 ffset) . { . │ │ │ │ + 0x00d413f0 20666c6f 6174206c 6f676963 5a203d20 float logicZ = │ │ │ │ + 0x00d41400 7069766f 742e7a20 2f207069 766f742e pivot.z / pivot. │ │ │ │ + 0x00d41410 773b200a 20202020 76656334 20747261 w; . vec4 tra │ │ │ │ + 0x00d41420 6e73666f 726d6564 5069766f 74203d20 nsformedPivot = │ │ │ │ + 0x00d41430 7069766f 74547261 6e73666f 726d202a pivotTransform * │ │ │ │ + 0x00d41440 20766563 34287069 766f742e 78792c20 vec4(pivot.xy, │ │ │ │ + 0x00d41450 7069766f 74526561 6c5a2c20 7069766f pivotRealZ, pivo │ │ │ │ + 0x00d41460 742e7729 3b200a20 20202076 65633420 t.w); . vec4 │ │ │ │ + 0x00d41470 7363616c 65203d20 7069766f 74547261 scale = pivotTra │ │ │ │ + 0x00d41480 6e73666f 726d202a 20766563 3428312e nsform * vec4(1. │ │ │ │ + 0x00d41490 302c202d 312e302c 20302e30 2c20312e 0, -1.0, 0.0, 1. │ │ │ │ + 0x00d414a0 30293b20 0a202020 20766563 3420706f 0); . vec4 po │ │ │ │ + 0x00d414b0 73697469 6f6e203d 20766563 34287472 sition = vec4(tr │ │ │ │ + 0x00d414c0 616e7366 6f726d65 64506976 6f742e78 ansformedPivot.x │ │ │ │ + 0x00d414d0 79202f20 7472616e 73666f72 6d656450 y / transformedP │ │ │ │ + 0x00d414e0 69766f74 2e772c20 6c6f6769 635a2c20 ivot.w, logicZ, │ │ │ │ + 0x00d414f0 312e3029 202b2076 65633428 6f666673 1.0) + vec4(offs │ │ │ │ + 0x00d41500 6574202f 20736361 6c652e77 202a2073 et / scale.w * s │ │ │ │ + 0x00d41510 63616c65 2e782c20 302e302c 20302e30 cale.x, 0.0, 0.0 │ │ │ │ + 0x00d41520 293b200a 20202369 66646566 2056554c ); . #ifdef VUL │ │ │ │ + 0x00d41530 4b414e20 0a202020 20706f73 6974696f KAN . positio │ │ │ │ + 0x00d41540 6e2e7920 3d202d70 6f736974 696f6e2e n.y = -position. │ │ │ │ + 0x00d41550 793b200a 20202020 706f7369 74696f6e y; . position │ │ │ │ + 0x00d41560 2e7a203d 2028706f 73697469 6f6e2e7a .z = (position.z │ │ │ │ + 0x00d41570 20202b20 706f7369 74696f6e 2e772920 + position.w) │ │ │ │ + 0x00d41580 2f20322e 303b200a 20202365 6e646966 / 2.0; . #endif │ │ │ │ + 0x00d41590 200a2020 20207265 7475726e 20706f73 . return pos │ │ │ │ + 0x00d415a0 6974696f 6e3b200a 20207d20 0a202076 ition; . } . v │ │ │ │ + 0x00d415b0 65633220 63616c63 4c696e65 5472616e ec2 calcLineTran │ │ │ │ + 0x00d415c0 73666f72 6d656441 78697350 6f732876 sformedAxisPos(v │ │ │ │ + 0x00d415d0 65633220 6f726967 696e616c 41786973 ec2 originalAxis │ │ │ │ + 0x00d415e0 506f732c 20766563 32207368 69667465 Pos, vec2 shifte │ │ │ │ + 0x00d415f0 64506f73 2c206d61 7434206d 6f64656c dPos, mat4 model │ │ │ │ + 0x00d41600 56696577 2c20666c 6f617420 68616c66 View, float half │ │ │ │ + 0x00d41610 57696474 6829200a 20207b20 0a202020 Width) . { . │ │ │ │ + 0x00d41620 20766563 32207020 3d202876 65633428 vec2 p = (vec4( │ │ │ │ + 0x00d41630 73686966 74656450 6f732c20 302e302c shiftedPos, 0.0, │ │ │ │ + 0x00d41640 20312e30 29202a20 6d6f6465 6c566965 1.0) * modelVie │ │ │ │ + 0x00d41650 77292e78 793b200a 20202020 76656332 w).xy; . vec2 │ │ │ │ + 0x00d41660 2064203d 2070202d 206f7269 67696e61 d = p - origina │ │ │ │ + 0x00d41670 6c417869 73506f73 3b200a20 20202069 lAxisPos; . i │ │ │ │ + 0x00d41680 66202864 6f742864 2c206429 20213d20 f (dot(d, d) != │ │ │ │ + 0x00d41690 302e3029 200a2020 20202020 72657475 0.0) . retu │ │ │ │ + 0x00d416a0 726e206f 72696769 6e616c41 78697350 rn originalAxisP │ │ │ │ + 0x00d416b0 6f73202b 206e6f72 6d616c69 7a652864 os + normalize(d │ │ │ │ + 0x00d416c0 29202a20 68616c66 57696474 683b200a ) * halfWidth; . │ │ │ │ + 0x00d416d0 20202020 656c7365 200a2020 20202020 else . │ │ │ │ + 0x00d416e0 72657475 726e206f 72696769 6e616c41 return originalA │ │ │ │ + 0x00d416f0 78697350 6f733b20 0a20207d 200a2020 xisPos; . } . │ │ │ │ + 0x00d41700 766f6964 206d6169 6e282920 0a20207b void main() . { │ │ │ │ + 0x00d41710 200a2020 20207665 63322074 72616e73 . vec2 trans │ │ │ │ + 0x00d41720 666f726d 65644178 6973506f 73203d20 formedAxisPos = │ │ │ │ + 0x00d41730 28766563 3428615f 706f7369 74696f6e (vec4(a_position │ │ │ │ + 0x00d41740 2e78792c 20302e30 2c20312e 3029202a .xy, 0.0, 1.0) * │ │ │ │ + 0x00d41750 20755f6d 6f64656c 56696577 292e7879 u_modelView).xy │ │ │ │ + 0x00d41760 3b200a20 20202076 65633220 6c656e20 ; . vec2 len │ │ │ │ + 0x00d41770 3d207665 63322861 5f6c656e 6774682e = vec2(a_length. │ │ │ │ + 0x00d41780 782c2061 5f6c656e 6774682e 7a293b20 x, a_length.z); │ │ │ │ + 0x00d41790 0a202020 20696620 28646f74 28615f6e . if (dot(a_n │ │ │ │ + 0x00d417a0 6f726d61 6c2c2061 5f6e6f72 6d616c29 ormal, a_normal) │ │ │ │ + 0x00d417b0 20213d20 302e3029 200a2020 20207b20 != 0.0) . { │ │ │ │ + 0x00d417c0 0a202020 20202076 65633220 6e6f726d . vec2 norm │ │ │ │ + 0x00d417d0 203d2061 5f6e6f72 6d616c20 2a20755f = a_normal * u_ │ │ │ │ + 0x00d417e0 726f7574 65506172 616d732e 783b200a routeParams.x; . │ │ │ │ + 0x00d417f0 20202020 20207472 616e7366 6f726d65 transforme │ │ │ │ + 0x00d41800 64417869 73506f73 203d2063 616c634c dAxisPos = calcL │ │ │ │ + 0x00d41810 696e6554 72616e73 666f726d 65644178 ineTransformedAx │ │ │ │ + 0x00d41820 6973506f 73287472 616e7366 6f726d65 isPos(transforme │ │ │ │ + 0x00d41830 64417869 73506f73 2c20615f 706f7369 dAxisPos, a_posi │ │ │ │ + 0x00d41840 74696f6e 2e787920 2b206e6f 726d2c20 tion.xy + norm, │ │ │ │ + 0x00d41850 0a202020 20202020 20202020 20202020 . │ │ │ │ + 0x00d41860 20202020 20202020 20202020 20202020 │ │ │ │ + 0x00d41870 20202020 20202020 20202020 20202020 │ │ │ │ + 0x00d41880 20202020 20202075 5f6d6f64 656c5669 u_modelVi │ │ │ │ + 0x00d41890 65772c20 6c656e67 7468286e 6f726d29 ew, length(norm) │ │ │ │ + 0x00d418a0 293b200a 20202020 20206966 2028755f ); . if (u_ │ │ │ │ + 0x00d418b0 726f7574 65506172 616d732e 7920213d routeParams.y != │ │ │ │ + 0x00d418c0 20302e30 29200a20 20202020 2020206c 0.0) . l │ │ │ │ + 0x00d418d0 656e203d 20766563 3228615f 6c656e67 en = vec2(a_leng │ │ │ │ + 0x00d418e0 74682e78 202b2061 5f6c656e 6774682e th.x + a_length. │ │ │ │ + 0x00d418f0 79202a20 755f726f 75746550 6172616d y * u_routeParam │ │ │ │ + 0x00d41900 732e792c 20615f6c 656e6774 682e7a29 s.y, a_length.z) │ │ │ │ + 0x00d41910 3b200a20 2020207d 200a2020 2020765f ; . } . v_ │ │ │ │ + 0x00d41920 6c656e67 7468203d 20766563 33286c65 length = vec3(le │ │ │ │ + 0x00d41930 6e2c2075 5f726f75 74655061 72616d73 n, u_routeParams │ │ │ │ + 0x00d41940 2e7a293b 200a2020 2020765f 636f6c6f .z); . v_colo │ │ │ │ + 0x00d41950 72203d20 615f636f 6c6f723b 200a2020 r = a_color; . │ │ │ │ + 0x00d41960 20207665 63342070 6f73203d 20766563 vec4 pos = vec │ │ │ │ + 0x00d41970 34287472 616e7366 6f726d65 64417869 4(transformedAxi │ │ │ │ + 0x00d41980 73506f73 2c20615f 706f7369 74696f6e sPos, a_position │ │ │ │ + 0x00d41990 2e7a2c20 312e3029 202a2075 5f70726f .z, 1.0) * u_pro │ │ │ │ + 0x00d419a0 6a656374 696f6e3b 200a2020 2020676c jection; . gl │ │ │ │ + 0x00d419b0 5f506f73 6974696f 6e203d20 6170706c _Position = appl │ │ │ │ + 0x00d419c0 79506976 6f745472 616e7366 6f726d28 yPivotTransform( │ │ │ │ + 0x00d419d0 706f732c 20755f70 69766f74 5472616e pos, u_pivotTran │ │ │ │ + 0x00d419e0 73666f72 6d2c2030 2e30293b 200a2020 sform, 0.0); . │ │ │ │ + 0x00d419f0 7d200a00 00000000 00000000 00000000 } .............. │ │ │ │ + 0x00d41a00 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d41a10 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d41a20 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d41a30 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d41a40 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d41a50 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d41a60 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d41a70 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d41a80 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d41a90 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d41aa0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d41ab0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d41ac0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d41ad0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d41ae0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d41af0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d41b00 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d41b10 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d41b20 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d41b30 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d41b40 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d41b50 63322061 5f706f73 3b200a20 20696e20 c2 a_pos; . in │ │ │ │ + 0x00d41b60 76656332 20615f74 636f6f72 643b200a vec2 a_tcoord; . │ │ │ │ + 0x00d41b70 20206f75 74207665 63342076 5f636f6f out vec4 v_coo │ │ │ │ + 0x00d41b80 7264733b 200a2020 6f757420 76656334 rds; . out vec4 │ │ │ │ + 0x00d41b90 20765f6f 66667365 74303b20 0a20206f v_offset0; . o │ │ │ │ + 0x00d41ba0 75742076 65633420 765f6f66 66736574 ut vec4 v_offset │ │ │ │ + 0x00d41bb0 313b200a 20206f75 74207665 63342076 1; . out vec4 v │ │ │ │ + 0x00d41bc0 5f6f6666 73657432 3b200a20 20756e69 _offset2; . uni │ │ │ │ + 0x00d41bd0 666f726d 20766563 3420755f 6672616d form vec4 u_fram │ │ │ │ + 0x00d41be0 65627566 6665724d 65747269 63733b20 ebufferMetrics; │ │ │ │ + 0x00d41bf0 0a202023 64656669 6e652053 4d41415f . #define SMAA_ │ │ │ │ + 0x00d41c00 4d41585f 53454152 43485f53 54455053 MAX_SEARCH_STEPS │ │ │ │ + 0x00d41c10 20382e30 200a2020 636f6e73 74207665 8.0 . const ve │ │ │ │ + 0x00d41c20 6334206b 4d617853 65617263 68537465 c4 kMaxSearchSte │ │ │ │ + 0x00d41c30 7073203d 20766563 34282d32 2e30202a ps = vec4(-2.0 * │ │ │ │ + 0x00d41c40 20534d41 415f4d41 585f5345 41524348 SMAA_MAX_SEARCH │ │ │ │ + 0x00d41c50 5f535445 50532c20 322e3020 2a20534d _STEPS, 2.0 * SM │ │ │ │ + 0x00d41c60 41415f4d 41585f53 45415243 485f5354 AA_MAX_SEARCH_ST │ │ │ │ + 0x00d41c70 4550532c 200a2020 20202020 20202020 EPS, . │ │ │ │ + 0x00d41c80 20202020 20202020 20202020 20202020 │ │ │ │ + 0x00d41c90 20202020 20202020 20202d32 2e30202a -2.0 * │ │ │ │ + 0x00d41ca0 20534d41 415f4d41 585f5345 41524348 SMAA_MAX_SEARCH │ │ │ │ + 0x00d41cb0 5f535445 50532c20 322e3020 202a2053 _STEPS, 2.0 * S │ │ │ │ + 0x00d41cc0 4d41415f 4d41585f 53454152 43485f53 MAA_MAX_SEARCH_S │ │ │ │ + 0x00d41cd0 54455053 293b200a 2020636f 6e737420 TEPS); . const │ │ │ │ + 0x00d41ce0 666c6f61 74206b53 68617065 436f6f72 float kShapeCoor │ │ │ │ + 0x00d41cf0 64536361 6c617220 3d203130 30302e30 dScalar = 1000.0 │ │ │ │ + 0x00d41d00 3b200a20 20766563 34206170 706c7950 ; . vec4 applyP │ │ │ │ + 0x00d41d10 69766f74 5472616e 73666f72 6d287665 ivotTransform(ve │ │ │ │ + 0x00d41d20 63342070 69766f74 2c206d61 74342070 c4 pivot, mat4 p │ │ │ │ + 0x00d41d30 69766f74 5472616e 73666f72 6d2c2066 ivotTransform, f │ │ │ │ + 0x00d41d40 6c6f6174 20706976 6f745265 616c5a29 loat pivotRealZ) │ │ │ │ + 0x00d41d50 200a2020 7b200a20 20202076 65633420 . { . vec4 │ │ │ │ + 0x00d41d60 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ + 0x00d41d70 203d2070 69766f74 3b200a20 20202066 = pivot; . f │ │ │ │ + 0x00d41d80 6c6f6174 2077203d 20747261 6e73666f loat w = transfo │ │ │ │ + 0x00d41d90 726d6564 5069766f 742e773b 200a2020 rmedPivot.w; . │ │ │ │ + 0x00d41da0 20207472 616e7366 6f726d65 64506976 transformedPiv │ │ │ │ + 0x00d41db0 6f742e78 7977203d 20287069 766f7454 ot.xyw = (pivotT │ │ │ │ + 0x00d41dc0 72616e73 666f726d 202a2076 65633428 ransform * vec4( │ │ │ │ 0x00d41dd0 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ - 0x00d41de0 2e773b20 0a202020 20747261 6e73666f .w; . transfo │ │ │ │ - 0x00d41df0 726d6564 5069766f 742e7879 77203d20 rmedPivot.xyw = │ │ │ │ - 0x00d41e00 28706976 6f745472 616e7366 6f726d20 (pivotTransform │ │ │ │ - 0x00d41e10 2a207665 63342874 72616e73 666f726d * vec4(transform │ │ │ │ - 0x00d41e20 65645069 766f742e 78792c20 7069766f edPivot.xy, pivo │ │ │ │ - 0x00d41e30 74526561 6c5a2c20 7729292e 7879773b tRealZ, w)).xyw; │ │ │ │ - 0x00d41e40 200a2020 20207472 616e7366 6f726d65 . transforme │ │ │ │ - 0x00d41e50 64506976 6f742e7a 202a3d20 7472616e dPivot.z *= tran │ │ │ │ - 0x00d41e60 73666f72 6d656450 69766f74 2e77202f sformedPivot.w / │ │ │ │ - 0x00d41e70 20773b20 0a202023 69666465 66205655 w; . #ifdef VU │ │ │ │ - 0x00d41e80 4c4b414e 200a2020 20207472 616e7366 LKAN . transf │ │ │ │ - 0x00d41e90 6f726d65 64506976 6f742e79 203d202d ormedPivot.y = - │ │ │ │ - 0x00d41ea0 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ - 0x00d41eb0 2e793b20 0a202020 20747261 6e73666f .y; . transfo │ │ │ │ - 0x00d41ec0 726d6564 5069766f 742e7a20 3d202874 rmedPivot.z = (t │ │ │ │ - 0x00d41ed0 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ - 0x00d41ee0 7a20202b 20747261 6e73666f 726d6564 z + transformed │ │ │ │ - 0x00d41ef0 5069766f 742e7729 202f2032 2e303b20 Pivot.w) / 2.0; │ │ │ │ - 0x00d41f00 0a202023 656e6469 66200a20 20202072 . #endif . r │ │ │ │ - 0x00d41f10 65747572 6e207472 616e7366 6f726d65 eturn transforme │ │ │ │ - 0x00d41f20 64506976 6f743b20 0a20207d 200a2020 dPivot; . } . │ │ │ │ - 0x00d41f30 76656334 20617070 6c794269 6c6c626f vec4 applyBillbo │ │ │ │ - 0x00d41f40 61726450 69766f74 5472616e 73666f72 ardPivotTransfor │ │ │ │ - 0x00d41f50 6d287665 63342070 69766f74 2c206d61 m(vec4 pivot, ma │ │ │ │ - 0x00d41f60 74342070 69766f74 5472616e 73666f72 t4 pivotTransfor │ │ │ │ - 0x00d41f70 6d2c2066 6c6f6174 20706976 6f745265 m, float pivotRe │ │ │ │ - 0x00d41f80 616c5a2c 20766563 32206f66 66736574 alZ, vec2 offset │ │ │ │ - 0x00d41f90 29200a20 207b200a 20202020 666c6f61 ) . { . floa │ │ │ │ - 0x00d41fa0 74206c6f 6769635a 203d2070 69766f74 t logicZ = pivot │ │ │ │ - 0x00d41fb0 2e7a202f 20706976 6f742e77 3b200a20 .z / pivot.w; . │ │ │ │ - 0x00d41fc0 20202076 65633420 7472616e 73666f72 vec4 transfor │ │ │ │ - 0x00d41fd0 6d656450 69766f74 203d2070 69766f74 medPivot = pivot │ │ │ │ - 0x00d41fe0 5472616e 73666f72 6d202a20 76656334 Transform * vec4 │ │ │ │ - 0x00d41ff0 28706976 6f742e78 792c2070 69766f74 (pivot.xy, pivot │ │ │ │ - 0x00d42000 5265616c 5a2c2070 69766f74 2e77293b RealZ, pivot.w); │ │ │ │ - 0x00d42010 200a2020 20207665 63342073 63616c65 . vec4 scale │ │ │ │ - 0x00d42020 203d2070 69766f74 5472616e 73666f72 = pivotTransfor │ │ │ │ - 0x00d42030 6d202a20 76656334 28312e30 2c202d31 m * vec4(1.0, -1 │ │ │ │ - 0x00d42040 2e302c20 302e302c 20312e30 293b200a .0, 0.0, 1.0); . │ │ │ │ - 0x00d42050 20202020 76656334 20706f73 6974696f vec4 positio │ │ │ │ - 0x00d42060 6e203d20 76656334 28747261 6e73666f n = vec4(transfo │ │ │ │ - 0x00d42070 726d6564 5069766f 742e7879 202f2074 rmedPivot.xy / t │ │ │ │ - 0x00d42080 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ - 0x00d42090 772c206c 6f676963 5a2c2031 2e302920 w, logicZ, 1.0) │ │ │ │ - 0x00d420a0 2b207665 6334286f 66667365 74202f20 + vec4(offset / │ │ │ │ - 0x00d420b0 7363616c 652e7720 2a207363 616c652e scale.w * scale. │ │ │ │ - 0x00d420c0 782c2030 2e302c20 302e3029 3b200a20 x, 0.0, 0.0); . │ │ │ │ - 0x00d420d0 20236966 64656620 56554c4b 414e200a #ifdef VULKAN . │ │ │ │ - 0x00d420e0 20202020 706f7369 74696f6e 2e79203d position.y = │ │ │ │ - 0x00d420f0 202d706f 73697469 6f6e2e79 3b200a20 -position.y; . │ │ │ │ - 0x00d42100 20202070 6f736974 696f6e2e 7a203d20 position.z = │ │ │ │ - 0x00d42110 28706f73 6974696f 6e2e7a20 202b2070 (position.z + p │ │ │ │ - 0x00d42120 6f736974 696f6e2e 7729202f 20322e30 osition.w) / 2.0 │ │ │ │ - 0x00d42130 3b200a20 2023656e 64696620 0a202020 ; . #endif . │ │ │ │ - 0x00d42140 20726574 75726e20 706f7369 74696f6e return position │ │ │ │ - 0x00d42150 3b200a20 207d200a 20207665 63322063 ; . } . vec2 c │ │ │ │ - 0x00d42160 616c634c 696e6554 72616e73 666f726d alcLineTransform │ │ │ │ - 0x00d42170 65644178 6973506f 73287665 6332206f edAxisPos(vec2 o │ │ │ │ - 0x00d42180 72696769 6e616c41 78697350 6f732c20 riginalAxisPos, │ │ │ │ - 0x00d42190 76656332 20736869 66746564 506f732c vec2 shiftedPos, │ │ │ │ - 0x00d421a0 206d6174 34206d6f 64656c56 6965772c mat4 modelView, │ │ │ │ - 0x00d421b0 20666c6f 61742068 616c6657 69647468 float halfWidth │ │ │ │ - 0x00d421c0 29200a20 207b200a 20202020 76656332 ) . { . vec2 │ │ │ │ - 0x00d421d0 2070203d 20287665 63342873 68696674 p = (vec4(shift │ │ │ │ - 0x00d421e0 6564506f 732c2030 2e302c20 312e3029 edPos, 0.0, 1.0) │ │ │ │ - 0x00d421f0 202a206d 6f64656c 56696577 292e7879 * modelView).xy │ │ │ │ - 0x00d42200 3b200a20 20202076 65633220 64203d20 ; . vec2 d = │ │ │ │ - 0x00d42210 70202d20 6f726967 696e616c 41786973 p - originalAxis │ │ │ │ - 0x00d42220 506f733b 200a2020 20206966 2028646f Pos; . if (do │ │ │ │ - 0x00d42230 7428642c 20642920 213d2030 2e302920 t(d, d) != 0.0) │ │ │ │ - 0x00d42240 0a202020 20202072 65747572 6e206f72 . return or │ │ │ │ - 0x00d42250 6967696e 616c4178 6973506f 73202b20 iginalAxisPos + │ │ │ │ - 0x00d42260 6e6f726d 616c697a 65286429 202a2068 normalize(d) * h │ │ │ │ - 0x00d42270 616c6657 69647468 3b200a20 20202065 alfWidth; . e │ │ │ │ - 0x00d42280 6c736520 0a202020 20202072 65747572 lse . retur │ │ │ │ - 0x00d42290 6e206f72 6967696e 616c4178 6973506f n originalAxisPo │ │ │ │ - 0x00d422a0 733b200a 20207d20 0a202076 6f696420 s; . } . void │ │ │ │ - 0x00d422b0 6d61696e 2829200a 20207b20 0a202020 main() . { . │ │ │ │ - 0x00d422c0 20666c6f 61742073 696e5620 3d207369 float sinV = si │ │ │ │ - 0x00d422d0 6e28755f 617a696d 7574293b 200a2020 n(u_azimut); . │ │ │ │ - 0x00d422e0 2020666c 6f617420 636f7356 203d2063 float cosV = c │ │ │ │ - 0x00d422f0 6f732875 5f617a69 6d757429 3b200a20 os(u_azimut); . │ │ │ │ - 0x00d42300 2020206d 61743420 726f7461 74696f6e mat4 rotation │ │ │ │ - 0x00d42310 3b200a20 20202072 6f746174 696f6e5b ; . rotation[ │ │ │ │ - 0x00d42320 305d203d 20766563 3428636f 73562c20 0] = vec4(cosV, │ │ │ │ - 0x00d42330 73696e56 2c20302e 302c2030 2e30293b sinV, 0.0, 0.0); │ │ │ │ - 0x00d42340 200a2020 2020726f 74617469 6f6e5b31 . rotation[1 │ │ │ │ - 0x00d42350 5d203d20 76656334 282d7369 6e562c20 ] = vec4(-sinV, │ │ │ │ - 0x00d42360 636f7356 2c20302e 302c2030 2e30293b cosV, 0.0, 0.0); │ │ │ │ - 0x00d42370 200a2020 2020726f 74617469 6f6e5b32 . rotation[2 │ │ │ │ - 0x00d42380 5d203d20 76656334 28302e30 2c20302e ] = vec4(0.0, 0. │ │ │ │ - 0x00d42390 302c2031 2e302c20 302e3029 3b200a20 0, 1.0, 0.0); . │ │ │ │ - 0x00d423a0 20202072 6f746174 696f6e5b 335d203d rotation[3] = │ │ │ │ - 0x00d423b0 20766563 3428302e 302c2030 2e302c20 vec4(0.0, 0.0, │ │ │ │ - 0x00d423c0 302e302c 20312e30 293b200a 20202020 0.0, 1.0); . │ │ │ │ - 0x00d423d0 76656334 20706f73 203d2076 65633428 vec4 pos = vec4( │ │ │ │ - 0x00d423e0 755f706f 73697469 6f6e2e78 797a2c20 u_position.xyz, │ │ │ │ - 0x00d423f0 312e3029 202a2075 5f6d6f64 656c5669 1.0) * u_modelVi │ │ │ │ - 0x00d42400 65773b20 0a202020 20766563 34206e6f ew; . vec4 no │ │ │ │ - 0x00d42410 726d616c 203d2076 65633428 615f6e6f rmal = vec4(a_no │ │ │ │ - 0x00d42420 726d616c 2c20302c 2030293b 200a2020 rmal, 0, 0); . │ │ │ │ - 0x00d42430 20207665 63342073 68696674 6564506f vec4 shiftedPo │ │ │ │ - 0x00d42440 73203d20 6e6f726d 616c202a 20726f74 s = normal * rot │ │ │ │ - 0x00d42450 6174696f 6e202b20 706f733b 200a2020 ation + pos; . │ │ │ │ - 0x00d42460 2020676c 5f506f73 6974696f 6e203d20 gl_Position = │ │ │ │ - 0x00d42470 6170706c 79506976 6f745472 616e7366 applyPivotTransf │ │ │ │ - 0x00d42480 6f726d28 73686966 74656450 6f73202a orm(shiftedPos * │ │ │ │ - 0x00d42490 20755f70 726f6a65 6374696f 6e2c2075 u_projection, u │ │ │ │ - 0x00d424a0 5f706976 6f745472 616e7366 6f726d2c _pivotTransform, │ │ │ │ - 0x00d424b0 20302e30 293b200a 20202020 765f636f 0.0); . v_co │ │ │ │ - 0x00d424c0 6c6f7254 6578436f 6f726473 203d2061 lorTexCoords = a │ │ │ │ - 0x00d424d0 5f636f6c 6f725465 78436f6f 7264733b _colorTexCoords; │ │ │ │ - 0x00d424e0 200a2020 7d200a00 00000000 00000000 . } .......... │ │ │ │ - 0x00d424f0 00000000 00000000 00000000 00000000 ................ │ │ │ │ - 0x00d42500 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d42510 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d42520 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d42530 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d42540 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d42550 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d42560 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d42570 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d42580 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d42590 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d425a0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d425b0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d425c0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d425d0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d425e0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d425f0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d42600 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d42610 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d42620 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d42630 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d42640 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d42650 63342061 5f706f73 6974696f 6e3b200a c4 a_position; . │ │ │ │ - 0x00d42660 2020696e 20766563 3220615f 6e6f726d in vec2 a_norm │ │ │ │ - 0x00d42670 616c3b20 0a202069 6e207665 63322061 al; . in vec2 a │ │ │ │ - 0x00d42680 5f636f6c 6f725465 78436f6f 7264733b _colorTexCoords; │ │ │ │ - 0x00d42690 200a2020 6f757420 76656332 20765f63 . out vec2 v_c │ │ │ │ - 0x00d426a0 6f6c6f72 54657843 6f6f7264 733b200a olorTexCoords; . │ │ │ │ - 0x00d426b0 2020756e 69666f72 6d206d61 74342075 uniform mat4 u │ │ │ │ - 0x00d426c0 5f6d6f64 656c5669 65773b20 0a202075 _modelView; . u │ │ │ │ - 0x00d426d0 6e69666f 726d206d 61743420 755f7072 niform mat4 u_pr │ │ │ │ - 0x00d426e0 6f6a6563 74696f6e 3b200a20 20756e69 ojection; . uni │ │ │ │ - 0x00d426f0 666f726d 206d6174 3420755f 7069766f form mat4 u_pivo │ │ │ │ - 0x00d42700 74547261 6e73666f 726d3b20 0a202075 tTransform; . u │ │ │ │ - 0x00d42710 6e69666f 726d2076 65633220 755f636f niform vec2 u_co │ │ │ │ - 0x00d42720 6e747261 73744761 6d6d613b 200a2020 ntrastGamma; . │ │ │ │ - 0x00d42730 756e6966 6f726d20 666c6f61 7420755f uniform float u_ │ │ │ │ - 0x00d42740 6f706163 6974793b 200a2020 756e6966 opacity; . unif │ │ │ │ - 0x00d42750 6f726d20 666c6f61 7420755f 7a536361 orm float u_zSca │ │ │ │ - 0x00d42760 6c653b20 0a202075 6e69666f 726d2066 le; . uniform f │ │ │ │ - 0x00d42770 6c6f6174 20755f69 6e746572 706f6c61 loat u_interpola │ │ │ │ - 0x00d42780 74696f6e 3b200a20 20756e69 666f726d tion; . uniform │ │ │ │ - 0x00d42790 20666c6f 61742075 5f69734f 75746c69 float u_isOutli │ │ │ │ - 0x00d427a0 6e655061 73733b20 0a202063 6f6e7374 nePass; . const │ │ │ │ - 0x00d427b0 20666c6f 6174206b 53686170 65436f6f float kShapeCoo │ │ │ │ - 0x00d427c0 72645363 616c6172 203d2031 3030302e rdScalar = 1000. │ │ │ │ - 0x00d427d0 303b200a 20207665 63342061 70706c79 0; . vec4 apply │ │ │ │ - 0x00d427e0 5069766f 74547261 6e73666f 726d2876 PivotTransform(v │ │ │ │ - 0x00d427f0 65633420 7069766f 742c206d 61743420 ec4 pivot, mat4 │ │ │ │ - 0x00d42800 7069766f 74547261 6e73666f 726d2c20 pivotTransform, │ │ │ │ - 0x00d42810 666c6f61 74207069 766f7452 65616c5a float pivotRealZ │ │ │ │ - 0x00d42820 29200a20 207b200a 20202020 76656334 ) . { . vec4 │ │ │ │ - 0x00d42830 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ - 0x00d42840 74203d20 7069766f 743b200a 20202020 t = pivot; . │ │ │ │ - 0x00d42850 666c6f61 74207720 3d207472 616e7366 float w = transf │ │ │ │ - 0x00d42860 6f726d65 64506976 6f742e77 3b200a20 ormedPivot.w; . │ │ │ │ - 0x00d42870 20202074 72616e73 666f726d 65645069 transformedPi │ │ │ │ - 0x00d42880 766f742e 78797720 3d202870 69766f74 vot.xyw = (pivot │ │ │ │ - 0x00d42890 5472616e 73666f72 6d202a20 76656334 Transform * vec4 │ │ │ │ - 0x00d428a0 28747261 6e73666f 726d6564 5069766f (transformedPivo │ │ │ │ - 0x00d428b0 742e7879 2c207069 766f7452 65616c5a t.xy, pivotRealZ │ │ │ │ - 0x00d428c0 2c207729 292e7879 773b200a 20202020 , w)).xyw; . │ │ │ │ - 0x00d428d0 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ - 0x00d428e0 2e7a202a 3d207472 616e7366 6f726d65 .z *= transforme │ │ │ │ - 0x00d428f0 64506976 6f742e77 202f2077 3b200a20 dPivot.w / w; . │ │ │ │ - 0x00d42900 20236966 64656620 56554c4b 414e200a #ifdef VULKAN . │ │ │ │ - 0x00d42910 20202020 7472616e 73666f72 6d656450 transformedP │ │ │ │ - 0x00d42920 69766f74 2e79203d 202d7472 616e7366 ivot.y = -transf │ │ │ │ - 0x00d42930 6f726d65 64506976 6f742e79 3b200a20 ormedPivot.y; . │ │ │ │ - 0x00d42940 20202074 72616e73 666f726d 65645069 transformedPi │ │ │ │ - 0x00d42950 766f742e 7a203d20 28747261 6e73666f vot.z = (transfo │ │ │ │ - 0x00d42960 726d6564 5069766f 742e7a20 202b2074 rmedPivot.z + t │ │ │ │ - 0x00d42970 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ - 0x00d42980 7729202f 20322e30 3b200a20 2023656e w) / 2.0; . #en │ │ │ │ - 0x00d42990 64696620 0a202020 20726574 75726e20 dif . return │ │ │ │ - 0x00d429a0 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ - 0x00d429b0 3b200a20 207d200a 20207665 63342061 ; . } . vec4 a │ │ │ │ - 0x00d429c0 70706c79 42696c6c 626f6172 64506976 pplyBillboardPiv │ │ │ │ - 0x00d429d0 6f745472 616e7366 6f726d28 76656334 otTransform(vec4 │ │ │ │ - 0x00d429e0 20706976 6f742c20 6d617434 20706976 pivot, mat4 piv │ │ │ │ - 0x00d429f0 6f745472 616e7366 6f726d2c 20666c6f otTransform, flo │ │ │ │ - 0x00d42a00 61742070 69766f74 5265616c 5a2c2076 at pivotRealZ, v │ │ │ │ - 0x00d42a10 65633220 6f666673 65742920 0a20207b ec2 offset) . { │ │ │ │ - 0x00d42a20 200a2020 2020666c 6f617420 6c6f6769 . float logi │ │ │ │ - 0x00d42a30 635a203d 20706976 6f742e7a 202f2070 cZ = pivot.z / p │ │ │ │ - 0x00d42a40 69766f74 2e773b20 0a202020 20766563 ivot.w; . vec │ │ │ │ - 0x00d42a50 34207472 616e7366 6f726d65 64506976 4 transformedPiv │ │ │ │ - 0x00d42a60 6f74203d 20706976 6f745472 616e7366 ot = pivotTransf │ │ │ │ - 0x00d42a70 6f726d20 2a207665 63342870 69766f74 orm * vec4(pivot │ │ │ │ - 0x00d42a80 2e78792c 20706976 6f745265 616c5a2c .xy, pivotRealZ, │ │ │ │ - 0x00d42a90 20706976 6f742e77 293b200a 20202020 pivot.w); . │ │ │ │ - 0x00d42aa0 76656334 20736361 6c65203d 20706976 vec4 scale = piv │ │ │ │ - 0x00d42ab0 6f745472 616e7366 6f726d20 2a207665 otTransform * ve │ │ │ │ - 0x00d42ac0 63342831 2e302c20 2d312e30 2c20302e c4(1.0, -1.0, 0. │ │ │ │ - 0x00d42ad0 302c2031 2e30293b 200a2020 20207665 0, 1.0); . ve │ │ │ │ - 0x00d42ae0 63342070 6f736974 696f6e20 3d207665 c4 position = ve │ │ │ │ - 0x00d42af0 63342874 72616e73 666f726d 65645069 c4(transformedPi │ │ │ │ - 0x00d42b00 766f742e 7879202f 20747261 6e73666f vot.xy / transfo │ │ │ │ - 0x00d42b10 726d6564 5069766f 742e772c 206c6f67 rmedPivot.w, log │ │ │ │ - 0x00d42b20 69635a2c 20312e30 29202b20 76656334 icZ, 1.0) + vec4 │ │ │ │ - 0x00d42b30 286f6666 73657420 2f207363 616c652e (offset / scale. │ │ │ │ - 0x00d42b40 77202a20 7363616c 652e782c 20302e30 w * scale.x, 0.0 │ │ │ │ - 0x00d42b50 2c20302e 30293b20 0a202023 69666465 , 0.0); . #ifde │ │ │ │ - 0x00d42b60 66205655 4c4b414e 200a2020 2020706f f VULKAN . po │ │ │ │ - 0x00d42b70 73697469 6f6e2e79 203d202d 706f7369 sition.y = -posi │ │ │ │ - 0x00d42b80 74696f6e 2e793b20 0a202020 20706f73 tion.y; . pos │ │ │ │ - 0x00d42b90 6974696f 6e2e7a20 3d202870 6f736974 ition.z = (posit │ │ │ │ - 0x00d42ba0 696f6e2e 7a20202b 20706f73 6974696f ion.z + positio │ │ │ │ - 0x00d42bb0 6e2e7729 202f2032 2e303b20 0a202023 n.w) / 2.0; . # │ │ │ │ - 0x00d42bc0 656e6469 66200a20 20202072 65747572 endif . retur │ │ │ │ - 0x00d42bd0 6e20706f 73697469 6f6e3b20 0a20207d n position; . } │ │ │ │ - 0x00d42be0 200a2020 76656332 2063616c 634c696e . vec2 calcLin │ │ │ │ - 0x00d42bf0 65547261 6e73666f 726d6564 41786973 eTransformedAxis │ │ │ │ - 0x00d42c00 506f7328 76656332 206f7269 67696e61 Pos(vec2 origina │ │ │ │ - 0x00d42c10 6c417869 73506f73 2c207665 63322073 lAxisPos, vec2 s │ │ │ │ - 0x00d42c20 68696674 6564506f 732c206d 61743420 hiftedPos, mat4 │ │ │ │ - 0x00d42c30 6d6f6465 6c566965 772c2066 6c6f6174 modelView, float │ │ │ │ - 0x00d42c40 2068616c 66576964 74682920 0a20207b halfWidth) . { │ │ │ │ - 0x00d42c50 200a2020 20207665 63322070 203d2028 . vec2 p = ( │ │ │ │ - 0x00d42c60 76656334 28736869 66746564 506f732c vec4(shiftedPos, │ │ │ │ - 0x00d42c70 20302e30 2c20312e 3029202a 206d6f64 0.0, 1.0) * mod │ │ │ │ - 0x00d42c80 656c5669 6577292e 78793b20 0a202020 elView).xy; . │ │ │ │ - 0x00d42c90 20766563 32206420 3d207020 2d206f72 vec2 d = p - or │ │ │ │ - 0x00d42ca0 6967696e 616c4178 6973506f 733b200a iginalAxisPos; . │ │ │ │ - 0x00d42cb0 20202020 69662028 646f7428 642c2064 if (dot(d, d │ │ │ │ - 0x00d42cc0 2920213d 20302e30 29200a20 20202020 ) != 0.0) . │ │ │ │ - 0x00d42cd0 20726574 75726e20 6f726967 696e616c return original │ │ │ │ - 0x00d42ce0 41786973 506f7320 2b206e6f 726d616c AxisPos + normal │ │ │ │ - 0x00d42cf0 697a6528 6429202a 2068616c 66576964 ize(d) * halfWid │ │ │ │ - 0x00d42d00 74683b20 0a202020 20656c73 65200a20 th; . else . │ │ │ │ - 0x00d42d10 20202020 20726574 75726e20 6f726967 return orig │ │ │ │ - 0x00d42d20 696e616c 41786973 506f733b 200a2020 inalAxisPos; . │ │ │ │ - 0x00d42d30 7d200a20 20766f69 64206d61 696e2829 } . void main() │ │ │ │ - 0x00d42d40 200a2020 7b200a20 20202076 65633420 . { . vec4 │ │ │ │ - 0x00d42d50 706f7320 3d207665 63342861 5f706f73 pos = vec4(a_pos │ │ │ │ - 0x00d42d60 6974696f 6e2e7879 7a2c2031 29202a20 ition.xyz, 1) * │ │ │ │ - 0x00d42d70 755f6d6f 64656c56 6965773b 200a2020 u_modelView; . │ │ │ │ - 0x00d42d80 2020666c 6f617420 6e6f726d 616c4c65 float normalLe │ │ │ │ - 0x00d42d90 6e203d20 6c656e67 74682861 5f6e6f72 n = length(a_nor │ │ │ │ - 0x00d42da0 6d616c29 3b200a20 20202076 65633420 mal); . vec4 │ │ │ │ - 0x00d42db0 6e203d20 76656334 28615f70 6f736974 n = vec4(a_posit │ │ │ │ - 0x00d42dc0 696f6e2e 7879202b 20615f6e 6f726d61 ion.xy + a_norma │ │ │ │ - 0x00d42dd0 6c202a20 6b536861 7065436f 6f726453 l * kShapeCoordS │ │ │ │ - 0x00d42de0 63616c61 722c2030 2e302c20 302e3029 calar, 0.0, 0.0) │ │ │ │ - 0x00d42df0 202a2075 5f6d6f64 656c5669 65773b20 * u_modelView; │ │ │ │ - 0x00d42e00 0a202020 20766563 34206e6f 726d203d . vec4 norm = │ │ │ │ - 0x00d42e10 20766563 3428302e 302c2030 2e302c20 vec4(0.0, 0.0, │ │ │ │ - 0x00d42e20 302e302c 20302e30 293b200a 20202020 0.0, 0.0); . │ │ │ │ - 0x00d42e30 69662028 646f7428 6e2c206e 2920213d if (dot(n, n) != │ │ │ │ - 0x00d42e40 20302e30 29200a20 20202020 206e6f72 0.0) . nor │ │ │ │ - 0x00d42e50 6d203d20 6e6f726d 616c697a 65286e29 m = normalize(n) │ │ │ │ - 0x00d42e60 202a206e 6f726d61 6c4c656e 3b200a20 * normalLen; . │ │ │ │ - 0x00d42e70 20202076 65633420 73686966 74656450 vec4 shiftedP │ │ │ │ - 0x00d42e80 6f73203d 206e6f72 6d202b20 706f733b os = norm + pos; │ │ │ │ - 0x00d42e90 200a2020 2020676c 5f506f73 6974696f . gl_Positio │ │ │ │ - 0x00d42ea0 6e203d20 6170706c 79506976 6f745472 n = applyPivotTr │ │ │ │ - 0x00d42eb0 616e7366 6f726d28 73686966 74656450 ansform(shiftedP │ │ │ │ - 0x00d42ec0 6f73202a 20755f70 726f6a65 6374696f os * u_projectio │ │ │ │ - 0x00d42ed0 6e2c2075 5f706976 6f745472 616e7366 n, u_pivotTransf │ │ │ │ - 0x00d42ee0 6f726d2c 20302e30 293b200a 20202020 orm, 0.0); . │ │ │ │ - 0x00d42ef0 765f636f 6c6f7254 6578436f 6f726473 v_colorTexCoords │ │ │ │ - 0x00d42f00 203d2061 5f636f6c 6f725465 78436f6f = a_colorTexCoo │ │ │ │ - 0x00d42f10 7264733b 200a2020 7d200a00 00000000 rds; . } ...... │ │ │ │ - 0x00d42f20 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d42f30 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d42f40 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d42f50 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d42f60 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d42f70 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d42f80 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d42f90 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d42fa0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d42fb0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d42fc0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d42fd0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d42fe0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d42ff0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d43000 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d43010 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d43020 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d43030 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d43040 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d43050 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d43060 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d43070 63322061 5f6e6f72 6d616c3b 200a2020 c2 a_normal; . │ │ │ │ - 0x00d43080 696e2076 65633220 615f636f 6c6f7254 in vec2 a_colorT │ │ │ │ - 0x00d43090 6578436f 6f726473 3b200a20 206f7574 exCoords; . out │ │ │ │ - 0x00d430a0 20766563 3220765f 636f6c6f 72546578 vec2 v_colorTex │ │ │ │ - 0x00d430b0 436f6f72 64733b20 0a202075 6e69666f Coords; . unifo │ │ │ │ - 0x00d430c0 726d206d 61743420 755f6d6f 64656c56 rm mat4 u_modelV │ │ │ │ - 0x00d430d0 6965773b 200a2020 756e6966 6f726d20 iew; . uniform │ │ │ │ - 0x00d430e0 6d617434 20755f70 726f6a65 6374696f mat4 u_projectio │ │ │ │ - 0x00d430f0 6e3b200a 2020756e 69666f72 6d206d61 n; . uniform ma │ │ │ │ - 0x00d43100 74342075 5f706976 6f745472 616e7366 t4 u_pivotTransf │ │ │ │ - 0x00d43110 6f726d3b 200a2020 756e6966 6f726d20 orm; . uniform │ │ │ │ - 0x00d43120 76656334 20755f70 6f736974 696f6e3b vec4 u_position; │ │ │ │ - 0x00d43130 200a2020 756e6966 6f726d20 76656332 . uniform vec2 │ │ │ │ - 0x00d43140 20755f6c 696e6550 6172616d 733b200a u_lineParams; . │ │ │ │ - 0x00d43150 2020756e 69666f72 6d20666c 6f617420 uniform float │ │ │ │ - 0x00d43160 755f6163 63757261 63793b20 0a202075 u_accuracy; . u │ │ │ │ - 0x00d43170 6e69666f 726d2066 6c6f6174 20755f7a niform float u_z │ │ │ │ - 0x00d43180 5363616c 653b200a 2020756e 69666f72 Scale; . unifor │ │ │ │ - 0x00d43190 6d20666c 6f617420 755f6f70 61636974 m float u_opacit │ │ │ │ - 0x00d431a0 793b200a 2020756e 69666f72 6d20666c y; . uniform fl │ │ │ │ - 0x00d431b0 6f617420 755f617a 696d7574 3b200a20 oat u_azimut; . │ │ │ │ - 0x00d431c0 20636f6e 73742066 6c6f6174 206b5368 const float kSh │ │ │ │ - 0x00d431d0 61706543 6f6f7264 5363616c 6172203d apeCoordScalar = │ │ │ │ - 0x00d431e0 20313030 302e303b 200a2020 76656334 1000.0; . vec4 │ │ │ │ - 0x00d431f0 20617070 6c795069 766f7454 72616e73 applyPivotTrans │ │ │ │ - 0x00d43200 666f726d 28766563 34207069 766f742c form(vec4 pivot, │ │ │ │ - 0x00d43210 206d6174 34207069 766f7454 72616e73 mat4 pivotTrans │ │ │ │ - 0x00d43220 666f726d 2c20666c 6f617420 7069766f form, float pivo │ │ │ │ - 0x00d43230 74526561 6c5a2920 0a20207b 200a2020 tRealZ) . { . │ │ │ │ - 0x00d43240 20207665 63342074 72616e73 666f726d vec4 transform │ │ │ │ - 0x00d43250 65645069 766f7420 3d207069 766f743b edPivot = pivot; │ │ │ │ - 0x00d43260 200a2020 2020666c 6f617420 77203d20 . float w = │ │ │ │ - 0x00d43270 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ - 0x00d43280 2e773b20 0a202020 20747261 6e73666f .w; . transfo │ │ │ │ - 0x00d43290 726d6564 5069766f 742e7879 77203d20 rmedPivot.xyw = │ │ │ │ - 0x00d432a0 28706976 6f745472 616e7366 6f726d20 (pivotTransform │ │ │ │ - 0x00d432b0 2a207665 63342874 72616e73 666f726d * vec4(transform │ │ │ │ - 0x00d432c0 65645069 766f742e 78792c20 7069766f edPivot.xy, pivo │ │ │ │ - 0x00d432d0 74526561 6c5a2c20 7729292e 7879773b tRealZ, w)).xyw; │ │ │ │ - 0x00d432e0 200a2020 20207472 616e7366 6f726d65 . transforme │ │ │ │ - 0x00d432f0 64506976 6f742e7a 202a3d20 7472616e dPivot.z *= tran │ │ │ │ - 0x00d43300 73666f72 6d656450 69766f74 2e77202f sformedPivot.w / │ │ │ │ - 0x00d43310 20773b20 0a202023 69666465 66205655 w; . #ifdef VU │ │ │ │ - 0x00d43320 4c4b414e 200a2020 20207472 616e7366 LKAN . transf │ │ │ │ - 0x00d43330 6f726d65 64506976 6f742e79 203d202d ormedPivot.y = - │ │ │ │ - 0x00d43340 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ - 0x00d43350 2e793b20 0a202020 20747261 6e73666f .y; . transfo │ │ │ │ - 0x00d43360 726d6564 5069766f 742e7a20 3d202874 rmedPivot.z = (t │ │ │ │ - 0x00d43370 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ - 0x00d43380 7a20202b 20747261 6e73666f 726d6564 z + transformed │ │ │ │ - 0x00d43390 5069766f 742e7729 202f2032 2e303b20 Pivot.w) / 2.0; │ │ │ │ - 0x00d433a0 0a202023 656e6469 66200a20 20202072 . #endif . r │ │ │ │ - 0x00d433b0 65747572 6e207472 616e7366 6f726d65 eturn transforme │ │ │ │ - 0x00d433c0 64506976 6f743b20 0a20207d 200a2020 dPivot; . } . │ │ │ │ - 0x00d433d0 76656334 20617070 6c794269 6c6c626f vec4 applyBillbo │ │ │ │ - 0x00d433e0 61726450 69766f74 5472616e 73666f72 ardPivotTransfor │ │ │ │ - 0x00d433f0 6d287665 63342070 69766f74 2c206d61 m(vec4 pivot, ma │ │ │ │ - 0x00d43400 74342070 69766f74 5472616e 73666f72 t4 pivotTransfor │ │ │ │ - 0x00d43410 6d2c2066 6c6f6174 20706976 6f745265 m, float pivotRe │ │ │ │ - 0x00d43420 616c5a2c 20766563 32206f66 66736574 alZ, vec2 offset │ │ │ │ - 0x00d43430 29200a20 207b200a 20202020 666c6f61 ) . { . floa │ │ │ │ - 0x00d43440 74206c6f 6769635a 203d2070 69766f74 t logicZ = pivot │ │ │ │ - 0x00d43450 2e7a202f 20706976 6f742e77 3b200a20 .z / pivot.w; . │ │ │ │ - 0x00d43460 20202076 65633420 7472616e 73666f72 vec4 transfor │ │ │ │ - 0x00d43470 6d656450 69766f74 203d2070 69766f74 medPivot = pivot │ │ │ │ - 0x00d43480 5472616e 73666f72 6d202a20 76656334 Transform * vec4 │ │ │ │ - 0x00d43490 28706976 6f742e78 792c2070 69766f74 (pivot.xy, pivot │ │ │ │ - 0x00d434a0 5265616c 5a2c2070 69766f74 2e77293b RealZ, pivot.w); │ │ │ │ - 0x00d434b0 200a2020 20207665 63342073 63616c65 . vec4 scale │ │ │ │ - 0x00d434c0 203d2070 69766f74 5472616e 73666f72 = pivotTransfor │ │ │ │ - 0x00d434d0 6d202a20 76656334 28312e30 2c202d31 m * vec4(1.0, -1 │ │ │ │ - 0x00d434e0 2e302c20 302e302c 20312e30 293b200a .0, 0.0, 1.0); . │ │ │ │ - 0x00d434f0 20202020 76656334 20706f73 6974696f vec4 positio │ │ │ │ - 0x00d43500 6e203d20 76656334 28747261 6e73666f n = vec4(transfo │ │ │ │ - 0x00d43510 726d6564 5069766f 742e7879 202f2074 rmedPivot.xy / t │ │ │ │ - 0x00d43520 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ - 0x00d43530 772c206c 6f676963 5a2c2031 2e302920 w, logicZ, 1.0) │ │ │ │ - 0x00d43540 2b207665 6334286f 66667365 74202f20 + vec4(offset / │ │ │ │ - 0x00d43550 7363616c 652e7720 2a207363 616c652e scale.w * scale. │ │ │ │ - 0x00d43560 782c2030 2e302c20 302e3029 3b200a20 x, 0.0, 0.0); . │ │ │ │ - 0x00d43570 20236966 64656620 56554c4b 414e200a #ifdef VULKAN . │ │ │ │ - 0x00d43580 20202020 706f7369 74696f6e 2e79203d position.y = │ │ │ │ - 0x00d43590 202d706f 73697469 6f6e2e79 3b200a20 -position.y; . │ │ │ │ - 0x00d435a0 20202070 6f736974 696f6e2e 7a203d20 position.z = │ │ │ │ - 0x00d435b0 28706f73 6974696f 6e2e7a20 202b2070 (position.z + p │ │ │ │ - 0x00d435c0 6f736974 696f6e2e 7729202f 20322e30 osition.w) / 2.0 │ │ │ │ - 0x00d435d0 3b200a20 2023656e 64696620 0a202020 ; . #endif . │ │ │ │ - 0x00d435e0 20726574 75726e20 706f7369 74696f6e return position │ │ │ │ - 0x00d435f0 3b200a20 207d200a 20207665 63322063 ; . } . vec2 c │ │ │ │ - 0x00d43600 616c634c 696e6554 72616e73 666f726d alcLineTransform │ │ │ │ - 0x00d43610 65644178 6973506f 73287665 6332206f edAxisPos(vec2 o │ │ │ │ - 0x00d43620 72696769 6e616c41 78697350 6f732c20 riginalAxisPos, │ │ │ │ - 0x00d43630 76656332 20736869 66746564 506f732c vec2 shiftedPos, │ │ │ │ - 0x00d43640 206d6174 34206d6f 64656c56 6965772c mat4 modelView, │ │ │ │ - 0x00d43650 20666c6f 61742068 616c6657 69647468 float halfWidth │ │ │ │ - 0x00d43660 29200a20 207b200a 20202020 76656332 ) . { . vec2 │ │ │ │ - 0x00d43670 2070203d 20287665 63342873 68696674 p = (vec4(shift │ │ │ │ - 0x00d43680 6564506f 732c2030 2e302c20 312e3029 edPos, 0.0, 1.0) │ │ │ │ - 0x00d43690 202a206d 6f64656c 56696577 292e7879 * modelView).xy │ │ │ │ - 0x00d436a0 3b200a20 20202076 65633220 64203d20 ; . vec2 d = │ │ │ │ - 0x00d436b0 70202d20 6f726967 696e616c 41786973 p - originalAxis │ │ │ │ - 0x00d436c0 506f733b 200a2020 20206966 2028646f Pos; . if (do │ │ │ │ - 0x00d436d0 7428642c 20642920 213d2030 2e302920 t(d, d) != 0.0) │ │ │ │ - 0x00d436e0 0a202020 20202072 65747572 6e206f72 . return or │ │ │ │ - 0x00d436f0 6967696e 616c4178 6973506f 73202b20 iginalAxisPos + │ │ │ │ - 0x00d43700 6e6f726d 616c697a 65286429 202a2068 normalize(d) * h │ │ │ │ - 0x00d43710 616c6657 69647468 3b200a20 20202065 alfWidth; . e │ │ │ │ - 0x00d43720 6c736520 0a202020 20202072 65747572 lse . retur │ │ │ │ - 0x00d43730 6e206f72 6967696e 616c4178 6973506f n originalAxisPo │ │ │ │ - 0x00d43740 733b200a 20207d20 0a202076 6f696420 s; . } . void │ │ │ │ - 0x00d43750 6d61696e 2829200a 20207b20 0a202020 main() . { . │ │ │ │ - 0x00d43760 20766563 3420706f 73697469 6f6e203d vec4 position = │ │ │ │ - 0x00d43770 20766563 3428755f 706f7369 74696f6e vec4(u_position │ │ │ │ - 0x00d43780 2e78792c 20302e30 2c20312e 3029202a .xy, 0.0, 1.0) * │ │ │ │ - 0x00d43790 20755f6d 6f64656c 56696577 3b200a20 u_modelView; . │ │ │ │ - 0x00d437a0 20202076 65633420 6e6f726d 616c203d vec4 normal = │ │ │ │ - 0x00d437b0 20766563 3428615f 6e6f726d 616c202a vec4(a_normal * │ │ │ │ - 0x00d437c0 20755f61 63637572 6163792c 20302e30 u_accuracy, 0.0 │ │ │ │ - 0x00d437d0 2c20302e 30293b20 0a202020 20706f73 , 0.0); . pos │ │ │ │ - 0x00d437e0 6974696f 6e203d20 28706f73 6974696f ition = (positio │ │ │ │ - 0x00d437f0 6e202b20 6e6f726d 616c2920 2a20755f n + normal) * u_ │ │ │ │ - 0x00d43800 70726f6a 65637469 6f6e3b20 0a202020 projection; . │ │ │ │ - 0x00d43810 20676c5f 506f7369 74696f6e 203d2061 gl_Position = a │ │ │ │ - 0x00d43820 70706c79 5069766f 74547261 6e73666f pplyPivotTransfo │ │ │ │ - 0x00d43830 726d2870 6f736974 696f6e2c 20755f70 rm(position, u_p │ │ │ │ - 0x00d43840 69766f74 5472616e 73666f72 6d2c2075 ivotTransform, u │ │ │ │ - 0x00d43850 5f706f73 6974696f 6e2e7a20 2a20755f _position.z * u_ │ │ │ │ - 0x00d43860 7a536361 6c65293b 200a2020 2020765f zScale); . v_ │ │ │ │ - 0x00d43870 636f6c6f 72546578 436f6f72 6473203d colorTexCoords = │ │ │ │ - 0x00d43880 20615f63 6f6c6f72 54657843 6f6f7264 a_colorTexCoord │ │ │ │ - 0x00d43890 733b200a 20207d20 0a000000 00000000 s; . } ........ │ │ │ │ - 0x00d438a0 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d438b0 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d438c0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d438d0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d438e0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d438f0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d43900 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d43910 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d43920 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d43930 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d43940 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d43950 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d43960 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d43970 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d43980 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d43990 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d439a0 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d439b0 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d439c0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d439d0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d439e0 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d439f0 63332076 5f6c656e 6774683b 200a2020 c3 v_length; . │ │ │ │ - 0x00d43a00 696e2076 65633420 765f636f 6c6f723b in vec4 v_color; │ │ │ │ - 0x00d43a10 200a2020 6f757420 76656334 20765f46 . out vec4 v_F │ │ │ │ - 0x00d43a20 72616743 6f6c6f72 3b200a20 20756e69 ragColor; . uni │ │ │ │ - 0x00d43a30 666f726d 206d6174 3420755f 6d6f6465 form mat4 u_mode │ │ │ │ - 0x00d43a40 6c566965 773b200a 2020756e 69666f72 lView; . unifor │ │ │ │ - 0x00d43a50 6d206d61 74342075 5f70726f 6a656374 m mat4 u_project │ │ │ │ - 0x00d43a60 696f6e3b 200a2020 756e6966 6f726d20 ion; . uniform │ │ │ │ - 0x00d43a70 6d617434 20755f70 69766f74 5472616e mat4 u_pivotTran │ │ │ │ - 0x00d43a80 73666f72 6d3b200a 2020756e 69666f72 sform; . unifor │ │ │ │ - 0x00d43a90 6d207665 63342075 5f726f75 74655061 m vec4 u_routePa │ │ │ │ - 0x00d43aa0 72616d73 3b200a20 20756e69 666f726d rams; . uniform │ │ │ │ - 0x00d43ab0 20766563 3420755f 636f6c6f 723b200a vec4 u_color; . │ │ │ │ - 0x00d43ac0 2020756e 69666f72 6d207665 63342075 uniform vec4 u │ │ │ │ - 0x00d43ad0 5f6d6173 6b436f6c 6f723b20 0a202075 _maskColor; . u │ │ │ │ - 0x00d43ae0 6e69666f 726d2076 65633420 755f6f75 niform vec4 u_ou │ │ │ │ - 0x00d43af0 746c696e 65436f6c 6f723b20 0a202075 tlineColor; . u │ │ │ │ - 0x00d43b00 6e69666f 726d2076 65633420 755f6661 niform vec4 u_fa │ │ │ │ - 0x00d43b10 6b65436f 6c6f723b 200a2020 756e6966 keColor; . unif │ │ │ │ - 0x00d43b20 6f726d20 76656334 20755f66 616b654f orm vec4 u_fakeO │ │ │ │ - 0x00d43b30 75746c69 6e65436f 6c6f723b 200a2020 utlineColor; . │ │ │ │ - 0x00d43b40 756e6966 6f726d20 76656332 20755f66 uniform vec2 u_f │ │ │ │ - 0x00d43b50 616b6542 6f726465 72733b20 0a202075 akeBorders; . u │ │ │ │ - 0x00d43b60 6e69666f 726d2076 65633220 755f7061 niform vec2 u_pa │ │ │ │ - 0x00d43b70 74746572 6e3b200a 2020756e 69666f72 ttern; . unifor │ │ │ │ - 0x00d43b80 6d207665 63322075 5f616e67 6c65436f m vec2 u_angleCo │ │ │ │ - 0x00d43b90 7353696e 3b200a20 20756e69 666f726d sSin; . uniform │ │ │ │ - 0x00d43ba0 20666c6f 61742075 5f617272 6f774861 float u_arrowHa │ │ │ │ - 0x00d43bb0 6c665769 6474683b 200a2020 756e6966 lfWidth; . unif │ │ │ │ - 0x00d43bc0 6f726d20 666c6f61 7420755f 6f706163 orm float u_opac │ │ │ │ - 0x00d43bd0 6974793b 200a2020 636f6e73 7420666c ity; . const fl │ │ │ │ - 0x00d43be0 6f617420 6b416e74 69616c69 6173696e oat kAntialiasin │ │ │ │ - 0x00d43bf0 67546872 6573686f 6c64203d 20302e39 gThreshold = 0.9 │ │ │ │ - 0x00d43c00 323b200a 2020636f 6e737420 666c6f61 2; . const floa │ │ │ │ - 0x00d43c10 74206b4f 75746c69 6e655468 72657368 t kOutlineThresh │ │ │ │ - 0x00d43c20 6f6c6431 203d2030 2e38313b 200a2020 old1 = 0.81; . │ │ │ │ - 0x00d43c30 636f6e73 7420666c 6f617420 6b4f7574 const float kOut │ │ │ │ - 0x00d43c40 6c696e65 54687265 73686f6c 6432203d lineThreshold2 = │ │ │ │ - 0x00d43c50 20302e37 313b200a 2020636f 6e737420 0.71; . const │ │ │ │ - 0x00d43c60 666c6f61 74206b53 68617065 436f6f72 float kShapeCoor │ │ │ │ - 0x00d43c70 64536361 6c617220 3d203130 30302e30 dScalar = 1000.0 │ │ │ │ - 0x00d43c80 3b200a20 20766f69 64206d61 696e2829 ; . void main() │ │ │ │ - 0x00d43c90 200a2020 7b200a20 20202069 66202876 . { . if (v │ │ │ │ - 0x00d43ca0 5f6c656e 6774682e 78203c20 765f6c65 _length.x < v_le │ │ │ │ - 0x00d43cb0 6e677468 2e7a2920 0a202020 20202064 ngth.z) . d │ │ │ │ - 0x00d43cc0 69736361 72643b20 0a202020 20766563 iscard; . vec │ │ │ │ - 0x00d43cd0 3220636f 65667320 3d207374 65702876 2 coefs = step(v │ │ │ │ - 0x00d43ce0 5f6c656e 6774682e 78782c20 755f6661 _length.xx, u_fa │ │ │ │ - 0x00d43cf0 6b65426f 72646572 73293b20 0a202020 keBorders); . │ │ │ │ - 0x00d43d00 20636f65 66732e79 203d2031 2e30202d coefs.y = 1.0 - │ │ │ │ - 0x00d43d10 20636f65 66732e79 3b200a20 20202076 coefs.y; . v │ │ │ │ - 0x00d43d20 65633420 6d61696e 436f6c6f 72203d20 ec4 mainColor = │ │ │ │ - 0x00d43d30 6d697828 755f636f 6c6f722c 20755f66 mix(u_color, u_f │ │ │ │ - 0x00d43d40 616b6543 6f6c6f72 2c20636f 6566732e akeColor, coefs. │ │ │ │ - 0x00d43d50 78293b20 0a202020 206d6169 6e436f6c x); . mainCol │ │ │ │ - 0x00d43d60 6f72203d 206d6978 286d6169 6e436f6c or = mix(mainCol │ │ │ │ - 0x00d43d70 6f722c20 755f6661 6b65436f 6c6f722c or, u_fakeColor, │ │ │ │ - 0x00d43d80 20636f65 66732e79 293b200a 20202020 coefs.y); . │ │ │ │ - 0x00d43d90 76656334 206d6169 6e4f7574 6c696e65 vec4 mainOutline │ │ │ │ - 0x00d43da0 436f6c6f 72203d20 6d697828 755f6f75 Color = mix(u_ou │ │ │ │ - 0x00d43db0 746c696e 65436f6c 6f722c20 755f6661 tlineColor, u_fa │ │ │ │ - 0x00d43dc0 6b654f75 746c696e 65436f6c 6f722c20 keOutlineColor, │ │ │ │ - 0x00d43dd0 636f6566 732e7829 3b200a20 2020206d coefs.x); . m │ │ │ │ - 0x00d43de0 61696e4f 75746c69 6e65436f 6c6f7220 ainOutlineColor │ │ │ │ - 0x00d43df0 3d206d69 78286d61 696e4f75 746c696e = mix(mainOutlin │ │ │ │ - 0x00d43e00 65436f6c 6f722c20 755f6661 6b654f75 eColor, u_fakeOu │ │ │ │ - 0x00d43e10 746c696e 65436f6c 6f722c20 636f6566 tlineColor, coef │ │ │ │ - 0x00d43e20 732e7929 3b200a20 20202076 65633420 s.y); . vec4 │ │ │ │ - 0x00d43e30 636f6c6f 72203d20 6d697828 6d697828 color = mix(mix( │ │ │ │ - 0x00d43e40 6d61696e 436f6c6f 722c2076 65633428 mainColor, vec4( │ │ │ │ - 0x00d43e50 765f636f 6c6f722e 7267622c 20312e30 v_color.rgb, 1.0 │ │ │ │ - 0x00d43e60 292c2076 5f636f6c 6f722e61 292c206d ), v_color.a), m │ │ │ │ - 0x00d43e70 61696e43 6f6c6f72 2c207374 65702875 ainColor, step(u │ │ │ │ - 0x00d43e80 5f726f75 74655061 72616d73 2e772c20 _routeParams.w, │ │ │ │ - 0x00d43e90 302e3029 293b200a 20202020 636f6c6f 0.0)); . colo │ │ │ │ - 0x00d43ea0 72203d20 6d697828 636f6c6f 722c206d r = mix(color, m │ │ │ │ - 0x00d43eb0 61696e4f 75746c69 6e65436f 6c6f722c ainOutlineColor, │ │ │ │ - 0x00d43ec0 20737465 70286b4f 75746c69 6e655468 step(kOutlineTh │ │ │ │ - 0x00d43ed0 72657368 6f6c6431 2c206162 7328765f reshold1, abs(v_ │ │ │ │ - 0x00d43ee0 6c656e67 74682e79 2929293b 200a2020 length.y))); . │ │ │ │ - 0x00d43ef0 2020636f 6c6f7220 3d206d69 7828636f color = mix(co │ │ │ │ - 0x00d43f00 6c6f722c 206d6169 6e4f7574 6c696e65 lor, mainOutline │ │ │ │ - 0x00d43f10 436f6c6f 722c2073 6d6f6f74 68737465 Color, smoothste │ │ │ │ - 0x00d43f20 70286b4f 75746c69 6e655468 72657368 p(kOutlineThresh │ │ │ │ - 0x00d43f30 6f6c6432 2c206b4f 75746c69 6e655468 old2, kOutlineTh │ │ │ │ - 0x00d43f40 72657368 6f6c6431 2c206162 7328765f reshold1, abs(v_ │ │ │ │ - 0x00d43f50 6c656e67 74682e79 2929293b 200a2020 length.y))); . │ │ │ │ - 0x00d43f60 2020636f 6c6f722e 61202a3d 2028312e color.a *= (1. │ │ │ │ - 0x00d43f70 30202d20 736d6f6f 74687374 6570286b 0 - smoothstep(k │ │ │ │ - 0x00d43f80 416e7469 616c6961 73696e67 54687265 AntialiasingThre │ │ │ │ - 0x00d43f90 73686f6c 642c2031 2e302c20 61627328 shold, 1.0, abs( │ │ │ │ - 0x00d43fa0 765f6c65 6e677468 2e792929 293b200a v_length.y))); . │ │ │ │ - 0x00d43fb0 20202020 636f6c6f 72203d20 76656334 color = vec4 │ │ │ │ - 0x00d43fc0 286d6978 28636f6c 6f722e72 67622c20 (mix(color.rgb, │ │ │ │ - 0x00d43fd0 755f6d61 736b436f 6c6f722e 7267622c u_maskColor.rgb, │ │ │ │ - 0x00d43fe0 20755f6d 61736b43 6f6c6f72 2e61292c u_maskColor.a), │ │ │ │ - 0x00d43ff0 20636f6c 6f722e61 293b200a 20202020 color.a); . │ │ │ │ - 0x00d44000 765f4672 6167436f 6c6f7220 3d20636f v_FragColor = co │ │ │ │ - 0x00d44010 6c6f723b 200a2020 7d200a00 00000000 lor; . } ...... │ │ │ │ - 0x00d44020 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d44030 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d44040 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d44050 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d44060 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d44070 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d44080 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d44090 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d440a0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d440b0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d440c0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d440d0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d440e0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d440f0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d44100 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d44110 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d44120 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d44130 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d44140 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d44150 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d44160 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d44170 63332061 5f706f73 6974696f 6e3b200a c3 a_position; . │ │ │ │ - 0x00d44180 2020696e 20766563 3220615f 6e6f726d in vec2 a_norm │ │ │ │ - 0x00d44190 616c3b20 0a202069 6e207665 63332061 al; . in vec3 a │ │ │ │ - 0x00d441a0 5f6c656e 6774683b 200a2020 696e2076 _length; . in v │ │ │ │ - 0x00d441b0 65633420 615f636f 6c6f723b 200a2020 ec4 a_color; . │ │ │ │ - 0x00d441c0 6f757420 76656333 20765f6c 656e6774 out vec3 v_lengt │ │ │ │ - 0x00d441d0 683b200a 20206f75 74207665 63342076 h; . out vec4 v │ │ │ │ - 0x00d441e0 5f636f6c 6f723b20 0a202075 6e69666f _color; . unifo │ │ │ │ - 0x00d441f0 726d206d 61743420 755f6d6f 64656c56 rm mat4 u_modelV │ │ │ │ - 0x00d44200 6965773b 200a2020 756e6966 6f726d20 iew; . uniform │ │ │ │ - 0x00d44210 6d617434 20755f70 726f6a65 6374696f mat4 u_projectio │ │ │ │ - 0x00d44220 6e3b200a 2020756e 69666f72 6d206d61 n; . uniform ma │ │ │ │ - 0x00d44230 74342075 5f706976 6f745472 616e7366 t4 u_pivotTransf │ │ │ │ - 0x00d44240 6f726d3b 200a2020 756e6966 6f726d20 orm; . uniform │ │ │ │ - 0x00d44250 76656334 20755f72 6f757465 50617261 vec4 u_routePara │ │ │ │ - 0x00d44260 6d733b20 0a202075 6e69666f 726d2076 ms; . uniform v │ │ │ │ - 0x00d44270 65633420 755f636f 6c6f723b 200a2020 ec4 u_color; . │ │ │ │ - 0x00d44280 756e6966 6f726d20 76656334 20755f6d uniform vec4 u_m │ │ │ │ - 0x00d44290 61736b43 6f6c6f72 3b200a20 20756e69 askColor; . uni │ │ │ │ - 0x00d442a0 666f726d 20766563 3420755f 6f75746c form vec4 u_outl │ │ │ │ - 0x00d442b0 696e6543 6f6c6f72 3b200a20 20756e69 ineColor; . uni │ │ │ │ - 0x00d442c0 666f726d 20766563 3420755f 66616b65 form vec4 u_fake │ │ │ │ - 0x00d442d0 436f6c6f 723b200a 2020756e 69666f72 Color; . unifor │ │ │ │ - 0x00d442e0 6d207665 63342075 5f66616b 654f7574 m vec4 u_fakeOut │ │ │ │ - 0x00d442f0 6c696e65 436f6c6f 723b200a 2020756e lineColor; . un │ │ │ │ - 0x00d44300 69666f72 6d207665 63322075 5f66616b iform vec2 u_fak │ │ │ │ - 0x00d44310 65426f72 64657273 3b200a20 20756e69 eBorders; . uni │ │ │ │ - 0x00d44320 666f726d 20766563 3220755f 70617474 form vec2 u_patt │ │ │ │ - 0x00d44330 65726e3b 200a2020 756e6966 6f726d20 ern; . uniform │ │ │ │ - 0x00d44340 76656332 20755f61 6e676c65 436f7353 vec2 u_angleCosS │ │ │ │ - 0x00d44350 696e3b20 0a202075 6e69666f 726d2066 in; . uniform f │ │ │ │ - 0x00d44360 6c6f6174 20755f61 72726f77 48616c66 loat u_arrowHalf │ │ │ │ - 0x00d44370 57696474 683b200a 2020756e 69666f72 Width; . unifor │ │ │ │ - 0x00d44380 6d20666c 6f617420 755f6f70 61636974 m float u_opacit │ │ │ │ - 0x00d44390 793b200a 2020636f 6e737420 666c6f61 y; . const floa │ │ │ │ - 0x00d443a0 74206b53 68617065 436f6f72 64536361 t kShapeCoordSca │ │ │ │ - 0x00d443b0 6c617220 3d203130 30302e30 3b200a20 lar = 1000.0; . │ │ │ │ - 0x00d443c0 20766563 34206170 706c7950 69766f74 vec4 applyPivot │ │ │ │ - 0x00d443d0 5472616e 73666f72 6d287665 63342070 Transform(vec4 p │ │ │ │ - 0x00d443e0 69766f74 2c206d61 74342070 69766f74 ivot, mat4 pivot │ │ │ │ - 0x00d443f0 5472616e 73666f72 6d2c2066 6c6f6174 Transform, float │ │ │ │ - 0x00d44400 20706976 6f745265 616c5a29 200a2020 pivotRealZ) . │ │ │ │ - 0x00d44410 7b200a20 20202076 65633420 7472616e { . vec4 tran │ │ │ │ - 0x00d44420 73666f72 6d656450 69766f74 203d2070 sformedPivot = p │ │ │ │ - 0x00d44430 69766f74 3b200a20 20202066 6c6f6174 ivot; . float │ │ │ │ - 0x00d44440 2077203d 20747261 6e73666f 726d6564 w = transformed │ │ │ │ - 0x00d44450 5069766f 742e773b 200a2020 20207472 Pivot.w; . tr │ │ │ │ - 0x00d44460 616e7366 6f726d65 64506976 6f742e78 ansformedPivot.x │ │ │ │ - 0x00d44470 7977203d 20287069 766f7454 72616e73 yw = (pivotTrans │ │ │ │ - 0x00d44480 666f726d 202a2076 65633428 7472616e form * vec4(tran │ │ │ │ - 0x00d44490 73666f72 6d656450 69766f74 2e78792c sformedPivot.xy, │ │ │ │ - 0x00d444a0 20706976 6f745265 616c5a2c 20772929 pivotRealZ, w)) │ │ │ │ - 0x00d444b0 2e787977 3b200a20 20202074 72616e73 .xyw; . trans │ │ │ │ - 0x00d444c0 666f726d 65645069 766f742e 7a202a3d formedPivot.z *= │ │ │ │ - 0x00d444d0 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ - 0x00d444e0 742e7720 2f20773b 200a2020 23696664 t.w / w; . #ifd │ │ │ │ - 0x00d444f0 65662056 554c4b41 4e200a20 20202074 ef VULKAN . t │ │ │ │ - 0x00d44500 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ - 0x00d44510 79203d20 2d747261 6e73666f 726d6564 y = -transformed │ │ │ │ - 0x00d44520 5069766f 742e793b 200a2020 20207472 Pivot.y; . tr │ │ │ │ - 0x00d44530 616e7366 6f726d65 64506976 6f742e7a ansformedPivot.z │ │ │ │ - 0x00d44540 203d2028 7472616e 73666f72 6d656450 = (transformedP │ │ │ │ - 0x00d44550 69766f74 2e7a2020 2b207472 616e7366 ivot.z + transf │ │ │ │ - 0x00d44560 6f726d65 64506976 6f742e77 29202f20 ormedPivot.w) / │ │ │ │ - 0x00d44570 322e303b 200a2020 23656e64 6966200a 2.0; . #endif . │ │ │ │ - 0x00d44580 20202020 72657475 726e2074 72616e73 return trans │ │ │ │ - 0x00d44590 666f726d 65645069 766f743b 200a2020 formedPivot; . │ │ │ │ - 0x00d445a0 7d200a20 20766563 34206170 706c7942 } . vec4 applyB │ │ │ │ - 0x00d445b0 696c6c62 6f617264 5069766f 74547261 illboardPivotTra │ │ │ │ - 0x00d445c0 6e73666f 726d2876 65633420 7069766f nsform(vec4 pivo │ │ │ │ - 0x00d445d0 742c206d 61743420 7069766f 74547261 t, mat4 pivotTra │ │ │ │ - 0x00d445e0 6e73666f 726d2c20 666c6f61 74207069 nsform, float pi │ │ │ │ - 0x00d445f0 766f7452 65616c5a 2c207665 6332206f votRealZ, vec2 o │ │ │ │ - 0x00d44600 66667365 7429200a 20207b20 0a202020 ffset) . { . │ │ │ │ - 0x00d44610 20666c6f 6174206c 6f676963 5a203d20 float logicZ = │ │ │ │ - 0x00d44620 7069766f 742e7a20 2f207069 766f742e pivot.z / pivot. │ │ │ │ - 0x00d44630 773b200a 20202020 76656334 20747261 w; . vec4 tra │ │ │ │ - 0x00d44640 6e73666f 726d6564 5069766f 74203d20 nsformedPivot = │ │ │ │ - 0x00d44650 7069766f 74547261 6e73666f 726d202a pivotTransform * │ │ │ │ - 0x00d44660 20766563 34287069 766f742e 78792c20 vec4(pivot.xy, │ │ │ │ - 0x00d44670 7069766f 74526561 6c5a2c20 7069766f pivotRealZ, pivo │ │ │ │ - 0x00d44680 742e7729 3b200a20 20202076 65633420 t.w); . vec4 │ │ │ │ - 0x00d44690 7363616c 65203d20 7069766f 74547261 scale = pivotTra │ │ │ │ - 0x00d446a0 6e73666f 726d202a 20766563 3428312e nsform * vec4(1. │ │ │ │ - 0x00d446b0 302c202d 312e302c 20302e30 2c20312e 0, -1.0, 0.0, 1. │ │ │ │ - 0x00d446c0 30293b20 0a202020 20766563 3420706f 0); . vec4 po │ │ │ │ - 0x00d446d0 73697469 6f6e203d 20766563 34287472 sition = vec4(tr │ │ │ │ - 0x00d446e0 616e7366 6f726d65 64506976 6f742e78 ansformedPivot.x │ │ │ │ - 0x00d446f0 79202f20 7472616e 73666f72 6d656450 y / transformedP │ │ │ │ - 0x00d44700 69766f74 2e772c20 6c6f6769 635a2c20 ivot.w, logicZ, │ │ │ │ - 0x00d44710 312e3029 202b2076 65633428 6f666673 1.0) + vec4(offs │ │ │ │ - 0x00d44720 6574202f 20736361 6c652e77 202a2073 et / scale.w * s │ │ │ │ - 0x00d44730 63616c65 2e782c20 302e302c 20302e30 cale.x, 0.0, 0.0 │ │ │ │ - 0x00d44740 293b200a 20202369 66646566 2056554c ); . #ifdef VUL │ │ │ │ - 0x00d44750 4b414e20 0a202020 20706f73 6974696f KAN . positio │ │ │ │ - 0x00d44760 6e2e7920 3d202d70 6f736974 696f6e2e n.y = -position. │ │ │ │ - 0x00d44770 793b200a 20202020 706f7369 74696f6e y; . position │ │ │ │ - 0x00d44780 2e7a203d 2028706f 73697469 6f6e2e7a .z = (position.z │ │ │ │ - 0x00d44790 20202b20 706f7369 74696f6e 2e772920 + position.w) │ │ │ │ - 0x00d447a0 2f20322e 303b200a 20202365 6e646966 / 2.0; . #endif │ │ │ │ - 0x00d447b0 200a2020 20207265 7475726e 20706f73 . return pos │ │ │ │ - 0x00d447c0 6974696f 6e3b200a 20207d20 0a202076 ition; . } . v │ │ │ │ - 0x00d447d0 65633220 63616c63 4c696e65 5472616e ec2 calcLineTran │ │ │ │ - 0x00d447e0 73666f72 6d656441 78697350 6f732876 sformedAxisPos(v │ │ │ │ - 0x00d447f0 65633220 6f726967 696e616c 41786973 ec2 originalAxis │ │ │ │ - 0x00d44800 506f732c 20766563 32207368 69667465 Pos, vec2 shifte │ │ │ │ - 0x00d44810 64506f73 2c206d61 7434206d 6f64656c dPos, mat4 model │ │ │ │ - 0x00d44820 56696577 2c20666c 6f617420 68616c66 View, float half │ │ │ │ - 0x00d44830 57696474 6829200a 20207b20 0a202020 Width) . { . │ │ │ │ - 0x00d44840 20766563 32207020 3d202876 65633428 vec2 p = (vec4( │ │ │ │ - 0x00d44850 73686966 74656450 6f732c20 302e302c shiftedPos, 0.0, │ │ │ │ - 0x00d44860 20312e30 29202a20 6d6f6465 6c566965 1.0) * modelVie │ │ │ │ - 0x00d44870 77292e78 793b200a 20202020 76656332 w).xy; . vec2 │ │ │ │ - 0x00d44880 2064203d 2070202d 206f7269 67696e61 d = p - origina │ │ │ │ - 0x00d44890 6c417869 73506f73 3b200a20 20202069 lAxisPos; . i │ │ │ │ - 0x00d448a0 66202864 6f742864 2c206429 20213d20 f (dot(d, d) != │ │ │ │ - 0x00d448b0 302e3029 200a2020 20202020 72657475 0.0) . retu │ │ │ │ - 0x00d448c0 726e206f 72696769 6e616c41 78697350 rn originalAxisP │ │ │ │ - 0x00d448d0 6f73202b 206e6f72 6d616c69 7a652864 os + normalize(d │ │ │ │ - 0x00d448e0 29202a20 68616c66 57696474 683b200a ) * halfWidth; . │ │ │ │ - 0x00d448f0 20202020 656c7365 200a2020 20202020 else . │ │ │ │ - 0x00d44900 72657475 726e206f 72696769 6e616c41 return originalA │ │ │ │ - 0x00d44910 78697350 6f733b20 0a20207d 200a2020 xisPos; . } . │ │ │ │ - 0x00d44920 766f6964 206d6169 6e282920 0a20207b void main() . { │ │ │ │ - 0x00d44930 200a2020 20207665 63322074 72616e73 . vec2 trans │ │ │ │ - 0x00d44940 666f726d 65644178 6973506f 73203d20 formedAxisPos = │ │ │ │ - 0x00d44950 28766563 3428615f 706f7369 74696f6e (vec4(a_position │ │ │ │ - 0x00d44960 2e78792c 20302e30 2c20312e 3029202a .xy, 0.0, 1.0) * │ │ │ │ - 0x00d44970 20755f6d 6f64656c 56696577 292e7879 u_modelView).xy │ │ │ │ - 0x00d44980 3b200a20 20202076 65633220 6c656e20 ; . vec2 len │ │ │ │ - 0x00d44990 3d207665 63322861 5f6c656e 6774682e = vec2(a_length. │ │ │ │ - 0x00d449a0 782c2061 5f6c656e 6774682e 7a293b20 x, a_length.z); │ │ │ │ - 0x00d449b0 0a202020 20696620 28646f74 28615f6e . if (dot(a_n │ │ │ │ - 0x00d449c0 6f726d61 6c2c2061 5f6e6f72 6d616c29 ormal, a_normal) │ │ │ │ - 0x00d449d0 20213d20 302e3029 200a2020 20207b20 != 0.0) . { │ │ │ │ - 0x00d449e0 0a202020 20202076 65633220 6e6f726d . vec2 norm │ │ │ │ - 0x00d449f0 203d2061 5f6e6f72 6d616c20 2a20755f = a_normal * u_ │ │ │ │ - 0x00d44a00 726f7574 65506172 616d732e 783b200a routeParams.x; . │ │ │ │ - 0x00d44a10 20202020 20207472 616e7366 6f726d65 transforme │ │ │ │ - 0x00d44a20 64417869 73506f73 203d2063 616c634c dAxisPos = calcL │ │ │ │ - 0x00d44a30 696e6554 72616e73 666f726d 65644178 ineTransformedAx │ │ │ │ - 0x00d44a40 6973506f 73287472 616e7366 6f726d65 isPos(transforme │ │ │ │ - 0x00d44a50 64417869 73506f73 2c20615f 706f7369 dAxisPos, a_posi │ │ │ │ - 0x00d44a60 74696f6e 2e787920 2b206e6f 726d2c20 tion.xy + norm, │ │ │ │ - 0x00d44a70 0a202020 20202020 20202020 20202020 . │ │ │ │ - 0x00d44a80 20202020 20202020 20202020 20202020 │ │ │ │ - 0x00d44a90 20202020 20202020 20202020 20202020 │ │ │ │ - 0x00d44aa0 20202020 20202075 5f6d6f64 656c5669 u_modelVi │ │ │ │ - 0x00d44ab0 65772c20 6c656e67 7468286e 6f726d29 ew, length(norm) │ │ │ │ - 0x00d44ac0 293b200a 20202020 20206966 2028755f ); . if (u_ │ │ │ │ - 0x00d44ad0 726f7574 65506172 616d732e 7920213d routeParams.y != │ │ │ │ - 0x00d44ae0 20302e30 29200a20 20202020 2020206c 0.0) . l │ │ │ │ - 0x00d44af0 656e203d 20766563 3228615f 6c656e67 en = vec2(a_leng │ │ │ │ - 0x00d44b00 74682e78 202b2061 5f6c656e 6774682e th.x + a_length. │ │ │ │ - 0x00d44b10 79202a20 755f726f 75746550 6172616d y * u_routeParam │ │ │ │ - 0x00d44b20 732e792c 20615f6c 656e6774 682e7a29 s.y, a_length.z) │ │ │ │ - 0x00d44b30 3b200a20 2020207d 200a2020 2020765f ; . } . v_ │ │ │ │ - 0x00d44b40 6c656e67 7468203d 20766563 33286c65 length = vec3(le │ │ │ │ - 0x00d44b50 6e2c2075 5f726f75 74655061 72616d73 n, u_routeParams │ │ │ │ - 0x00d44b60 2e7a293b 200a2020 2020765f 636f6c6f .z); . v_colo │ │ │ │ - 0x00d44b70 72203d20 615f636f 6c6f723b 200a2020 r = a_color; . │ │ │ │ - 0x00d44b80 20207665 63342070 6f73203d 20766563 vec4 pos = vec │ │ │ │ - 0x00d44b90 34287472 616e7366 6f726d65 64417869 4(transformedAxi │ │ │ │ - 0x00d44ba0 73506f73 2c20615f 706f7369 74696f6e sPos, a_position │ │ │ │ - 0x00d44bb0 2e7a2c20 312e3029 202a2075 5f70726f .z, 1.0) * u_pro │ │ │ │ - 0x00d44bc0 6a656374 696f6e3b 200a2020 2020676c jection; . gl │ │ │ │ - 0x00d44bd0 5f506f73 6974696f 6e203d20 6170706c _Position = appl │ │ │ │ - 0x00d44be0 79506976 6f745472 616e7366 6f726d28 yPivotTransform( │ │ │ │ - 0x00d44bf0 706f732c 20755f70 69766f74 5472616e pos, u_pivotTran │ │ │ │ - 0x00d44c00 73666f72 6d2c2030 2e30293b 200a2020 sform, 0.0); . │ │ │ │ - 0x00d44c10 7d200a00 00000000 00000000 00000000 } .............. │ │ │ │ - 0x00d44c20 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d44c30 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d44c40 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d44c50 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d44c60 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d44c70 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d44c80 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d44c90 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d44ca0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d44cb0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d44cc0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d44cd0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d44ce0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d44cf0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d44d00 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d44d10 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d44d20 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d44d30 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d44d40 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d44d50 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d44d60 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d44d70 63322076 5f636f6c 6f725465 78436f6f c2 v_colorTexCoo │ │ │ │ - 0x00d44d80 7264733b 200a2020 6f757420 76656334 rds; . out vec4 │ │ │ │ - 0x00d44d90 20765f46 72616743 6f6c6f72 3b200a20 v_FragColor; . │ │ │ │ - 0x00d44da0 20756e69 666f726d 206d6174 3420755f uniform mat4 u_ │ │ │ │ - 0x00d44db0 6d6f6465 6c566965 773b200a 2020756e modelView; . un │ │ │ │ - 0x00d44dc0 69666f72 6d206d61 74342075 5f70726f iform mat4 u_pro │ │ │ │ - 0x00d44dd0 6a656374 696f6e3b 200a2020 756e6966 jection; . unif │ │ │ │ - 0x00d44de0 6f726d20 6d617434 20755f70 69766f74 orm mat4 u_pivot │ │ │ │ - 0x00d44df0 5472616e 73666f72 6d3b200a 2020756e Transform; . un │ │ │ │ - 0x00d44e00 69666f72 6d207665 63342075 5f726f75 iform vec4 u_rou │ │ │ │ - 0x00d44e10 74655061 72616d73 3b200a20 20756e69 teParams; . uni │ │ │ │ - 0x00d44e20 666f726d 20766563 3420755f 636f6c6f form vec4 u_colo │ │ │ │ - 0x00d44e30 723b200a 2020756e 69666f72 6d207665 r; . uniform ve │ │ │ │ - 0x00d44e40 63342075 5f6d6173 6b436f6c 6f723b20 c4 u_maskColor; │ │ │ │ - 0x00d44e50 0a202075 6e69666f 726d2076 65633420 . uniform vec4 │ │ │ │ - 0x00d44e60 755f6f75 746c696e 65436f6c 6f723b20 u_outlineColor; │ │ │ │ - 0x00d44e70 0a202075 6e69666f 726d2076 65633420 . uniform vec4 │ │ │ │ - 0x00d44e80 755f6661 6b65436f 6c6f723b 200a2020 u_fakeColor; . │ │ │ │ - 0x00d44e90 756e6966 6f726d20 76656334 20755f66 uniform vec4 u_f │ │ │ │ - 0x00d44ea0 616b654f 75746c69 6e65436f 6c6f723b akeOutlineColor; │ │ │ │ - 0x00d44eb0 200a2020 756e6966 6f726d20 76656332 . uniform vec2 │ │ │ │ - 0x00d44ec0 20755f66 616b6542 6f726465 72733b20 u_fakeBorders; │ │ │ │ - 0x00d44ed0 0a202075 6e69666f 726d2076 65633220 . uniform vec2 │ │ │ │ - 0x00d44ee0 755f7061 74746572 6e3b200a 2020756e u_pattern; . un │ │ │ │ - 0x00d44ef0 69666f72 6d207665 63322075 5f616e67 iform vec2 u_ang │ │ │ │ - 0x00d44f00 6c65436f 7353696e 3b200a20 20756e69 leCosSin; . uni │ │ │ │ - 0x00d44f10 666f726d 20666c6f 61742075 5f617272 form float u_arr │ │ │ │ - 0x00d44f20 6f774861 6c665769 6474683b 200a2020 owHalfWidth; . │ │ │ │ - 0x00d44f30 756e6966 6f726d20 666c6f61 7420755f uniform float u_ │ │ │ │ - 0x00d44f40 6f706163 6974793b 200a2020 756e6966 opacity; . unif │ │ │ │ - 0x00d44f50 6f726d20 73616d70 6c657232 4420755f orm sampler2D u_ │ │ │ │ - 0x00d44f60 636f6c6f 72546578 3b200a20 20636f6e colorTex; . con │ │ │ │ - 0x00d44f70 73742066 6c6f6174 206b5368 61706543 st float kShapeC │ │ │ │ - 0x00d44f80 6f6f7264 5363616c 6172203d 20313030 oordScalar = 100 │ │ │ │ - 0x00d44f90 302e303b 200a2020 766f6964 206d6169 0.0; . void mai │ │ │ │ - 0x00d44fa0 6e282920 0a20207b 200a2020 20207665 n() . { . ve │ │ │ │ - 0x00d44fb0 63342066 696e616c 436f6c6f 72203d20 c4 finalColor = │ │ │ │ - 0x00d44fc0 74657874 75726528 755f636f 6c6f7254 texture(u_colorT │ │ │ │ - 0x00d44fd0 65782c20 765f636f 6c6f7254 6578436f ex, v_colorTexCo │ │ │ │ - 0x00d44fe0 6f726473 293b200a 20202020 66696e61 ords); . fina │ │ │ │ - 0x00d44ff0 6c436f6c 6f722e61 202a3d20 755f6f70 lColor.a *= u_op │ │ │ │ - 0x00d45000 61636974 793b200a 20202020 69662028 acity; . if ( │ │ │ │ - 0x00d45010 66696e61 6c436f6c 6f722e61 203c2030 finalColor.a < 0 │ │ │ │ - 0x00d45020 2e303129 200a2020 20202020 64697363 .01) . disc │ │ │ │ - 0x00d45030 6172643b 200a2020 20206669 6e616c43 ard; . finalC │ │ │ │ - 0x00d45040 6f6c6f72 203d2076 65633428 6d697828 olor = vec4(mix( │ │ │ │ - 0x00d45050 66696e61 6c436f6c 6f722e72 67622c20 finalColor.rgb, │ │ │ │ - 0x00d45060 755f6d61 736b436f 6c6f722e 7267622c u_maskColor.rgb, │ │ │ │ - 0x00d45070 20755f6d 61736b43 6f6c6f72 2e61292c u_maskColor.a), │ │ │ │ - 0x00d45080 2066696e 616c436f 6c6f722e 61293b20 finalColor.a); │ │ │ │ - 0x00d45090 0a202020 20765f46 72616743 6f6c6f72 . v_FragColor │ │ │ │ - 0x00d450a0 203d2066 696e616c 436f6c6f 723b200a = finalColor; . │ │ │ │ - 0x00d450b0 20207d20 0a000000 00000000 00000000 } ............ │ │ │ │ - 0x00d450c0 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d450d0 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d450e0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d450f0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d45100 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d45110 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d45120 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d45130 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d45140 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d45150 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d45160 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d45170 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d45180 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d45190 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d451a0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d451b0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d451c0 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d451d0 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d451e0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d451f0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d45200 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d45210 63342061 5f706f73 6974696f 6e3b200a c4 a_position; . │ │ │ │ - 0x00d45220 2020696e 20766563 3220615f 6e6f726d in vec2 a_norm │ │ │ │ - 0x00d45230 616c3b20 0a202069 6e207665 63322061 al; . in vec2 a │ │ │ │ - 0x00d45240 5f636f6c 6f725465 78436f6f 7264733b _colorTexCoords; │ │ │ │ - 0x00d45250 200a2020 6f757420 76656332 20765f63 . out vec2 v_c │ │ │ │ - 0x00d45260 6f6c6f72 54657843 6f6f7264 733b200a olorTexCoords; . │ │ │ │ - 0x00d45270 2020756e 69666f72 6d206d61 74342075 uniform mat4 u │ │ │ │ - 0x00d45280 5f6d6f64 656c5669 65773b20 0a202075 _modelView; . u │ │ │ │ - 0x00d45290 6e69666f 726d206d 61743420 755f7072 niform mat4 u_pr │ │ │ │ - 0x00d452a0 6f6a6563 74696f6e 3b200a20 20756e69 ojection; . uni │ │ │ │ - 0x00d452b0 666f726d 206d6174 3420755f 7069766f form mat4 u_pivo │ │ │ │ - 0x00d452c0 74547261 6e73666f 726d3b20 0a202075 tTransform; . u │ │ │ │ - 0x00d452d0 6e69666f 726d2076 65633420 755f726f niform vec4 u_ro │ │ │ │ - 0x00d452e0 75746550 6172616d 733b200a 2020756e uteParams; . un │ │ │ │ - 0x00d452f0 69666f72 6d207665 63342075 5f636f6c iform vec4 u_col │ │ │ │ - 0x00d45300 6f723b20 0a202075 6e69666f 726d2076 or; . uniform v │ │ │ │ - 0x00d45310 65633420 755f6d61 736b436f 6c6f723b ec4 u_maskColor; │ │ │ │ - 0x00d45320 200a2020 756e6966 6f726d20 76656334 . uniform vec4 │ │ │ │ - 0x00d45330 20755f6f 75746c69 6e65436f 6c6f723b u_outlineColor; │ │ │ │ - 0x00d45340 200a2020 756e6966 6f726d20 76656334 . uniform vec4 │ │ │ │ - 0x00d45350 20755f66 616b6543 6f6c6f72 3b200a20 u_fakeColor; . │ │ │ │ - 0x00d45360 20756e69 666f726d 20766563 3420755f uniform vec4 u_ │ │ │ │ - 0x00d45370 66616b65 4f75746c 696e6543 6f6c6f72 fakeOutlineColor │ │ │ │ - 0x00d45380 3b200a20 20756e69 666f726d 20766563 ; . uniform vec │ │ │ │ - 0x00d45390 3220755f 66616b65 426f7264 6572733b 2 u_fakeBorders; │ │ │ │ - 0x00d453a0 200a2020 756e6966 6f726d20 76656332 . uniform vec2 │ │ │ │ - 0x00d453b0 20755f70 61747465 726e3b20 0a202075 u_pattern; . u │ │ │ │ - 0x00d453c0 6e69666f 726d2076 65633220 755f616e niform vec2 u_an │ │ │ │ - 0x00d453d0 676c6543 6f735369 6e3b200a 2020756e gleCosSin; . un │ │ │ │ - 0x00d453e0 69666f72 6d20666c 6f617420 755f6172 iform float u_ar │ │ │ │ - 0x00d453f0 726f7748 616c6657 69647468 3b200a20 rowHalfWidth; . │ │ │ │ - 0x00d45400 20756e69 666f726d 20666c6f 61742075 uniform float u │ │ │ │ - 0x00d45410 5f6f7061 63697479 3b200a20 20636f6e _opacity; . con │ │ │ │ - 0x00d45420 73742066 6c6f6174 206b5368 61706543 st float kShapeC │ │ │ │ - 0x00d45430 6f6f7264 5363616c 6172203d 20313030 oordScalar = 100 │ │ │ │ - 0x00d45440 302e303b 200a2020 76656334 20617070 0.0; . vec4 app │ │ │ │ - 0x00d45450 6c795069 766f7454 72616e73 666f726d lyPivotTransform │ │ │ │ - 0x00d45460 28766563 34207069 766f742c 206d6174 (vec4 pivot, mat │ │ │ │ - 0x00d45470 34207069 766f7454 72616e73 666f726d 4 pivotTransform │ │ │ │ - 0x00d45480 2c20666c 6f617420 7069766f 74526561 , float pivotRea │ │ │ │ - 0x00d45490 6c5a2920 0a20207b 200a2020 20207665 lZ) . { . ve │ │ │ │ - 0x00d454a0 63342074 72616e73 666f726d 65645069 c4 transformedPi │ │ │ │ - 0x00d454b0 766f7420 3d207069 766f743b 200a2020 vot = pivot; . │ │ │ │ - 0x00d454c0 2020666c 6f617420 77203d20 7472616e float w = tran │ │ │ │ - 0x00d454d0 73666f72 6d656450 69766f74 2e773b20 sformedPivot.w; │ │ │ │ - 0x00d454e0 0a202020 20747261 6e73666f 726d6564 . transformed │ │ │ │ - 0x00d454f0 5069766f 742e7879 77203d20 28706976 Pivot.xyw = (piv │ │ │ │ - 0x00d45500 6f745472 616e7366 6f726d20 2a207665 otTransform * ve │ │ │ │ - 0x00d45510 63342874 72616e73 666f726d 65645069 c4(transformedPi │ │ │ │ - 0x00d45520 766f742e 78792c20 7069766f 74526561 vot.xy, pivotRea │ │ │ │ - 0x00d45530 6c5a2c20 7729292e 7879773b 200a2020 lZ, w)).xyw; . │ │ │ │ - 0x00d45540 20207472 616e7366 6f726d65 64506976 transformedPiv │ │ │ │ - 0x00d45550 6f742e7a 202a3d20 7472616e 73666f72 ot.z *= transfor │ │ │ │ - 0x00d45560 6d656450 69766f74 2e77202f 20773b20 medPivot.w / w; │ │ │ │ - 0x00d45570 0a202023 69666465 66205655 4c4b414e . #ifdef VULKAN │ │ │ │ - 0x00d45580 200a2020 20207472 616e7366 6f726d65 . transforme │ │ │ │ - 0x00d45590 64506976 6f742e79 203d202d 7472616e dPivot.y = -tran │ │ │ │ - 0x00d455a0 73666f72 6d656450 69766f74 2e793b20 sformedPivot.y; │ │ │ │ - 0x00d455b0 0a202020 20747261 6e73666f 726d6564 . transformed │ │ │ │ - 0x00d455c0 5069766f 742e7a20 3d202874 72616e73 Pivot.z = (trans │ │ │ │ - 0x00d455d0 666f726d 65645069 766f742e 7a20202b formedPivot.z + │ │ │ │ - 0x00d455e0 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ - 0x00d455f0 742e7729 202f2032 2e303b20 0a202023 t.w) / 2.0; . # │ │ │ │ - 0x00d45600 656e6469 66200a20 20202072 65747572 endif . retur │ │ │ │ - 0x00d45610 6e207472 616e7366 6f726d65 64506976 n transformedPiv │ │ │ │ - 0x00d45620 6f743b20 0a20207d 200a2020 76656334 ot; . } . vec4 │ │ │ │ - 0x00d45630 20617070 6c794269 6c6c626f 61726450 applyBillboardP │ │ │ │ - 0x00d45640 69766f74 5472616e 73666f72 6d287665 ivotTransform(ve │ │ │ │ - 0x00d45650 63342070 69766f74 2c206d61 74342070 c4 pivot, mat4 p │ │ │ │ - 0x00d45660 69766f74 5472616e 73666f72 6d2c2066 ivotTransform, f │ │ │ │ - 0x00d45670 6c6f6174 20706976 6f745265 616c5a2c loat pivotRealZ, │ │ │ │ - 0x00d45680 20766563 32206f66 66736574 29200a20 vec2 offset) . │ │ │ │ - 0x00d45690 207b200a 20202020 666c6f61 74206c6f { . float lo │ │ │ │ - 0x00d456a0 6769635a 203d2070 69766f74 2e7a202f gicZ = pivot.z / │ │ │ │ - 0x00d456b0 20706976 6f742e77 3b200a20 20202076 pivot.w; . v │ │ │ │ - 0x00d456c0 65633420 7472616e 73666f72 6d656450 ec4 transformedP │ │ │ │ - 0x00d456d0 69766f74 203d2070 69766f74 5472616e ivot = pivotTran │ │ │ │ - 0x00d456e0 73666f72 6d202a20 76656334 28706976 sform * vec4(piv │ │ │ │ - 0x00d456f0 6f742e78 792c2070 69766f74 5265616c ot.xy, pivotReal │ │ │ │ - 0x00d45700 5a2c2070 69766f74 2e77293b 200a2020 Z, pivot.w); . │ │ │ │ - 0x00d45710 20207665 63342073 63616c65 203d2070 vec4 scale = p │ │ │ │ - 0x00d45720 69766f74 5472616e 73666f72 6d202a20 ivotTransform * │ │ │ │ - 0x00d45730 76656334 28312e30 2c202d31 2e302c20 vec4(1.0, -1.0, │ │ │ │ - 0x00d45740 302e302c 20312e30 293b200a 20202020 0.0, 1.0); . │ │ │ │ - 0x00d45750 76656334 20706f73 6974696f 6e203d20 vec4 position = │ │ │ │ - 0x00d45760 76656334 28747261 6e73666f 726d6564 vec4(transformed │ │ │ │ - 0x00d45770 5069766f 742e7879 202f2074 72616e73 Pivot.xy / trans │ │ │ │ - 0x00d45780 666f726d 65645069 766f742e 772c206c formedPivot.w, l │ │ │ │ - 0x00d45790 6f676963 5a2c2031 2e302920 2b207665 ogicZ, 1.0) + ve │ │ │ │ - 0x00d457a0 6334286f 66667365 74202f20 7363616c c4(offset / scal │ │ │ │ - 0x00d457b0 652e7720 2a207363 616c652e 782c2030 e.w * scale.x, 0 │ │ │ │ - 0x00d457c0 2e302c20 302e3029 3b200a20 20236966 .0, 0.0); . #if │ │ │ │ - 0x00d457d0 64656620 56554c4b 414e200a 20202020 def VULKAN . │ │ │ │ - 0x00d457e0 706f7369 74696f6e 2e79203d 202d706f position.y = -po │ │ │ │ - 0x00d457f0 73697469 6f6e2e79 3b200a20 20202070 sition.y; . p │ │ │ │ - 0x00d45800 6f736974 696f6e2e 7a203d20 28706f73 osition.z = (pos │ │ │ │ - 0x00d45810 6974696f 6e2e7a20 202b2070 6f736974 ition.z + posit │ │ │ │ - 0x00d45820 696f6e2e 7729202f 20322e30 3b200a20 ion.w) / 2.0; . │ │ │ │ - 0x00d45830 2023656e 64696620 0a202020 20726574 #endif . ret │ │ │ │ - 0x00d45840 75726e20 706f7369 74696f6e 3b200a20 urn position; . │ │ │ │ - 0x00d45850 207d200a 20207665 63322063 616c634c } . vec2 calcL │ │ │ │ - 0x00d45860 696e6554 72616e73 666f726d 65644178 ineTransformedAx │ │ │ │ - 0x00d45870 6973506f 73287665 6332206f 72696769 isPos(vec2 origi │ │ │ │ - 0x00d45880 6e616c41 78697350 6f732c20 76656332 nalAxisPos, vec2 │ │ │ │ - 0x00d45890 20736869 66746564 506f732c 206d6174 shiftedPos, mat │ │ │ │ - 0x00d458a0 34206d6f 64656c56 6965772c 20666c6f 4 modelView, flo │ │ │ │ - 0x00d458b0 61742068 616c6657 69647468 29200a20 at halfWidth) . │ │ │ │ - 0x00d458c0 207b200a 20202020 76656332 2070203d { . vec2 p = │ │ │ │ - 0x00d458d0 20287665 63342873 68696674 6564506f (vec4(shiftedPo │ │ │ │ - 0x00d458e0 732c2030 2e302c20 312e3029 202a206d s, 0.0, 1.0) * m │ │ │ │ - 0x00d458f0 6f64656c 56696577 292e7879 3b200a20 odelView).xy; . │ │ │ │ - 0x00d45900 20202076 65633220 64203d20 70202d20 vec2 d = p - │ │ │ │ - 0x00d45910 6f726967 696e616c 41786973 506f733b originalAxisPos; │ │ │ │ - 0x00d45920 200a2020 20206966 2028646f 7428642c . if (dot(d, │ │ │ │ - 0x00d45930 20642920 213d2030 2e302920 0a202020 d) != 0.0) . │ │ │ │ - 0x00d45940 20202072 65747572 6e206f72 6967696e return origin │ │ │ │ - 0x00d45950 616c4178 6973506f 73202b20 6e6f726d alAxisPos + norm │ │ │ │ - 0x00d45960 616c697a 65286429 202a2068 616c6657 alize(d) * halfW │ │ │ │ - 0x00d45970 69647468 3b200a20 20202065 6c736520 idth; . else │ │ │ │ - 0x00d45980 0a202020 20202072 65747572 6e206f72 . return or │ │ │ │ - 0x00d45990 6967696e 616c4178 6973506f 733b200a iginalAxisPos; . │ │ │ │ - 0x00d459a0 20207d20 0a202076 6f696420 6d61696e } . void main │ │ │ │ - 0x00d459b0 2829200a 20207b20 0a202020 20766563 () . { . vec │ │ │ │ - 0x00d459c0 32207472 616e7366 6f726d65 64417869 2 transformedAxi │ │ │ │ - 0x00d459d0 73506f73 203d2028 76656334 28615f70 sPos = (vec4(a_p │ │ │ │ - 0x00d459e0 6f736974 696f6e2e 78792c20 302e302c osition.xy, 0.0, │ │ │ │ - 0x00d459f0 20312e30 29202a20 755f6d6f 64656c56 1.0) * u_modelV │ │ │ │ - 0x00d45a00 69657729 2e78793b 200a2020 20206966 iew).xy; . if │ │ │ │ - 0x00d45a10 2028646f 7428615f 6e6f726d 616c2c20 (dot(a_normal, │ │ │ │ - 0x00d45a20 615f6e6f 726d616c 2920213d 20302e30 a_normal) != 0.0 │ │ │ │ - 0x00d45a30 29200a20 2020207b 200a2020 20202020 ) . { . │ │ │ │ - 0x00d45a40 76656332 206e6f72 6d203d20 615f6e6f vec2 norm = a_no │ │ │ │ - 0x00d45a50 726d616c 202a2075 5f617272 6f774861 rmal * u_arrowHa │ │ │ │ - 0x00d45a60 6c665769 6474683b 200a2020 20202020 lfWidth; . │ │ │ │ - 0x00d45a70 7472616e 73666f72 6d656441 78697350 transformedAxisP │ │ │ │ - 0x00d45a80 6f73203d 2063616c 634c696e 65547261 os = calcLineTra │ │ │ │ - 0x00d45a90 6e73666f 726d6564 41786973 506f7328 nsformedAxisPos( │ │ │ │ - 0x00d45aa0 7472616e 73666f72 6d656441 78697350 transformedAxisP │ │ │ │ - 0x00d45ab0 6f732c20 615f706f 73697469 6f6e2e78 os, a_position.x │ │ │ │ - 0x00d45ac0 79202b20 6e6f726d 2c200a20 20202020 y + norm, . │ │ │ │ - 0x00d45ad0 20202020 20202020 20202020 20202020 │ │ │ │ - 0x00d45ae0 20202020 20202020 20202020 20202020 │ │ │ │ - 0x00d45af0 20202020 20202020 20202020 20202020 │ │ │ │ - 0x00d45b00 20755f6d 6f64656c 56696577 2c206c65 u_modelView, le │ │ │ │ - 0x00d45b10 6e677468 286e6f72 6d29293b 200a2020 ngth(norm)); . │ │ │ │ - 0x00d45b20 20207d20 0a202020 20765f63 6f6c6f72 } . v_color │ │ │ │ - 0x00d45b30 54657843 6f6f7264 73203d20 615f636f TexCoords = a_co │ │ │ │ - 0x00d45b40 6c6f7254 6578436f 6f726473 3b200a20 lorTexCoords; . │ │ │ │ - 0x00d45b50 20202076 65633420 706f7320 3d207665 vec4 pos = ve │ │ │ │ - 0x00d45b60 63342874 72616e73 666f726d 65644178 c4(transformedAx │ │ │ │ - 0x00d45b70 6973506f 732c2061 5f706f73 6974696f isPos, a_positio │ │ │ │ - 0x00d45b80 6e2e7a2c 20312e30 29202a20 755f7072 n.z, 1.0) * u_pr │ │ │ │ - 0x00d45b90 6f6a6563 74696f6e 3b200a20 20202067 ojection; . g │ │ │ │ - 0x00d45ba0 6c5f506f 73697469 6f6e203d 20617070 l_Position = app │ │ │ │ - 0x00d45bb0 6c795069 766f7454 72616e73 666f726d lyPivotTransform │ │ │ │ - 0x00d45bc0 28706f73 2c20755f 7069766f 74547261 (pos, u_pivotTra │ │ │ │ - 0x00d45bd0 6e73666f 726d2c20 302e3029 3b200a20 nsform, 0.0); . │ │ │ │ - 0x00d45be0 207d200a 00000000 00000000 00000000 } ............. │ │ │ │ - 0x00d45bf0 00000000 00000000 00000000 00000000 ................ │ │ │ │ - 0x00d45c00 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d45c10 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d45c20 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d45c30 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d45c40 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d45c50 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d45c60 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d45c70 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d45c80 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d45c90 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d45ca0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d45cb0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d45cc0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d45cd0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d45ce0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d45cf0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d45d00 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d45d10 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d45d20 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d45d30 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d45d40 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d45d50 63332076 5f6c656e 6774683b 200a2020 c3 v_length; . │ │ │ │ - 0x00d45d60 696e2076 65633420 765f636f 6c6f723b in vec4 v_color; │ │ │ │ - 0x00d45d70 200a2020 6f757420 76656334 20765f46 . out vec4 v_F │ │ │ │ - 0x00d45d80 72616743 6f6c6f72 3b200a20 20756e69 ragColor; . uni │ │ │ │ - 0x00d45d90 666f726d 206d6174 3420755f 6d6f6465 form mat4 u_mode │ │ │ │ - 0x00d45da0 6c566965 773b200a 2020756e 69666f72 lView; . unifor │ │ │ │ - 0x00d45db0 6d206d61 74342075 5f70726f 6a656374 m mat4 u_project │ │ │ │ - 0x00d45dc0 696f6e3b 200a2020 756e6966 6f726d20 ion; . uniform │ │ │ │ - 0x00d45dd0 6d617434 20755f70 69766f74 5472616e mat4 u_pivotTran │ │ │ │ - 0x00d45de0 73666f72 6d3b200a 2020756e 69666f72 sform; . unifor │ │ │ │ - 0x00d45df0 6d207665 63342075 5f726f75 74655061 m vec4 u_routePa │ │ │ │ - 0x00d45e00 72616d73 3b200a20 20756e69 666f726d rams; . uniform │ │ │ │ - 0x00d45e10 20766563 3420755f 636f6c6f 723b200a vec4 u_color; . │ │ │ │ - 0x00d45e20 2020756e 69666f72 6d207665 63342075 uniform vec4 u │ │ │ │ - 0x00d45e30 5f6d6173 6b436f6c 6f723b20 0a202075 _maskColor; . u │ │ │ │ - 0x00d45e40 6e69666f 726d2076 65633420 755f6f75 niform vec4 u_ou │ │ │ │ - 0x00d45e50 746c696e 65436f6c 6f723b20 0a202075 tlineColor; . u │ │ │ │ - 0x00d45e60 6e69666f 726d2076 65633420 755f6661 niform vec4 u_fa │ │ │ │ - 0x00d45e70 6b65436f 6c6f723b 200a2020 756e6966 keColor; . unif │ │ │ │ - 0x00d45e80 6f726d20 76656334 20755f66 616b654f orm vec4 u_fakeO │ │ │ │ - 0x00d45e90 75746c69 6e65436f 6c6f723b 200a2020 utlineColor; . │ │ │ │ - 0x00d45ea0 756e6966 6f726d20 76656332 20755f66 uniform vec2 u_f │ │ │ │ - 0x00d45eb0 616b6542 6f726465 72733b20 0a202075 akeBorders; . u │ │ │ │ - 0x00d45ec0 6e69666f 726d2076 65633220 755f7061 niform vec2 u_pa │ │ │ │ - 0x00d45ed0 74746572 6e3b200a 2020756e 69666f72 ttern; . unifor │ │ │ │ - 0x00d45ee0 6d207665 63322075 5f616e67 6c65436f m vec2 u_angleCo │ │ │ │ - 0x00d45ef0 7353696e 3b200a20 20756e69 666f726d sSin; . uniform │ │ │ │ - 0x00d45f00 20666c6f 61742075 5f617272 6f774861 float u_arrowHa │ │ │ │ - 0x00d45f10 6c665769 6474683b 200a2020 756e6966 lfWidth; . unif │ │ │ │ - 0x00d45f20 6f726d20 666c6f61 7420755f 6f706163 orm float u_opac │ │ │ │ - 0x00d45f30 6974793b 200a2020 636f6e73 7420666c ity; . const fl │ │ │ │ - 0x00d45f40 6f617420 6b416e74 69616c69 6173696e oat kAntialiasin │ │ │ │ - 0x00d45f50 67546872 6573686f 6c64203d 20302e39 gThreshold = 0.9 │ │ │ │ - 0x00d45f60 323b200a 2020666c 6f617420 616c7068 2; . float alph │ │ │ │ - 0x00d45f70 6146726f 6d506174 7465726e 28666c6f aFromPattern(flo │ │ │ │ - 0x00d45f80 61742063 75724c65 6e2c2066 6c6f6174 at curLen, float │ │ │ │ - 0x00d45f90 20646173 684c656e 2c20666c 6f617420 dashLen, float │ │ │ │ - 0x00d45fa0 6761704c 656e2920 0a20207b 200a2020 gapLen) . { . │ │ │ │ - 0x00d45fb0 2020666c 6f617420 6c656e20 3d206461 float len = da │ │ │ │ - 0x00d45fc0 73684c65 6e202b20 6761704c 656e3b20 shLen + gapLen; │ │ │ │ - 0x00d45fd0 0a202020 20666c6f 6174206f 66667365 . float offse │ │ │ │ - 0x00d45fe0 74203d20 66726163 74286375 724c656e t = fract(curLen │ │ │ │ - 0x00d45ff0 202f206c 656e2920 2a206c65 6e3b200a / len) * len; . │ │ │ │ - 0x00d46000 20202020 72657475 726e2073 74657028 return step( │ │ │ │ - 0x00d46010 6f666673 65742c20 64617368 4c656e29 offset, dashLen) │ │ │ │ - 0x00d46020 3b200a20 207d200a 2020636f 6e737420 ; . } . const │ │ │ │ - 0x00d46030 666c6f61 74206b53 68617065 436f6f72 float kShapeCoor │ │ │ │ - 0x00d46040 64536361 6c617220 3d203130 30302e30 dScalar = 1000.0 │ │ │ │ - 0x00d46050 3b200a20 20766f69 64206d61 696e2829 ; . void main() │ │ │ │ - 0x00d46060 200a2020 7b200a20 20202069 66202876 . { . if (v │ │ │ │ - 0x00d46070 5f6c656e 6774682e 78203c20 765f6c65 _length.x < v_le │ │ │ │ - 0x00d46080 6e677468 2e7a2920 0a202020 20202064 ngth.z) . d │ │ │ │ - 0x00d46090 69736361 72643b20 0a202020 20766563 iscard; . vec │ │ │ │ - 0x00d460a0 3220636f 65667320 3d207374 65702876 2 coefs = step(v │ │ │ │ - 0x00d460b0 5f6c656e 6774682e 78782c20 755f6661 _length.xx, u_fa │ │ │ │ - 0x00d460c0 6b65426f 72646572 73293b20 0a202020 keBorders); . │ │ │ │ - 0x00d460d0 20636f65 66732e79 203d2031 2e30202d coefs.y = 1.0 - │ │ │ │ - 0x00d460e0 20636f65 66732e79 3b200a20 20202076 coefs.y; . v │ │ │ │ - 0x00d460f0 65633420 6d61696e 436f6c6f 72203d20 ec4 mainColor = │ │ │ │ - 0x00d46100 6d697828 755f636f 6c6f722c 20755f66 mix(u_color, u_f │ │ │ │ - 0x00d46110 616b6543 6f6c6f72 2c20636f 6566732e akeColor, coefs. │ │ │ │ - 0x00d46120 78293b20 0a202020 206d6169 6e436f6c x); . mainCol │ │ │ │ - 0x00d46130 6f72203d 206d6978 286d6169 6e436f6c or = mix(mainCol │ │ │ │ - 0x00d46140 6f722c20 755f6661 6b65436f 6c6f722c or, u_fakeColor, │ │ │ │ - 0x00d46150 20636f65 66732e79 293b200a 20202020 coefs.y); . │ │ │ │ - 0x00d46160 76656334 20636f6c 6f72203d 206d6169 vec4 color = mai │ │ │ │ - 0x00d46170 6e436f6c 6f72202b 20765f63 6f6c6f72 nColor + v_color │ │ │ │ - 0x00d46180 3b200a20 20202063 6f6c6f72 2e61202a ; . color.a * │ │ │ │ - 0x00d46190 3d202831 2e30202d 20736d6f 6f746873 = (1.0 - smooths │ │ │ │ - 0x00d461a0 74657028 6b416e74 69616c69 6173696e tep(kAntialiasin │ │ │ │ - 0x00d461b0 67546872 6573686f 6c642c20 312e302c gThreshold, 1.0, │ │ │ │ - 0x00d461c0 20616273 28765f6c 656e6774 682e7929 abs(v_length.y) │ │ │ │ - 0x00d461d0 2929202a 200a2020 20202020 20202020 )) * . │ │ │ │ - 0x00d461e0 20202020 2020616c 70686146 726f6d50 alphaFromP │ │ │ │ - 0x00d461f0 61747465 726e2876 5f6c656e 6774682e attern(v_length. │ │ │ │ - 0x00d46200 782c2075 5f706174 7465726e 2e782c20 x, u_pattern.x, │ │ │ │ - 0x00d46210 755f7061 74746572 6e2e7929 3b200a20 u_pattern.y); . │ │ │ │ - 0x00d46220 20202063 6f6c6f72 203d2076 65633428 color = vec4( │ │ │ │ - 0x00d46230 6d697828 636f6c6f 722e7267 622c2075 mix(color.rgb, u │ │ │ │ - 0x00d46240 5f6d6173 6b436f6c 6f722e72 67622c20 _maskColor.rgb, │ │ │ │ - 0x00d46250 755f6d61 736b436f 6c6f722e 61292c20 u_maskColor.a), │ │ │ │ - 0x00d46260 636f6c6f 722e6129 3b200a20 20202076 color.a); . v │ │ │ │ - 0x00d46270 5f467261 67436f6c 6f72203d 20636f6c _FragColor = col │ │ │ │ - 0x00d46280 6f723b20 0a20207d 200a0000 00000000 or; . } ....... │ │ │ │ - 0x00d46290 00000000 00000000 00000000 00000000 ................ │ │ │ │ - 0x00d462a0 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d462b0 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d462c0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d462d0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d462e0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d462f0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d46300 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d46310 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d46320 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d46330 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d46340 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d46350 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d46360 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d46370 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d46380 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d46390 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d463a0 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d463b0 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d463c0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d463d0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d463e0 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d463f0 63342076 5f726164 6975733b 200a2020 c4 v_radius; . │ │ │ │ - 0x00d46400 696e2076 65633420 765f636f 6c6f723b in vec4 v_color; │ │ │ │ - 0x00d46410 200a2020 6f757420 76656334 20765f46 . out vec4 v_F │ │ │ │ - 0x00d46420 72616743 6f6c6f72 3b200a20 20756e69 ragColor; . uni │ │ │ │ - 0x00d46430 666f726d 206d6174 3420755f 6d6f6465 form mat4 u_mode │ │ │ │ - 0x00d46440 6c566965 773b200a 2020756e 69666f72 lView; . unifor │ │ │ │ - 0x00d46450 6d206d61 74342075 5f70726f 6a656374 m mat4 u_project │ │ │ │ - 0x00d46460 696f6e3b 200a2020 756e6966 6f726d20 ion; . uniform │ │ │ │ - 0x00d46470 6d617434 20755f70 69766f74 5472616e mat4 u_pivotTran │ │ │ │ - 0x00d46480 73666f72 6d3b200a 2020756e 69666f72 sform; . unifor │ │ │ │ - 0x00d46490 6d207665 63342075 5f726f75 74655061 m vec4 u_routePa │ │ │ │ - 0x00d464a0 72616d73 3b200a20 20756e69 666f726d rams; . uniform │ │ │ │ - 0x00d464b0 20766563 3420755f 636f6c6f 723b200a vec4 u_color; . │ │ │ │ - 0x00d464c0 2020756e 69666f72 6d207665 63342075 uniform vec4 u │ │ │ │ - 0x00d464d0 5f6d6173 6b436f6c 6f723b20 0a202075 _maskColor; . u │ │ │ │ - 0x00d464e0 6e69666f 726d2076 65633420 755f6f75 niform vec4 u_ou │ │ │ │ - 0x00d464f0 746c696e 65436f6c 6f723b20 0a202075 tlineColor; . u │ │ │ │ - 0x00d46500 6e69666f 726d2076 65633420 755f6661 niform vec4 u_fa │ │ │ │ - 0x00d46510 6b65436f 6c6f723b 200a2020 756e6966 keColor; . unif │ │ │ │ - 0x00d46520 6f726d20 76656334 20755f66 616b654f orm vec4 u_fakeO │ │ │ │ - 0x00d46530 75746c69 6e65436f 6c6f723b 200a2020 utlineColor; . │ │ │ │ - 0x00d46540 756e6966 6f726d20 76656332 20755f66 uniform vec2 u_f │ │ │ │ - 0x00d46550 616b6542 6f726465 72733b20 0a202075 akeBorders; . u │ │ │ │ - 0x00d46560 6e69666f 726d2076 65633220 755f7061 niform vec2 u_pa │ │ │ │ - 0x00d46570 74746572 6e3b200a 2020756e 69666f72 ttern; . unifor │ │ │ │ - 0x00d46580 6d207665 63322075 5f616e67 6c65436f m vec2 u_angleCo │ │ │ │ - 0x00d46590 7353696e 3b200a20 20756e69 666f726d sSin; . uniform │ │ │ │ - 0x00d465a0 20666c6f 61742075 5f617272 6f774861 float u_arrowHa │ │ │ │ - 0x00d465b0 6c665769 6474683b 200a2020 756e6966 lfWidth; . unif │ │ │ │ - 0x00d465c0 6f726d20 666c6f61 7420755f 6f706163 orm float u_opac │ │ │ │ - 0x00d465d0 6974793b 200a2020 636f6e73 7420666c ity; . const fl │ │ │ │ - 0x00d465e0 6f617420 6b416e74 69616c69 6173696e oat kAntialiasin │ │ │ │ - 0x00d465f0 67506978 656c7343 6f756e74 203d2032 gPixelsCount = 2 │ │ │ │ - 0x00d46600 2e353b20 0a202063 6f6e7374 20666c6f .5; . const flo │ │ │ │ - 0x00d46610 6174206b 53686170 65436f6f 72645363 at kShapeCoordSc │ │ │ │ - 0x00d46620 616c6172 203d2031 3030302e 303b200a alar = 1000.0; . │ │ │ │ - 0x00d46630 2020766f 6964206d 61696e28 29200a20 void main() . │ │ │ │ - 0x00d46640 207b200a 20202020 76656334 2066696e { . vec4 fin │ │ │ │ - 0x00d46650 616c436f 6c6f7220 3d20765f 636f6c6f alColor = v_colo │ │ │ │ - 0x00d46660 723b200a 20202020 666c6f61 74206161 r; . float aa │ │ │ │ - 0x00d46670 52616469 7573203d 206d6178 28765f72 Radius = max(v_r │ │ │ │ - 0x00d46680 61646975 732e7a20 2d206b41 6e746961 adius.z - kAntia │ │ │ │ - 0x00d46690 6c696173 696e6750 6978656c 73436f75 liasingPixelsCou │ │ │ │ - 0x00d466a0 6e742c20 302e3029 3b200a20 20202066 nt, 0.0); . f │ │ │ │ - 0x00d466b0 6c6f6174 20737465 7056616c 7565203d loat stepValue = │ │ │ │ - 0x00d466c0 20736d6f 6f746873 74657028 61615261 smoothstep(aaRa │ │ │ │ - 0x00d466d0 64697573 202a2061 61526164 6975732c dius * aaRadius, │ │ │ │ - 0x00d466e0 20765f72 61646975 732e7a20 2a20765f v_radius.z * v_ │ │ │ │ - 0x00d466f0 72616469 75732e7a 2c200a20 20202020 radius.z, . │ │ │ │ - 0x00d46700 20202020 20202020 20202020 20202020 │ │ │ │ - 0x00d46710 20202020 20202020 20202020 646f7428 dot( │ │ │ │ - 0x00d46720 765f7261 64697573 2e78792c 20765f72 v_radius.xy, v_r │ │ │ │ - 0x00d46730 61646975 732e7879 29293b20 0a202020 adius.xy)); . │ │ │ │ - 0x00d46740 2066696e 616c436f 6c6f722e 61203d20 finalColor.a = │ │ │ │ - 0x00d46750 66696e61 6c436f6c 6f722e61 202a2075 finalColor.a * u │ │ │ │ - 0x00d46760 5f6f7061 63697479 202a2028 312e3020 _opacity * (1.0 │ │ │ │ - 0x00d46770 2d207374 65705661 6c756529 3b200a20 - stepValue); . │ │ │ │ - 0x00d46780 20202069 66202866 696e616c 436f6c6f if (finalColo │ │ │ │ - 0x00d46790 722e6120 3c20302e 3031207c 7c20755f r.a < 0.01 || u_ │ │ │ │ - 0x00d467a0 726f7574 65506172 616d732e 79203e20 routeParams.y > │ │ │ │ - 0x00d467b0 765f7261 64697573 2e772920 0a202020 v_radius.w) . │ │ │ │ - 0x00d467c0 20202064 69736361 72643b20 0a202020 discard; . │ │ │ │ - 0x00d467d0 2066696e 616c436f 6c6f7220 3d207665 finalColor = ve │ │ │ │ - 0x00d467e0 6334286d 69782866 696e616c 436f6c6f c4(mix(finalColo │ │ │ │ - 0x00d467f0 722e7267 622c2075 5f6d6173 6b436f6c r.rgb, u_maskCol │ │ │ │ - 0x00d46800 6f722e72 67622c20 755f6d61 736b436f or.rgb, u_maskCo │ │ │ │ - 0x00d46810 6c6f722e 61292c20 66696e61 6c436f6c lor.a), finalCol │ │ │ │ - 0x00d46820 6f722e61 293b200a 20202020 765f4672 or.a); . v_Fr │ │ │ │ - 0x00d46830 6167436f 6c6f7220 3d206669 6e616c43 agColor = finalC │ │ │ │ - 0x00d46840 6f6c6f72 3b200a20 207d200a 00000000 olor; . } ..... │ │ │ │ - 0x00d46850 00000000 00000000 00000000 00000000 ................ │ │ │ │ - 0x00d46860 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d46870 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d46880 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d46890 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d468a0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d468b0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d468c0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d468d0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d468e0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d468f0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d46900 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d46910 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d46920 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d46930 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d46940 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d46950 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d46960 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d46970 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d46980 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d46990 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d469a0 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d469b0 63342061 5f706f73 6974696f 6e3b200a c4 a_position; . │ │ │ │ - 0x00d469c0 2020696e 20766563 3320615f 6e6f726d in vec3 a_norm │ │ │ │ - 0x00d469d0 616c3b20 0a202069 6e207665 63342061 al; . in vec4 a │ │ │ │ - 0x00d469e0 5f636f6c 6f723b20 0a20206f 75742076 _color; . out v │ │ │ │ - 0x00d469f0 65633420 765f7261 64697573 3b200a20 ec4 v_radius; . │ │ │ │ - 0x00d46a00 206f7574 20766563 3420765f 636f6c6f out vec4 v_colo │ │ │ │ - 0x00d46a10 723b200a 2020756e 69666f72 6d206d61 r; . uniform ma │ │ │ │ - 0x00d46a20 74342075 5f6d6f64 656c5669 65773b20 t4 u_modelView; │ │ │ │ - 0x00d46a30 0a202075 6e69666f 726d206d 61743420 . uniform mat4 │ │ │ │ - 0x00d46a40 755f7072 6f6a6563 74696f6e 3b200a20 u_projection; . │ │ │ │ - 0x00d46a50 20756e69 666f726d 206d6174 3420755f uniform mat4 u_ │ │ │ │ - 0x00d46a60 7069766f 74547261 6e73666f 726d3b20 pivotTransform; │ │ │ │ - 0x00d46a70 0a202075 6e69666f 726d2076 65633420 . uniform vec4 │ │ │ │ - 0x00d46a80 755f726f 75746550 6172616d 733b200a u_routeParams; . │ │ │ │ - 0x00d46a90 2020756e 69666f72 6d207665 63342075 uniform vec4 u │ │ │ │ - 0x00d46aa0 5f636f6c 6f723b20 0a202075 6e69666f _color; . unifo │ │ │ │ - 0x00d46ab0 726d2076 65633420 755f6d61 736b436f rm vec4 u_maskCo │ │ │ │ - 0x00d46ac0 6c6f723b 200a2020 756e6966 6f726d20 lor; . uniform │ │ │ │ - 0x00d46ad0 76656334 20755f6f 75746c69 6e65436f vec4 u_outlineCo │ │ │ │ - 0x00d46ae0 6c6f723b 200a2020 756e6966 6f726d20 lor; . uniform │ │ │ │ - 0x00d46af0 76656334 20755f66 616b6543 6f6c6f72 vec4 u_fakeColor │ │ │ │ - 0x00d46b00 3b200a20 20756e69 666f726d 20766563 ; . uniform vec │ │ │ │ - 0x00d46b10 3420755f 66616b65 4f75746c 696e6543 4 u_fakeOutlineC │ │ │ │ - 0x00d46b20 6f6c6f72 3b200a20 20756e69 666f726d olor; . uniform │ │ │ │ - 0x00d46b30 20766563 3220755f 66616b65 426f7264 vec2 u_fakeBord │ │ │ │ - 0x00d46b40 6572733b 200a2020 756e6966 6f726d20 ers; . uniform │ │ │ │ - 0x00d46b50 76656332 20755f70 61747465 726e3b20 vec2 u_pattern; │ │ │ │ - 0x00d46b60 0a202075 6e69666f 726d2076 65633220 . uniform vec2 │ │ │ │ - 0x00d46b70 755f616e 676c6543 6f735369 6e3b200a u_angleCosSin; . │ │ │ │ - 0x00d46b80 2020756e 69666f72 6d20666c 6f617420 uniform float │ │ │ │ - 0x00d46b90 755f6172 726f7748 616c6657 69647468 u_arrowHalfWidth │ │ │ │ - 0x00d46ba0 3b200a20 20756e69 666f726d 20666c6f ; . uniform flo │ │ │ │ - 0x00d46bb0 61742075 5f6f7061 63697479 3b200a20 at u_opacity; . │ │ │ │ - 0x00d46bc0 20636f6e 73742066 6c6f6174 206b5368 const float kSh │ │ │ │ - 0x00d46bd0 61706543 6f6f7264 5363616c 6172203d apeCoordScalar = │ │ │ │ - 0x00d46be0 20313030 302e303b 200a2020 76656334 1000.0; . vec4 │ │ │ │ - 0x00d46bf0 20617070 6c795069 766f7454 72616e73 applyPivotTrans │ │ │ │ - 0x00d46c00 666f726d 28766563 34207069 766f742c form(vec4 pivot, │ │ │ │ - 0x00d46c10 206d6174 34207069 766f7454 72616e73 mat4 pivotTrans │ │ │ │ - 0x00d46c20 666f726d 2c20666c 6f617420 7069766f form, float pivo │ │ │ │ - 0x00d46c30 74526561 6c5a2920 0a20207b 200a2020 tRealZ) . { . │ │ │ │ - 0x00d46c40 20207665 63342074 72616e73 666f726d vec4 transform │ │ │ │ - 0x00d46c50 65645069 766f7420 3d207069 766f743b edPivot = pivot; │ │ │ │ - 0x00d46c60 200a2020 2020666c 6f617420 77203d20 . float w = │ │ │ │ - 0x00d46c70 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ - 0x00d46c80 2e773b20 0a202020 20747261 6e73666f .w; . transfo │ │ │ │ - 0x00d46c90 726d6564 5069766f 742e7879 77203d20 rmedPivot.xyw = │ │ │ │ - 0x00d46ca0 28706976 6f745472 616e7366 6f726d20 (pivotTransform │ │ │ │ - 0x00d46cb0 2a207665 63342874 72616e73 666f726d * vec4(transform │ │ │ │ - 0x00d46cc0 65645069 766f742e 78792c20 7069766f edPivot.xy, pivo │ │ │ │ - 0x00d46cd0 74526561 6c5a2c20 7729292e 7879773b tRealZ, w)).xyw; │ │ │ │ - 0x00d46ce0 200a2020 20207472 616e7366 6f726d65 . transforme │ │ │ │ - 0x00d46cf0 64506976 6f742e7a 202a3d20 7472616e dPivot.z *= tran │ │ │ │ - 0x00d46d00 73666f72 6d656450 69766f74 2e77202f sformedPivot.w / │ │ │ │ - 0x00d46d10 20773b20 0a202023 69666465 66205655 w; . #ifdef VU │ │ │ │ - 0x00d46d20 4c4b414e 200a2020 20207472 616e7366 LKAN . transf │ │ │ │ - 0x00d46d30 6f726d65 64506976 6f742e79 203d202d ormedPivot.y = - │ │ │ │ - 0x00d46d40 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ - 0x00d46d50 2e793b20 0a202020 20747261 6e73666f .y; . transfo │ │ │ │ - 0x00d46d60 726d6564 5069766f 742e7a20 3d202874 rmedPivot.z = (t │ │ │ │ - 0x00d46d70 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ - 0x00d46d80 7a20202b 20747261 6e73666f 726d6564 z + transformed │ │ │ │ - 0x00d46d90 5069766f 742e7729 202f2032 2e303b20 Pivot.w) / 2.0; │ │ │ │ - 0x00d46da0 0a202023 656e6469 66200a20 20202072 . #endif . r │ │ │ │ - 0x00d46db0 65747572 6e207472 616e7366 6f726d65 eturn transforme │ │ │ │ - 0x00d46dc0 64506976 6f743b20 0a20207d 200a2020 dPivot; . } . │ │ │ │ - 0x00d46dd0 76656334 20617070 6c794269 6c6c626f vec4 applyBillbo │ │ │ │ - 0x00d46de0 61726450 69766f74 5472616e 73666f72 ardPivotTransfor │ │ │ │ - 0x00d46df0 6d287665 63342070 69766f74 2c206d61 m(vec4 pivot, ma │ │ │ │ - 0x00d46e00 74342070 69766f74 5472616e 73666f72 t4 pivotTransfor │ │ │ │ - 0x00d46e10 6d2c2066 6c6f6174 20706976 6f745265 m, float pivotRe │ │ │ │ - 0x00d46e20 616c5a2c 20766563 32206f66 66736574 alZ, vec2 offset │ │ │ │ - 0x00d46e30 29200a20 207b200a 20202020 666c6f61 ) . { . floa │ │ │ │ - 0x00d46e40 74206c6f 6769635a 203d2070 69766f74 t logicZ = pivot │ │ │ │ - 0x00d46e50 2e7a202f 20706976 6f742e77 3b200a20 .z / pivot.w; . │ │ │ │ - 0x00d46e60 20202076 65633420 7472616e 73666f72 vec4 transfor │ │ │ │ - 0x00d46e70 6d656450 69766f74 203d2070 69766f74 medPivot = pivot │ │ │ │ - 0x00d46e80 5472616e 73666f72 6d202a20 76656334 Transform * vec4 │ │ │ │ - 0x00d46e90 28706976 6f742e78 792c2070 69766f74 (pivot.xy, pivot │ │ │ │ - 0x00d46ea0 5265616c 5a2c2070 69766f74 2e77293b RealZ, pivot.w); │ │ │ │ - 0x00d46eb0 200a2020 20207665 63342073 63616c65 . vec4 scale │ │ │ │ - 0x00d46ec0 203d2070 69766f74 5472616e 73666f72 = pivotTransfor │ │ │ │ - 0x00d46ed0 6d202a20 76656334 28312e30 2c202d31 m * vec4(1.0, -1 │ │ │ │ - 0x00d46ee0 2e302c20 302e302c 20312e30 293b200a .0, 0.0, 1.0); . │ │ │ │ - 0x00d46ef0 20202020 76656334 20706f73 6974696f vec4 positio │ │ │ │ - 0x00d46f00 6e203d20 76656334 28747261 6e73666f n = vec4(transfo │ │ │ │ - 0x00d46f10 726d6564 5069766f 742e7879 202f2074 rmedPivot.xy / t │ │ │ │ - 0x00d46f20 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ - 0x00d46f30 772c206c 6f676963 5a2c2031 2e302920 w, logicZ, 1.0) │ │ │ │ - 0x00d46f40 2b207665 6334286f 66667365 74202f20 + vec4(offset / │ │ │ │ - 0x00d46f50 7363616c 652e7720 2a207363 616c652e scale.w * scale. │ │ │ │ - 0x00d46f60 782c2030 2e302c20 302e3029 3b200a20 x, 0.0, 0.0); . │ │ │ │ - 0x00d46f70 20236966 64656620 56554c4b 414e200a #ifdef VULKAN . │ │ │ │ - 0x00d46f80 20202020 706f7369 74696f6e 2e79203d position.y = │ │ │ │ - 0x00d46f90 202d706f 73697469 6f6e2e79 3b200a20 -position.y; . │ │ │ │ - 0x00d46fa0 20202070 6f736974 696f6e2e 7a203d20 position.z = │ │ │ │ - 0x00d46fb0 28706f73 6974696f 6e2e7a20 202b2070 (position.z + p │ │ │ │ - 0x00d46fc0 6f736974 696f6e2e 7729202f 20322e30 osition.w) / 2.0 │ │ │ │ - 0x00d46fd0 3b200a20 2023656e 64696620 0a202020 ; . #endif . │ │ │ │ - 0x00d46fe0 20726574 75726e20 706f7369 74696f6e return position │ │ │ │ - 0x00d46ff0 3b200a20 207d200a 20207665 63322063 ; . } . vec2 c │ │ │ │ - 0x00d47000 616c634c 696e6554 72616e73 666f726d alcLineTransform │ │ │ │ - 0x00d47010 65644178 6973506f 73287665 6332206f edAxisPos(vec2 o │ │ │ │ - 0x00d47020 72696769 6e616c41 78697350 6f732c20 riginalAxisPos, │ │ │ │ - 0x00d47030 76656332 20736869 66746564 506f732c vec2 shiftedPos, │ │ │ │ - 0x00d47040 206d6174 34206d6f 64656c56 6965772c mat4 modelView, │ │ │ │ - 0x00d47050 20666c6f 61742068 616c6657 69647468 float halfWidth │ │ │ │ - 0x00d47060 29200a20 207b200a 20202020 76656332 ) . { . vec2 │ │ │ │ - 0x00d47070 2070203d 20287665 63342873 68696674 p = (vec4(shift │ │ │ │ - 0x00d47080 6564506f 732c2030 2e302c20 312e3029 edPos, 0.0, 1.0) │ │ │ │ - 0x00d47090 202a206d 6f64656c 56696577 292e7879 * modelView).xy │ │ │ │ - 0x00d470a0 3b200a20 20202076 65633220 64203d20 ; . vec2 d = │ │ │ │ - 0x00d470b0 70202d20 6f726967 696e616c 41786973 p - originalAxis │ │ │ │ - 0x00d470c0 506f733b 200a2020 20206966 2028646f Pos; . if (do │ │ │ │ - 0x00d470d0 7428642c 20642920 213d2030 2e302920 t(d, d) != 0.0) │ │ │ │ - 0x00d470e0 0a202020 20202072 65747572 6e206f72 . return or │ │ │ │ - 0x00d470f0 6967696e 616c4178 6973506f 73202b20 iginalAxisPos + │ │ │ │ - 0x00d47100 6e6f726d 616c697a 65286429 202a2068 normalize(d) * h │ │ │ │ - 0x00d47110 616c6657 69647468 3b200a20 20202065 alfWidth; . e │ │ │ │ - 0x00d47120 6c736520 0a202020 20202072 65747572 lse . retur │ │ │ │ - 0x00d47130 6e206f72 6967696e 616c4178 6973506f n originalAxisPo │ │ │ │ - 0x00d47140 733b200a 20207d20 0a202076 6f696420 s; . } . void │ │ │ │ - 0x00d47150 6d61696e 2829200a 20207b20 0a202020 main() . { . │ │ │ │ - 0x00d47160 20666c6f 61742072 203d2075 5f726f75 float r = u_rou │ │ │ │ - 0x00d47170 74655061 72616d73 2e78202a 20615f6e teParams.x * a_n │ │ │ │ - 0x00d47180 6f726d61 6c2e7a3b 200a2020 20207665 ormal.z; . ve │ │ │ │ - 0x00d47190 6332206e 6f726d61 6c203d20 76656332 c2 normal = vec2 │ │ │ │ - 0x00d471a0 28615f6e 6f726d61 6c2e7820 2a20755f (a_normal.x * u_ │ │ │ │ - 0x00d471b0 616e676c 65436f73 53696e2e 78202d20 angleCosSin.x - │ │ │ │ - 0x00d471c0 615f6e6f 726d616c 2e79202a 20755f61 a_normal.y * u_a │ │ │ │ - 0x00d471d0 6e676c65 436f7353 696e2e79 2c200a20 ngleCosSin.y, . │ │ │ │ - 0x00d471e0 20202020 20202020 20202020 20202020 │ │ │ │ - 0x00d471f0 20202020 2020615f 6e6f726d 616c2e78 a_normal.x │ │ │ │ - 0x00d47200 202a2075 5f616e67 6c65436f 7353696e * u_angleCosSin │ │ │ │ - 0x00d47210 2e79202b 20615f6e 6f726d61 6c2e7920 .y + a_normal.y │ │ │ │ - 0x00d47220 2a20755f 616e676c 65436f73 53696e2e * u_angleCosSin. │ │ │ │ - 0x00d47230 78293b20 0a202020 20766563 34207261 x); . vec4 ra │ │ │ │ - 0x00d47240 64697573 203d2076 65633428 6e6f726d dius = vec4(norm │ │ │ │ - 0x00d47250 616c2e78 79202a20 722c2072 2c20615f al.xy * r, r, a_ │ │ │ │ - 0x00d47260 706f7369 74696f6e 2e77293b 200a2020 position.w); . │ │ │ │ - 0x00d47270 20207665 63342070 6f73203d 20766563 vec4 pos = vec │ │ │ │ - 0x00d47280 3428615f 706f7369 74696f6e 2e78792c 4(a_position.xy, │ │ │ │ - 0x00d47290 20302c20 3129202a 20755f6d 6f64656c 0, 1) * u_model │ │ │ │ - 0x00d472a0 56696577 3b200a20 20202076 65633220 View; . vec2 │ │ │ │ - 0x00d472b0 73686966 74656450 6f73203d 20726164 shiftedPos = rad │ │ │ │ - 0x00d472c0 6975732e 7879202b 20706f73 2e78793b ius.xy + pos.xy; │ │ │ │ - 0x00d472d0 200a2020 2020706f 73203d20 76656334 . pos = vec4 │ │ │ │ - 0x00d472e0 28736869 66746564 506f732c 20615f70 (shiftedPos, a_p │ │ │ │ - 0x00d472f0 6f736974 696f6e2e 7a2c2031 2e302920 osition.z, 1.0) │ │ │ │ - 0x00d47300 2a20755f 70726f6a 65637469 6f6e3b20 * u_projection; │ │ │ │ - 0x00d47310 0a202020 20676c5f 506f7369 74696f6e . gl_Position │ │ │ │ - 0x00d47320 203d2061 70706c79 5069766f 74547261 = applyPivotTra │ │ │ │ - 0x00d47330 6e73666f 726d2870 6f732c20 755f7069 nsform(pos, u_pi │ │ │ │ - 0x00d47340 766f7454 72616e73 666f726d 2c20302e votTransform, 0. │ │ │ │ - 0x00d47350 30293b20 0a202020 20765f72 61646975 0); . v_radiu │ │ │ │ - 0x00d47360 73203d20 72616469 75733b20 0a202020 s = radius; . │ │ │ │ - 0x00d47370 20765f63 6f6c6f72 203d2061 5f636f6c v_color = a_col │ │ │ │ - 0x00d47380 6f723b20 0a20207d 200a0000 00000000 or; . } ....... │ │ │ │ - 0x00d47390 00000000 00000000 00000000 00000000 ................ │ │ │ │ - 0x00d473a0 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d473b0 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d473c0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d473d0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d473e0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d473f0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d47400 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d47410 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d47420 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d47430 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d47440 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d47450 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d47460 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d47470 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d47480 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d47490 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d474a0 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d474b0 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d474c0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d474d0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d474e0 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d474f0 63322076 5f636f6c 6f725465 78436f6f c2 v_colorTexCoo │ │ │ │ - 0x00d47500 7264733b 200a2020 6f757420 76656334 rds; . out vec4 │ │ │ │ - 0x00d47510 20765f46 72616743 6f6c6f72 3b200a20 v_FragColor; . │ │ │ │ - 0x00d47520 20756e69 666f726d 206d6174 3420755f uniform mat4 u_ │ │ │ │ - 0x00d47530 6d6f6465 6c566965 773b200a 2020756e modelView; . un │ │ │ │ - 0x00d47540 69666f72 6d206d61 74342075 5f70726f iform mat4 u_pro │ │ │ │ - 0x00d47550 6a656374 696f6e3b 200a2020 756e6966 jection; . unif │ │ │ │ - 0x00d47560 6f726d20 76656332 20755f63 6f6e7472 orm vec2 u_contr │ │ │ │ - 0x00d47570 61737447 616d6d61 3b200a20 20756e69 astGamma; . uni │ │ │ │ - 0x00d47580 666f726d 20766563 3220755f 706f7369 form vec2 u_posi │ │ │ │ - 0x00d47590 74696f6e 3b200a20 20756e69 666f726d tion; . uniform │ │ │ │ - 0x00d475a0 20666c6f 61742075 5f69734f 75746c69 float u_isOutli │ │ │ │ - 0x00d475b0 6e655061 73733b20 0a202075 6e69666f nePass; . unifo │ │ │ │ - 0x00d475c0 726d2066 6c6f6174 20755f6f 70616369 rm float u_opaci │ │ │ │ - 0x00d475d0 74793b20 0a202075 6e69666f 726d2066 ty; . uniform f │ │ │ │ - 0x00d475e0 6c6f6174 20755f6c 656e6774 683b200a loat u_length; . │ │ │ │ - 0x00d475f0 2020756e 69666f72 6d207361 6d706c65 uniform sample │ │ │ │ - 0x00d47600 72324420 755f636f 6c6f7254 65783b20 r2D u_colorTex; │ │ │ │ - 0x00d47610 0a202063 6f6e7374 20666c6f 6174206b . const float k │ │ │ │ - 0x00d47620 53686170 65436f6f 72645363 616c6172 ShapeCoordScalar │ │ │ │ - 0x00d47630 203d2031 3030302e 303b200a 2020766f = 1000.0; . vo │ │ │ │ - 0x00d47640 6964206d 61696e28 29200a20 207b200a id main() . { . │ │ │ │ - 0x00d47650 20202020 76656334 2066696e 616c436f vec4 finalCo │ │ │ │ - 0x00d47660 6c6f7220 3d207465 78747572 6528755f lor = texture(u_ │ │ │ │ - 0x00d47670 636f6c6f 72546578 2c20765f 636f6c6f colorTex, v_colo │ │ │ │ - 0x00d47680 72546578 436f6f72 6473293b 200a2020 rTexCoords); . │ │ │ │ - 0x00d47690 20206669 6e616c43 6f6c6f72 2e61202a finalColor.a * │ │ │ │ - 0x00d476a0 3d20755f 6f706163 6974793b 200a2020 = u_opacity; . │ │ │ │ - 0x00d476b0 2020765f 46726167 436f6c6f 72203d20 v_FragColor = │ │ │ │ - 0x00d476c0 66696e61 6c436f6c 6f723b20 0a20207d finalColor; . } │ │ │ │ - 0x00d476d0 200a0000 00000000 00000000 00000000 ............... │ │ │ │ - 0x00d476e0 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d476f0 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d47700 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d47710 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d47720 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d47730 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d47740 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d47750 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d47760 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d47770 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d47780 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d47790 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d477a0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d477b0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d477c0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d477d0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d477e0 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d477f0 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d47800 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d47810 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d47820 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d47830 63322061 5f706f73 6974696f 6e3b200a c2 a_position; . │ │ │ │ - 0x00d47840 2020696e 20766563 3220615f 6e6f726d in vec2 a_norm │ │ │ │ - 0x00d47850 616c3b20 0a202069 6e207665 63322061 al; . in vec2 a │ │ │ │ - 0x00d47860 5f636f6c 6f725465 78436f6f 7264733b _colorTexCoords; │ │ │ │ - 0x00d47870 200a2020 6f757420 76656332 20765f63 . out vec2 v_c │ │ │ │ - 0x00d47880 6f6c6f72 54657843 6f6f7264 733b200a olorTexCoords; . │ │ │ │ - 0x00d47890 2020756e 69666f72 6d206d61 74342075 uniform mat4 u │ │ │ │ - 0x00d478a0 5f6d6f64 656c5669 65773b20 0a202075 _modelView; . u │ │ │ │ - 0x00d478b0 6e69666f 726d206d 61743420 755f7072 niform mat4 u_pr │ │ │ │ - 0x00d478c0 6f6a6563 74696f6e 3b200a20 20756e69 ojection; . uni │ │ │ │ - 0x00d478d0 666f726d 20766563 3220755f 636f6e74 form vec2 u_cont │ │ │ │ - 0x00d478e0 72617374 47616d6d 613b200a 2020756e rastGamma; . un │ │ │ │ - 0x00d478f0 69666f72 6d207665 63322075 5f706f73 iform vec2 u_pos │ │ │ │ - 0x00d47900 6974696f 6e3b200a 2020756e 69666f72 ition; . unifor │ │ │ │ - 0x00d47910 6d20666c 6f617420 755f6973 4f75746c m float u_isOutl │ │ │ │ - 0x00d47920 696e6550 6173733b 200a2020 756e6966 inePass; . unif │ │ │ │ - 0x00d47930 6f726d20 666c6f61 7420755f 6f706163 orm float u_opac │ │ │ │ - 0x00d47940 6974793b 200a2020 756e6966 6f726d20 ity; . uniform │ │ │ │ - 0x00d47950 666c6f61 7420755f 6c656e67 74683b20 float u_length; │ │ │ │ - 0x00d47960 0a202063 6f6e7374 20666c6f 6174206b . const float k │ │ │ │ - 0x00d47970 53686170 65436f6f 72645363 616c6172 ShapeCoordScalar │ │ │ │ - 0x00d47980 203d2031 3030302e 303b200a 20207665 = 1000.0; . ve │ │ │ │ - 0x00d47990 63342061 70706c79 5069766f 74547261 c4 applyPivotTra │ │ │ │ - 0x00d479a0 6e73666f 726d2876 65633420 7069766f nsform(vec4 pivo │ │ │ │ - 0x00d479b0 742c206d 61743420 7069766f 74547261 t, mat4 pivotTra │ │ │ │ - 0x00d479c0 6e73666f 726d2c20 666c6f61 74207069 nsform, float pi │ │ │ │ - 0x00d479d0 766f7452 65616c5a 29200a20 207b200a votRealZ) . { . │ │ │ │ - 0x00d479e0 20202020 76656334 20747261 6e73666f vec4 transfo │ │ │ │ - 0x00d479f0 726d6564 5069766f 74203d20 7069766f rmedPivot = pivo │ │ │ │ - 0x00d47a00 743b200a 20202020 666c6f61 74207720 t; . float w │ │ │ │ - 0x00d47a10 3d207472 616e7366 6f726d65 64506976 = transformedPiv │ │ │ │ - 0x00d47a20 6f742e77 3b200a20 20202074 72616e73 ot.w; . trans │ │ │ │ - 0x00d47a30 666f726d 65645069 766f742e 78797720 formedPivot.xyw │ │ │ │ - 0x00d47a40 3d202870 69766f74 5472616e 73666f72 = (pivotTransfor │ │ │ │ - 0x00d47a50 6d202a20 76656334 28747261 6e73666f m * vec4(transfo │ │ │ │ - 0x00d47a60 726d6564 5069766f 742e7879 2c207069 rmedPivot.xy, pi │ │ │ │ - 0x00d47a70 766f7452 65616c5a 2c207729 292e7879 votRealZ, w)).xy │ │ │ │ - 0x00d47a80 773b200a 20202020 7472616e 73666f72 w; . transfor │ │ │ │ - 0x00d47a90 6d656450 69766f74 2e7a202a 3d207472 medPivot.z *= tr │ │ │ │ - 0x00d47aa0 616e7366 6f726d65 64506976 6f742e77 ansformedPivot.w │ │ │ │ - 0x00d47ab0 202f2077 3b200a20 20236966 64656620 / w; . #ifdef │ │ │ │ - 0x00d47ac0 56554c4b 414e200a 20202020 7472616e VULKAN . tran │ │ │ │ - 0x00d47ad0 73666f72 6d656450 69766f74 2e79203d sformedPivot.y = │ │ │ │ - 0x00d47ae0 202d7472 616e7366 6f726d65 64506976 -transformedPiv │ │ │ │ - 0x00d47af0 6f742e79 3b200a20 20202074 72616e73 ot.y; . trans │ │ │ │ - 0x00d47b00 666f726d 65645069 766f742e 7a203d20 formedPivot.z = │ │ │ │ - 0x00d47b10 28747261 6e73666f 726d6564 5069766f (transformedPivo │ │ │ │ - 0x00d47b20 742e7a20 202b2074 72616e73 666f726d t.z + transform │ │ │ │ - 0x00d47b30 65645069 766f742e 7729202f 20322e30 edPivot.w) / 2.0 │ │ │ │ - 0x00d47b40 3b200a20 2023656e 64696620 0a202020 ; . #endif . │ │ │ │ - 0x00d47b50 20726574 75726e20 7472616e 73666f72 return transfor │ │ │ │ - 0x00d47b60 6d656450 69766f74 3b200a20 207d200a medPivot; . } . │ │ │ │ - 0x00d47b70 20207665 63342061 70706c79 42696c6c vec4 applyBill │ │ │ │ - 0x00d47b80 626f6172 64506976 6f745472 616e7366 boardPivotTransf │ │ │ │ - 0x00d47b90 6f726d28 76656334 20706976 6f742c20 orm(vec4 pivot, │ │ │ │ - 0x00d47ba0 6d617434 20706976 6f745472 616e7366 mat4 pivotTransf │ │ │ │ - 0x00d47bb0 6f726d2c 20666c6f 61742070 69766f74 orm, float pivot │ │ │ │ - 0x00d47bc0 5265616c 5a2c2076 65633220 6f666673 RealZ, vec2 offs │ │ │ │ - 0x00d47bd0 65742920 0a20207b 200a2020 2020666c et) . { . fl │ │ │ │ - 0x00d47be0 6f617420 6c6f6769 635a203d 20706976 oat logicZ = piv │ │ │ │ - 0x00d47bf0 6f742e7a 202f2070 69766f74 2e773b20 ot.z / pivot.w; │ │ │ │ - 0x00d47c00 0a202020 20766563 34207472 616e7366 . vec4 transf │ │ │ │ - 0x00d47c10 6f726d65 64506976 6f74203d 20706976 ormedPivot = piv │ │ │ │ - 0x00d47c20 6f745472 616e7366 6f726d20 2a207665 otTransform * ve │ │ │ │ - 0x00d47c30 63342870 69766f74 2e78792c 20706976 c4(pivot.xy, piv │ │ │ │ - 0x00d47c40 6f745265 616c5a2c 20706976 6f742e77 otRealZ, pivot.w │ │ │ │ - 0x00d47c50 293b200a 20202020 76656334 20736361 ); . vec4 sca │ │ │ │ - 0x00d47c60 6c65203d 20706976 6f745472 616e7366 le = pivotTransf │ │ │ │ - 0x00d47c70 6f726d20 2a207665 63342831 2e302c20 orm * vec4(1.0, │ │ │ │ - 0x00d47c80 2d312e30 2c20302e 302c2031 2e30293b -1.0, 0.0, 1.0); │ │ │ │ - 0x00d47c90 200a2020 20207665 63342070 6f736974 . vec4 posit │ │ │ │ - 0x00d47ca0 696f6e20 3d207665 63342874 72616e73 ion = vec4(trans │ │ │ │ - 0x00d47cb0 666f726d 65645069 766f742e 7879202f formedPivot.xy / │ │ │ │ - 0x00d47cc0 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ - 0x00d47cd0 742e772c 206c6f67 69635a2c 20312e30 t.w, logicZ, 1.0 │ │ │ │ - 0x00d47ce0 29202b20 76656334 286f6666 73657420 ) + vec4(offset │ │ │ │ - 0x00d47cf0 2f207363 616c652e 77202a20 7363616c / scale.w * scal │ │ │ │ - 0x00d47d00 652e782c 20302e30 2c20302e 30293b20 e.x, 0.0, 0.0); │ │ │ │ - 0x00d47d10 0a202023 69666465 66205655 4c4b414e . #ifdef VULKAN │ │ │ │ - 0x00d47d20 200a2020 2020706f 73697469 6f6e2e79 . position.y │ │ │ │ - 0x00d47d30 203d202d 706f7369 74696f6e 2e793b20 = -position.y; │ │ │ │ - 0x00d47d40 0a202020 20706f73 6974696f 6e2e7a20 . position.z │ │ │ │ - 0x00d47d50 3d202870 6f736974 696f6e2e 7a20202b = (position.z + │ │ │ │ - 0x00d47d60 20706f73 6974696f 6e2e7729 202f2032 position.w) / 2 │ │ │ │ - 0x00d47d70 2e303b20 0a202023 656e6469 66200a20 .0; . #endif . │ │ │ │ - 0x00d47d80 20202072 65747572 6e20706f 73697469 return positi │ │ │ │ - 0x00d47d90 6f6e3b20 0a20207d 200a2020 76656332 on; . } . vec2 │ │ │ │ - 0x00d47da0 2063616c 634c696e 65547261 6e73666f calcLineTransfo │ │ │ │ - 0x00d47db0 726d6564 41786973 506f7328 76656332 rmedAxisPos(vec2 │ │ │ │ - 0x00d47dc0 206f7269 67696e61 6c417869 73506f73 originalAxisPos │ │ │ │ - 0x00d47dd0 2c207665 63322073 68696674 6564506f , vec2 shiftedPo │ │ │ │ - 0x00d47de0 732c206d 61743420 6d6f6465 6c566965 s, mat4 modelVie │ │ │ │ - 0x00d47df0 772c2066 6c6f6174 2068616c 66576964 w, float halfWid │ │ │ │ - 0x00d47e00 74682920 0a20207b 200a2020 20207665 th) . { . ve │ │ │ │ - 0x00d47e10 63322070 203d2028 76656334 28736869 c2 p = (vec4(shi │ │ │ │ - 0x00d47e20 66746564 506f732c 20302e30 2c20312e ftedPos, 0.0, 1. │ │ │ │ - 0x00d47e30 3029202a 206d6f64 656c5669 6577292e 0) * modelView). │ │ │ │ - 0x00d47e40 78793b20 0a202020 20766563 32206420 xy; . vec2 d │ │ │ │ - 0x00d47e50 3d207020 2d206f72 6967696e 616c4178 = p - originalAx │ │ │ │ - 0x00d47e60 6973506f 733b200a 20202020 69662028 isPos; . if ( │ │ │ │ - 0x00d47e70 646f7428 642c2064 2920213d 20302e30 dot(d, d) != 0.0 │ │ │ │ - 0x00d47e80 29200a20 20202020 20726574 75726e20 ) . return │ │ │ │ - 0x00d47e90 6f726967 696e616c 41786973 506f7320 originalAxisPos │ │ │ │ - 0x00d47ea0 2b206e6f 726d616c 697a6528 6429202a + normalize(d) * │ │ │ │ - 0x00d47eb0 2068616c 66576964 74683b20 0a202020 halfWidth; . │ │ │ │ - 0x00d47ec0 20656c73 65200a20 20202020 20726574 else . ret │ │ │ │ - 0x00d47ed0 75726e20 6f726967 696e616c 41786973 urn originalAxis │ │ │ │ - 0x00d47ee0 506f733b 200a2020 7d200a20 20766f69 Pos; . } . voi │ │ │ │ - 0x00d47ef0 64206d61 696e2829 200a2020 7b200a20 d main() . { . │ │ │ │ - 0x00d47f00 20202067 6c5f506f 73697469 6f6e203d gl_Position = │ │ │ │ - 0x00d47f10 20766563 3428755f 706f7369 74696f6e vec4(u_position │ │ │ │ - 0x00d47f20 202b2061 5f706f73 6974696f 6e202b20 + a_position + │ │ │ │ - 0x00d47f30 755f6c65 6e677468 202a2061 5f6e6f72 u_length * a_nor │ │ │ │ - 0x00d47f40 6d616c2c 20302c20 3129202a 20755f70 mal, 0, 1) * u_p │ │ │ │ - 0x00d47f50 726f6a65 6374696f 6e3b200a 20202369 rojection; . #i │ │ │ │ - 0x00d47f60 66646566 2056554c 4b414e20 0a202020 fdef VULKAN . │ │ │ │ - 0x00d47f70 20676c5f 506f7369 74696f6e 2e79203d gl_Position.y = │ │ │ │ - 0x00d47f80 202d676c 5f506f73 6974696f 6e2e793b -gl_Position.y; │ │ │ │ - 0x00d47f90 200a2020 2020676c 5f506f73 6974696f . gl_Positio │ │ │ │ - 0x00d47fa0 6e2e7a20 3d202867 6c5f506f 73697469 n.z = (gl_Positi │ │ │ │ - 0x00d47fb0 6f6e2e7a 20202b20 676c5f50 6f736974 on.z + gl_Posit │ │ │ │ - 0x00d47fc0 696f6e2e 7729202a 20302e35 3b200a20 ion.w) * 0.5; . │ │ │ │ - 0x00d47fd0 2023656e 64696620 0a202020 20765f63 #endif . v_c │ │ │ │ - 0x00d47fe0 6f6c6f72 54657843 6f6f7264 73203d20 olorTexCoords = │ │ │ │ - 0x00d47ff0 615f636f 6c6f7254 6578436f 6f726473 a_colorTexCoords │ │ │ │ - 0x00d48000 3b200a20 207d200a 00000000 00000000 ; . } ......... │ │ │ │ - 0x00d48010 00000000 00000000 00000000 00000000 ................ │ │ │ │ - 0x00d48020 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d48030 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d48040 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d48050 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d48060 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d48070 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d48080 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d48090 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d480a0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d480b0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d480c0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d480d0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d480e0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d480f0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d48100 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d48110 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d48120 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d48130 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d48140 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d48150 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d48160 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d48170 63322076 5f636f6c 6f725465 78436f6f c2 v_colorTexCoo │ │ │ │ - 0x00d48180 7264733b 200a2020 6f757420 76656334 rds; . out vec4 │ │ │ │ - 0x00d48190 20765f46 72616743 6f6c6f72 3b200a20 v_FragColor; . │ │ │ │ - 0x00d481a0 20756e69 666f726d 20666c6f 61742075 uniform float u │ │ │ │ - 0x00d481b0 5f6f7061 63697479 3b200a20 20756e69 _opacity; . uni │ │ │ │ - 0x00d481c0 666f726d 2073616d 706c6572 32442075 form sampler2D u │ │ │ │ - 0x00d481d0 5f636f6c 6f725465 783b200a 2020636f _colorTex; . co │ │ │ │ - 0x00d481e0 6e737420 666c6f61 74206b53 68617065 nst float kShape │ │ │ │ - 0x00d481f0 436f6f72 64536361 6c617220 3d203130 CoordScalar = 10 │ │ │ │ - 0x00d48200 30302e30 3b200a20 20766f69 64206d61 00.0; . void ma │ │ │ │ - 0x00d48210 696e2829 200a2020 7b200a20 20202076 in() . { . v │ │ │ │ - 0x00d48220 65633420 66696e61 6c436f6c 6f72203d ec4 finalColor = │ │ │ │ - 0x00d48230 20746578 74757265 28755f63 6f6c6f72 texture(u_color │ │ │ │ - 0x00d48240 5465782c 20765f63 6f6c6f72 54657843 Tex, v_colorTexC │ │ │ │ - 0x00d48250 6f6f7264 73293b20 0a202020 2066696e oords); . fin │ │ │ │ - 0x00d48260 616c436f 6c6f722e 61202a3d 20755f6f alColor.a *= u_o │ │ │ │ - 0x00d48270 70616369 74793b20 0a202020 20765f46 pacity; . v_F │ │ │ │ - 0x00d48280 72616743 6f6c6f72 203d2066 696e616c ragColor = final │ │ │ │ - 0x00d48290 436f6c6f 723b200a 20207d20 0a000000 Color; . } .... │ │ │ │ - 0x00d482a0 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d482b0 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d482c0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d482d0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d482e0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d482f0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d48300 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d48310 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d48320 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d48330 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d48340 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d48350 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d48360 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d48370 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d48380 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d48390 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d483a0 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d483b0 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d483c0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d483d0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d483e0 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d483f0 63322061 5f706f73 3b200a20 20696e20 c2 a_pos; . in │ │ │ │ - 0x00d48400 76656332 20615f74 636f6f72 643b200a vec2 a_tcoord; . │ │ │ │ - 0x00d48410 20206f75 74207665 63322076 5f636f6c out vec2 v_col │ │ │ │ - 0x00d48420 6f725465 78436f6f 7264733b 200a2020 orTexCoords; . │ │ │ │ - 0x00d48430 636f6e73 7420666c 6f617420 6b536861 const float kSha │ │ │ │ - 0x00d48440 7065436f 6f726453 63616c61 72203d20 peCoordScalar = │ │ │ │ - 0x00d48450 31303030 2e303b20 0a202076 65633420 1000.0; . vec4 │ │ │ │ - 0x00d48460 6170706c 79506976 6f745472 616e7366 applyPivotTransf │ │ │ │ - 0x00d48470 6f726d28 76656334 20706976 6f742c20 orm(vec4 pivot, │ │ │ │ - 0x00d48480 6d617434 20706976 6f745472 616e7366 mat4 pivotTransf │ │ │ │ - 0x00d48490 6f726d2c 20666c6f 61742070 69766f74 orm, float pivot │ │ │ │ - 0x00d484a0 5265616c 5a29200a 20207b20 0a202020 RealZ) . { . │ │ │ │ - 0x00d484b0 20766563 34207472 616e7366 6f726d65 vec4 transforme │ │ │ │ - 0x00d484c0 64506976 6f74203d 20706976 6f743b20 dPivot = pivot; │ │ │ │ - 0x00d484d0 0a202020 20666c6f 61742077 203d2074 . float w = t │ │ │ │ - 0x00d484e0 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ - 0x00d484f0 773b200a 20202020 7472616e 73666f72 w; . transfor │ │ │ │ - 0x00d48500 6d656450 69766f74 2e787977 203d2028 medPivot.xyw = ( │ │ │ │ - 0x00d48510 7069766f 74547261 6e73666f 726d202a pivotTransform * │ │ │ │ - 0x00d48520 20766563 34287472 616e7366 6f726d65 vec4(transforme │ │ │ │ - 0x00d48530 64506976 6f742e78 792c2070 69766f74 dPivot.xy, pivot │ │ │ │ - 0x00d48540 5265616c 5a2c2077 29292e78 79773b20 RealZ, w)).xyw; │ │ │ │ - 0x00d48550 0a202020 20747261 6e73666f 726d6564 . transformed │ │ │ │ - 0x00d48560 5069766f 742e7a20 2a3d2074 72616e73 Pivot.z *= trans │ │ │ │ - 0x00d48570 666f726d 65645069 766f742e 77202f20 formedPivot.w / │ │ │ │ - 0x00d48580 773b200a 20202369 66646566 2056554c w; . #ifdef VUL │ │ │ │ - 0x00d48590 4b414e20 0a202020 20747261 6e73666f KAN . transfo │ │ │ │ - 0x00d485a0 726d6564 5069766f 742e7920 3d202d74 rmedPivot.y = -t │ │ │ │ - 0x00d485b0 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ - 0x00d485c0 793b200a 20202020 7472616e 73666f72 y; . transfor │ │ │ │ - 0x00d485d0 6d656450 69766f74 2e7a203d 20287472 medPivot.z = (tr │ │ │ │ - 0x00d485e0 616e7366 6f726d65 64506976 6f742e7a ansformedPivot.z │ │ │ │ - 0x00d485f0 20202b20 7472616e 73666f72 6d656450 + transformedP │ │ │ │ - 0x00d48600 69766f74 2e772920 2f20322e 303b200a ivot.w) / 2.0; . │ │ │ │ - 0x00d48610 20202365 6e646966 200a2020 20207265 #endif . re │ │ │ │ - 0x00d48620 7475726e 20747261 6e73666f 726d6564 turn transformed │ │ │ │ - 0x00d48630 5069766f 743b200a 20207d20 0a202076 Pivot; . } . v │ │ │ │ - 0x00d48640 65633420 6170706c 7942696c 6c626f61 ec4 applyBillboa │ │ │ │ - 0x00d48650 72645069 766f7454 72616e73 666f726d rdPivotTransform │ │ │ │ - 0x00d48660 28766563 34207069 766f742c 206d6174 (vec4 pivot, mat │ │ │ │ - 0x00d48670 34207069 766f7454 72616e73 666f726d 4 pivotTransform │ │ │ │ - 0x00d48680 2c20666c 6f617420 7069766f 74526561 , float pivotRea │ │ │ │ - 0x00d48690 6c5a2c20 76656332 206f6666 73657429 lZ, vec2 offset) │ │ │ │ - 0x00d486a0 200a2020 7b200a20 20202066 6c6f6174 . { . float │ │ │ │ - 0x00d486b0 206c6f67 69635a20 3d207069 766f742e logicZ = pivot. │ │ │ │ - 0x00d486c0 7a202f20 7069766f 742e773b 200a2020 z / pivot.w; . │ │ │ │ - 0x00d486d0 20207665 63342074 72616e73 666f726d vec4 transform │ │ │ │ - 0x00d486e0 65645069 766f7420 3d207069 766f7454 edPivot = pivotT │ │ │ │ - 0x00d486f0 72616e73 666f726d 202a2076 65633428 ransform * vec4( │ │ │ │ - 0x00d48700 7069766f 742e7879 2c207069 766f7452 pivot.xy, pivotR │ │ │ │ - 0x00d48710 65616c5a 2c207069 766f742e 77293b20 ealZ, pivot.w); │ │ │ │ - 0x00d48720 0a202020 20766563 34207363 616c6520 . vec4 scale │ │ │ │ - 0x00d48730 3d207069 766f7454 72616e73 666f726d = pivotTransform │ │ │ │ - 0x00d48740 202a2076 65633428 312e302c 202d312e * vec4(1.0, -1. │ │ │ │ - 0x00d48750 302c2030 2e302c20 312e3029 3b200a20 0, 0.0, 1.0); . │ │ │ │ - 0x00d48760 20202076 65633420 706f7369 74696f6e vec4 position │ │ │ │ - 0x00d48770 203d2076 65633428 7472616e 73666f72 = vec4(transfor │ │ │ │ - 0x00d48780 6d656450 69766f74 2e787920 2f207472 medPivot.xy / tr │ │ │ │ - 0x00d48790 616e7366 6f726d65 64506976 6f742e77 ansformedPivot.w │ │ │ │ - 0x00d487a0 2c206c6f 6769635a 2c20312e 3029202b , logicZ, 1.0) + │ │ │ │ - 0x00d487b0 20766563 34286f66 66736574 202f2073 vec4(offset / s │ │ │ │ - 0x00d487c0 63616c65 2e77202a 20736361 6c652e78 cale.w * scale.x │ │ │ │ - 0x00d487d0 2c20302e 302c2030 2e30293b 200a2020 , 0.0, 0.0); . │ │ │ │ - 0x00d487e0 23696664 65662056 554c4b41 4e200a20 #ifdef VULKAN . │ │ │ │ - 0x00d487f0 20202070 6f736974 696f6e2e 79203d20 position.y = │ │ │ │ - 0x00d48800 2d706f73 6974696f 6e2e793b 200a2020 -position.y; . │ │ │ │ - 0x00d48810 2020706f 73697469 6f6e2e7a 203d2028 position.z = ( │ │ │ │ - 0x00d48820 706f7369 74696f6e 2e7a2020 2b20706f position.z + po │ │ │ │ - 0x00d48830 73697469 6f6e2e77 29202f20 322e303b sition.w) / 2.0; │ │ │ │ - 0x00d48840 200a2020 23656e64 6966200a 20202020 . #endif . │ │ │ │ - 0x00d48850 72657475 726e2070 6f736974 696f6e3b return position; │ │ │ │ - 0x00d48860 200a2020 7d200a20 20766563 32206361 . } . vec2 ca │ │ │ │ - 0x00d48870 6c634c69 6e655472 616e7366 6f726d65 lcLineTransforme │ │ │ │ - 0x00d48880 64417869 73506f73 28766563 32206f72 dAxisPos(vec2 or │ │ │ │ - 0x00d48890 6967696e 616c4178 6973506f 732c2076 iginalAxisPos, v │ │ │ │ - 0x00d488a0 65633220 73686966 74656450 6f732c20 ec2 shiftedPos, │ │ │ │ - 0x00d488b0 6d617434 206d6f64 656c5669 65772c20 mat4 modelView, │ │ │ │ - 0x00d488c0 666c6f61 74206861 6c665769 64746829 float halfWidth) │ │ │ │ - 0x00d488d0 200a2020 7b200a20 20202076 65633220 . { . vec2 │ │ │ │ - 0x00d488e0 70203d20 28766563 34287368 69667465 p = (vec4(shifte │ │ │ │ - 0x00d488f0 64506f73 2c20302e 302c2031 2e302920 dPos, 0.0, 1.0) │ │ │ │ - 0x00d48900 2a206d6f 64656c56 69657729 2e78793b * modelView).xy; │ │ │ │ - 0x00d48910 200a2020 20207665 63322064 203d2070 . vec2 d = p │ │ │ │ - 0x00d48920 202d206f 72696769 6e616c41 78697350 - originalAxisP │ │ │ │ - 0x00d48930 6f733b20 0a202020 20696620 28646f74 os; . if (dot │ │ │ │ - 0x00d48940 28642c20 64292021 3d20302e 3029200a (d, d) != 0.0) . │ │ │ │ - 0x00d48950 20202020 20207265 7475726e 206f7269 return ori │ │ │ │ - 0x00d48960 67696e61 6c417869 73506f73 202b206e ginalAxisPos + n │ │ │ │ - 0x00d48970 6f726d61 6c697a65 28642920 2a206861 ormalize(d) * ha │ │ │ │ - 0x00d48980 6c665769 6474683b 200a2020 2020656c lfWidth; . el │ │ │ │ - 0x00d48990 7365200a 20202020 20207265 7475726e se . return │ │ │ │ - 0x00d489a0 206f7269 67696e61 6c417869 73506f73 originalAxisPos │ │ │ │ - 0x00d489b0 3b200a20 207d200a 2020766f 6964206d ; . } . void m │ │ │ │ - 0x00d489c0 61696e28 29200a20 207b200a 20202020 ain() . { . │ │ │ │ - 0x00d489d0 765f636f 6c6f7254 6578436f 6f726473 v_colorTexCoords │ │ │ │ - 0x00d489e0 203d2061 5f74636f 6f72643b 200a2020 = a_tcoord; . │ │ │ │ - 0x00d489f0 2020676c 5f506f73 6974696f 6e203d20 gl_Position = │ │ │ │ - 0x00d48a00 76656334 28615f70 6f732c20 302e302c vec4(a_pos, 0.0, │ │ │ │ - 0x00d48a10 20312e30 293b200a 20207d20 0a000000 1.0); . } .... │ │ │ │ - 0x00d48a20 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d48a30 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d48a40 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d48a50 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d48a60 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d48a70 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d48a80 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d48a90 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d48aa0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d48ab0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d48ac0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d48ad0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d48ae0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d48af0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d48b00 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d48b10 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d48b20 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d48b30 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d48b40 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d48b50 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d48b60 2023656e 64696620 0a202023 69666465 #endif . #ifde │ │ │ │ - 0x00d48b70 6620454e 41424c45 5f565446 200a2020 f ENABLE_VTF . │ │ │ │ - 0x00d48b80 696e204c 4f575f50 20766563 3420765f in LOW_P vec4 v_ │ │ │ │ - 0x00d48b90 636f6c6f 723b200a 20202365 6c736520 color; . #else │ │ │ │ - 0x00d48ba0 0a202069 6e207665 63322076 5f636f6c . in vec2 v_col │ │ │ │ - 0x00d48bb0 6f725465 78436f6f 72643b20 0a202075 orTexCoord; . u │ │ │ │ - 0x00d48bc0 6e69666f 726d2073 616d706c 65723244 niform sampler2D │ │ │ │ - 0x00d48bd0 20755f63 6f6c6f72 5465783b 200a2020 u_colorTex; . │ │ │ │ - 0x00d48be0 23656e64 6966200a 2020696e 20666c6f #endif . in flo │ │ │ │ - 0x00d48bf0 61742076 5f6c656e 67746859 3b200a20 at v_lengthY; . │ │ │ │ - 0x00d48c00 206f7574 20766563 3420765f 46726167 out vec4 v_Frag │ │ │ │ - 0x00d48c10 436f6c6f 723b200a 2020756e 69666f72 Color; . unifor │ │ │ │ - 0x00d48c20 6d206d61 74342075 5f6d6f64 656c5669 m mat4 u_modelVi │ │ │ │ - 0x00d48c30 65773b20 0a202075 6e69666f 726d206d ew; . uniform m │ │ │ │ - 0x00d48c40 61743420 755f7072 6f6a6563 74696f6e at4 u_projection │ │ │ │ - 0x00d48c50 3b200a20 20756e69 666f726d 206d6174 ; . uniform mat │ │ │ │ - 0x00d48c60 3420755f 7069766f 74547261 6e73666f 4 u_pivotTransfo │ │ │ │ - 0x00d48c70 726d3b20 0a202075 6e69666f 726d2076 rm; . uniform v │ │ │ │ - 0x00d48c80 65633420 755f706f 73697469 6f6e3b20 ec4 u_position; │ │ │ │ - 0x00d48c90 0a202075 6e69666f 726d2076 65633220 . uniform vec2 │ │ │ │ - 0x00d48ca0 755f6c69 6e655061 72616d73 3b200a20 u_lineParams; . │ │ │ │ - 0x00d48cb0 20756e69 666f726d 20666c6f 61742075 uniform float u │ │ │ │ - 0x00d48cc0 5f616363 75726163 793b200a 2020756e _accuracy; . un │ │ │ │ - 0x00d48cd0 69666f72 6d20666c 6f617420 755f7a53 iform float u_zS │ │ │ │ - 0x00d48ce0 63616c65 3b200a20 20756e69 666f726d cale; . uniform │ │ │ │ - 0x00d48cf0 20666c6f 61742075 5f6f7061 63697479 float u_opacity │ │ │ │ - 0x00d48d00 3b200a20 20756e69 666f726d 20666c6f ; . uniform flo │ │ │ │ - 0x00d48d10 61742075 5f617a69 6d75743b 200a2020 at u_azimut; . │ │ │ │ - 0x00d48d20 636f6e73 7420666c 6f617420 6b416e74 const float kAnt │ │ │ │ - 0x00d48d30 69616c69 6173696e 67546872 6573686f ialiasingThresho │ │ │ │ - 0x00d48d40 6c64203d 20302e39 323b200a 2020636f ld = 0.92; . co │ │ │ │ - 0x00d48d50 6e737420 666c6f61 74206b53 68617065 nst float kShape │ │ │ │ - 0x00d48d60 436f6f72 64536361 6c617220 3d203130 CoordScalar = 10 │ │ │ │ - 0x00d48d70 30302e30 3b200a20 20766f69 64206d61 00.0; . void ma │ │ │ │ - 0x00d48d80 696e2829 200a2020 7b200a20 20236966 in() . { . #if │ │ │ │ - 0x00d48d90 64656620 454e4142 4c455f56 5446200a def ENABLE_VTF . │ │ │ │ - 0x00d48da0 20202020 4c4f575f 50207665 63342063 LOW_P vec4 c │ │ │ │ - 0x00d48db0 6f6c6f72 203d2076 5f636f6c 6f723b20 olor = v_color; │ │ │ │ - 0x00d48dc0 0a202023 656c7365 200a2020 20204c4f . #else . LO │ │ │ │ - 0x00d48dd0 575f5020 76656334 20636f6c 6f72203d W_P vec4 color = │ │ │ │ - 0x00d48de0 20746578 74757265 28755f63 6f6c6f72 texture(u_color │ │ │ │ - 0x00d48df0 5465782c 20765f63 6f6c6f72 54657843 Tex, v_colorTexC │ │ │ │ - 0x00d48e00 6f6f7264 293b200a 20202365 6e646966 oord); . #endif │ │ │ │ - 0x00d48e10 200a2020 2020636f 6c6f722e 61202a3d . color.a *= │ │ │ │ - 0x00d48e20 20755f6f 70616369 74793b20 0a202020 u_opacity; . │ │ │ │ - 0x00d48e30 20636f6c 6f722e61 202a3d20 28312e30 color.a *= (1.0 │ │ │ │ - 0x00d48e40 202d2073 6d6f6f74 68737465 70286b41 - smoothstep(kA │ │ │ │ - 0x00d48e50 6e746961 6c696173 696e6754 68726573 ntialiasingThres │ │ │ │ - 0x00d48e60 686f6c64 2c20312e 302c2061 62732876 hold, 1.0, abs(v │ │ │ │ - 0x00d48e70 5f6c656e 67746859 2929293b 200a2020 _lengthY))); . │ │ │ │ - 0x00d48e80 2020765f 46726167 436f6c6f 72203d20 v_FragColor = │ │ │ │ - 0x00d48e90 636f6c6f 723b200a 20207d20 0a000000 color; . } .... │ │ │ │ - 0x00d48ea0 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d48eb0 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d48ec0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d48ed0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d48ee0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d48ef0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d48f00 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d48f10 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d48f20 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d48f30 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d48f40 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d48f50 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d48f60 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d48f70 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d48f80 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d48f90 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d48fa0 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d48fb0 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d48fc0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d48fd0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d48fe0 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d48ff0 63332061 5f706f73 6974696f 6e3b200a c3 a_position; . │ │ │ │ - 0x00d49000 2020696e 20766563 3220615f 6e6f726d in vec2 a_norm │ │ │ │ - 0x00d49010 616c3b20 0a202069 6e207665 63322061 al; . in vec2 a │ │ │ │ - 0x00d49020 5f636f6c 6f725465 78436f6f 7264733b _colorTexCoords; │ │ │ │ - 0x00d49030 200a2020 696e2076 65633320 615f6c65 . in vec3 a_le │ │ │ │ - 0x00d49040 6e677468 3b200a20 20236966 64656620 ngth; . #ifdef │ │ │ │ - 0x00d49050 454e4142 4c455f56 5446200a 20206f75 ENABLE_VTF . ou │ │ │ │ - 0x00d49060 74204c4f 575f5020 76656334 20765f63 t LOW_P vec4 v_c │ │ │ │ - 0x00d49070 6f6c6f72 3b200a20 2023656c 7365200a olor; . #else . │ │ │ │ - 0x00d49080 20206f75 74207665 63322076 5f636f6c out vec2 v_col │ │ │ │ - 0x00d49090 6f725465 78436f6f 72643b20 0a202023 orTexCoord; . # │ │ │ │ - 0x00d490a0 656e6469 66200a20 206f7574 20666c6f endif . out flo │ │ │ │ - 0x00d490b0 61742076 5f6c656e 67746859 3b200a20 at v_lengthY; . │ │ │ │ - 0x00d490c0 20756e69 666f726d 206d6174 3420755f uniform mat4 u_ │ │ │ │ - 0x00d490d0 6d6f6465 6c566965 773b200a 2020756e modelView; . un │ │ │ │ - 0x00d490e0 69666f72 6d206d61 74342075 5f70726f iform mat4 u_pro │ │ │ │ - 0x00d490f0 6a656374 696f6e3b 200a2020 756e6966 jection; . unif │ │ │ │ - 0x00d49100 6f726d20 6d617434 20755f70 69766f74 orm mat4 u_pivot │ │ │ │ - 0x00d49110 5472616e 73666f72 6d3b200a 2020756e Transform; . un │ │ │ │ - 0x00d49120 69666f72 6d207665 63342075 5f706f73 iform vec4 u_pos │ │ │ │ - 0x00d49130 6974696f 6e3b200a 2020756e 69666f72 ition; . unifor │ │ │ │ - 0x00d49140 6d207665 63322075 5f6c696e 65506172 m vec2 u_linePar │ │ │ │ - 0x00d49150 616d733b 200a2020 756e6966 6f726d20 ams; . uniform │ │ │ │ - 0x00d49160 666c6f61 7420755f 61636375 72616379 float u_accuracy │ │ │ │ - 0x00d49170 3b200a20 20756e69 666f726d 20666c6f ; . uniform flo │ │ │ │ - 0x00d49180 61742075 5f7a5363 616c653b 200a2020 at u_zScale; . │ │ │ │ - 0x00d49190 756e6966 6f726d20 666c6f61 7420755f uniform float u_ │ │ │ │ - 0x00d491a0 6f706163 6974793b 200a2020 756e6966 opacity; . unif │ │ │ │ - 0x00d491b0 6f726d20 666c6f61 7420755f 617a696d orm float u_azim │ │ │ │ - 0x00d491c0 75743b20 0a202023 69666465 6620454e ut; . #ifdef EN │ │ │ │ - 0x00d491d0 41424c45 5f565446 200a2020 756e6966 ABLE_VTF . unif │ │ │ │ - 0x00d491e0 6f726d20 73616d70 6c657232 4420755f orm sampler2D u_ │ │ │ │ - 0x00d491f0 636f6c6f 72546578 3b200a20 2023656e colorTex; . #en │ │ │ │ - 0x00d49200 64696620 0a202063 6f6e7374 20666c6f dif . const flo │ │ │ │ - 0x00d49210 6174206b 416e7469 616c6961 73696e67 at kAntialiasing │ │ │ │ - 0x00d49220 54687265 73686f6c 64203d20 302e3932 Threshold = 0.92 │ │ │ │ - 0x00d49230 3b200a20 20636f6e 73742066 6c6f6174 ; . const float │ │ │ │ - 0x00d49240 206b5368 61706543 6f6f7264 5363616c kShapeCoordScal │ │ │ │ - 0x00d49250 6172203d 20313030 302e303b 200a2020 ar = 1000.0; . │ │ │ │ - 0x00d49260 76656334 20617070 6c795069 766f7454 vec4 applyPivotT │ │ │ │ - 0x00d49270 72616e73 666f726d 28766563 34207069 ransform(vec4 pi │ │ │ │ - 0x00d49280 766f742c 206d6174 34207069 766f7454 vot, mat4 pivotT │ │ │ │ - 0x00d49290 72616e73 666f726d 2c20666c 6f617420 ransform, float │ │ │ │ - 0x00d492a0 7069766f 74526561 6c5a2920 0a20207b pivotRealZ) . { │ │ │ │ - 0x00d492b0 200a2020 20207665 63342074 72616e73 . vec4 trans │ │ │ │ - 0x00d492c0 666f726d 65645069 766f7420 3d207069 formedPivot = pi │ │ │ │ - 0x00d492d0 766f743b 200a2020 2020666c 6f617420 vot; . float │ │ │ │ - 0x00d492e0 77203d20 7472616e 73666f72 6d656450 w = transformedP │ │ │ │ - 0x00d492f0 69766f74 2e773b20 0a202020 20747261 ivot.w; . tra │ │ │ │ - 0x00d49300 6e73666f 726d6564 5069766f 742e7879 nsformedPivot.xy │ │ │ │ - 0x00d49310 77203d20 28706976 6f745472 616e7366 w = (pivotTransf │ │ │ │ - 0x00d49320 6f726d20 2a207665 63342874 72616e73 orm * vec4(trans │ │ │ │ - 0x00d49330 666f726d 65645069 766f742e 78792c20 formedPivot.xy, │ │ │ │ - 0x00d49340 7069766f 74526561 6c5a2c20 7729292e pivotRealZ, w)). │ │ │ │ - 0x00d49350 7879773b 200a2020 20207472 616e7366 xyw; . transf │ │ │ │ - 0x00d49360 6f726d65 64506976 6f742e7a 202a3d20 ormedPivot.z *= │ │ │ │ - 0x00d49370 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ - 0x00d49380 2e77202f 20773b20 0a202023 69666465 .w / w; . #ifde │ │ │ │ - 0x00d49390 66205655 4c4b414e 200a2020 20207472 f VULKAN . tr │ │ │ │ - 0x00d493a0 616e7366 6f726d65 64506976 6f742e79 ansformedPivot.y │ │ │ │ - 0x00d493b0 203d202d 7472616e 73666f72 6d656450 = -transformedP │ │ │ │ - 0x00d493c0 69766f74 2e793b20 0a202020 20747261 ivot.y; . tra │ │ │ │ - 0x00d493d0 6e73666f 726d6564 5069766f 742e7a20 nsformedPivot.z │ │ │ │ - 0x00d493e0 3d202874 72616e73 666f726d 65645069 = (transformedPi │ │ │ │ - 0x00d493f0 766f742e 7a20202b 20747261 6e73666f vot.z + transfo │ │ │ │ - 0x00d49400 726d6564 5069766f 742e7729 202f2032 rmedPivot.w) / 2 │ │ │ │ - 0x00d49410 2e303b20 0a202023 656e6469 66200a20 .0; . #endif . │ │ │ │ - 0x00d49420 20202072 65747572 6e207472 616e7366 return transf │ │ │ │ - 0x00d49430 6f726d65 64506976 6f743b20 0a20207d ormedPivot; . } │ │ │ │ - 0x00d49440 200a2020 76656334 20617070 6c794269 . vec4 applyBi │ │ │ │ - 0x00d49450 6c6c626f 61726450 69766f74 5472616e llboardPivotTran │ │ │ │ - 0x00d49460 73666f72 6d287665 63342070 69766f74 sform(vec4 pivot │ │ │ │ - 0x00d49470 2c206d61 74342070 69766f74 5472616e , mat4 pivotTran │ │ │ │ - 0x00d49480 73666f72 6d2c2066 6c6f6174 20706976 sform, float piv │ │ │ │ - 0x00d49490 6f745265 616c5a2c 20766563 32206f66 otRealZ, vec2 of │ │ │ │ - 0x00d494a0 66736574 29200a20 207b200a 20202020 fset) . { . │ │ │ │ - 0x00d494b0 666c6f61 74206c6f 6769635a 203d2070 float logicZ = p │ │ │ │ - 0x00d494c0 69766f74 2e7a202f 20706976 6f742e77 ivot.z / pivot.w │ │ │ │ - 0x00d494d0 3b200a20 20202076 65633420 7472616e ; . vec4 tran │ │ │ │ - 0x00d494e0 73666f72 6d656450 69766f74 203d2070 sformedPivot = p │ │ │ │ - 0x00d494f0 69766f74 5472616e 73666f72 6d202a20 ivotTransform * │ │ │ │ - 0x00d49500 76656334 28706976 6f742e78 792c2070 vec4(pivot.xy, p │ │ │ │ - 0x00d49510 69766f74 5265616c 5a2c2070 69766f74 ivotRealZ, pivot │ │ │ │ - 0x00d49520 2e77293b 200a2020 20207665 63342073 .w); . vec4 s │ │ │ │ - 0x00d49530 63616c65 203d2070 69766f74 5472616e cale = pivotTran │ │ │ │ - 0x00d49540 73666f72 6d202a20 76656334 28312e30 sform * vec4(1.0 │ │ │ │ - 0x00d49550 2c202d31 2e302c20 302e302c 20312e30 , -1.0, 0.0, 1.0 │ │ │ │ - 0x00d49560 293b200a 20202020 76656334 20706f73 ); . vec4 pos │ │ │ │ - 0x00d49570 6974696f 6e203d20 76656334 28747261 ition = vec4(tra │ │ │ │ - 0x00d49580 6e73666f 726d6564 5069766f 742e7879 nsformedPivot.xy │ │ │ │ - 0x00d49590 202f2074 72616e73 666f726d 65645069 / transformedPi │ │ │ │ - 0x00d495a0 766f742e 772c206c 6f676963 5a2c2031 vot.w, logicZ, 1 │ │ │ │ - 0x00d495b0 2e302920 2b207665 6334286f 66667365 .0) + vec4(offse │ │ │ │ - 0x00d495c0 74202f20 7363616c 652e7720 2a207363 t / scale.w * sc │ │ │ │ - 0x00d495d0 616c652e 782c2030 2e302c20 302e3029 ale.x, 0.0, 0.0) │ │ │ │ - 0x00d495e0 3b200a20 20236966 64656620 56554c4b ; . #ifdef VULK │ │ │ │ - 0x00d495f0 414e200a 20202020 706f7369 74696f6e AN . position │ │ │ │ - 0x00d49600 2e79203d 202d706f 73697469 6f6e2e79 .y = -position.y │ │ │ │ - 0x00d49610 3b200a20 20202070 6f736974 696f6e2e ; . position. │ │ │ │ - 0x00d49620 7a203d20 28706f73 6974696f 6e2e7a20 z = (position.z │ │ │ │ - 0x00d49630 202b2070 6f736974 696f6e2e 7729202f + position.w) / │ │ │ │ - 0x00d49640 20322e30 3b200a20 2023656e 64696620 2.0; . #endif │ │ │ │ - 0x00d49650 0a202020 20726574 75726e20 706f7369 . return posi │ │ │ │ - 0x00d49660 74696f6e 3b200a20 207d200a 20207665 tion; . } . ve │ │ │ │ - 0x00d49670 63322063 616c634c 696e6554 72616e73 c2 calcLineTrans │ │ │ │ - 0x00d49680 666f726d 65644178 6973506f 73287665 formedAxisPos(ve │ │ │ │ - 0x00d49690 6332206f 72696769 6e616c41 78697350 c2 originalAxisP │ │ │ │ - 0x00d496a0 6f732c20 76656332 20736869 66746564 os, vec2 shifted │ │ │ │ - 0x00d496b0 506f732c 206d6174 34206d6f 64656c56 Pos, mat4 modelV │ │ │ │ - 0x00d496c0 6965772c 20666c6f 61742068 616c6657 iew, float halfW │ │ │ │ - 0x00d496d0 69647468 29200a20 207b200a 20202020 idth) . { . │ │ │ │ - 0x00d496e0 76656332 2070203d 20287665 63342873 vec2 p = (vec4(s │ │ │ │ - 0x00d496f0 68696674 6564506f 732c2030 2e302c20 hiftedPos, 0.0, │ │ │ │ - 0x00d49700 312e3029 202a206d 6f64656c 56696577 1.0) * modelView │ │ │ │ - 0x00d49710 292e7879 3b200a20 20202076 65633220 ).xy; . vec2 │ │ │ │ - 0x00d49720 64203d20 70202d20 6f726967 696e616c d = p - original │ │ │ │ - 0x00d49730 41786973 506f733b 200a2020 20206966 AxisPos; . if │ │ │ │ - 0x00d49740 2028646f 7428642c 20642920 213d2030 (dot(d, d) != 0 │ │ │ │ - 0x00d49750 2e302920 0a202020 20202072 65747572 .0) . retur │ │ │ │ - 0x00d49760 6e206f72 6967696e 616c4178 6973506f n originalAxisPo │ │ │ │ - 0x00d49770 73202b20 6e6f726d 616c697a 65286429 s + normalize(d) │ │ │ │ - 0x00d49780 202a2068 616c6657 69647468 3b200a20 * halfWidth; . │ │ │ │ - 0x00d49790 20202065 6c736520 0a202020 20202072 else . r │ │ │ │ - 0x00d497a0 65747572 6e206f72 6967696e 616c4178 eturn originalAx │ │ │ │ - 0x00d497b0 6973506f 733b200a 20207d20 0a202076 isPos; . } . v │ │ │ │ - 0x00d497c0 6f696420 6d61696e 2829200a 20207b20 oid main() . { │ │ │ │ - 0x00d497d0 0a202020 20766563 32207472 616e7366 . vec2 transf │ │ │ │ - 0x00d497e0 6f726d65 64417869 73506f73 203d2028 ormedAxisPos = ( │ │ │ │ - 0x00d497f0 76656334 28615f70 6f736974 696f6e2e vec4(a_position. │ │ │ │ - 0x00d49800 78792c20 302e302c 20312e30 29202a20 xy, 0.0, 1.0) * │ │ │ │ - 0x00d49810 755f6d6f 64656c56 69657729 2e78793b u_modelView).xy; │ │ │ │ - 0x00d49820 200a2020 20207665 6332206c 656e203d . vec2 len = │ │ │ │ - 0x00d49830 20766563 3228615f 6c656e67 74682e78 vec2(a_length.x │ │ │ │ - 0x00d49840 2c20615f 6c656e67 74682e7a 293b200a , a_length.z); . │ │ │ │ - 0x00d49850 20202020 69662028 646f7428 615f6e6f if (dot(a_no │ │ │ │ - 0x00d49860 726d616c 2c20615f 6e6f726d 616c2920 rmal, a_normal) │ │ │ │ - 0x00d49870 213d2030 2e302920 0a202020 207b200a != 0.0) . { . │ │ │ │ - 0x00d49880 20202020 20207665 6332206e 6f726d20 vec2 norm │ │ │ │ - 0x00d49890 3d20615f 6e6f726d 616c202a 20755f6c = a_normal * u_l │ │ │ │ - 0x00d498a0 696e6550 6172616d 732e783b 200a2020 ineParams.x; . │ │ │ │ - 0x00d498b0 20202020 7472616e 73666f72 6d656441 transformedA │ │ │ │ - 0x00d498c0 78697350 6f73203d 2063616c 634c696e xisPos = calcLin │ │ │ │ - 0x00d498d0 65547261 6e73666f 726d6564 41786973 eTransformedAxis │ │ │ │ - 0x00d498e0 506f7328 7472616e 73666f72 6d656441 Pos(transformedA │ │ │ │ - 0x00d498f0 78697350 6f732c20 615f706f 73697469 xisPos, a_positi │ │ │ │ - 0x00d49900 6f6e2e78 79202b20 6e6f726d 2c200a20 on.xy + norm, . │ │ │ │ + 0x00d41de0 2e78792c 20706976 6f745265 616c5a2c .xy, pivotRealZ, │ │ │ │ + 0x00d41df0 20772929 2e787977 3b200a20 20202074 w)).xyw; . t │ │ │ │ + 0x00d41e00 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ + 0x00d41e10 7a202a3d 20747261 6e73666f 726d6564 z *= transformed │ │ │ │ + 0x00d41e20 5069766f 742e7720 2f20773b 200a2020 Pivot.w / w; . │ │ │ │ + 0x00d41e30 23696664 65662056 554c4b41 4e200a20 #ifdef VULKAN . │ │ │ │ + 0x00d41e40 20202074 72616e73 666f726d 65645069 transformedPi │ │ │ │ + 0x00d41e50 766f742e 79203d20 2d747261 6e73666f vot.y = -transfo │ │ │ │ + 0x00d41e60 726d6564 5069766f 742e793b 200a2020 rmedPivot.y; . │ │ │ │ + 0x00d41e70 20207472 616e7366 6f726d65 64506976 transformedPiv │ │ │ │ + 0x00d41e80 6f742e7a 203d2028 7472616e 73666f72 ot.z = (transfor │ │ │ │ + 0x00d41e90 6d656450 69766f74 2e7a2020 2b207472 medPivot.z + tr │ │ │ │ + 0x00d41ea0 616e7366 6f726d65 64506976 6f742e77 ansformedPivot.w │ │ │ │ + 0x00d41eb0 29202f20 322e303b 200a2020 23656e64 ) / 2.0; . #end │ │ │ │ + 0x00d41ec0 6966200a 20202020 72657475 726e2074 if . return t │ │ │ │ + 0x00d41ed0 72616e73 666f726d 65645069 766f743b ransformedPivot; │ │ │ │ + 0x00d41ee0 200a2020 7d200a20 20766563 34206170 . } . vec4 ap │ │ │ │ + 0x00d41ef0 706c7942 696c6c62 6f617264 5069766f plyBillboardPivo │ │ │ │ + 0x00d41f00 74547261 6e73666f 726d2876 65633420 tTransform(vec4 │ │ │ │ + 0x00d41f10 7069766f 742c206d 61743420 7069766f pivot, mat4 pivo │ │ │ │ + 0x00d41f20 74547261 6e73666f 726d2c20 666c6f61 tTransform, floa │ │ │ │ + 0x00d41f30 74207069 766f7452 65616c5a 2c207665 t pivotRealZ, ve │ │ │ │ + 0x00d41f40 6332206f 66667365 7429200a 20207b20 c2 offset) . { │ │ │ │ + 0x00d41f50 0a202020 20666c6f 6174206c 6f676963 . float logic │ │ │ │ + 0x00d41f60 5a203d20 7069766f 742e7a20 2f207069 Z = pivot.z / pi │ │ │ │ + 0x00d41f70 766f742e 773b200a 20202020 76656334 vot.w; . vec4 │ │ │ │ + 0x00d41f80 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ + 0x00d41f90 74203d20 7069766f 74547261 6e73666f t = pivotTransfo │ │ │ │ + 0x00d41fa0 726d202a 20766563 34287069 766f742e rm * vec4(pivot. │ │ │ │ + 0x00d41fb0 78792c20 7069766f 74526561 6c5a2c20 xy, pivotRealZ, │ │ │ │ + 0x00d41fc0 7069766f 742e7729 3b200a20 20202076 pivot.w); . v │ │ │ │ + 0x00d41fd0 65633420 7363616c 65203d20 7069766f ec4 scale = pivo │ │ │ │ + 0x00d41fe0 74547261 6e73666f 726d202a 20766563 tTransform * vec │ │ │ │ + 0x00d41ff0 3428312e 302c202d 312e302c 20302e30 4(1.0, -1.0, 0.0 │ │ │ │ + 0x00d42000 2c20312e 30293b20 0a202020 20766563 , 1.0); . vec │ │ │ │ + 0x00d42010 3420706f 73697469 6f6e203d 20766563 4 position = vec │ │ │ │ + 0x00d42020 34287472 616e7366 6f726d65 64506976 4(transformedPiv │ │ │ │ + 0x00d42030 6f742e78 79202f20 7472616e 73666f72 ot.xy / transfor │ │ │ │ + 0x00d42040 6d656450 69766f74 2e772c20 6c6f6769 medPivot.w, logi │ │ │ │ + 0x00d42050 635a2c20 312e3029 202b2076 65633428 cZ, 1.0) + vec4( │ │ │ │ + 0x00d42060 6f666673 6574202f 20736361 6c652e77 offset / scale.w │ │ │ │ + 0x00d42070 202a2073 63616c65 2e782c20 302e302c * scale.x, 0.0, │ │ │ │ + 0x00d42080 20302e30 293b200a 20202369 66646566 0.0); . #ifdef │ │ │ │ + 0x00d42090 2056554c 4b414e20 0a202020 20706f73 VULKAN . pos │ │ │ │ + 0x00d420a0 6974696f 6e2e7920 3d202d70 6f736974 ition.y = -posit │ │ │ │ + 0x00d420b0 696f6e2e 793b200a 20202020 706f7369 ion.y; . posi │ │ │ │ + 0x00d420c0 74696f6e 2e7a203d 2028706f 73697469 tion.z = (positi │ │ │ │ + 0x00d420d0 6f6e2e7a 20202b20 706f7369 74696f6e on.z + position │ │ │ │ + 0x00d420e0 2e772920 2f20322e 303b200a 20202365 .w) / 2.0; . #e │ │ │ │ + 0x00d420f0 6e646966 200a2020 20207265 7475726e ndif . return │ │ │ │ + 0x00d42100 20706f73 6974696f 6e3b200a 20207d20 position; . } │ │ │ │ + 0x00d42110 0a202076 65633220 63616c63 4c696e65 . vec2 calcLine │ │ │ │ + 0x00d42120 5472616e 73666f72 6d656441 78697350 TransformedAxisP │ │ │ │ + 0x00d42130 6f732876 65633220 6f726967 696e616c os(vec2 original │ │ │ │ + 0x00d42140 41786973 506f732c 20766563 32207368 AxisPos, vec2 sh │ │ │ │ + 0x00d42150 69667465 64506f73 2c206d61 7434206d iftedPos, mat4 m │ │ │ │ + 0x00d42160 6f64656c 56696577 2c20666c 6f617420 odelView, float │ │ │ │ + 0x00d42170 68616c66 57696474 6829200a 20207b20 halfWidth) . { │ │ │ │ + 0x00d42180 0a202020 20766563 32207020 3d202876 . vec2 p = (v │ │ │ │ + 0x00d42190 65633428 73686966 74656450 6f732c20 ec4(shiftedPos, │ │ │ │ + 0x00d421a0 302e302c 20312e30 29202a20 6d6f6465 0.0, 1.0) * mode │ │ │ │ + 0x00d421b0 6c566965 77292e78 793b200a 20202020 lView).xy; . │ │ │ │ + 0x00d421c0 76656332 2064203d 2070202d 206f7269 vec2 d = p - ori │ │ │ │ + 0x00d421d0 67696e61 6c417869 73506f73 3b200a20 ginalAxisPos; . │ │ │ │ + 0x00d421e0 20202069 66202864 6f742864 2c206429 if (dot(d, d) │ │ │ │ + 0x00d421f0 20213d20 302e3029 200a2020 20202020 != 0.0) . │ │ │ │ + 0x00d42200 72657475 726e206f 72696769 6e616c41 return originalA │ │ │ │ + 0x00d42210 78697350 6f73202b 206e6f72 6d616c69 xisPos + normali │ │ │ │ + 0x00d42220 7a652864 29202a20 68616c66 57696474 ze(d) * halfWidt │ │ │ │ + 0x00d42230 683b200a 20202020 656c7365 200a2020 h; . else . │ │ │ │ + 0x00d42240 20202020 72657475 726e206f 72696769 return origi │ │ │ │ + 0x00d42250 6e616c41 78697350 6f733b20 0a20207d nalAxisPos; . } │ │ │ │ + 0x00d42260 200a2020 766f6964 206d6169 6e282920 . void main() │ │ │ │ + 0x00d42270 0a20207b 200a2020 2020765f 636f6f72 . { . v_coor │ │ │ │ + 0x00d42280 6473203d 20766563 3428615f 74636f6f ds = vec4(a_tcoo │ │ │ │ + 0x00d42290 72642c20 615f7463 6f6f7264 202a2075 rd, a_tcoord * u │ │ │ │ + 0x00d422a0 5f667261 6d656275 66666572 4d657472 _framebufferMetr │ │ │ │ + 0x00d422b0 6963732e 7a77293b 200a2020 2020765f ics.zw); . v_ │ │ │ │ + 0x00d422c0 6f666673 65743020 3d20755f 6672616d offset0 = u_fram │ │ │ │ + 0x00d422d0 65627566 6665724d 65747269 63732e78 ebufferMetrics.x │ │ │ │ + 0x00d422e0 79787920 2a207665 6334282d 302e3235 yxy * vec4(-0.25 │ │ │ │ + 0x00d422f0 2c202d30 2e313235 2c20312e 32352c20 , -0.125, 1.25, │ │ │ │ + 0x00d42300 2d302e31 32352920 2b20615f 74636f6f -0.125) + a_tcoo │ │ │ │ + 0x00d42310 72642e78 7978793b 200a2020 2020765f rd.xyxy; . v_ │ │ │ │ + 0x00d42320 6f666673 65743120 3d20755f 6672616d offset1 = u_fram │ │ │ │ + 0x00d42330 65627566 6665724d 65747269 63732e78 ebufferMetrics.x │ │ │ │ + 0x00d42340 79787920 2a207665 6334282d 302e3132 yxy * vec4(-0.12 │ │ │ │ + 0x00d42350 352c202d 302e3235 2c202d30 2e313235 5, -0.25, -0.125 │ │ │ │ + 0x00d42360 2c20312e 32352920 2b20615f 74636f6f , 1.25) + a_tcoo │ │ │ │ + 0x00d42370 72642e78 7978793b 200a2020 2020765f rd.xyxy; . v_ │ │ │ │ + 0x00d42380 6f666673 65743220 3d20755f 6672616d offset2 = u_fram │ │ │ │ + 0x00d42390 65627566 6665724d 65747269 63732e78 ebufferMetrics.x │ │ │ │ + 0x00d423a0 78797920 2a206b4d 61785365 61726368 xyy * kMaxSearch │ │ │ │ + 0x00d423b0 53746570 73202b20 76656334 28765f6f Steps + vec4(v_o │ │ │ │ + 0x00d423c0 66667365 74302e78 7a2c2076 5f6f6666 ffset0.xz, v_off │ │ │ │ + 0x00d423d0 73657431 2e797729 3b200a20 20202067 set1.yw); . g │ │ │ │ + 0x00d423e0 6c5f506f 73697469 6f6e203d 20766563 l_Position = vec │ │ │ │ + 0x00d423f0 3428615f 706f732c 20302e30 2c20312e 4(a_pos, 0.0, 1. │ │ │ │ + 0x00d42400 30293b20 0a20207d 200a0000 00000000 0); . } ....... │ │ │ │ + 0x00d42410 00000000 00000000 00000000 00000000 ................ │ │ │ │ + 0x00d42420 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d42430 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d42440 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d42450 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d42460 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d42470 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d42480 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d42490 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d424a0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d424b0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d424c0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d424d0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d424e0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d424f0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d42500 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d42510 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d42520 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d42530 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d42540 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d42550 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d42560 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d42570 63332061 5f706f73 3b200a20 20696e20 c3 a_pos; . in │ │ │ │ + 0x00d42580 76656332 20615f74 6578436f 6f726473 vec2 a_texCoords │ │ │ │ + 0x00d42590 3b200a20 206f7574 20666c6f 61742076 ; . out float v │ │ │ │ + 0x00d425a0 5f696e74 656e7369 74793b20 0a202075 _intensity; . u │ │ │ │ + 0x00d425b0 6e69666f 726d206d 61743420 755f7472 niform mat4 u_tr │ │ │ │ + 0x00d425c0 616e7366 6f726d3b 200a2020 756e6966 ansform; . unif │ │ │ │ + 0x00d425d0 6f726d20 6d617434 20755f6e 6f726d61 orm mat4 u_norma │ │ │ │ + 0x00d425e0 6c547261 6e73666f 726d3b20 0a202075 lTransform; . u │ │ │ │ + 0x00d425f0 6e69666f 726d2076 65633420 755f636f niform vec4 u_co │ │ │ │ + 0x00d42600 6c6f723b 200a2020 756e6966 6f726d20 lor; . uniform │ │ │ │ + 0x00d42610 76656332 20755f74 6578436f 6f726446 vec2 u_texCoordF │ │ │ │ + 0x00d42620 6c697070 696e673b 200a2020 636f6e73 lipping; . cons │ │ │ │ + 0x00d42630 7420666c 6f617420 6b536861 7065436f t float kShapeCo │ │ │ │ + 0x00d42640 6f726453 63616c61 72203d20 31303030 ordScalar = 1000 │ │ │ │ + 0x00d42650 2e303b20 0a202076 65633420 6170706c .0; . vec4 appl │ │ │ │ + 0x00d42660 79506976 6f745472 616e7366 6f726d28 yPivotTransform( │ │ │ │ + 0x00d42670 76656334 20706976 6f742c20 6d617434 vec4 pivot, mat4 │ │ │ │ + 0x00d42680 20706976 6f745472 616e7366 6f726d2c pivotTransform, │ │ │ │ + 0x00d42690 20666c6f 61742070 69766f74 5265616c float pivotReal │ │ │ │ + 0x00d426a0 5a29200a 20207b20 0a202020 20766563 Z) . { . vec │ │ │ │ + 0x00d426b0 34207472 616e7366 6f726d65 64506976 4 transformedPiv │ │ │ │ + 0x00d426c0 6f74203d 20706976 6f743b20 0a202020 ot = pivot; . │ │ │ │ + 0x00d426d0 20666c6f 61742077 203d2074 72616e73 float w = trans │ │ │ │ + 0x00d426e0 666f726d 65645069 766f742e 773b200a formedPivot.w; . │ │ │ │ + 0x00d426f0 20202020 7472616e 73666f72 6d656450 transformedP │ │ │ │ + 0x00d42700 69766f74 2e787977 203d2028 7069766f ivot.xyw = (pivo │ │ │ │ + 0x00d42710 74547261 6e73666f 726d202a 20766563 tTransform * vec │ │ │ │ + 0x00d42720 34287472 616e7366 6f726d65 64506976 4(transformedPiv │ │ │ │ + 0x00d42730 6f742e78 792c2070 69766f74 5265616c ot.xy, pivotReal │ │ │ │ + 0x00d42740 5a2c2077 29292e78 79773b20 0a202020 Z, w)).xyw; . │ │ │ │ + 0x00d42750 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ + 0x00d42760 742e7a20 2a3d2074 72616e73 666f726d t.z *= transform │ │ │ │ + 0x00d42770 65645069 766f742e 77202f20 773b200a edPivot.w / w; . │ │ │ │ + 0x00d42780 20202369 66646566 2056554c 4b414e20 #ifdef VULKAN │ │ │ │ + 0x00d42790 0a202020 20747261 6e73666f 726d6564 . transformed │ │ │ │ + 0x00d427a0 5069766f 742e7920 3d202d74 72616e73 Pivot.y = -trans │ │ │ │ + 0x00d427b0 666f726d 65645069 766f742e 793b200a formedPivot.y; . │ │ │ │ + 0x00d427c0 20202020 7472616e 73666f72 6d656450 transformedP │ │ │ │ + 0x00d427d0 69766f74 2e7a203d 20287472 616e7366 ivot.z = (transf │ │ │ │ + 0x00d427e0 6f726d65 64506976 6f742e7a 20202b20 ormedPivot.z + │ │ │ │ + 0x00d427f0 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ + 0x00d42800 2e772920 2f20322e 303b200a 20202365 .w) / 2.0; . #e │ │ │ │ + 0x00d42810 6e646966 200a2020 20207265 7475726e ndif . return │ │ │ │ + 0x00d42820 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ + 0x00d42830 743b200a 20207d20 0a202076 65633420 t; . } . vec4 │ │ │ │ + 0x00d42840 6170706c 7942696c 6c626f61 72645069 applyBillboardPi │ │ │ │ + 0x00d42850 766f7454 72616e73 666f726d 28766563 votTransform(vec │ │ │ │ + 0x00d42860 34207069 766f742c 206d6174 34207069 4 pivot, mat4 pi │ │ │ │ + 0x00d42870 766f7454 72616e73 666f726d 2c20666c votTransform, fl │ │ │ │ + 0x00d42880 6f617420 7069766f 74526561 6c5a2c20 oat pivotRealZ, │ │ │ │ + 0x00d42890 76656332 206f6666 73657429 200a2020 vec2 offset) . │ │ │ │ + 0x00d428a0 7b200a20 20202066 6c6f6174 206c6f67 { . float log │ │ │ │ + 0x00d428b0 69635a20 3d207069 766f742e 7a202f20 icZ = pivot.z / │ │ │ │ + 0x00d428c0 7069766f 742e773b 200a2020 20207665 pivot.w; . ve │ │ │ │ + 0x00d428d0 63342074 72616e73 666f726d 65645069 c4 transformedPi │ │ │ │ + 0x00d428e0 766f7420 3d207069 766f7454 72616e73 vot = pivotTrans │ │ │ │ + 0x00d428f0 666f726d 202a2076 65633428 7069766f form * vec4(pivo │ │ │ │ + 0x00d42900 742e7879 2c207069 766f7452 65616c5a t.xy, pivotRealZ │ │ │ │ + 0x00d42910 2c207069 766f742e 77293b20 0a202020 , pivot.w); . │ │ │ │ + 0x00d42920 20766563 34207363 616c6520 3d207069 vec4 scale = pi │ │ │ │ + 0x00d42930 766f7454 72616e73 666f726d 202a2076 votTransform * v │ │ │ │ + 0x00d42940 65633428 312e302c 202d312e 302c2030 ec4(1.0, -1.0, 0 │ │ │ │ + 0x00d42950 2e302c20 312e3029 3b200a20 20202076 .0, 1.0); . v │ │ │ │ + 0x00d42960 65633420 706f7369 74696f6e 203d2076 ec4 position = v │ │ │ │ + 0x00d42970 65633428 7472616e 73666f72 6d656450 ec4(transformedP │ │ │ │ + 0x00d42980 69766f74 2e787920 2f207472 616e7366 ivot.xy / transf │ │ │ │ + 0x00d42990 6f726d65 64506976 6f742e77 2c206c6f ormedPivot.w, lo │ │ │ │ + 0x00d429a0 6769635a 2c20312e 3029202b 20766563 gicZ, 1.0) + vec │ │ │ │ + 0x00d429b0 34286f66 66736574 202f2073 63616c65 4(offset / scale │ │ │ │ + 0x00d429c0 2e77202a 20736361 6c652e78 2c20302e .w * scale.x, 0. │ │ │ │ + 0x00d429d0 302c2030 2e30293b 200a2020 23696664 0, 0.0); . #ifd │ │ │ │ + 0x00d429e0 65662056 554c4b41 4e200a20 20202070 ef VULKAN . p │ │ │ │ + 0x00d429f0 6f736974 696f6e2e 79203d20 2d706f73 osition.y = -pos │ │ │ │ + 0x00d42a00 6974696f 6e2e793b 200a2020 2020706f ition.y; . po │ │ │ │ + 0x00d42a10 73697469 6f6e2e7a 203d2028 706f7369 sition.z = (posi │ │ │ │ + 0x00d42a20 74696f6e 2e7a2020 2b20706f 73697469 tion.z + positi │ │ │ │ + 0x00d42a30 6f6e2e77 29202f20 322e303b 200a2020 on.w) / 2.0; . │ │ │ │ + 0x00d42a40 23656e64 6966200a 20202020 72657475 #endif . retu │ │ │ │ + 0x00d42a50 726e2070 6f736974 696f6e3b 200a2020 rn position; . │ │ │ │ + 0x00d42a60 7d200a20 20766563 32206361 6c634c69 } . vec2 calcLi │ │ │ │ + 0x00d42a70 6e655472 616e7366 6f726d65 64417869 neTransformedAxi │ │ │ │ + 0x00d42a80 73506f73 28766563 32206f72 6967696e sPos(vec2 origin │ │ │ │ + 0x00d42a90 616c4178 6973506f 732c2076 65633220 alAxisPos, vec2 │ │ │ │ + 0x00d42aa0 73686966 74656450 6f732c20 6d617434 shiftedPos, mat4 │ │ │ │ + 0x00d42ab0 206d6f64 656c5669 65772c20 666c6f61 modelView, floa │ │ │ │ + 0x00d42ac0 74206861 6c665769 64746829 200a2020 t halfWidth) . │ │ │ │ + 0x00d42ad0 7b200a20 20202076 65633220 70203d20 { . vec2 p = │ │ │ │ + 0x00d42ae0 28766563 34287368 69667465 64506f73 (vec4(shiftedPos │ │ │ │ + 0x00d42af0 2c20302e 302c2031 2e302920 2a206d6f , 0.0, 1.0) * mo │ │ │ │ + 0x00d42b00 64656c56 69657729 2e78793b 200a2020 delView).xy; . │ │ │ │ + 0x00d42b10 20207665 63322064 203d2070 202d206f vec2 d = p - o │ │ │ │ + 0x00d42b20 72696769 6e616c41 78697350 6f733b20 riginalAxisPos; │ │ │ │ + 0x00d42b30 0a202020 20696620 28646f74 28642c20 . if (dot(d, │ │ │ │ + 0x00d42b40 64292021 3d20302e 3029200a 20202020 d) != 0.0) . │ │ │ │ + 0x00d42b50 20207265 7475726e 206f7269 67696e61 return origina │ │ │ │ + 0x00d42b60 6c417869 73506f73 202b206e 6f726d61 lAxisPos + norma │ │ │ │ + 0x00d42b70 6c697a65 28642920 2a206861 6c665769 lize(d) * halfWi │ │ │ │ + 0x00d42b80 6474683b 200a2020 2020656c 7365200a dth; . else . │ │ │ │ + 0x00d42b90 20202020 20207265 7475726e 206f7269 return ori │ │ │ │ + 0x00d42ba0 67696e61 6c417869 73506f73 3b200a20 ginalAxisPos; . │ │ │ │ + 0x00d42bb0 207d200a 2020766f 6964206d 61696e28 } . void main( │ │ │ │ + 0x00d42bc0 29200a20 207b200a 20202020 76656334 ) . { . vec4 │ │ │ │ + 0x00d42bd0 20706f73 6974696f 6e203d20 755f7472 position = u_tr │ │ │ │ + 0x00d42be0 616e7366 6f726d20 2a207665 63342861 ansform * vec4(a │ │ │ │ + 0x00d42bf0 5f706f73 2c20312e 30293b20 0a202020 _pos, 1.0); . │ │ │ │ + 0x00d42c00 20765f69 6e74656e 73697479 203d2061 v_intensity = a │ │ │ │ + 0x00d42c10 5f746578 436f6f72 64732e78 3b200a20 _texCoords.x; . │ │ │ │ + 0x00d42c20 20202067 6c5f506f 73697469 6f6e203d gl_Position = │ │ │ │ + 0x00d42c30 20706f73 6974696f 6e3b200a 20202369 position; . #i │ │ │ │ + 0x00d42c40 66646566 2056554c 4b414e20 0a202020 fdef VULKAN . │ │ │ │ + 0x00d42c50 20676c5f 506f7369 74696f6e 2e79203d gl_Position.y = │ │ │ │ + 0x00d42c60 202d676c 5f506f73 6974696f 6e2e793b -gl_Position.y; │ │ │ │ + 0x00d42c70 200a2020 2020676c 5f506f73 6974696f . gl_Positio │ │ │ │ + 0x00d42c80 6e2e7a20 3d202867 6c5f506f 73697469 n.z = (gl_Positi │ │ │ │ + 0x00d42c90 6f6e2e7a 202b2067 6c5f506f 73697469 on.z + gl_Positi │ │ │ │ + 0x00d42ca0 6f6e2e77 29202a20 302e353b 200a2020 on.w) * 0.5; . │ │ │ │ + 0x00d42cb0 23656e64 6966200a 20207d20 0a000000 #endif . } .... │ │ │ │ + 0x00d42cc0 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d42cd0 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d42ce0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d42cf0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d42d00 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d42d10 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d42d20 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d42d30 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d42d40 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d42d50 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d42d60 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d42d70 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d42d80 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d42d90 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d42da0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d42db0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d42dc0 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d42dd0 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d42de0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d42df0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d42e00 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d42e10 63342076 5f726164 6975733b 200a2020 c4 v_radius; . │ │ │ │ + 0x00d42e20 696e2076 65633420 765f636f 6c6f723b in vec4 v_color; │ │ │ │ + 0x00d42e30 200a2020 6f757420 76656334 20765f46 . out vec4 v_F │ │ │ │ + 0x00d42e40 72616743 6f6c6f72 3b200a20 20756e69 ragColor; . uni │ │ │ │ + 0x00d42e50 666f726d 206d6174 3420755f 6d6f6465 form mat4 u_mode │ │ │ │ + 0x00d42e60 6c566965 773b200a 2020756e 69666f72 lView; . unifor │ │ │ │ + 0x00d42e70 6d206d61 74342075 5f70726f 6a656374 m mat4 u_project │ │ │ │ + 0x00d42e80 696f6e3b 200a2020 756e6966 6f726d20 ion; . uniform │ │ │ │ + 0x00d42e90 6d617434 20755f70 69766f74 5472616e mat4 u_pivotTran │ │ │ │ + 0x00d42ea0 73666f72 6d3b200a 2020756e 69666f72 sform; . unifor │ │ │ │ + 0x00d42eb0 6d207665 63342075 5f726f75 74655061 m vec4 u_routePa │ │ │ │ + 0x00d42ec0 72616d73 3b200a20 20756e69 666f726d rams; . uniform │ │ │ │ + 0x00d42ed0 20766563 3420755f 636f6c6f 723b200a vec4 u_color; . │ │ │ │ + 0x00d42ee0 2020756e 69666f72 6d207665 63342075 uniform vec4 u │ │ │ │ + 0x00d42ef0 5f6d6173 6b436f6c 6f723b20 0a202075 _maskColor; . u │ │ │ │ + 0x00d42f00 6e69666f 726d2076 65633420 755f6f75 niform vec4 u_ou │ │ │ │ + 0x00d42f10 746c696e 65436f6c 6f723b20 0a202075 tlineColor; . u │ │ │ │ + 0x00d42f20 6e69666f 726d2076 65633420 755f6661 niform vec4 u_fa │ │ │ │ + 0x00d42f30 6b65436f 6c6f723b 200a2020 756e6966 keColor; . unif │ │ │ │ + 0x00d42f40 6f726d20 76656334 20755f66 616b654f orm vec4 u_fakeO │ │ │ │ + 0x00d42f50 75746c69 6e65436f 6c6f723b 200a2020 utlineColor; . │ │ │ │ + 0x00d42f60 756e6966 6f726d20 76656332 20755f66 uniform vec2 u_f │ │ │ │ + 0x00d42f70 616b6542 6f726465 72733b20 0a202075 akeBorders; . u │ │ │ │ + 0x00d42f80 6e69666f 726d2076 65633220 755f7061 niform vec2 u_pa │ │ │ │ + 0x00d42f90 74746572 6e3b200a 2020756e 69666f72 ttern; . unifor │ │ │ │ + 0x00d42fa0 6d207665 63322075 5f616e67 6c65436f m vec2 u_angleCo │ │ │ │ + 0x00d42fb0 7353696e 3b200a20 20756e69 666f726d sSin; . uniform │ │ │ │ + 0x00d42fc0 20666c6f 61742075 5f617272 6f774861 float u_arrowHa │ │ │ │ + 0x00d42fd0 6c665769 6474683b 200a2020 756e6966 lfWidth; . unif │ │ │ │ + 0x00d42fe0 6f726d20 666c6f61 7420755f 6f706163 orm float u_opac │ │ │ │ + 0x00d42ff0 6974793b 200a2020 636f6e73 7420666c ity; . const fl │ │ │ │ + 0x00d43000 6f617420 6b416e74 69616c69 6173696e oat kAntialiasin │ │ │ │ + 0x00d43010 67506978 656c7343 6f756e74 203d2032 gPixelsCount = 2 │ │ │ │ + 0x00d43020 2e353b20 0a202063 6f6e7374 20666c6f .5; . const flo │ │ │ │ + 0x00d43030 6174206b 53686170 65436f6f 72645363 at kShapeCoordSc │ │ │ │ + 0x00d43040 616c6172 203d2031 3030302e 303b200a alar = 1000.0; . │ │ │ │ + 0x00d43050 2020766f 6964206d 61696e28 29200a20 void main() . │ │ │ │ + 0x00d43060 207b200a 20202020 76656334 2066696e { . vec4 fin │ │ │ │ + 0x00d43070 616c436f 6c6f7220 3d20765f 636f6c6f alColor = v_colo │ │ │ │ + 0x00d43080 723b200a 20202020 666c6f61 74206161 r; . float aa │ │ │ │ + 0x00d43090 52616469 7573203d 206d6178 28765f72 Radius = max(v_r │ │ │ │ + 0x00d430a0 61646975 732e7a20 2d206b41 6e746961 adius.z - kAntia │ │ │ │ + 0x00d430b0 6c696173 696e6750 6978656c 73436f75 liasingPixelsCou │ │ │ │ + 0x00d430c0 6e742c20 302e3029 3b200a20 20202066 nt, 0.0); . f │ │ │ │ + 0x00d430d0 6c6f6174 20737465 7056616c 7565203d loat stepValue = │ │ │ │ + 0x00d430e0 20736d6f 6f746873 74657028 61615261 smoothstep(aaRa │ │ │ │ + 0x00d430f0 64697573 202a2061 61526164 6975732c dius * aaRadius, │ │ │ │ + 0x00d43100 20765f72 61646975 732e7a20 2a20765f v_radius.z * v_ │ │ │ │ + 0x00d43110 72616469 75732e7a 2c200a20 20202020 radius.z, . │ │ │ │ + 0x00d43120 20202020 20202020 20202020 20202020 │ │ │ │ + 0x00d43130 20202020 20202020 20202020 646f7428 dot( │ │ │ │ + 0x00d43140 765f7261 64697573 2e78792c 20765f72 v_radius.xy, v_r │ │ │ │ + 0x00d43150 61646975 732e7879 29293b20 0a202020 adius.xy)); . │ │ │ │ + 0x00d43160 2066696e 616c436f 6c6f722e 61203d20 finalColor.a = │ │ │ │ + 0x00d43170 66696e61 6c436f6c 6f722e61 202a2075 finalColor.a * u │ │ │ │ + 0x00d43180 5f6f7061 63697479 202a2028 312e3020 _opacity * (1.0 │ │ │ │ + 0x00d43190 2d207374 65705661 6c756529 3b200a20 - stepValue); . │ │ │ │ + 0x00d431a0 20202069 66202866 696e616c 436f6c6f if (finalColo │ │ │ │ + 0x00d431b0 722e6120 3c20302e 3031207c 7c20755f r.a < 0.01 || u_ │ │ │ │ + 0x00d431c0 726f7574 65506172 616d732e 79203e20 routeParams.y > │ │ │ │ + 0x00d431d0 765f7261 64697573 2e772920 0a202020 v_radius.w) . │ │ │ │ + 0x00d431e0 20202064 69736361 72643b20 0a202020 discard; . │ │ │ │ + 0x00d431f0 2066696e 616c436f 6c6f7220 3d207665 finalColor = ve │ │ │ │ + 0x00d43200 6334286d 69782866 696e616c 436f6c6f c4(mix(finalColo │ │ │ │ + 0x00d43210 722e7267 622c2075 5f6d6173 6b436f6c r.rgb, u_maskCol │ │ │ │ + 0x00d43220 6f722e72 67622c20 755f6d61 736b436f or.rgb, u_maskCo │ │ │ │ + 0x00d43230 6c6f722e 61292c20 66696e61 6c436f6c lor.a), finalCol │ │ │ │ + 0x00d43240 6f722e61 293b200a 20202020 765f4672 or.a); . v_Fr │ │ │ │ + 0x00d43250 6167436f 6c6f7220 3d206669 6e616c43 agColor = finalC │ │ │ │ + 0x00d43260 6f6c6f72 3b200a20 207d200a 00000000 olor; . } ..... │ │ │ │ + 0x00d43270 00000000 00000000 00000000 00000000 ................ │ │ │ │ + 0x00d43280 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d43290 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d432a0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d432b0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d432c0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d432d0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d432e0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d432f0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d43300 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d43310 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d43320 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d43330 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d43340 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d43350 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d43360 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d43370 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d43380 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d43390 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d433a0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d433b0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d433c0 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d433d0 63332061 5f706f73 6974696f 6e3b200a c3 a_position; . │ │ │ │ + 0x00d433e0 2020696e 20766563 3320615f 6e6f726d in vec3 a_norm │ │ │ │ + 0x00d433f0 616c416e 64416e69 6d617465 4f725a3b alAndAnimateOrZ; │ │ │ │ + 0x00d43400 200a2020 696e2076 65633420 615f7465 . in vec4 a_te │ │ │ │ + 0x00d43410 78436f6f 7264733b 200a2020 696e2076 xCoords; . in v │ │ │ │ + 0x00d43420 65633420 615f636f 6c6f723b 200a2020 ec4 a_color; . │ │ │ │ + 0x00d43430 6f757420 76656334 20765f74 6578436f out vec4 v_texCo │ │ │ │ + 0x00d43440 6f726473 3b200a20 206f7574 20766563 ords; . out vec │ │ │ │ + 0x00d43450 3420765f 6d61736b 436f6c6f 723b200a 4 v_maskColor; . │ │ │ │ + 0x00d43460 2020756e 69666f72 6d206d61 74342075 uniform mat4 u │ │ │ │ + 0x00d43470 5f6d6f64 656c5669 65773b20 0a202075 _modelView; . u │ │ │ │ + 0x00d43480 6e69666f 726d206d 61743420 755f7072 niform mat4 u_pr │ │ │ │ + 0x00d43490 6f6a6563 74696f6e 3b200a20 20756e69 ojection; . uni │ │ │ │ + 0x00d434a0 666f726d 206d6174 3420755f 7069766f form mat4 u_pivo │ │ │ │ + 0x00d434b0 74547261 6e73666f 726d3b20 0a202075 tTransform; . u │ │ │ │ + 0x00d434c0 6e69666f 726d2076 65633220 755f636f niform vec2 u_co │ │ │ │ + 0x00d434d0 6e747261 73744761 6d6d613b 200a2020 ntrastGamma; . │ │ │ │ + 0x00d434e0 756e6966 6f726d20 666c6f61 7420755f uniform float u_ │ │ │ │ + 0x00d434f0 6f706163 6974793b 200a2020 756e6966 opacity; . unif │ │ │ │ + 0x00d43500 6f726d20 666c6f61 7420755f 7a536361 orm float u_zSca │ │ │ │ + 0x00d43510 6c653b20 0a202075 6e69666f 726d2066 le; . uniform f │ │ │ │ + 0x00d43520 6c6f6174 20755f69 6e746572 706f6c61 loat u_interpola │ │ │ │ + 0x00d43530 74696f6e 3b200a20 20756e69 666f726d tion; . uniform │ │ │ │ + 0x00d43540 20666c6f 61742075 5f69734f 75746c69 float u_isOutli │ │ │ │ + 0x00d43550 6e655061 73733b20 0a202063 6f6e7374 nePass; . const │ │ │ │ + 0x00d43560 20666c6f 6174206b 53686170 65436f6f float kShapeCoo │ │ │ │ + 0x00d43570 72645363 616c6172 203d2031 3030302e rdScalar = 1000. │ │ │ │ + 0x00d43580 303b200a 20207665 63342061 70706c79 0; . vec4 apply │ │ │ │ + 0x00d43590 5069766f 74547261 6e73666f 726d2876 PivotTransform(v │ │ │ │ + 0x00d435a0 65633420 7069766f 742c206d 61743420 ec4 pivot, mat4 │ │ │ │ + 0x00d435b0 7069766f 74547261 6e73666f 726d2c20 pivotTransform, │ │ │ │ + 0x00d435c0 666c6f61 74207069 766f7452 65616c5a float pivotRealZ │ │ │ │ + 0x00d435d0 29200a20 207b200a 20202020 76656334 ) . { . vec4 │ │ │ │ + 0x00d435e0 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ + 0x00d435f0 74203d20 7069766f 743b200a 20202020 t = pivot; . │ │ │ │ + 0x00d43600 666c6f61 74207720 3d207472 616e7366 float w = transf │ │ │ │ + 0x00d43610 6f726d65 64506976 6f742e77 3b200a20 ormedPivot.w; . │ │ │ │ + 0x00d43620 20202074 72616e73 666f726d 65645069 transformedPi │ │ │ │ + 0x00d43630 766f742e 78797720 3d202870 69766f74 vot.xyw = (pivot │ │ │ │ + 0x00d43640 5472616e 73666f72 6d202a20 76656334 Transform * vec4 │ │ │ │ + 0x00d43650 28747261 6e73666f 726d6564 5069766f (transformedPivo │ │ │ │ + 0x00d43660 742e7879 2c207069 766f7452 65616c5a t.xy, pivotRealZ │ │ │ │ + 0x00d43670 2c207729 292e7879 773b200a 20202020 , w)).xyw; . │ │ │ │ + 0x00d43680 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ + 0x00d43690 2e7a202a 3d207472 616e7366 6f726d65 .z *= transforme │ │ │ │ + 0x00d436a0 64506976 6f742e77 202f2077 3b200a20 dPivot.w / w; . │ │ │ │ + 0x00d436b0 20236966 64656620 56554c4b 414e200a #ifdef VULKAN . │ │ │ │ + 0x00d436c0 20202020 7472616e 73666f72 6d656450 transformedP │ │ │ │ + 0x00d436d0 69766f74 2e79203d 202d7472 616e7366 ivot.y = -transf │ │ │ │ + 0x00d436e0 6f726d65 64506976 6f742e79 3b200a20 ormedPivot.y; . │ │ │ │ + 0x00d436f0 20202074 72616e73 666f726d 65645069 transformedPi │ │ │ │ + 0x00d43700 766f742e 7a203d20 28747261 6e73666f vot.z = (transfo │ │ │ │ + 0x00d43710 726d6564 5069766f 742e7a20 202b2074 rmedPivot.z + t │ │ │ │ + 0x00d43720 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ + 0x00d43730 7729202f 20322e30 3b200a20 2023656e w) / 2.0; . #en │ │ │ │ + 0x00d43740 64696620 0a202020 20726574 75726e20 dif . return │ │ │ │ + 0x00d43750 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ + 0x00d43760 3b200a20 207d200a 20207665 63342061 ; . } . vec4 a │ │ │ │ + 0x00d43770 70706c79 42696c6c 626f6172 64506976 pplyBillboardPiv │ │ │ │ + 0x00d43780 6f745472 616e7366 6f726d28 76656334 otTransform(vec4 │ │ │ │ + 0x00d43790 20706976 6f742c20 6d617434 20706976 pivot, mat4 piv │ │ │ │ + 0x00d437a0 6f745472 616e7366 6f726d2c 20666c6f otTransform, flo │ │ │ │ + 0x00d437b0 61742070 69766f74 5265616c 5a2c2076 at pivotRealZ, v │ │ │ │ + 0x00d437c0 65633220 6f666673 65742920 0a20207b ec2 offset) . { │ │ │ │ + 0x00d437d0 200a2020 2020666c 6f617420 6c6f6769 . float logi │ │ │ │ + 0x00d437e0 635a203d 20706976 6f742e7a 202f2070 cZ = pivot.z / p │ │ │ │ + 0x00d437f0 69766f74 2e773b20 0a202020 20766563 ivot.w; . vec │ │ │ │ + 0x00d43800 34207472 616e7366 6f726d65 64506976 4 transformedPiv │ │ │ │ + 0x00d43810 6f74203d 20706976 6f745472 616e7366 ot = pivotTransf │ │ │ │ + 0x00d43820 6f726d20 2a207665 63342870 69766f74 orm * vec4(pivot │ │ │ │ + 0x00d43830 2e78792c 20706976 6f745265 616c5a2c .xy, pivotRealZ, │ │ │ │ + 0x00d43840 20706976 6f742e77 293b200a 20202020 pivot.w); . │ │ │ │ + 0x00d43850 76656334 20736361 6c65203d 20706976 vec4 scale = piv │ │ │ │ + 0x00d43860 6f745472 616e7366 6f726d20 2a207665 otTransform * ve │ │ │ │ + 0x00d43870 63342831 2e302c20 2d312e30 2c20302e c4(1.0, -1.0, 0. │ │ │ │ + 0x00d43880 302c2031 2e30293b 200a2020 20207665 0, 1.0); . ve │ │ │ │ + 0x00d43890 63342070 6f736974 696f6e20 3d207665 c4 position = ve │ │ │ │ + 0x00d438a0 63342874 72616e73 666f726d 65645069 c4(transformedPi │ │ │ │ + 0x00d438b0 766f742e 7879202f 20747261 6e73666f vot.xy / transfo │ │ │ │ + 0x00d438c0 726d6564 5069766f 742e772c 206c6f67 rmedPivot.w, log │ │ │ │ + 0x00d438d0 69635a2c 20312e30 29202b20 76656334 icZ, 1.0) + vec4 │ │ │ │ + 0x00d438e0 286f6666 73657420 2f207363 616c652e (offset / scale. │ │ │ │ + 0x00d438f0 77202a20 7363616c 652e782c 20302e30 w * scale.x, 0.0 │ │ │ │ + 0x00d43900 2c20302e 30293b20 0a202023 69666465 , 0.0); . #ifde │ │ │ │ + 0x00d43910 66205655 4c4b414e 200a2020 2020706f f VULKAN . po │ │ │ │ + 0x00d43920 73697469 6f6e2e79 203d202d 706f7369 sition.y = -posi │ │ │ │ + 0x00d43930 74696f6e 2e793b20 0a202020 20706f73 tion.y; . pos │ │ │ │ + 0x00d43940 6974696f 6e2e7a20 3d202870 6f736974 ition.z = (posit │ │ │ │ + 0x00d43950 696f6e2e 7a20202b 20706f73 6974696f ion.z + positio │ │ │ │ + 0x00d43960 6e2e7729 202f2032 2e303b20 0a202023 n.w) / 2.0; . # │ │ │ │ + 0x00d43970 656e6469 66200a20 20202072 65747572 endif . retur │ │ │ │ + 0x00d43980 6e20706f 73697469 6f6e3b20 0a20207d n position; . } │ │ │ │ + 0x00d43990 200a2020 76656332 2063616c 634c696e . vec2 calcLin │ │ │ │ + 0x00d439a0 65547261 6e73666f 726d6564 41786973 eTransformedAxis │ │ │ │ + 0x00d439b0 506f7328 76656332 206f7269 67696e61 Pos(vec2 origina │ │ │ │ + 0x00d439c0 6c417869 73506f73 2c207665 63322073 lAxisPos, vec2 s │ │ │ │ + 0x00d439d0 68696674 6564506f 732c206d 61743420 hiftedPos, mat4 │ │ │ │ + 0x00d439e0 6d6f6465 6c566965 772c2066 6c6f6174 modelView, float │ │ │ │ + 0x00d439f0 2068616c 66576964 74682920 0a20207b halfWidth) . { │ │ │ │ + 0x00d43a00 200a2020 20207665 63322070 203d2028 . vec2 p = ( │ │ │ │ + 0x00d43a10 76656334 28736869 66746564 506f732c vec4(shiftedPos, │ │ │ │ + 0x00d43a20 20302e30 2c20312e 3029202a 206d6f64 0.0, 1.0) * mod │ │ │ │ + 0x00d43a30 656c5669 6577292e 78793b20 0a202020 elView).xy; . │ │ │ │ + 0x00d43a40 20766563 32206420 3d207020 2d206f72 vec2 d = p - or │ │ │ │ + 0x00d43a50 6967696e 616c4178 6973506f 733b200a iginalAxisPos; . │ │ │ │ + 0x00d43a60 20202020 69662028 646f7428 642c2064 if (dot(d, d │ │ │ │ + 0x00d43a70 2920213d 20302e30 29200a20 20202020 ) != 0.0) . │ │ │ │ + 0x00d43a80 20726574 75726e20 6f726967 696e616c return original │ │ │ │ + 0x00d43a90 41786973 506f7320 2b206e6f 726d616c AxisPos + normal │ │ │ │ + 0x00d43aa0 697a6528 6429202a 2068616c 66576964 ize(d) * halfWid │ │ │ │ + 0x00d43ab0 74683b20 0a202020 20656c73 65200a20 th; . else . │ │ │ │ + 0x00d43ac0 20202020 20726574 75726e20 6f726967 return orig │ │ │ │ + 0x00d43ad0 696e616c 41786973 506f733b 200a2020 inalAxisPos; . │ │ │ │ + 0x00d43ae0 7d200a20 20766f69 64206d61 696e2829 } . void main() │ │ │ │ + 0x00d43af0 200a2020 7b200a20 20202076 65633220 . { . vec2 │ │ │ │ + 0x00d43b00 6e6f726d 616c203d 20615f6e 6f726d61 normal = a_norma │ │ │ │ + 0x00d43b10 6c416e64 416e696d 6174654f 725a2e78 lAndAnimateOrZ.x │ │ │ │ + 0x00d43b20 793b200a 20202020 69662028 615f6e6f y; . if (a_no │ │ │ │ + 0x00d43b30 726d616c 416e6441 6e696d61 74654f72 rmalAndAnimateOr │ │ │ │ + 0x00d43b40 5a2e7a20 3e20302e 3029200a 20202020 Z.z > 0.0) . │ │ │ │ + 0x00d43b50 20206e6f 726d616c 203d2075 5f696e74 normal = u_int │ │ │ │ + 0x00d43b60 6572706f 6c617469 6f6e202a 206e6f72 erpolation * nor │ │ │ │ + 0x00d43b70 6d616c3b 200a2020 20207665 63342070 mal; . vec4 p │ │ │ │ + 0x00d43b80 203d2076 65633428 615f706f 73697469 = vec4(a_positi │ │ │ │ + 0x00d43b90 6f6e2c20 312e3029 202a2075 5f6d6f64 on, 1.0) * u_mod │ │ │ │ + 0x00d43ba0 656c5669 65773b20 0a202020 20766563 elView; . vec │ │ │ │ + 0x00d43bb0 3420706f 73203d20 76656334 286e6f72 4 pos = vec4(nor │ │ │ │ + 0x00d43bc0 6d616c2c 20302e30 2c20302e 3029202b mal, 0.0, 0.0) + │ │ │ │ + 0x00d43bd0 20703b20 0a202020 20766563 34207072 p; . vec4 pr │ │ │ │ + 0x00d43be0 6f6a6563 74656450 69766f74 203d2070 ojectedPivot = p │ │ │ │ + 0x00d43bf0 202a2075 5f70726f 6a656374 696f6e3b * u_projection; │ │ │ │ + 0x00d43c00 200a2020 2020676c 5f506f73 6974696f . gl_Positio │ │ │ │ + 0x00d43c10 6e203d20 6170706c 79506976 6f745472 n = applyPivotTr │ │ │ │ + 0x00d43c20 616e7366 6f726d28 706f7320 2a20755f ansform(pos * u_ │ │ │ │ + 0x00d43c30 70726f6a 65637469 6f6e2c20 755f7069 projection, u_pi │ │ │ │ + 0x00d43c40 766f7454 72616e73 666f726d 2c20302e votTransform, 0. │ │ │ │ + 0x00d43c50 30293b20 0a202020 20666c6f 6174206e 0); . float n │ │ │ │ + 0x00d43c60 65775a20 3d207072 6f6a6563 74656450 ewZ = projectedP │ │ │ │ + 0x00d43c70 69766f74 2e79202f 2070726f 6a656374 ivot.y / project │ │ │ │ + 0x00d43c80 65645069 766f742e 77202a20 302e3520 edPivot.w * 0.5 │ │ │ │ + 0x00d43c90 2b20302e 353b200a 20202020 676c5f50 + 0.5; . gl_P │ │ │ │ + 0x00d43ca0 6f736974 696f6e2e 7a203d20 61627328 osition.z = abs( │ │ │ │ + 0x00d43cb0 615f6e6f 726d616c 416e6441 6e696d61 a_normalAndAnima │ │ │ │ + 0x00d43cc0 74654f72 5a2e7a29 202a206e 65775a20 teOrZ.z) * newZ │ │ │ │ + 0x00d43cd0 2b202831 2e30202d 20616273 28615f6e + (1.0 - abs(a_n │ │ │ │ + 0x00d43ce0 6f726d61 6c416e64 416e696d 6174654f ormalAndAnimateO │ │ │ │ + 0x00d43cf0 725a2e7a 2929202a 20676c5f 506f7369 rZ.z)) * gl_Posi │ │ │ │ + 0x00d43d00 74696f6e 2e7a3b20 0a202020 20765f74 tion.z; . v_t │ │ │ │ + 0x00d43d10 6578436f 6f726473 203d2061 5f746578 exCoords = a_tex │ │ │ │ + 0x00d43d20 436f6f72 64733b20 0a202020 20765f6d Coords; . v_m │ │ │ │ + 0x00d43d30 61736b43 6f6c6f72 203d2061 5f636f6c askColor = a_col │ │ │ │ + 0x00d43d40 6f723b20 0a20207d 200a0000 00000000 or; . } ....... │ │ │ │ + 0x00d43d50 00000000 00000000 00000000 00000000 ................ │ │ │ │ + 0x00d43d60 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d43d70 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d43d80 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d43d90 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d43da0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d43db0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d43dc0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d43dd0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d43de0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d43df0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d43e00 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d43e10 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d43e20 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d43e30 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d43e40 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d43e50 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d43e60 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d43e70 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d43e80 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d43e90 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d43ea0 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d43eb0 63322076 5f636f6c 6f725465 78436f6f c2 v_colorTexCoo │ │ │ │ + 0x00d43ec0 72643b20 0a202069 6e207665 63322076 rd; . in vec2 v │ │ │ │ + 0x00d43ed0 5f6d6173 6b546578 436f6f72 643b200a _maskTexCoord; . │ │ │ │ + 0x00d43ee0 20206f75 74207665 63342076 5f467261 out vec4 v_Fra │ │ │ │ + 0x00d43ef0 67436f6c 6f723b20 0a202075 6e69666f gColor; . unifo │ │ │ │ + 0x00d43f00 726d206d 61743420 755f6d6f 64656c56 rm mat4 u_modelV │ │ │ │ + 0x00d43f10 6965773b 200a2020 756e6966 6f726d20 iew; . uniform │ │ │ │ + 0x00d43f20 6d617434 20755f70 726f6a65 6374696f mat4 u_projectio │ │ │ │ + 0x00d43f30 6e3b200a 2020756e 69666f72 6d206d61 n; . uniform ma │ │ │ │ + 0x00d43f40 74342075 5f706976 6f745472 616e7366 t4 u_pivotTransf │ │ │ │ + 0x00d43f50 6f726d3b 200a2020 756e6966 6f726d20 orm; . uniform │ │ │ │ + 0x00d43f60 76656332 20755f63 6f6e7472 61737447 vec2 u_contrastG │ │ │ │ + 0x00d43f70 616d6d61 3b200a20 20756e69 666f726d amma; . uniform │ │ │ │ + 0x00d43f80 20666c6f 61742075 5f6f7061 63697479 float u_opacity │ │ │ │ + 0x00d43f90 3b200a20 20756e69 666f726d 20666c6f ; . uniform flo │ │ │ │ + 0x00d43fa0 61742075 5f7a5363 616c653b 200a2020 at u_zScale; . │ │ │ │ + 0x00d43fb0 756e6966 6f726d20 666c6f61 7420755f uniform float u_ │ │ │ │ + 0x00d43fc0 696e7465 72706f6c 6174696f 6e3b200a interpolation; . │ │ │ │ + 0x00d43fd0 2020756e 69666f72 6d20666c 6f617420 uniform float │ │ │ │ + 0x00d43fe0 755f6973 4f75746c 696e6550 6173733b u_isOutlinePass; │ │ │ │ + 0x00d43ff0 200a2020 756e6966 6f726d20 73616d70 . uniform samp │ │ │ │ + 0x00d44000 6c657232 4420755f 636f6c6f 72546578 ler2D u_colorTex │ │ │ │ + 0x00d44010 3b200a20 20756e69 666f726d 2073616d ; . uniform sam │ │ │ │ + 0x00d44020 706c6572 32442075 5f6d6173 6b546578 pler2D u_maskTex │ │ │ │ + 0x00d44030 3b200a20 20636f6e 73742066 6c6f6174 ; . const float │ │ │ │ + 0x00d44040 206b5368 61706543 6f6f7264 5363616c kShapeCoordScal │ │ │ │ + 0x00d44050 6172203d 20313030 302e303b 200a2020 ar = 1000.0; . │ │ │ │ + 0x00d44060 766f6964 206d6169 6e282920 0a20207b void main() . { │ │ │ │ + 0x00d44070 200a2020 20207665 63342063 6f6c6f72 . vec4 color │ │ │ │ + 0x00d44080 203d2074 65787475 72652875 5f636f6c = texture(u_col │ │ │ │ + 0x00d44090 6f725465 782c2076 5f636f6c 6f725465 orTex, v_colorTe │ │ │ │ + 0x00d440a0 78436f6f 7264293b 200a2020 2020666c xCoord); . fl │ │ │ │ + 0x00d440b0 6f617420 6d61736b 203d2074 65787475 oat mask = textu │ │ │ │ + 0x00d440c0 72652875 5f6d6173 6b546578 2c20765f re(u_maskTex, v_ │ │ │ │ + 0x00d440d0 6d61736b 54657843 6f6f7264 292e723b maskTexCoord).r; │ │ │ │ + 0x00d440e0 200a2020 2020636f 6c6f722e 61203d20 . color.a = │ │ │ │ + 0x00d440f0 636f6c6f 722e6120 2a206d61 736b202a color.a * mask * │ │ │ │ + 0x00d44100 20755f6f 70616369 74793b20 0a202020 u_opacity; . │ │ │ │ + 0x00d44110 20765f46 72616743 6f6c6f72 203d2063 v_FragColor = c │ │ │ │ + 0x00d44120 6f6c6f72 3b200a20 207d200a 00000000 olor; . } ..... │ │ │ │ + 0x00d44130 00000000 00000000 00000000 00000000 ................ │ │ │ │ + 0x00d44140 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d44150 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d44160 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d44170 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d44180 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d44190 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d441a0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d441b0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d441c0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d441d0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d441e0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d441f0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d44200 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d44210 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d44220 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d44230 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d44240 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d44250 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d44260 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d44270 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d44280 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d44290 63322076 5f636f6c 6f725465 78436f6f c2 v_colorTexCoo │ │ │ │ + 0x00d442a0 7264733b 200a2020 6f757420 76656334 rds; . out vec4 │ │ │ │ + 0x00d442b0 20765f46 72616743 6f6c6f72 3b200a20 v_FragColor; . │ │ │ │ + 0x00d442c0 20756e69 666f726d 206d6174 3420755f uniform mat4 u_ │ │ │ │ + 0x00d442d0 6d6f6465 6c566965 773b200a 2020756e modelView; . un │ │ │ │ + 0x00d442e0 69666f72 6d206d61 74342075 5f70726f iform mat4 u_pro │ │ │ │ + 0x00d442f0 6a656374 696f6e3b 200a2020 756e6966 jection; . unif │ │ │ │ + 0x00d44300 6f726d20 6d617434 20755f70 69766f74 orm mat4 u_pivot │ │ │ │ + 0x00d44310 5472616e 73666f72 6d3b200a 2020756e Transform; . un │ │ │ │ + 0x00d44320 69666f72 6d207665 63342075 5f706f73 iform vec4 u_pos │ │ │ │ + 0x00d44330 6974696f 6e3b200a 2020756e 69666f72 ition; . unifor │ │ │ │ + 0x00d44340 6d207665 63322075 5f6c696e 65506172 m vec2 u_linePar │ │ │ │ + 0x00d44350 616d733b 200a2020 756e6966 6f726d20 ams; . uniform │ │ │ │ + 0x00d44360 666c6f61 7420755f 61636375 72616379 float u_accuracy │ │ │ │ + 0x00d44370 3b200a20 20756e69 666f726d 20666c6f ; . uniform flo │ │ │ │ + 0x00d44380 61742075 5f7a5363 616c653b 200a2020 at u_zScale; . │ │ │ │ + 0x00d44390 756e6966 6f726d20 666c6f61 7420755f uniform float u_ │ │ │ │ + 0x00d443a0 6f706163 6974793b 200a2020 756e6966 opacity; . unif │ │ │ │ + 0x00d443b0 6f726d20 666c6f61 7420755f 617a696d orm float u_azim │ │ │ │ + 0x00d443c0 75743b20 0a202075 6e69666f 726d2073 ut; . uniform s │ │ │ │ + 0x00d443d0 616d706c 65723244 20755f63 6f6c6f72 ampler2D u_color │ │ │ │ + 0x00d443e0 5465783b 200a2020 636f6e73 7420666c Tex; . const fl │ │ │ │ + 0x00d443f0 6f617420 6b536861 7065436f 6f726453 oat kShapeCoordS │ │ │ │ + 0x00d44400 63616c61 72203d20 31303030 2e303b20 calar = 1000.0; │ │ │ │ + 0x00d44410 0a202076 6f696420 6d61696e 2829200a . void main() . │ │ │ │ + 0x00d44420 20207b20 0a202020 20766563 34206669 { . vec4 fi │ │ │ │ + 0x00d44430 6e616c43 6f6c6f72 203d2074 65787475 nalColor = textu │ │ │ │ + 0x00d44440 72652875 5f636f6c 6f725465 782c2076 re(u_colorTex, v │ │ │ │ + 0x00d44450 5f636f6c 6f725465 78436f6f 72647329 _colorTexCoords) │ │ │ │ + 0x00d44460 3b200a20 20202066 696e616c 436f6c6f ; . finalColo │ │ │ │ + 0x00d44470 722e6120 2a3d2075 5f6f7061 63697479 r.a *= u_opacity │ │ │ │ + 0x00d44480 3b200a20 20202076 5f467261 67436f6c ; . v_FragCol │ │ │ │ + 0x00d44490 6f72203d 2066696e 616c436f 6c6f723b or = finalColor; │ │ │ │ + 0x00d444a0 200a2020 7d200a00 00000000 00000000 . } .......... │ │ │ │ + 0x00d444b0 00000000 00000000 00000000 00000000 ................ │ │ │ │ + 0x00d444c0 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d444d0 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d444e0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d444f0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d44500 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d44510 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d44520 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d44530 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d44540 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d44550 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d44560 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d44570 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d44580 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d44590 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d445a0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d445b0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d445c0 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d445d0 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d445e0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d445f0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d44600 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d44610 63332076 5f6e6f72 6d616c3b 200a2020 c3 v_normal; . │ │ │ │ + 0x00d44620 6f757420 76656334 20765f46 72616743 out vec4 v_FragC │ │ │ │ + 0x00d44630 6f6c6f72 3b200a20 20756e69 666f726d olor; . uniform │ │ │ │ + 0x00d44640 206d6174 3420755f 7472616e 73666f72 mat4 u_transfor │ │ │ │ + 0x00d44650 6d3b200a 2020756e 69666f72 6d206d61 m; . uniform ma │ │ │ │ + 0x00d44660 74342075 5f6e6f72 6d616c54 72616e73 t4 u_normalTrans │ │ │ │ + 0x00d44670 666f726d 3b200a20 20756e69 666f726d form; . uniform │ │ │ │ + 0x00d44680 20766563 3420755f 636f6c6f 723b200a vec4 u_color; . │ │ │ │ + 0x00d44690 2020756e 69666f72 6d207665 63322075 uniform vec2 u │ │ │ │ + 0x00d446a0 5f746578 436f6f72 64466c69 7070696e _texCoordFlippin │ │ │ │ + 0x00d446b0 673b200a 2020636f 6e737420 76656333 g; . const vec3 │ │ │ │ + 0x00d446c0 206c6967 68744469 72203d20 76656333 lightDir = vec3 │ │ │ │ + 0x00d446d0 28302e33 31362c20 302e302c 20302e39 (0.316, 0.0, 0.9 │ │ │ │ + 0x00d446e0 3438293b 200a2020 636f6e73 7420666c 48); . const fl │ │ │ │ + 0x00d446f0 6f617420 6b536861 7065436f 6f726453 oat kShapeCoordS │ │ │ │ + 0x00d44700 63616c61 72203d20 31303030 2e303b20 calar = 1000.0; │ │ │ │ + 0x00d44710 0a202076 6f696420 6d61696e 2829200a . void main() . │ │ │ │ + 0x00d44720 20207b20 0a202020 20666c6f 61742070 { . float p │ │ │ │ + 0x00d44730 686f6e67 44696666 75736520 3d206d61 hongDiffuse = ma │ │ │ │ + 0x00d44740 7828302e 302c202d 646f7428 6c696768 x(0.0, -dot(ligh │ │ │ │ + 0x00d44750 74446972 2c20765f 6e6f726d 616c2929 tDir, v_normal)) │ │ │ │ + 0x00d44760 3b200a20 20202076 5f467261 67436f6c ; . v_FragCol │ │ │ │ + 0x00d44770 6f72203d 20766563 34282870 686f6e67 or = vec4((phong │ │ │ │ + 0x00d44780 44696666 75736520 2a20302e 35202b20 Diffuse * 0.5 + │ │ │ │ + 0x00d44790 302e3529 202a2075 5f636f6c 6f722e72 0.5) * u_color.r │ │ │ │ + 0x00d447a0 67622c20 755f636f 6c6f722e 61293b20 gb, u_color.a); │ │ │ │ + 0x00d447b0 0a20207d 200a0000 00000000 00000000 . } ........... │ │ │ │ + 0x00d447c0 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d447d0 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d447e0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d447f0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d44800 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d44810 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d44820 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d44830 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d44840 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d44850 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d44860 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d44870 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d44880 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d44890 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d448a0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d448b0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d448c0 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d448d0 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d448e0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d448f0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d44900 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d44910 63332061 5f706f73 6974696f 6e3b200a c3 a_position; . │ │ │ │ + 0x00d44920 2020696e 20766563 3220615f 6e6f726d in vec2 a_norm │ │ │ │ + 0x00d44930 616c3b20 0a202069 6e207665 63322061 al; . in vec2 a │ │ │ │ + 0x00d44940 5f636f6c 6f725465 78436f6f 7264733b _colorTexCoords; │ │ │ │ + 0x00d44950 200a2020 696e2076 65633320 615f6c65 . in vec3 a_le │ │ │ │ + 0x00d44960 6e677468 3b200a20 20236966 64656620 ngth; . #ifdef │ │ │ │ + 0x00d44970 454e4142 4c455f56 5446200a 20206f75 ENABLE_VTF . ou │ │ │ │ + 0x00d44980 74204c4f 575f5020 76656334 20765f63 t LOW_P vec4 v_c │ │ │ │ + 0x00d44990 6f6c6f72 3b200a20 2023656c 7365200a olor; . #else . │ │ │ │ + 0x00d449a0 20206f75 74207665 63322076 5f636f6c out vec2 v_col │ │ │ │ + 0x00d449b0 6f725465 78436f6f 72643b20 0a202023 orTexCoord; . # │ │ │ │ + 0x00d449c0 656e6469 66200a20 206f7574 20666c6f endif . out flo │ │ │ │ + 0x00d449d0 61742076 5f6c656e 67746859 3b200a20 at v_lengthY; . │ │ │ │ + 0x00d449e0 20756e69 666f726d 206d6174 3420755f uniform mat4 u_ │ │ │ │ + 0x00d449f0 6d6f6465 6c566965 773b200a 2020756e modelView; . un │ │ │ │ + 0x00d44a00 69666f72 6d206d61 74342075 5f70726f iform mat4 u_pro │ │ │ │ + 0x00d44a10 6a656374 696f6e3b 200a2020 756e6966 jection; . unif │ │ │ │ + 0x00d44a20 6f726d20 6d617434 20755f70 69766f74 orm mat4 u_pivot │ │ │ │ + 0x00d44a30 5472616e 73666f72 6d3b200a 2020756e Transform; . un │ │ │ │ + 0x00d44a40 69666f72 6d207665 63342075 5f706f73 iform vec4 u_pos │ │ │ │ + 0x00d44a50 6974696f 6e3b200a 2020756e 69666f72 ition; . unifor │ │ │ │ + 0x00d44a60 6d207665 63322075 5f6c696e 65506172 m vec2 u_linePar │ │ │ │ + 0x00d44a70 616d733b 200a2020 756e6966 6f726d20 ams; . uniform │ │ │ │ + 0x00d44a80 666c6f61 7420755f 61636375 72616379 float u_accuracy │ │ │ │ + 0x00d44a90 3b200a20 20756e69 666f726d 20666c6f ; . uniform flo │ │ │ │ + 0x00d44aa0 61742075 5f7a5363 616c653b 200a2020 at u_zScale; . │ │ │ │ + 0x00d44ab0 756e6966 6f726d20 666c6f61 7420755f uniform float u_ │ │ │ │ + 0x00d44ac0 6f706163 6974793b 200a2020 756e6966 opacity; . unif │ │ │ │ + 0x00d44ad0 6f726d20 666c6f61 7420755f 617a696d orm float u_azim │ │ │ │ + 0x00d44ae0 75743b20 0a202023 69666465 6620454e ut; . #ifdef EN │ │ │ │ + 0x00d44af0 41424c45 5f565446 200a2020 756e6966 ABLE_VTF . unif │ │ │ │ + 0x00d44b00 6f726d20 73616d70 6c657232 4420755f orm sampler2D u_ │ │ │ │ + 0x00d44b10 636f6c6f 72546578 3b200a20 2023656e colorTex; . #en │ │ │ │ + 0x00d44b20 64696620 0a202063 6f6e7374 20666c6f dif . const flo │ │ │ │ + 0x00d44b30 6174206b 416e7469 616c6961 73696e67 at kAntialiasing │ │ │ │ + 0x00d44b40 54687265 73686f6c 64203d20 302e3932 Threshold = 0.92 │ │ │ │ + 0x00d44b50 3b200a20 20636f6e 73742066 6c6f6174 ; . const float │ │ │ │ + 0x00d44b60 206b5368 61706543 6f6f7264 5363616c kShapeCoordScal │ │ │ │ + 0x00d44b70 6172203d 20313030 302e303b 200a2020 ar = 1000.0; . │ │ │ │ + 0x00d44b80 76656334 20617070 6c795069 766f7454 vec4 applyPivotT │ │ │ │ + 0x00d44b90 72616e73 666f726d 28766563 34207069 ransform(vec4 pi │ │ │ │ + 0x00d44ba0 766f742c 206d6174 34207069 766f7454 vot, mat4 pivotT │ │ │ │ + 0x00d44bb0 72616e73 666f726d 2c20666c 6f617420 ransform, float │ │ │ │ + 0x00d44bc0 7069766f 74526561 6c5a2920 0a20207b pivotRealZ) . { │ │ │ │ + 0x00d44bd0 200a2020 20207665 63342074 72616e73 . vec4 trans │ │ │ │ + 0x00d44be0 666f726d 65645069 766f7420 3d207069 formedPivot = pi │ │ │ │ + 0x00d44bf0 766f743b 200a2020 2020666c 6f617420 vot; . float │ │ │ │ + 0x00d44c00 77203d20 7472616e 73666f72 6d656450 w = transformedP │ │ │ │ + 0x00d44c10 69766f74 2e773b20 0a202020 20747261 ivot.w; . tra │ │ │ │ + 0x00d44c20 6e73666f 726d6564 5069766f 742e7879 nsformedPivot.xy │ │ │ │ + 0x00d44c30 77203d20 28706976 6f745472 616e7366 w = (pivotTransf │ │ │ │ + 0x00d44c40 6f726d20 2a207665 63342874 72616e73 orm * vec4(trans │ │ │ │ + 0x00d44c50 666f726d 65645069 766f742e 78792c20 formedPivot.xy, │ │ │ │ + 0x00d44c60 7069766f 74526561 6c5a2c20 7729292e pivotRealZ, w)). │ │ │ │ + 0x00d44c70 7879773b 200a2020 20207472 616e7366 xyw; . transf │ │ │ │ + 0x00d44c80 6f726d65 64506976 6f742e7a 202a3d20 ormedPivot.z *= │ │ │ │ + 0x00d44c90 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ + 0x00d44ca0 2e77202f 20773b20 0a202023 69666465 .w / w; . #ifde │ │ │ │ + 0x00d44cb0 66205655 4c4b414e 200a2020 20207472 f VULKAN . tr │ │ │ │ + 0x00d44cc0 616e7366 6f726d65 64506976 6f742e79 ansformedPivot.y │ │ │ │ + 0x00d44cd0 203d202d 7472616e 73666f72 6d656450 = -transformedP │ │ │ │ + 0x00d44ce0 69766f74 2e793b20 0a202020 20747261 ivot.y; . tra │ │ │ │ + 0x00d44cf0 6e73666f 726d6564 5069766f 742e7a20 nsformedPivot.z │ │ │ │ + 0x00d44d00 3d202874 72616e73 666f726d 65645069 = (transformedPi │ │ │ │ + 0x00d44d10 766f742e 7a20202b 20747261 6e73666f vot.z + transfo │ │ │ │ + 0x00d44d20 726d6564 5069766f 742e7729 202f2032 rmedPivot.w) / 2 │ │ │ │ + 0x00d44d30 2e303b20 0a202023 656e6469 66200a20 .0; . #endif . │ │ │ │ + 0x00d44d40 20202072 65747572 6e207472 616e7366 return transf │ │ │ │ + 0x00d44d50 6f726d65 64506976 6f743b20 0a20207d ormedPivot; . } │ │ │ │ + 0x00d44d60 200a2020 76656334 20617070 6c794269 . vec4 applyBi │ │ │ │ + 0x00d44d70 6c6c626f 61726450 69766f74 5472616e llboardPivotTran │ │ │ │ + 0x00d44d80 73666f72 6d287665 63342070 69766f74 sform(vec4 pivot │ │ │ │ + 0x00d44d90 2c206d61 74342070 69766f74 5472616e , mat4 pivotTran │ │ │ │ + 0x00d44da0 73666f72 6d2c2066 6c6f6174 20706976 sform, float piv │ │ │ │ + 0x00d44db0 6f745265 616c5a2c 20766563 32206f66 otRealZ, vec2 of │ │ │ │ + 0x00d44dc0 66736574 29200a20 207b200a 20202020 fset) . { . │ │ │ │ + 0x00d44dd0 666c6f61 74206c6f 6769635a 203d2070 float logicZ = p │ │ │ │ + 0x00d44de0 69766f74 2e7a202f 20706976 6f742e77 ivot.z / pivot.w │ │ │ │ + 0x00d44df0 3b200a20 20202076 65633420 7472616e ; . vec4 tran │ │ │ │ + 0x00d44e00 73666f72 6d656450 69766f74 203d2070 sformedPivot = p │ │ │ │ + 0x00d44e10 69766f74 5472616e 73666f72 6d202a20 ivotTransform * │ │ │ │ + 0x00d44e20 76656334 28706976 6f742e78 792c2070 vec4(pivot.xy, p │ │ │ │ + 0x00d44e30 69766f74 5265616c 5a2c2070 69766f74 ivotRealZ, pivot │ │ │ │ + 0x00d44e40 2e77293b 200a2020 20207665 63342073 .w); . vec4 s │ │ │ │ + 0x00d44e50 63616c65 203d2070 69766f74 5472616e cale = pivotTran │ │ │ │ + 0x00d44e60 73666f72 6d202a20 76656334 28312e30 sform * vec4(1.0 │ │ │ │ + 0x00d44e70 2c202d31 2e302c20 302e302c 20312e30 , -1.0, 0.0, 1.0 │ │ │ │ + 0x00d44e80 293b200a 20202020 76656334 20706f73 ); . vec4 pos │ │ │ │ + 0x00d44e90 6974696f 6e203d20 76656334 28747261 ition = vec4(tra │ │ │ │ + 0x00d44ea0 6e73666f 726d6564 5069766f 742e7879 nsformedPivot.xy │ │ │ │ + 0x00d44eb0 202f2074 72616e73 666f726d 65645069 / transformedPi │ │ │ │ + 0x00d44ec0 766f742e 772c206c 6f676963 5a2c2031 vot.w, logicZ, 1 │ │ │ │ + 0x00d44ed0 2e302920 2b207665 6334286f 66667365 .0) + vec4(offse │ │ │ │ + 0x00d44ee0 74202f20 7363616c 652e7720 2a207363 t / scale.w * sc │ │ │ │ + 0x00d44ef0 616c652e 782c2030 2e302c20 302e3029 ale.x, 0.0, 0.0) │ │ │ │ + 0x00d44f00 3b200a20 20236966 64656620 56554c4b ; . #ifdef VULK │ │ │ │ + 0x00d44f10 414e200a 20202020 706f7369 74696f6e AN . position │ │ │ │ + 0x00d44f20 2e79203d 202d706f 73697469 6f6e2e79 .y = -position.y │ │ │ │ + 0x00d44f30 3b200a20 20202070 6f736974 696f6e2e ; . position. │ │ │ │ + 0x00d44f40 7a203d20 28706f73 6974696f 6e2e7a20 z = (position.z │ │ │ │ + 0x00d44f50 202b2070 6f736974 696f6e2e 7729202f + position.w) / │ │ │ │ + 0x00d44f60 20322e30 3b200a20 2023656e 64696620 2.0; . #endif │ │ │ │ + 0x00d44f70 0a202020 20726574 75726e20 706f7369 . return posi │ │ │ │ + 0x00d44f80 74696f6e 3b200a20 207d200a 20207665 tion; . } . ve │ │ │ │ + 0x00d44f90 63322063 616c634c 696e6554 72616e73 c2 calcLineTrans │ │ │ │ + 0x00d44fa0 666f726d 65644178 6973506f 73287665 formedAxisPos(ve │ │ │ │ + 0x00d44fb0 6332206f 72696769 6e616c41 78697350 c2 originalAxisP │ │ │ │ + 0x00d44fc0 6f732c20 76656332 20736869 66746564 os, vec2 shifted │ │ │ │ + 0x00d44fd0 506f732c 206d6174 34206d6f 64656c56 Pos, mat4 modelV │ │ │ │ + 0x00d44fe0 6965772c 20666c6f 61742068 616c6657 iew, float halfW │ │ │ │ + 0x00d44ff0 69647468 29200a20 207b200a 20202020 idth) . { . │ │ │ │ + 0x00d45000 76656332 2070203d 20287665 63342873 vec2 p = (vec4(s │ │ │ │ + 0x00d45010 68696674 6564506f 732c2030 2e302c20 hiftedPos, 0.0, │ │ │ │ + 0x00d45020 312e3029 202a206d 6f64656c 56696577 1.0) * modelView │ │ │ │ + 0x00d45030 292e7879 3b200a20 20202076 65633220 ).xy; . vec2 │ │ │ │ + 0x00d45040 64203d20 70202d20 6f726967 696e616c d = p - original │ │ │ │ + 0x00d45050 41786973 506f733b 200a2020 20206966 AxisPos; . if │ │ │ │ + 0x00d45060 2028646f 7428642c 20642920 213d2030 (dot(d, d) != 0 │ │ │ │ + 0x00d45070 2e302920 0a202020 20202072 65747572 .0) . retur │ │ │ │ + 0x00d45080 6e206f72 6967696e 616c4178 6973506f n originalAxisPo │ │ │ │ + 0x00d45090 73202b20 6e6f726d 616c697a 65286429 s + normalize(d) │ │ │ │ + 0x00d450a0 202a2068 616c6657 69647468 3b200a20 * halfWidth; . │ │ │ │ + 0x00d450b0 20202065 6c736520 0a202020 20202072 else . r │ │ │ │ + 0x00d450c0 65747572 6e206f72 6967696e 616c4178 eturn originalAx │ │ │ │ + 0x00d450d0 6973506f 733b200a 20207d20 0a202076 isPos; . } . v │ │ │ │ + 0x00d450e0 6f696420 6d61696e 2829200a 20207b20 oid main() . { │ │ │ │ + 0x00d450f0 0a202020 20766563 32207472 616e7366 . vec2 transf │ │ │ │ + 0x00d45100 6f726d65 64417869 73506f73 203d2028 ormedAxisPos = ( │ │ │ │ + 0x00d45110 76656334 28615f70 6f736974 696f6e2e vec4(a_position. │ │ │ │ + 0x00d45120 78792c20 302e302c 20312e30 29202a20 xy, 0.0, 1.0) * │ │ │ │ + 0x00d45130 755f6d6f 64656c56 69657729 2e78793b u_modelView).xy; │ │ │ │ + 0x00d45140 200a2020 20207665 6332206c 656e203d . vec2 len = │ │ │ │ + 0x00d45150 20766563 3228615f 6c656e67 74682e78 vec2(a_length.x │ │ │ │ + 0x00d45160 2c20615f 6c656e67 74682e7a 293b200a , a_length.z); . │ │ │ │ + 0x00d45170 20202020 69662028 646f7428 615f6e6f if (dot(a_no │ │ │ │ + 0x00d45180 726d616c 2c20615f 6e6f726d 616c2920 rmal, a_normal) │ │ │ │ + 0x00d45190 213d2030 2e302920 0a202020 207b200a != 0.0) . { . │ │ │ │ + 0x00d451a0 20202020 20207665 6332206e 6f726d20 vec2 norm │ │ │ │ + 0x00d451b0 3d20615f 6e6f726d 616c202a 20755f6c = a_normal * u_l │ │ │ │ + 0x00d451c0 696e6550 6172616d 732e783b 200a2020 ineParams.x; . │ │ │ │ + 0x00d451d0 20202020 7472616e 73666f72 6d656441 transformedA │ │ │ │ + 0x00d451e0 78697350 6f73203d 2063616c 634c696e xisPos = calcLin │ │ │ │ + 0x00d451f0 65547261 6e73666f 726d6564 41786973 eTransformedAxis │ │ │ │ + 0x00d45200 506f7328 7472616e 73666f72 6d656441 Pos(transformedA │ │ │ │ + 0x00d45210 78697350 6f732c20 615f706f 73697469 xisPos, a_positi │ │ │ │ + 0x00d45220 6f6e2e78 79202b20 6e6f726d 2c200a20 on.xy + norm, . │ │ │ │ + 0x00d45230 20202020 20202020 20202020 20202020 │ │ │ │ + 0x00d45240 20202020 20202020 20202020 20202020 │ │ │ │ + 0x00d45250 20202020 20202020 20202020 20202020 │ │ │ │ + 0x00d45260 20202020 20755f6d 6f64656c 56696577 u_modelView │ │ │ │ + 0x00d45270 2c206c65 6e677468 286e6f72 6d29293b , length(norm)); │ │ │ │ + 0x00d45280 200a2020 20202020 69662028 755f6c69 . if (u_li │ │ │ │ + 0x00d45290 6e655061 72616d73 2e792021 3d20302e neParams.y != 0. │ │ │ │ + 0x00d452a0 3029200a 20202020 20202020 6c656e20 0) . len │ │ │ │ + 0x00d452b0 3d207665 63322861 5f6c656e 6774682e = vec2(a_length. │ │ │ │ + 0x00d452c0 78202b20 615f6c65 6e677468 2e79202a x + a_length.y * │ │ │ │ + 0x00d452d0 20755f6c 696e6550 6172616d 732e792c u_lineParams.y, │ │ │ │ + 0x00d452e0 20615f6c 656e6774 682e7a29 3b200a20 a_length.z); . │ │ │ │ + 0x00d452f0 2020207d 200a2020 23696664 65662045 } . #ifdef E │ │ │ │ + 0x00d45300 4e41424c 455f5654 46200a20 20202076 NABLE_VTF . v │ │ │ │ + 0x00d45310 5f636f6c 6f72203d 20746578 74757265 _color = texture │ │ │ │ + 0x00d45320 28755f63 6f6c6f72 5465782c 20615f63 (u_colorTex, a_c │ │ │ │ + 0x00d45330 6f6c6f72 54657843 6f6f7264 73293b20 olorTexCoords); │ │ │ │ + 0x00d45340 0a202023 656c7365 200a2020 2020765f . #else . v_ │ │ │ │ + 0x00d45350 636f6c6f 72546578 436f6f72 64203d20 colorTexCoord = │ │ │ │ + 0x00d45360 615f636f 6c6f7254 6578436f 6f726473 a_colorTexCoords │ │ │ │ + 0x00d45370 3b200a20 2023656e 64696620 0a202020 ; . #endif . │ │ │ │ + 0x00d45380 20765f6c 656e6774 6859203d 206c656e v_lengthY = len │ │ │ │ + 0x00d45390 2e793b20 0a202020 20766563 3420706f .y; . vec4 po │ │ │ │ + 0x00d453a0 73203d20 76656334 28747261 6e73666f s = vec4(transfo │ │ │ │ + 0x00d453b0 726d6564 41786973 506f732c 20615f70 rmedAxisPos, a_p │ │ │ │ + 0x00d453c0 6f736974 696f6e2e 7a2c2031 2e302920 osition.z, 1.0) │ │ │ │ + 0x00d453d0 2a20755f 70726f6a 65637469 6f6e3b20 * u_projection; │ │ │ │ + 0x00d453e0 0a202020 20676c5f 506f7369 74696f6e . gl_Position │ │ │ │ + 0x00d453f0 203d2061 70706c79 5069766f 74547261 = applyPivotTra │ │ │ │ + 0x00d45400 6e73666f 726d2870 6f732c20 755f7069 nsform(pos, u_pi │ │ │ │ + 0x00d45410 766f7454 72616e73 666f726d 2c20302e votTransform, 0. │ │ │ │ + 0x00d45420 30293b20 0a20207d 200a0000 00000000 0); . } ....... │ │ │ │ + 0x00d45430 00000000 00000000 00000000 00000000 ................ │ │ │ │ + 0x00d45440 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d45450 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d45460 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d45470 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d45480 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d45490 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d454a0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d454b0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d454c0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d454d0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d454e0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d454f0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d45500 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d45510 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d45520 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d45530 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d45540 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d45550 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d45560 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d45570 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d45580 2023656e 64696620 0a202023 64656669 #endif . #defi │ │ │ │ + 0x00d45590 6e652054 494c455f 4241434b 47524f55 ne TILE_BACKGROU │ │ │ │ + 0x00d455a0 4e445f4d 41585f43 4f554e54 20363420 ND_MAX_COUNT 64 │ │ │ │ + 0x00d455b0 0a20206f 75742076 65633320 765f7465 . out vec3 v_te │ │ │ │ + 0x00d455c0 78436f6f 7264733b 200a2020 756e6966 xCoords; . unif │ │ │ │ + 0x00d455d0 6f726d20 76656334 20755f74 696c6543 orm vec4 u_tileC │ │ │ │ + 0x00d455e0 6f6f7264 734d696e 4d61785b 54494c45 oordsMinMax[TILE │ │ │ │ + 0x00d455f0 5f424143 4b47524f 554e445f 4d41585f _BACKGROUND_MAX_ │ │ │ │ + 0x00d45600 434f554e 545d3b20 0a202075 6e69666f COUNT]; . unifo │ │ │ │ + 0x00d45610 726d2069 6e742075 5f746578 74757265 rm int u_texture │ │ │ │ + 0x00d45620 496e6465 785b5449 4c455f42 41434b47 Index[TILE_BACKG │ │ │ │ + 0x00d45630 524f554e 445f4d41 585f434f 554e545d ROUND_MAX_COUNT] │ │ │ │ + 0x00d45640 3b200a20 20756e69 666f726d 206d6174 ; . uniform mat │ │ │ │ + 0x00d45650 3420755f 6d6f6465 6c566965 773b200a 4 u_modelView; . │ │ │ │ + 0x00d45660 2020756e 69666f72 6d206d61 74342075 uniform mat4 u │ │ │ │ + 0x00d45670 5f70726f 6a656374 696f6e3b 200a2020 _projection; . │ │ │ │ + 0x00d45680 756e6966 6f726d20 6d617434 20755f70 uniform mat4 u_p │ │ │ │ + 0x00d45690 69766f74 5472616e 73666f72 6d3b200a ivotTransform; . │ │ │ │ + 0x00d456a0 2020636f 6e737420 666c6f61 74206b53 const float kS │ │ │ │ + 0x00d456b0 68617065 436f6f72 64536361 6c617220 hapeCoordScalar │ │ │ │ + 0x00d456c0 3d203130 30302e30 3b200a20 20766563 = 1000.0; . vec │ │ │ │ + 0x00d456d0 34206170 706c7950 69766f74 5472616e 4 applyPivotTran │ │ │ │ + 0x00d456e0 73666f72 6d287665 63342070 69766f74 sform(vec4 pivot │ │ │ │ + 0x00d456f0 2c206d61 74342070 69766f74 5472616e , mat4 pivotTran │ │ │ │ + 0x00d45700 73666f72 6d2c2066 6c6f6174 20706976 sform, float piv │ │ │ │ + 0x00d45710 6f745265 616c5a29 200a2020 7b200a20 otRealZ) . { . │ │ │ │ + 0x00d45720 20202076 65633420 7472616e 73666f72 vec4 transfor │ │ │ │ + 0x00d45730 6d656450 69766f74 203d2070 69766f74 medPivot = pivot │ │ │ │ + 0x00d45740 3b200a20 20202066 6c6f6174 2077203d ; . float w = │ │ │ │ + 0x00d45750 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ + 0x00d45760 742e773b 200a2020 20207472 616e7366 t.w; . transf │ │ │ │ + 0x00d45770 6f726d65 64506976 6f742e78 7977203d ormedPivot.xyw = │ │ │ │ + 0x00d45780 20287069 766f7454 72616e73 666f726d (pivotTransform │ │ │ │ + 0x00d45790 202a2076 65633428 7472616e 73666f72 * vec4(transfor │ │ │ │ + 0x00d457a0 6d656450 69766f74 2e78792c 20706976 medPivot.xy, piv │ │ │ │ + 0x00d457b0 6f745265 616c5a2c 20772929 2e787977 otRealZ, w)).xyw │ │ │ │ + 0x00d457c0 3b200a20 20202074 72616e73 666f726d ; . transform │ │ │ │ + 0x00d457d0 65645069 766f742e 7a202a3d 20747261 edPivot.z *= tra │ │ │ │ + 0x00d457e0 6e73666f 726d6564 5069766f 742e7720 nsformedPivot.w │ │ │ │ + 0x00d457f0 2f20773b 200a2020 23696664 65662056 / w; . #ifdef V │ │ │ │ + 0x00d45800 554c4b41 4e200a20 20202074 72616e73 ULKAN . trans │ │ │ │ + 0x00d45810 666f726d 65645069 766f742e 79203d20 formedPivot.y = │ │ │ │ + 0x00d45820 2d747261 6e73666f 726d6564 5069766f -transformedPivo │ │ │ │ + 0x00d45830 742e793b 200a2020 20207472 616e7366 t.y; . transf │ │ │ │ + 0x00d45840 6f726d65 64506976 6f742e7a 203d2028 ormedPivot.z = ( │ │ │ │ + 0x00d45850 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ + 0x00d45860 2e7a2020 2b207472 616e7366 6f726d65 .z + transforme │ │ │ │ + 0x00d45870 64506976 6f742e77 29202f20 322e303b dPivot.w) / 2.0; │ │ │ │ + 0x00d45880 200a2020 23656e64 6966200a 20202020 . #endif . │ │ │ │ + 0x00d45890 72657475 726e2074 72616e73 666f726d return transform │ │ │ │ + 0x00d458a0 65645069 766f743b 200a2020 7d200a20 edPivot; . } . │ │ │ │ + 0x00d458b0 20766563 34206170 706c7942 696c6c62 vec4 applyBillb │ │ │ │ + 0x00d458c0 6f617264 5069766f 74547261 6e73666f oardPivotTransfo │ │ │ │ + 0x00d458d0 726d2876 65633420 7069766f 742c206d rm(vec4 pivot, m │ │ │ │ + 0x00d458e0 61743420 7069766f 74547261 6e73666f at4 pivotTransfo │ │ │ │ + 0x00d458f0 726d2c20 666c6f61 74207069 766f7452 rm, float pivotR │ │ │ │ + 0x00d45900 65616c5a 2c207665 6332206f 66667365 ealZ, vec2 offse │ │ │ │ + 0x00d45910 7429200a 20207b20 0a202020 20666c6f t) . { . flo │ │ │ │ + 0x00d45920 6174206c 6f676963 5a203d20 7069766f at logicZ = pivo │ │ │ │ + 0x00d45930 742e7a20 2f207069 766f742e 773b200a t.z / pivot.w; . │ │ │ │ + 0x00d45940 20202020 76656334 20747261 6e73666f vec4 transfo │ │ │ │ + 0x00d45950 726d6564 5069766f 74203d20 7069766f rmedPivot = pivo │ │ │ │ + 0x00d45960 74547261 6e73666f 726d202a 20766563 tTransform * vec │ │ │ │ + 0x00d45970 34287069 766f742e 78792c20 7069766f 4(pivot.xy, pivo │ │ │ │ + 0x00d45980 74526561 6c5a2c20 7069766f 742e7729 tRealZ, pivot.w) │ │ │ │ + 0x00d45990 3b200a20 20202076 65633420 7363616c ; . vec4 scal │ │ │ │ + 0x00d459a0 65203d20 7069766f 74547261 6e73666f e = pivotTransfo │ │ │ │ + 0x00d459b0 726d202a 20766563 3428312e 302c202d rm * vec4(1.0, - │ │ │ │ + 0x00d459c0 312e302c 20302e30 2c20312e 30293b20 1.0, 0.0, 1.0); │ │ │ │ + 0x00d459d0 0a202020 20766563 3420706f 73697469 . vec4 positi │ │ │ │ + 0x00d459e0 6f6e203d 20766563 34287472 616e7366 on = vec4(transf │ │ │ │ + 0x00d459f0 6f726d65 64506976 6f742e78 79202f20 ormedPivot.xy / │ │ │ │ + 0x00d45a00 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ + 0x00d45a10 2e772c20 6c6f6769 635a2c20 312e3029 .w, logicZ, 1.0) │ │ │ │ + 0x00d45a20 202b2076 65633428 6f666673 6574202f + vec4(offset / │ │ │ │ + 0x00d45a30 20736361 6c652e77 202a2073 63616c65 scale.w * scale │ │ │ │ + 0x00d45a40 2e782c20 302e302c 20302e30 293b200a .x, 0.0, 0.0); . │ │ │ │ + 0x00d45a50 20202369 66646566 2056554c 4b414e20 #ifdef VULKAN │ │ │ │ + 0x00d45a60 0a202020 20706f73 6974696f 6e2e7920 . position.y │ │ │ │ + 0x00d45a70 3d202d70 6f736974 696f6e2e 793b200a = -position.y; . │ │ │ │ + 0x00d45a80 20202020 706f7369 74696f6e 2e7a203d position.z = │ │ │ │ + 0x00d45a90 2028706f 73697469 6f6e2e7a 20202b20 (position.z + │ │ │ │ + 0x00d45aa0 706f7369 74696f6e 2e772920 2f20322e position.w) / 2. │ │ │ │ + 0x00d45ab0 303b200a 20202365 6e646966 200a2020 0; . #endif . │ │ │ │ + 0x00d45ac0 20207265 7475726e 20706f73 6974696f return positio │ │ │ │ + 0x00d45ad0 6e3b200a 20207d20 0a202076 65633220 n; . } . vec2 │ │ │ │ + 0x00d45ae0 63616c63 4c696e65 5472616e 73666f72 calcLineTransfor │ │ │ │ + 0x00d45af0 6d656441 78697350 6f732876 65633220 medAxisPos(vec2 │ │ │ │ + 0x00d45b00 6f726967 696e616c 41786973 506f732c originalAxisPos, │ │ │ │ + 0x00d45b10 20766563 32207368 69667465 64506f73 vec2 shiftedPos │ │ │ │ + 0x00d45b20 2c206d61 7434206d 6f64656c 56696577 , mat4 modelView │ │ │ │ + 0x00d45b30 2c20666c 6f617420 68616c66 57696474 , float halfWidt │ │ │ │ + 0x00d45b40 6829200a 20207b20 0a202020 20766563 h) . { . vec │ │ │ │ + 0x00d45b50 32207020 3d202876 65633428 73686966 2 p = (vec4(shif │ │ │ │ + 0x00d45b60 74656450 6f732c20 302e302c 20312e30 tedPos, 0.0, 1.0 │ │ │ │ + 0x00d45b70 29202a20 6d6f6465 6c566965 77292e78 ) * modelView).x │ │ │ │ + 0x00d45b80 793b200a 20202020 76656332 2064203d y; . vec2 d = │ │ │ │ + 0x00d45b90 2070202d 206f7269 67696e61 6c417869 p - originalAxi │ │ │ │ + 0x00d45ba0 73506f73 3b200a20 20202069 66202864 sPos; . if (d │ │ │ │ + 0x00d45bb0 6f742864 2c206429 20213d20 302e3029 ot(d, d) != 0.0) │ │ │ │ + 0x00d45bc0 200a2020 20202020 72657475 726e206f . return o │ │ │ │ + 0x00d45bd0 72696769 6e616c41 78697350 6f73202b riginalAxisPos + │ │ │ │ + 0x00d45be0 206e6f72 6d616c69 7a652864 29202a20 normalize(d) * │ │ │ │ + 0x00d45bf0 68616c66 57696474 683b200a 20202020 halfWidth; . │ │ │ │ + 0x00d45c00 656c7365 200a2020 20202020 72657475 else . retu │ │ │ │ + 0x00d45c10 726e206f 72696769 6e616c41 78697350 rn originalAxisP │ │ │ │ + 0x00d45c20 6f733b20 0a20207d 200a2020 766f6964 os; . } . void │ │ │ │ + 0x00d45c30 206d6169 6e282920 0a20207b 200a2020 main() . { . │ │ │ │ + 0x00d45c40 20207665 63322071 75616456 65727465 vec2 quadVerte │ │ │ │ + 0x00d45c50 78203d20 76656332 28676c5f 56657274 x = vec2(gl_Vert │ │ │ │ + 0x00d45c60 65784944 20262031 2c202867 6c5f5665 exID & 1, (gl_Ve │ │ │ │ + 0x00d45c70 72746578 4944203e 3e203129 20262031 rtexID >> 1) & 1 │ │ │ │ + 0x00d45c80 293b200a 2020200a 20202020 76656334 ); . . vec4 │ │ │ │ + 0x00d45c90 2074696c 65436f6f 7264734d 696e4d61 tileCoordsMinMa │ │ │ │ + 0x00d45ca0 78203d20 755f7469 6c65436f 6f726473 x = u_tileCoords │ │ │ │ + 0x00d45cb0 4d696e4d 61785b67 6c5f496e 7374616e MinMax[gl_Instan │ │ │ │ + 0x00d45cc0 63654944 5d3b200a 20202020 76656332 ceID]; . vec2 │ │ │ │ + 0x00d45cd0 20776f72 6c64506f 73203d20 6d697828 worldPos = mix( │ │ │ │ + 0x00d45ce0 74696c65 436f6f72 64734d69 6e4d6178 tileCoordsMinMax │ │ │ │ + 0x00d45cf0 2e78792c 2074696c 65436f6f 7264734d .xy, tileCoordsM │ │ │ │ + 0x00d45d00 696e4d61 782e7a77 2c207175 61645665 inMax.zw, quadVe │ │ │ │ + 0x00d45d10 72746578 293b200a 20202020 76656334 rtex); . vec4 │ │ │ │ + 0x00d45d20 20706f73 203d2076 65633428 776f726c pos = vec4(worl │ │ │ │ + 0x00d45d30 64506f73 2c20302e 302c2031 2e302920 dPos, 0.0, 1.0) │ │ │ │ + 0x00d45d40 2a20755f 6d6f6465 6c566965 77202a20 * u_modelView * │ │ │ │ + 0x00d45d50 755f7072 6f6a6563 74696f6e 3b200a20 u_projection; . │ │ │ │ + 0x00d45d60 20202067 6c5f506f 73697469 6f6e203d gl_Position = │ │ │ │ + 0x00d45d70 20617070 6c795069 766f7454 72616e73 applyPivotTrans │ │ │ │ + 0x00d45d80 666f726d 28706f73 2c20755f 7069766f form(pos, u_pivo │ │ │ │ + 0x00d45d90 74547261 6e73666f 726d2c20 302e3029 tTransform, 0.0) │ │ │ │ + 0x00d45da0 3b200a20 20200a20 20202076 5f746578 ; . . v_tex │ │ │ │ + 0x00d45db0 436f6f72 6473203d 20766563 33287175 Coords = vec3(qu │ │ │ │ + 0x00d45dc0 61645665 72746578 2c20666c 6f617428 adVertex, float( │ │ │ │ + 0x00d45dd0 755f7465 78747572 65496e64 65785b67 u_textureIndex[g │ │ │ │ + 0x00d45de0 6c5f496e 7374616e 63654944 5d29293b l_InstanceID])); │ │ │ │ + 0x00d45df0 200a2020 7d200a00 00000000 00000000 . } .......... │ │ │ │ + 0x00d45e00 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d45e10 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d45e20 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d45e30 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d45e40 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d45e50 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d45e60 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d45e70 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d45e80 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d45e90 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d45ea0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d45eb0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d45ec0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d45ed0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d45ee0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d45ef0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d45f00 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d45f10 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d45f20 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d45f30 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d45f40 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d45f50 63332061 5f706f73 6974696f 6e3b200a c3 a_position; . │ │ │ │ + 0x00d45f60 2020696e 20766563 3420615f 6e6f726d in vec4 a_norm │ │ │ │ + 0x00d45f70 616c3b20 0a202069 6e207665 63342061 al; . in vec4 a │ │ │ │ + 0x00d45f80 5f636f6c 6f725465 78436f6f 72643b20 _colorTexCoord; │ │ │ │ + 0x00d45f90 0a20206f 75742076 65633220 765f636f . out vec2 v_co │ │ │ │ + 0x00d45fa0 6c6f7254 6578436f 6f72643b 200a2020 lorTexCoord; . │ │ │ │ + 0x00d45fb0 6f757420 76656332 20765f6d 61736b54 out vec2 v_maskT │ │ │ │ + 0x00d45fc0 6578436f 6f72643b 200a2020 6f757420 exCoord; . out │ │ │ │ + 0x00d45fd0 666c6f61 7420765f 68616c66 4c656e67 float v_halfLeng │ │ │ │ + 0x00d45fe0 74683b20 0a202075 6e69666f 726d206d th; . uniform m │ │ │ │ + 0x00d45ff0 61743420 755f6d6f 64656c56 6965773b at4 u_modelView; │ │ │ │ + 0x00d46000 200a2020 756e6966 6f726d20 6d617434 . uniform mat4 │ │ │ │ + 0x00d46010 20755f70 726f6a65 6374696f 6e3b200a u_projection; . │ │ │ │ + 0x00d46020 2020756e 69666f72 6d206d61 74342075 uniform mat4 u │ │ │ │ + 0x00d46030 5f706976 6f745472 616e7366 6f726d3b _pivotTransform; │ │ │ │ + 0x00d46040 200a2020 756e6966 6f726d20 76656334 . uniform vec4 │ │ │ │ + 0x00d46050 20755f74 72616666 69635061 72616d73 u_trafficParams │ │ │ │ + 0x00d46060 3b200a20 20756e69 666f726d 20766563 ; . uniform vec │ │ │ │ + 0x00d46070 3420755f 6f75746c 696e6543 6f6c6f72 4 u_outlineColor │ │ │ │ + 0x00d46080 3b200a20 20756e69 666f726d 20766563 ; . uniform vec │ │ │ │ + 0x00d46090 3420755f 6c696768 74417272 6f77436f 4 u_lightArrowCo │ │ │ │ + 0x00d460a0 6c6f723b 200a2020 756e6966 6f726d20 lor; . uniform │ │ │ │ + 0x00d460b0 76656334 20755f64 61726b41 72726f77 vec4 u_darkArrow │ │ │ │ + 0x00d460c0 436f6c6f 723b200a 2020756e 69666f72 Color; . unifor │ │ │ │ + 0x00d460d0 6d20666c 6f617420 755f6f75 746c696e m float u_outlin │ │ │ │ + 0x00d460e0 653b200a 2020756e 69666f72 6d20666c e; . uniform fl │ │ │ │ + 0x00d460f0 6f617420 755f6f70 61636974 793b200a oat u_opacity; . │ │ │ │ + 0x00d46100 2020636f 6e737420 666c6f61 74206b41 const float kA │ │ │ │ + 0x00d46110 72726f77 5653697a 65203d20 302e3235 rrowVSize = 0.25 │ │ │ │ + 0x00d46120 3b200a20 20636f6e 73742066 6c6f6174 ; . const float │ │ │ │ + 0x00d46130 206b5368 61706543 6f6f7264 5363616c kShapeCoordScal │ │ │ │ + 0x00d46140 6172203d 20313030 302e303b 200a2020 ar = 1000.0; . │ │ │ │ + 0x00d46150 76656334 20617070 6c795069 766f7454 vec4 applyPivotT │ │ │ │ + 0x00d46160 72616e73 666f726d 28766563 34207069 ransform(vec4 pi │ │ │ │ + 0x00d46170 766f742c 206d6174 34207069 766f7454 vot, mat4 pivotT │ │ │ │ + 0x00d46180 72616e73 666f726d 2c20666c 6f617420 ransform, float │ │ │ │ + 0x00d46190 7069766f 74526561 6c5a2920 0a20207b pivotRealZ) . { │ │ │ │ + 0x00d461a0 200a2020 20207665 63342074 72616e73 . vec4 trans │ │ │ │ + 0x00d461b0 666f726d 65645069 766f7420 3d207069 formedPivot = pi │ │ │ │ + 0x00d461c0 766f743b 200a2020 2020666c 6f617420 vot; . float │ │ │ │ + 0x00d461d0 77203d20 7472616e 73666f72 6d656450 w = transformedP │ │ │ │ + 0x00d461e0 69766f74 2e773b20 0a202020 20747261 ivot.w; . tra │ │ │ │ + 0x00d461f0 6e73666f 726d6564 5069766f 742e7879 nsformedPivot.xy │ │ │ │ + 0x00d46200 77203d20 28706976 6f745472 616e7366 w = (pivotTransf │ │ │ │ + 0x00d46210 6f726d20 2a207665 63342874 72616e73 orm * vec4(trans │ │ │ │ + 0x00d46220 666f726d 65645069 766f742e 78792c20 formedPivot.xy, │ │ │ │ + 0x00d46230 7069766f 74526561 6c5a2c20 7729292e pivotRealZ, w)). │ │ │ │ + 0x00d46240 7879773b 200a2020 20207472 616e7366 xyw; . transf │ │ │ │ + 0x00d46250 6f726d65 64506976 6f742e7a 202a3d20 ormedPivot.z *= │ │ │ │ + 0x00d46260 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ + 0x00d46270 2e77202f 20773b20 0a202023 69666465 .w / w; . #ifde │ │ │ │ + 0x00d46280 66205655 4c4b414e 200a2020 20207472 f VULKAN . tr │ │ │ │ + 0x00d46290 616e7366 6f726d65 64506976 6f742e79 ansformedPivot.y │ │ │ │ + 0x00d462a0 203d202d 7472616e 73666f72 6d656450 = -transformedP │ │ │ │ + 0x00d462b0 69766f74 2e793b20 0a202020 20747261 ivot.y; . tra │ │ │ │ + 0x00d462c0 6e73666f 726d6564 5069766f 742e7a20 nsformedPivot.z │ │ │ │ + 0x00d462d0 3d202874 72616e73 666f726d 65645069 = (transformedPi │ │ │ │ + 0x00d462e0 766f742e 7a20202b 20747261 6e73666f vot.z + transfo │ │ │ │ + 0x00d462f0 726d6564 5069766f 742e7729 202f2032 rmedPivot.w) / 2 │ │ │ │ + 0x00d46300 2e303b20 0a202023 656e6469 66200a20 .0; . #endif . │ │ │ │ + 0x00d46310 20202072 65747572 6e207472 616e7366 return transf │ │ │ │ + 0x00d46320 6f726d65 64506976 6f743b20 0a20207d ormedPivot; . } │ │ │ │ + 0x00d46330 200a2020 76656334 20617070 6c794269 . vec4 applyBi │ │ │ │ + 0x00d46340 6c6c626f 61726450 69766f74 5472616e llboardPivotTran │ │ │ │ + 0x00d46350 73666f72 6d287665 63342070 69766f74 sform(vec4 pivot │ │ │ │ + 0x00d46360 2c206d61 74342070 69766f74 5472616e , mat4 pivotTran │ │ │ │ + 0x00d46370 73666f72 6d2c2066 6c6f6174 20706976 sform, float piv │ │ │ │ + 0x00d46380 6f745265 616c5a2c 20766563 32206f66 otRealZ, vec2 of │ │ │ │ + 0x00d46390 66736574 29200a20 207b200a 20202020 fset) . { . │ │ │ │ + 0x00d463a0 666c6f61 74206c6f 6769635a 203d2070 float logicZ = p │ │ │ │ + 0x00d463b0 69766f74 2e7a202f 20706976 6f742e77 ivot.z / pivot.w │ │ │ │ + 0x00d463c0 3b200a20 20202076 65633420 7472616e ; . vec4 tran │ │ │ │ + 0x00d463d0 73666f72 6d656450 69766f74 203d2070 sformedPivot = p │ │ │ │ + 0x00d463e0 69766f74 5472616e 73666f72 6d202a20 ivotTransform * │ │ │ │ + 0x00d463f0 76656334 28706976 6f742e78 792c2070 vec4(pivot.xy, p │ │ │ │ + 0x00d46400 69766f74 5265616c 5a2c2070 69766f74 ivotRealZ, pivot │ │ │ │ + 0x00d46410 2e77293b 200a2020 20207665 63342073 .w); . vec4 s │ │ │ │ + 0x00d46420 63616c65 203d2070 69766f74 5472616e cale = pivotTran │ │ │ │ + 0x00d46430 73666f72 6d202a20 76656334 28312e30 sform * vec4(1.0 │ │ │ │ + 0x00d46440 2c202d31 2e302c20 302e302c 20312e30 , -1.0, 0.0, 1.0 │ │ │ │ + 0x00d46450 293b200a 20202020 76656334 20706f73 ); . vec4 pos │ │ │ │ + 0x00d46460 6974696f 6e203d20 76656334 28747261 ition = vec4(tra │ │ │ │ + 0x00d46470 6e73666f 726d6564 5069766f 742e7879 nsformedPivot.xy │ │ │ │ + 0x00d46480 202f2074 72616e73 666f726d 65645069 / transformedPi │ │ │ │ + 0x00d46490 766f742e 772c206c 6f676963 5a2c2031 vot.w, logicZ, 1 │ │ │ │ + 0x00d464a0 2e302920 2b207665 6334286f 66667365 .0) + vec4(offse │ │ │ │ + 0x00d464b0 74202f20 7363616c 652e7720 2a207363 t / scale.w * sc │ │ │ │ + 0x00d464c0 616c652e 782c2030 2e302c20 302e3029 ale.x, 0.0, 0.0) │ │ │ │ + 0x00d464d0 3b200a20 20236966 64656620 56554c4b ; . #ifdef VULK │ │ │ │ + 0x00d464e0 414e200a 20202020 706f7369 74696f6e AN . position │ │ │ │ + 0x00d464f0 2e79203d 202d706f 73697469 6f6e2e79 .y = -position.y │ │ │ │ + 0x00d46500 3b200a20 20202070 6f736974 696f6e2e ; . position. │ │ │ │ + 0x00d46510 7a203d20 28706f73 6974696f 6e2e7a20 z = (position.z │ │ │ │ + 0x00d46520 202b2070 6f736974 696f6e2e 7729202f + position.w) / │ │ │ │ + 0x00d46530 20322e30 3b200a20 2023656e 64696620 2.0; . #endif │ │ │ │ + 0x00d46540 0a202020 20726574 75726e20 706f7369 . return posi │ │ │ │ + 0x00d46550 74696f6e 3b200a20 207d200a 20207665 tion; . } . ve │ │ │ │ + 0x00d46560 63322063 616c634c 696e6554 72616e73 c2 calcLineTrans │ │ │ │ + 0x00d46570 666f726d 65644178 6973506f 73287665 formedAxisPos(ve │ │ │ │ + 0x00d46580 6332206f 72696769 6e616c41 78697350 c2 originalAxisP │ │ │ │ + 0x00d46590 6f732c20 76656332 20736869 66746564 os, vec2 shifted │ │ │ │ + 0x00d465a0 506f732c 206d6174 34206d6f 64656c56 Pos, mat4 modelV │ │ │ │ + 0x00d465b0 6965772c 20666c6f 61742068 616c6657 iew, float halfW │ │ │ │ + 0x00d465c0 69647468 29200a20 207b200a 20202020 idth) . { . │ │ │ │ + 0x00d465d0 76656332 2070203d 20287665 63342873 vec2 p = (vec4(s │ │ │ │ + 0x00d465e0 68696674 6564506f 732c2030 2e302c20 hiftedPos, 0.0, │ │ │ │ + 0x00d465f0 312e3029 202a206d 6f64656c 56696577 1.0) * modelView │ │ │ │ + 0x00d46600 292e7879 3b200a20 20202076 65633220 ).xy; . vec2 │ │ │ │ + 0x00d46610 64203d20 70202d20 6f726967 696e616c d = p - original │ │ │ │ + 0x00d46620 41786973 506f733b 200a2020 20206966 AxisPos; . if │ │ │ │ + 0x00d46630 2028646f 7428642c 20642920 213d2030 (dot(d, d) != 0 │ │ │ │ + 0x00d46640 2e302920 0a202020 20202072 65747572 .0) . retur │ │ │ │ + 0x00d46650 6e206f72 6967696e 616c4178 6973506f n originalAxisPo │ │ │ │ + 0x00d46660 73202b20 6e6f726d 616c697a 65286429 s + normalize(d) │ │ │ │ + 0x00d46670 202a2068 616c6657 69647468 3b200a20 * halfWidth; . │ │ │ │ + 0x00d46680 20202065 6c736520 0a202020 20202072 else . r │ │ │ │ + 0x00d46690 65747572 6e206f72 6967696e 616c4178 eturn originalAx │ │ │ │ + 0x00d466a0 6973506f 733b200a 20207d20 0a202076 isPos; . } . v │ │ │ │ + 0x00d466b0 6f696420 6d61696e 2829200a 20207b20 oid main() . { │ │ │ │ + 0x00d466c0 0a202020 20766563 32206e6f 726d616c . vec2 normal │ │ │ │ + 0x00d466d0 203d2061 5f6e6f72 6d616c2e 78793b20 = a_normal.xy; │ │ │ │ + 0x00d466e0 0a202020 20766563 32207472 616e7366 . vec2 transf │ │ │ │ + 0x00d466f0 6f726d65 64417869 73506f73 203d2028 ormedAxisPos = ( │ │ │ │ + 0x00d46700 76656334 28615f70 6f736974 696f6e2e vec4(a_position. │ │ │ │ + 0x00d46710 78792c20 302e302c 20312e30 29202a20 xy, 0.0, 1.0) * │ │ │ │ + 0x00d46720 755f6d6f 64656c56 69657729 2e78793b u_modelView).xy; │ │ │ │ + 0x00d46730 200a2020 20206966 2028646f 74286e6f . if (dot(no │ │ │ │ + 0x00d46740 726d616c 2c206e6f 726d616c 2920213d rmal, normal) != │ │ │ │ + 0x00d46750 20302e30 29200a20 2020207b 200a2020 0.0) . { . │ │ │ │ + 0x00d46760 20202020 76656332 206e6f72 6d203d20 vec2 norm = │ │ │ │ + 0x00d46770 6e6f726d 616c202a 20755f74 72616666 normal * u_traff │ │ │ │ + 0x00d46780 69635061 72616d73 2e783b20 0a202020 icParams.x; . │ │ │ │ + 0x00d46790 20202069 66202861 5f6e6f72 6d616c2e if (a_normal. │ │ │ │ + 0x00d467a0 7a203c20 302e3029 200a2020 20202020 z < 0.0) . │ │ │ │ + 0x00d467b0 20206e6f 726d203d 206e6f72 6d616c20 norm = normal │ │ │ │ + 0x00d467c0 2a20755f 74726166 66696350 6172616d * u_trafficParam │ │ │ │ + 0x00d467d0 732e793b 200a2020 20202020 7472616e s.y; . tran │ │ │ │ + 0x00d467e0 73666f72 6d656441 78697350 6f73203d sformedAxisPos = │ │ │ │ + 0x00d467f0 2063616c 634c696e 65547261 6e73666f calcLineTransfo │ │ │ │ + 0x00d46800 726d6564 41786973 506f7328 7472616e rmedAxisPos(tran │ │ │ │ + 0x00d46810 73666f72 6d656441 78697350 6f732c20 sformedAxisPos, │ │ │ │ + 0x00d46820 615f706f 73697469 6f6e2e78 79202b20 a_position.xy + │ │ │ │ + 0x00d46830 6e6f726d 2c200a20 20202020 20202020 norm, . │ │ │ │ + 0x00d46840 20202020 20202020 20202020 20202020 │ │ │ │ + 0x00d46850 20202020 20202020 20202020 20202020 │ │ │ │ + 0x00d46860 20202020 20202020 20202020 20755f6d u_m │ │ │ │ + 0x00d46870 6f64656c 56696577 2c206c65 6e677468 odelView, length │ │ │ │ + 0x00d46880 286e6f72 6d29293b 200a2020 20207d20 (norm)); . } │ │ │ │ + 0x00d46890 0a202020 20666c6f 61742075 4f666673 . float uOffs │ │ │ │ + 0x00d468a0 6574203d 206c656e 67746828 76656334 et = length(vec4 │ │ │ │ + 0x00d468b0 286b5368 61706543 6f6f7264 5363616c (kShapeCoordScal │ │ │ │ + 0x00d468c0 61722c20 302c2030 2c203029 202a2075 ar, 0, 0, 0) * u │ │ │ │ + 0x00d468d0 5f6d6f64 656c5669 65772920 2a20615f _modelView) * a_ │ │ │ │ + 0x00d468e0 6e6f726d 616c2e77 3b200a20 20202076 normal.w; . v │ │ │ │ + 0x00d468f0 5f636f6c 6f725465 78436f6f 7264203d _colorTexCoord = │ │ │ │ + 0x00d46900 20615f63 6f6c6f72 54657843 6f6f7264 a_colorTexCoord │ │ │ │ + 0x00d46910 2e78793b 200a2020 2020666c 6f617420 .xy; . float │ │ │ │ + 0x00d46920 76203d20 6d697828 615f636f 6c6f7254 v = mix(a_colorT │ │ │ │ + 0x00d46930 6578436f 6f72642e 7a2c2061 5f636f6c exCoord.z, a_col │ │ │ │ + 0x00d46940 6f725465 78436f6f 72642e7a 202b206b orTexCoord.z + k │ │ │ │ + 0x00d46950 4172726f 77565369 7a652c20 302e3520 ArrowVSize, 0.5 │ │ │ │ + 0x00d46960 2a20615f 6e6f726d 616c2e7a 202b2030 * a_normal.z + 0 │ │ │ │ + 0x00d46970 2e35293b 200a2020 2020765f 6d61736b .5); . v_mask │ │ │ │ + 0x00d46980 54657843 6f6f7264 203d2076 65633228 TexCoord = vec2( │ │ │ │ + 0x00d46990 754f6666 73657420 2a20755f 74726166 uOffset * u_traf │ │ │ │ + 0x00d469a0 66696350 6172616d 732e7a2c 20762920 ficParams.z, v) │ │ │ │ + 0x00d469b0 2a20755f 74726166 66696350 6172616d * u_trafficParam │ │ │ │ + 0x00d469c0 732e773b 200a2020 2020765f 6d61736b s.w; . v_mask │ │ │ │ + 0x00d469d0 54657843 6f6f7264 2e78202a 3d207374 TexCoord.x *= st │ │ │ │ + 0x00d469e0 65702861 5f636f6c 6f725465 78436f6f ep(a_colorTexCoo │ │ │ │ + 0x00d469f0 72642e77 2c20765f 6d61736b 54657843 rd.w, v_maskTexC │ │ │ │ + 0x00d46a00 6f6f7264 2e78293b 200a2020 2020765f oord.x); . v_ │ │ │ │ + 0x00d46a10 68616c66 4c656e67 7468203d 20615f6e halfLength = a_n │ │ │ │ + 0x00d46a20 6f726d61 6c2e7a3b 200a2020 20207665 ormal.z; . ve │ │ │ │ + 0x00d46a30 63342070 6f73203d 20766563 34287472 c4 pos = vec4(tr │ │ │ │ + 0x00d46a40 616e7366 6f726d65 64417869 73506f73 ansformedAxisPos │ │ │ │ + 0x00d46a50 2c20615f 706f7369 74696f6e 2e7a2c20 , a_position.z, │ │ │ │ + 0x00d46a60 312e3029 202a2075 5f70726f 6a656374 1.0) * u_project │ │ │ │ + 0x00d46a70 696f6e3b 200a2020 2020676c 5f506f73 ion; . gl_Pos │ │ │ │ + 0x00d46a80 6974696f 6e203d20 6170706c 79506976 ition = applyPiv │ │ │ │ + 0x00d46a90 6f745472 616e7366 6f726d28 706f732c otTransform(pos, │ │ │ │ + 0x00d46aa0 20755f70 69766f74 5472616e 73666f72 u_pivotTransfor │ │ │ │ + 0x00d46ab0 6d2c2030 2e30293b 200a2020 7d200a00 m, 0.0); . } .. │ │ │ │ + 0x00d46ac0 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d46ad0 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d46ae0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d46af0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d46b00 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d46b10 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d46b20 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d46b30 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d46b40 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d46b50 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d46b60 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d46b70 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d46b80 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d46b90 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d46ba0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d46bb0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d46bc0 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d46bd0 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d46be0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d46bf0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d46c00 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d46c10 63342061 5f706f73 6974696f 6e3b200a c4 a_position; . │ │ │ │ + 0x00d46c20 2020696e 20766563 3220615f 6e6f726d in vec2 a_norm │ │ │ │ + 0x00d46c30 616c3b20 0a202069 6e207665 63322061 al; . in vec2 a │ │ │ │ + 0x00d46c40 5f636f6c 6f725465 78436f6f 7264733b _colorTexCoords; │ │ │ │ + 0x00d46c50 200a2020 6f757420 76656332 20765f63 . out vec2 v_c │ │ │ │ + 0x00d46c60 6f6c6f72 54657843 6f6f7264 733b200a olorTexCoords; . │ │ │ │ + 0x00d46c70 2020756e 69666f72 6d206d61 74342075 uniform mat4 u │ │ │ │ + 0x00d46c80 5f6d6f64 656c5669 65773b20 0a202075 _modelView; . u │ │ │ │ + 0x00d46c90 6e69666f 726d206d 61743420 755f7072 niform mat4 u_pr │ │ │ │ + 0x00d46ca0 6f6a6563 74696f6e 3b200a20 20756e69 ojection; . uni │ │ │ │ + 0x00d46cb0 666f726d 206d6174 3420755f 7069766f form mat4 u_pivo │ │ │ │ + 0x00d46cc0 74547261 6e73666f 726d3b20 0a202075 tTransform; . u │ │ │ │ + 0x00d46cd0 6e69666f 726d2076 65633420 755f726f niform vec4 u_ro │ │ │ │ + 0x00d46ce0 75746550 6172616d 733b200a 2020756e uteParams; . un │ │ │ │ + 0x00d46cf0 69666f72 6d207665 63342075 5f636f6c iform vec4 u_col │ │ │ │ + 0x00d46d00 6f723b20 0a202075 6e69666f 726d2076 or; . uniform v │ │ │ │ + 0x00d46d10 65633420 755f6d61 736b436f 6c6f723b ec4 u_maskColor; │ │ │ │ + 0x00d46d20 200a2020 756e6966 6f726d20 76656334 . uniform vec4 │ │ │ │ + 0x00d46d30 20755f6f 75746c69 6e65436f 6c6f723b u_outlineColor; │ │ │ │ + 0x00d46d40 200a2020 756e6966 6f726d20 76656334 . uniform vec4 │ │ │ │ + 0x00d46d50 20755f66 616b6543 6f6c6f72 3b200a20 u_fakeColor; . │ │ │ │ + 0x00d46d60 20756e69 666f726d 20766563 3420755f uniform vec4 u_ │ │ │ │ + 0x00d46d70 66616b65 4f75746c 696e6543 6f6c6f72 fakeOutlineColor │ │ │ │ + 0x00d46d80 3b200a20 20756e69 666f726d 20766563 ; . uniform vec │ │ │ │ + 0x00d46d90 3220755f 66616b65 426f7264 6572733b 2 u_fakeBorders; │ │ │ │ + 0x00d46da0 200a2020 756e6966 6f726d20 76656332 . uniform vec2 │ │ │ │ + 0x00d46db0 20755f70 61747465 726e3b20 0a202075 u_pattern; . u │ │ │ │ + 0x00d46dc0 6e69666f 726d2076 65633220 755f616e niform vec2 u_an │ │ │ │ + 0x00d46dd0 676c6543 6f735369 6e3b200a 2020756e gleCosSin; . un │ │ │ │ + 0x00d46de0 69666f72 6d20666c 6f617420 755f6172 iform float u_ar │ │ │ │ + 0x00d46df0 726f7748 616c6657 69647468 3b200a20 rowHalfWidth; . │ │ │ │ + 0x00d46e00 20756e69 666f726d 20666c6f 61742075 uniform float u │ │ │ │ + 0x00d46e10 5f6f7061 63697479 3b200a20 20636f6e _opacity; . con │ │ │ │ + 0x00d46e20 73742066 6c6f6174 206b5368 61706543 st float kShapeC │ │ │ │ + 0x00d46e30 6f6f7264 5363616c 6172203d 20313030 oordScalar = 100 │ │ │ │ + 0x00d46e40 302e303b 200a2020 76656334 20617070 0.0; . vec4 app │ │ │ │ + 0x00d46e50 6c795069 766f7454 72616e73 666f726d lyPivotTransform │ │ │ │ + 0x00d46e60 28766563 34207069 766f742c 206d6174 (vec4 pivot, mat │ │ │ │ + 0x00d46e70 34207069 766f7454 72616e73 666f726d 4 pivotTransform │ │ │ │ + 0x00d46e80 2c20666c 6f617420 7069766f 74526561 , float pivotRea │ │ │ │ + 0x00d46e90 6c5a2920 0a20207b 200a2020 20207665 lZ) . { . ve │ │ │ │ + 0x00d46ea0 63342074 72616e73 666f726d 65645069 c4 transformedPi │ │ │ │ + 0x00d46eb0 766f7420 3d207069 766f743b 200a2020 vot = pivot; . │ │ │ │ + 0x00d46ec0 2020666c 6f617420 77203d20 7472616e float w = tran │ │ │ │ + 0x00d46ed0 73666f72 6d656450 69766f74 2e773b20 sformedPivot.w; │ │ │ │ + 0x00d46ee0 0a202020 20747261 6e73666f 726d6564 . transformed │ │ │ │ + 0x00d46ef0 5069766f 742e7879 77203d20 28706976 Pivot.xyw = (piv │ │ │ │ + 0x00d46f00 6f745472 616e7366 6f726d20 2a207665 otTransform * ve │ │ │ │ + 0x00d46f10 63342874 72616e73 666f726d 65645069 c4(transformedPi │ │ │ │ + 0x00d46f20 766f742e 78792c20 7069766f 74526561 vot.xy, pivotRea │ │ │ │ + 0x00d46f30 6c5a2c20 7729292e 7879773b 200a2020 lZ, w)).xyw; . │ │ │ │ + 0x00d46f40 20207472 616e7366 6f726d65 64506976 transformedPiv │ │ │ │ + 0x00d46f50 6f742e7a 202a3d20 7472616e 73666f72 ot.z *= transfor │ │ │ │ + 0x00d46f60 6d656450 69766f74 2e77202f 20773b20 medPivot.w / w; │ │ │ │ + 0x00d46f70 0a202023 69666465 66205655 4c4b414e . #ifdef VULKAN │ │ │ │ + 0x00d46f80 200a2020 20207472 616e7366 6f726d65 . transforme │ │ │ │ + 0x00d46f90 64506976 6f742e79 203d202d 7472616e dPivot.y = -tran │ │ │ │ + 0x00d46fa0 73666f72 6d656450 69766f74 2e793b20 sformedPivot.y; │ │ │ │ + 0x00d46fb0 0a202020 20747261 6e73666f 726d6564 . transformed │ │ │ │ + 0x00d46fc0 5069766f 742e7a20 3d202874 72616e73 Pivot.z = (trans │ │ │ │ + 0x00d46fd0 666f726d 65645069 766f742e 7a20202b formedPivot.z + │ │ │ │ + 0x00d46fe0 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ + 0x00d46ff0 742e7729 202f2032 2e303b20 0a202023 t.w) / 2.0; . # │ │ │ │ + 0x00d47000 656e6469 66200a20 20202072 65747572 endif . retur │ │ │ │ + 0x00d47010 6e207472 616e7366 6f726d65 64506976 n transformedPiv │ │ │ │ + 0x00d47020 6f743b20 0a20207d 200a2020 76656334 ot; . } . vec4 │ │ │ │ + 0x00d47030 20617070 6c794269 6c6c626f 61726450 applyBillboardP │ │ │ │ + 0x00d47040 69766f74 5472616e 73666f72 6d287665 ivotTransform(ve │ │ │ │ + 0x00d47050 63342070 69766f74 2c206d61 74342070 c4 pivot, mat4 p │ │ │ │ + 0x00d47060 69766f74 5472616e 73666f72 6d2c2066 ivotTransform, f │ │ │ │ + 0x00d47070 6c6f6174 20706976 6f745265 616c5a2c loat pivotRealZ, │ │ │ │ + 0x00d47080 20766563 32206f66 66736574 29200a20 vec2 offset) . │ │ │ │ + 0x00d47090 207b200a 20202020 666c6f61 74206c6f { . float lo │ │ │ │ + 0x00d470a0 6769635a 203d2070 69766f74 2e7a202f gicZ = pivot.z / │ │ │ │ + 0x00d470b0 20706976 6f742e77 3b200a20 20202076 pivot.w; . v │ │ │ │ + 0x00d470c0 65633420 7472616e 73666f72 6d656450 ec4 transformedP │ │ │ │ + 0x00d470d0 69766f74 203d2070 69766f74 5472616e ivot = pivotTran │ │ │ │ + 0x00d470e0 73666f72 6d202a20 76656334 28706976 sform * vec4(piv │ │ │ │ + 0x00d470f0 6f742e78 792c2070 69766f74 5265616c ot.xy, pivotReal │ │ │ │ + 0x00d47100 5a2c2070 69766f74 2e77293b 200a2020 Z, pivot.w); . │ │ │ │ + 0x00d47110 20207665 63342073 63616c65 203d2070 vec4 scale = p │ │ │ │ + 0x00d47120 69766f74 5472616e 73666f72 6d202a20 ivotTransform * │ │ │ │ + 0x00d47130 76656334 28312e30 2c202d31 2e302c20 vec4(1.0, -1.0, │ │ │ │ + 0x00d47140 302e302c 20312e30 293b200a 20202020 0.0, 1.0); . │ │ │ │ + 0x00d47150 76656334 20706f73 6974696f 6e203d20 vec4 position = │ │ │ │ + 0x00d47160 76656334 28747261 6e73666f 726d6564 vec4(transformed │ │ │ │ + 0x00d47170 5069766f 742e7879 202f2074 72616e73 Pivot.xy / trans │ │ │ │ + 0x00d47180 666f726d 65645069 766f742e 772c206c formedPivot.w, l │ │ │ │ + 0x00d47190 6f676963 5a2c2031 2e302920 2b207665 ogicZ, 1.0) + ve │ │ │ │ + 0x00d471a0 6334286f 66667365 74202f20 7363616c c4(offset / scal │ │ │ │ + 0x00d471b0 652e7720 2a207363 616c652e 782c2030 e.w * scale.x, 0 │ │ │ │ + 0x00d471c0 2e302c20 302e3029 3b200a20 20236966 .0, 0.0); . #if │ │ │ │ + 0x00d471d0 64656620 56554c4b 414e200a 20202020 def VULKAN . │ │ │ │ + 0x00d471e0 706f7369 74696f6e 2e79203d 202d706f position.y = -po │ │ │ │ + 0x00d471f0 73697469 6f6e2e79 3b200a20 20202070 sition.y; . p │ │ │ │ + 0x00d47200 6f736974 696f6e2e 7a203d20 28706f73 osition.z = (pos │ │ │ │ + 0x00d47210 6974696f 6e2e7a20 202b2070 6f736974 ition.z + posit │ │ │ │ + 0x00d47220 696f6e2e 7729202f 20322e30 3b200a20 ion.w) / 2.0; . │ │ │ │ + 0x00d47230 2023656e 64696620 0a202020 20726574 #endif . ret │ │ │ │ + 0x00d47240 75726e20 706f7369 74696f6e 3b200a20 urn position; . │ │ │ │ + 0x00d47250 207d200a 20207665 63322063 616c634c } . vec2 calcL │ │ │ │ + 0x00d47260 696e6554 72616e73 666f726d 65644178 ineTransformedAx │ │ │ │ + 0x00d47270 6973506f 73287665 6332206f 72696769 isPos(vec2 origi │ │ │ │ + 0x00d47280 6e616c41 78697350 6f732c20 76656332 nalAxisPos, vec2 │ │ │ │ + 0x00d47290 20736869 66746564 506f732c 206d6174 shiftedPos, mat │ │ │ │ + 0x00d472a0 34206d6f 64656c56 6965772c 20666c6f 4 modelView, flo │ │ │ │ + 0x00d472b0 61742068 616c6657 69647468 29200a20 at halfWidth) . │ │ │ │ + 0x00d472c0 207b200a 20202020 76656332 2070203d { . vec2 p = │ │ │ │ + 0x00d472d0 20287665 63342873 68696674 6564506f (vec4(shiftedPo │ │ │ │ + 0x00d472e0 732c2030 2e302c20 312e3029 202a206d s, 0.0, 1.0) * m │ │ │ │ + 0x00d472f0 6f64656c 56696577 292e7879 3b200a20 odelView).xy; . │ │ │ │ + 0x00d47300 20202076 65633220 64203d20 70202d20 vec2 d = p - │ │ │ │ + 0x00d47310 6f726967 696e616c 41786973 506f733b originalAxisPos; │ │ │ │ + 0x00d47320 200a2020 20206966 2028646f 7428642c . if (dot(d, │ │ │ │ + 0x00d47330 20642920 213d2030 2e302920 0a202020 d) != 0.0) . │ │ │ │ + 0x00d47340 20202072 65747572 6e206f72 6967696e return origin │ │ │ │ + 0x00d47350 616c4178 6973506f 73202b20 6e6f726d alAxisPos + norm │ │ │ │ + 0x00d47360 616c697a 65286429 202a2068 616c6657 alize(d) * halfW │ │ │ │ + 0x00d47370 69647468 3b200a20 20202065 6c736520 idth; . else │ │ │ │ + 0x00d47380 0a202020 20202072 65747572 6e206f72 . return or │ │ │ │ + 0x00d47390 6967696e 616c4178 6973506f 733b200a iginalAxisPos; . │ │ │ │ + 0x00d473a0 20207d20 0a202076 6f696420 6d61696e } . void main │ │ │ │ + 0x00d473b0 2829200a 20207b20 0a202020 20766563 () . { . vec │ │ │ │ + 0x00d473c0 32207472 616e7366 6f726d65 64417869 2 transformedAxi │ │ │ │ + 0x00d473d0 73506f73 203d2028 76656334 28615f70 sPos = (vec4(a_p │ │ │ │ + 0x00d473e0 6f736974 696f6e2e 78792c20 302e302c osition.xy, 0.0, │ │ │ │ + 0x00d473f0 20312e30 29202a20 755f6d6f 64656c56 1.0) * u_modelV │ │ │ │ + 0x00d47400 69657729 2e78793b 200a2020 20206966 iew).xy; . if │ │ │ │ + 0x00d47410 2028646f 7428615f 6e6f726d 616c2c20 (dot(a_normal, │ │ │ │ + 0x00d47420 615f6e6f 726d616c 2920213d 20302e30 a_normal) != 0.0 │ │ │ │ + 0x00d47430 29200a20 2020207b 200a2020 20202020 ) . { . │ │ │ │ + 0x00d47440 76656332 206e6f72 6d203d20 615f6e6f vec2 norm = a_no │ │ │ │ + 0x00d47450 726d616c 202a2075 5f617272 6f774861 rmal * u_arrowHa │ │ │ │ + 0x00d47460 6c665769 6474683b 200a2020 20202020 lfWidth; . │ │ │ │ + 0x00d47470 7472616e 73666f72 6d656441 78697350 transformedAxisP │ │ │ │ + 0x00d47480 6f73203d 2063616c 634c696e 65547261 os = calcLineTra │ │ │ │ + 0x00d47490 6e73666f 726d6564 41786973 506f7328 nsformedAxisPos( │ │ │ │ + 0x00d474a0 7472616e 73666f72 6d656441 78697350 transformedAxisP │ │ │ │ + 0x00d474b0 6f732c20 615f706f 73697469 6f6e2e78 os, a_position.x │ │ │ │ + 0x00d474c0 79202b20 6e6f726d 2c200a20 20202020 y + norm, . │ │ │ │ + 0x00d474d0 20202020 20202020 20202020 20202020 │ │ │ │ + 0x00d474e0 20202020 20202020 20202020 20202020 │ │ │ │ + 0x00d474f0 20202020 20202020 20202020 20202020 │ │ │ │ + 0x00d47500 20755f6d 6f64656c 56696577 2c206c65 u_modelView, le │ │ │ │ + 0x00d47510 6e677468 286e6f72 6d29293b 200a2020 ngth(norm)); . │ │ │ │ + 0x00d47520 20207d20 0a202020 20765f63 6f6c6f72 } . v_color │ │ │ │ + 0x00d47530 54657843 6f6f7264 73203d20 615f636f TexCoords = a_co │ │ │ │ + 0x00d47540 6c6f7254 6578436f 6f726473 3b200a20 lorTexCoords; . │ │ │ │ + 0x00d47550 20202076 65633420 706f7320 3d207665 vec4 pos = ve │ │ │ │ + 0x00d47560 63342874 72616e73 666f726d 65644178 c4(transformedAx │ │ │ │ + 0x00d47570 6973506f 732c2061 5f706f73 6974696f isPos, a_positio │ │ │ │ + 0x00d47580 6e2e7a2c 20312e30 29202a20 755f7072 n.z, 1.0) * u_pr │ │ │ │ + 0x00d47590 6f6a6563 74696f6e 3b200a20 20202067 ojection; . g │ │ │ │ + 0x00d475a0 6c5f506f 73697469 6f6e203d 20617070 l_Position = app │ │ │ │ + 0x00d475b0 6c795069 766f7454 72616e73 666f726d lyPivotTransform │ │ │ │ + 0x00d475c0 28706f73 2c20755f 7069766f 74547261 (pos, u_pivotTra │ │ │ │ + 0x00d475d0 6e73666f 726d2c20 302e3029 3b200a20 nsform, 0.0); . │ │ │ │ + 0x00d475e0 207d200a 00000000 00000000 00000000 } ............. │ │ │ │ + 0x00d475f0 00000000 00000000 00000000 00000000 ................ │ │ │ │ + 0x00d47600 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d47610 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d47620 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d47630 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d47640 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d47650 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d47660 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d47670 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d47680 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d47690 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d476a0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d476b0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d476c0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d476d0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d476e0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d476f0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d47700 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d47710 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d47720 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d47730 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d47740 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d47750 63332061 5f706f73 6974696f 6e3b200a c3 a_position; . │ │ │ │ + 0x00d47760 2020696e 20766563 3420615f 6e6f726d in vec4 a_norm │ │ │ │ + 0x00d47770 616c3b20 0a202069 6e207665 63342061 al; . in vec4 a │ │ │ │ + 0x00d47780 5f636f6c 6f723b20 0a20206f 75742076 _color; . out v │ │ │ │ + 0x00d47790 65633420 765f636f 6c6f723b 200a2020 ec4 v_color; . │ │ │ │ + 0x00d477a0 756e6966 6f726d20 6d617434 20755f6d uniform mat4 u_m │ │ │ │ + 0x00d477b0 6f64656c 56696577 3b200a20 20756e69 odelView; . uni │ │ │ │ + 0x00d477c0 666f726d 206d6174 3420755f 70726f6a form mat4 u_proj │ │ │ │ + 0x00d477d0 65637469 6f6e3b20 0a202075 6e69666f ection; . unifo │ │ │ │ + 0x00d477e0 726d206d 61743420 755f7069 766f7454 rm mat4 u_pivotT │ │ │ │ + 0x00d477f0 72616e73 666f726d 3b200a20 20756e69 ransform; . uni │ │ │ │ + 0x00d47800 666f726d 20766563 3420755f 70617261 form vec4 u_para │ │ │ │ + 0x00d47810 6d733b20 0a202075 6e69666f 726d2066 ms; . uniform f │ │ │ │ + 0x00d47820 6c6f6174 20755f6c 696e6548 616c6657 loat u_lineHalfW │ │ │ │ + 0x00d47830 69647468 3b200a20 20756e69 666f726d idth; . uniform │ │ │ │ + 0x00d47840 20666c6f 61742075 5f6d6178 52616469 float u_maxRadi │ │ │ │ + 0x00d47850 75733b20 0a202063 6f6e7374 20666c6f us; . const flo │ │ │ │ + 0x00d47860 6174206b 53686170 65436f6f 72645363 at kShapeCoordSc │ │ │ │ + 0x00d47870 616c6172 203d2031 3030302e 303b200a alar = 1000.0; . │ │ │ │ + 0x00d47880 20207665 63342061 70706c79 5069766f vec4 applyPivo │ │ │ │ + 0x00d47890 74547261 6e73666f 726d2876 65633420 tTransform(vec4 │ │ │ │ + 0x00d478a0 7069766f 742c206d 61743420 7069766f pivot, mat4 pivo │ │ │ │ + 0x00d478b0 74547261 6e73666f 726d2c20 666c6f61 tTransform, floa │ │ │ │ + 0x00d478c0 74207069 766f7452 65616c5a 29200a20 t pivotRealZ) . │ │ │ │ + 0x00d478d0 207b200a 20202020 76656334 20747261 { . vec4 tra │ │ │ │ + 0x00d478e0 6e73666f 726d6564 5069766f 74203d20 nsformedPivot = │ │ │ │ + 0x00d478f0 7069766f 743b200a 20202020 666c6f61 pivot; . floa │ │ │ │ + 0x00d47900 74207720 3d207472 616e7366 6f726d65 t w = transforme │ │ │ │ + 0x00d47910 64506976 6f742e77 3b200a20 20202074 dPivot.w; . t │ │ │ │ + 0x00d47920 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ + 0x00d47930 78797720 3d202870 69766f74 5472616e xyw = (pivotTran │ │ │ │ + 0x00d47940 73666f72 6d202a20 76656334 28747261 sform * vec4(tra │ │ │ │ + 0x00d47950 6e73666f 726d6564 5069766f 742e7879 nsformedPivot.xy │ │ │ │ + 0x00d47960 2c207069 766f7452 65616c5a 2c207729 , pivotRealZ, w) │ │ │ │ + 0x00d47970 292e7879 773b200a 20202020 7472616e ).xyw; . tran │ │ │ │ + 0x00d47980 73666f72 6d656450 69766f74 2e7a202a sformedPivot.z * │ │ │ │ + 0x00d47990 3d207472 616e7366 6f726d65 64506976 = transformedPiv │ │ │ │ + 0x00d479a0 6f742e77 202f2077 3b200a20 20236966 ot.w / w; . #if │ │ │ │ + 0x00d479b0 64656620 56554c4b 414e200a 20202020 def VULKAN . │ │ │ │ + 0x00d479c0 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ + 0x00d479d0 2e79203d 202d7472 616e7366 6f726d65 .y = -transforme │ │ │ │ + 0x00d479e0 64506976 6f742e79 3b200a20 20202074 dPivot.y; . t │ │ │ │ + 0x00d479f0 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ + 0x00d47a00 7a203d20 28747261 6e73666f 726d6564 z = (transformed │ │ │ │ + 0x00d47a10 5069766f 742e7a20 202b2074 72616e73 Pivot.z + trans │ │ │ │ + 0x00d47a20 666f726d 65645069 766f742e 7729202f formedPivot.w) / │ │ │ │ + 0x00d47a30 20322e30 3b200a20 2023656e 64696620 2.0; . #endif │ │ │ │ + 0x00d47a40 0a202020 20726574 75726e20 7472616e . return tran │ │ │ │ + 0x00d47a50 73666f72 6d656450 69766f74 3b200a20 sformedPivot; . │ │ │ │ + 0x00d47a60 207d200a 20207665 63342061 70706c79 } . vec4 apply │ │ │ │ + 0x00d47a70 42696c6c 626f6172 64506976 6f745472 BillboardPivotTr │ │ │ │ + 0x00d47a80 616e7366 6f726d28 76656334 20706976 ansform(vec4 piv │ │ │ │ + 0x00d47a90 6f742c20 6d617434 20706976 6f745472 ot, mat4 pivotTr │ │ │ │ + 0x00d47aa0 616e7366 6f726d2c 20666c6f 61742070 ansform, float p │ │ │ │ + 0x00d47ab0 69766f74 5265616c 5a2c2076 65633220 ivotRealZ, vec2 │ │ │ │ + 0x00d47ac0 6f666673 65742920 0a20207b 200a2020 offset) . { . │ │ │ │ + 0x00d47ad0 2020666c 6f617420 6c6f6769 635a203d float logicZ = │ │ │ │ + 0x00d47ae0 20706976 6f742e7a 202f2070 69766f74 pivot.z / pivot │ │ │ │ + 0x00d47af0 2e773b20 0a202020 20766563 34207472 .w; . vec4 tr │ │ │ │ + 0x00d47b00 616e7366 6f726d65 64506976 6f74203d ansformedPivot = │ │ │ │ + 0x00d47b10 20706976 6f745472 616e7366 6f726d20 pivotTransform │ │ │ │ + 0x00d47b20 2a207665 63342870 69766f74 2e78792c * vec4(pivot.xy, │ │ │ │ + 0x00d47b30 20706976 6f745265 616c5a2c 20706976 pivotRealZ, piv │ │ │ │ + 0x00d47b40 6f742e77 293b200a 20202020 76656334 ot.w); . vec4 │ │ │ │ + 0x00d47b50 20736361 6c65203d 20706976 6f745472 scale = pivotTr │ │ │ │ + 0x00d47b60 616e7366 6f726d20 2a207665 63342831 ansform * vec4(1 │ │ │ │ + 0x00d47b70 2e302c20 2d312e30 2c20302e 302c2031 .0, -1.0, 0.0, 1 │ │ │ │ + 0x00d47b80 2e30293b 200a2020 20207665 63342070 .0); . vec4 p │ │ │ │ + 0x00d47b90 6f736974 696f6e20 3d207665 63342874 osition = vec4(t │ │ │ │ + 0x00d47ba0 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ + 0x00d47bb0 7879202f 20747261 6e73666f 726d6564 xy / transformed │ │ │ │ + 0x00d47bc0 5069766f 742e772c 206c6f67 69635a2c Pivot.w, logicZ, │ │ │ │ + 0x00d47bd0 20312e30 29202b20 76656334 286f6666 1.0) + vec4(off │ │ │ │ + 0x00d47be0 73657420 2f207363 616c652e 77202a20 set / scale.w * │ │ │ │ + 0x00d47bf0 7363616c 652e782c 20302e30 2c20302e scale.x, 0.0, 0. │ │ │ │ + 0x00d47c00 30293b20 0a202023 69666465 66205655 0); . #ifdef VU │ │ │ │ + 0x00d47c10 4c4b414e 200a2020 2020706f 73697469 LKAN . positi │ │ │ │ + 0x00d47c20 6f6e2e79 203d202d 706f7369 74696f6e on.y = -position │ │ │ │ + 0x00d47c30 2e793b20 0a202020 20706f73 6974696f .y; . positio │ │ │ │ + 0x00d47c40 6e2e7a20 3d202870 6f736974 696f6e2e n.z = (position. │ │ │ │ + 0x00d47c50 7a20202b 20706f73 6974696f 6e2e7729 z + position.w) │ │ │ │ + 0x00d47c60 202f2032 2e303b20 0a202023 656e6469 / 2.0; . #endi │ │ │ │ + 0x00d47c70 66200a20 20202072 65747572 6e20706f f . return po │ │ │ │ + 0x00d47c80 73697469 6f6e3b20 0a20207d 200a2020 sition; . } . │ │ │ │ + 0x00d47c90 76656332 2063616c 634c696e 65547261 vec2 calcLineTra │ │ │ │ + 0x00d47ca0 6e73666f 726d6564 41786973 506f7328 nsformedAxisPos( │ │ │ │ + 0x00d47cb0 76656332 206f7269 67696e61 6c417869 vec2 originalAxi │ │ │ │ + 0x00d47cc0 73506f73 2c207665 63322073 68696674 sPos, vec2 shift │ │ │ │ + 0x00d47cd0 6564506f 732c206d 61743420 6d6f6465 edPos, mat4 mode │ │ │ │ + 0x00d47ce0 6c566965 772c2066 6c6f6174 2068616c lView, float hal │ │ │ │ + 0x00d47cf0 66576964 74682920 0a20207b 200a2020 fWidth) . { . │ │ │ │ + 0x00d47d00 20207665 63322070 203d2028 76656334 vec2 p = (vec4 │ │ │ │ + 0x00d47d10 28736869 66746564 506f732c 20302e30 (shiftedPos, 0.0 │ │ │ │ + 0x00d47d20 2c20312e 3029202a 206d6f64 656c5669 , 1.0) * modelVi │ │ │ │ + 0x00d47d30 6577292e 78793b20 0a202020 20766563 ew).xy; . vec │ │ │ │ + 0x00d47d40 32206420 3d207020 2d206f72 6967696e 2 d = p - origin │ │ │ │ + 0x00d47d50 616c4178 6973506f 733b200a 20202020 alAxisPos; . │ │ │ │ + 0x00d47d60 69662028 646f7428 642c2064 2920213d if (dot(d, d) != │ │ │ │ + 0x00d47d70 20302e30 29200a20 20202020 20726574 0.0) . ret │ │ │ │ + 0x00d47d80 75726e20 6f726967 696e616c 41786973 urn originalAxis │ │ │ │ + 0x00d47d90 506f7320 2b206e6f 726d616c 697a6528 Pos + normalize( │ │ │ │ + 0x00d47da0 6429202a 2068616c 66576964 74683b20 d) * halfWidth; │ │ │ │ + 0x00d47db0 0a202020 20656c73 65200a20 20202020 . else . │ │ │ │ + 0x00d47dc0 20726574 75726e20 6f726967 696e616c return original │ │ │ │ + 0x00d47dd0 41786973 506f733b 200a2020 7d200a20 AxisPos; . } . │ │ │ │ + 0x00d47de0 20766f69 64206d61 696e2829 200a2020 void main() . │ │ │ │ + 0x00d47df0 7b200a20 20202076 65633220 6e6f726d { . vec2 norm │ │ │ │ + 0x00d47e00 616c203d 20615f6e 6f726d61 6c2e7879 al = a_normal.xy │ │ │ │ + 0x00d47e10 3b200a20 20202076 65633220 7472616e ; . vec2 tran │ │ │ │ + 0x00d47e20 73666f72 6d656441 78697350 6f73203d sformedAxisPos = │ │ │ │ + 0x00d47e30 20287665 63342861 5f706f73 6974696f (vec4(a_positio │ │ │ │ + 0x00d47e40 6e2e7879 2c20302e 302c2031 2e302920 n.xy, 0.0, 1.0) │ │ │ │ + 0x00d47e50 2a20755f 6d6f6465 6c566965 77292e78 * u_modelView).x │ │ │ │ + 0x00d47e60 793b200a 20202020 69662028 646f7428 y; . if (dot( │ │ │ │ + 0x00d47e70 6e6f726d 616c2c20 6e6f726d 616c2920 normal, normal) │ │ │ │ + 0x00d47e80 213d2030 2e302920 0a202020 207b200a != 0.0) . { . │ │ │ │ + 0x00d47e90 20202020 20207665 6332206e 6f726d20 vec2 norm │ │ │ │ + 0x00d47ea0 3d206e6f 726d616c 202a2075 5f6c696e = normal * u_lin │ │ │ │ + 0x00d47eb0 6548616c 66576964 74683b20 0a202020 eHalfWidth; . │ │ │ │ + 0x00d47ec0 20202074 72616e73 666f726d 65644178 transformedAx │ │ │ │ + 0x00d47ed0 6973506f 73203d20 63616c63 4c696e65 isPos = calcLine │ │ │ │ + 0x00d47ee0 5472616e 73666f72 6d656441 78697350 TransformedAxisP │ │ │ │ + 0x00d47ef0 6f732874 72616e73 666f726d 65644178 os(transformedAx │ │ │ │ + 0x00d47f00 6973506f 732c2061 5f706f73 6974696f isPos, a_positio │ │ │ │ + 0x00d47f10 6e2e7879 202b206e 6f726d2c 200a2020 n.xy + norm, . │ │ │ │ + 0x00d47f20 20202020 20202020 20202020 20202020 │ │ │ │ + 0x00d47f30 20202020 20202020 20202020 20202020 │ │ │ │ + 0x00d47f40 20202020 20202020 20202020 20202020 │ │ │ │ + 0x00d47f50 20202020 755f6d6f 64656c56 6965772c u_modelView, │ │ │ │ + 0x00d47f60 206c656e 67746828 6e6f726d 29293b20 length(norm)); │ │ │ │ + 0x00d47f70 0a202020 207d200a 20202020 765f636f . } . v_co │ │ │ │ + 0x00d47f80 6c6f7220 3d20615f 636f6c6f 723b200a lor = a_color; . │ │ │ │ + 0x00d47f90 20202020 76656334 20706f73 203d2076 vec4 pos = v │ │ │ │ + 0x00d47fa0 65633428 7472616e 73666f72 6d656441 ec4(transformedA │ │ │ │ + 0x00d47fb0 78697350 6f732c20 615f706f 73697469 xisPos, a_positi │ │ │ │ + 0x00d47fc0 6f6e2e7a 2c20312e 3029202a 20755f70 on.z, 1.0) * u_p │ │ │ │ + 0x00d47fd0 726f6a65 6374696f 6e3b200a 20202020 rojection; . │ │ │ │ + 0x00d47fe0 676c5f50 6f736974 696f6e20 3d206170 gl_Position = ap │ │ │ │ + 0x00d47ff0 706c7950 69766f74 5472616e 73666f72 plyPivotTransfor │ │ │ │ + 0x00d48000 6d28706f 732c2075 5f706976 6f745472 m(pos, u_pivotTr │ │ │ │ + 0x00d48010 616e7366 6f726d2c 20302e30 293b200a ansform, 0.0); . │ │ │ │ + 0x00d48020 20207d20 0a000000 00000000 00000000 } ............ │ │ │ │ + 0x00d48030 00000000 00000000 00000000 00000000 ................ │ │ │ │ + 0x00d48040 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d48050 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d48060 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d48070 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d48080 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d48090 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d480a0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d480b0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d480c0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d480d0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d480e0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d480f0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d48100 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d48110 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d48120 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d48130 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d48140 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d48150 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d48160 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d48170 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d48180 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d48190 63322076 5f636f6c 6f725465 78436f6f c2 v_colorTexCoo │ │ │ │ + 0x00d481a0 7264733b 200a2020 6f757420 76656334 rds; . out vec4 │ │ │ │ + 0x00d481b0 20765f46 72616743 6f6c6f72 3b200a20 v_FragColor; . │ │ │ │ + 0x00d481c0 20756e69 666f726d 206d6174 3420755f uniform mat4 u_ │ │ │ │ + 0x00d481d0 6d6f6465 6c566965 773b200a 2020756e modelView; . un │ │ │ │ + 0x00d481e0 69666f72 6d206d61 74342075 5f70726f iform mat4 u_pro │ │ │ │ + 0x00d481f0 6a656374 696f6e3b 200a2020 756e6966 jection; . unif │ │ │ │ + 0x00d48200 6f726d20 76656332 20755f63 6f6e7472 orm vec2 u_contr │ │ │ │ + 0x00d48210 61737447 616d6d61 3b200a20 20756e69 astGamma; . uni │ │ │ │ + 0x00d48220 666f726d 20766563 3220755f 706f7369 form vec2 u_posi │ │ │ │ + 0x00d48230 74696f6e 3b200a20 20756e69 666f726d tion; . uniform │ │ │ │ + 0x00d48240 20666c6f 61742075 5f69734f 75746c69 float u_isOutli │ │ │ │ + 0x00d48250 6e655061 73733b20 0a202075 6e69666f nePass; . unifo │ │ │ │ + 0x00d48260 726d2066 6c6f6174 20755f6f 70616369 rm float u_opaci │ │ │ │ + 0x00d48270 74793b20 0a202075 6e69666f 726d2066 ty; . uniform f │ │ │ │ + 0x00d48280 6c6f6174 20755f6c 656e6774 683b200a loat u_length; . │ │ │ │ + 0x00d48290 2020756e 69666f72 6d207361 6d706c65 uniform sample │ │ │ │ + 0x00d482a0 72324420 755f636f 6c6f7254 65783b20 r2D u_colorTex; │ │ │ │ + 0x00d482b0 0a202063 6f6e7374 20666c6f 6174206b . const float k │ │ │ │ + 0x00d482c0 53686170 65436f6f 72645363 616c6172 ShapeCoordScalar │ │ │ │ + 0x00d482d0 203d2031 3030302e 303b200a 2020766f = 1000.0; . vo │ │ │ │ + 0x00d482e0 6964206d 61696e28 29200a20 207b200a id main() . { . │ │ │ │ + 0x00d482f0 20202020 76656334 2066696e 616c436f vec4 finalCo │ │ │ │ + 0x00d48300 6c6f7220 3d207465 78747572 6528755f lor = texture(u_ │ │ │ │ + 0x00d48310 636f6c6f 72546578 2c20765f 636f6c6f colorTex, v_colo │ │ │ │ + 0x00d48320 72546578 436f6f72 6473293b 200a2020 rTexCoords); . │ │ │ │ + 0x00d48330 20206669 6e616c43 6f6c6f72 2e61202a finalColor.a * │ │ │ │ + 0x00d48340 3d20755f 6f706163 6974793b 200a2020 = u_opacity; . │ │ │ │ + 0x00d48350 2020765f 46726167 436f6c6f 72203d20 v_FragColor = │ │ │ │ + 0x00d48360 66696e61 6c436f6c 6f723b20 0a20207d finalColor; . } │ │ │ │ + 0x00d48370 200a0000 00000000 00000000 00000000 ............... │ │ │ │ + 0x00d48380 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d48390 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d483a0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d483b0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d483c0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d483d0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d483e0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d483f0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d48400 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d48410 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d48420 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d48430 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d48440 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d48450 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d48460 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d48470 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d48480 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d48490 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d484a0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d484b0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d484c0 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d484d0 63342061 5f706f73 6974696f 6e3b200a c4 a_position; . │ │ │ │ + 0x00d484e0 2020696e 20766563 3420615f 6e6f726d in vec4 a_norm │ │ │ │ + 0x00d484f0 616c3b20 0a202069 6e207665 63322061 al; . in vec2 a │ │ │ │ + 0x00d48500 5f636f6c 6f725465 78436f6f 72643b20 _colorTexCoord; │ │ │ │ + 0x00d48510 0a20206f 75742076 65633220 765f636f . out vec2 v_co │ │ │ │ + 0x00d48520 6c6f7254 6578436f 6f72643b 200a2020 lorTexCoord; . │ │ │ │ + 0x00d48530 6f757420 76656333 20765f72 61646975 out vec3 v_radiu │ │ │ │ + 0x00d48540 733b200a 2020756e 69666f72 6d206d61 s; . uniform ma │ │ │ │ + 0x00d48550 74342075 5f6d6f64 656c5669 65773b20 t4 u_modelView; │ │ │ │ + 0x00d48560 0a202075 6e69666f 726d206d 61743420 . uniform mat4 │ │ │ │ + 0x00d48570 755f7072 6f6a6563 74696f6e 3b200a20 u_projection; . │ │ │ │ + 0x00d48580 20756e69 666f726d 206d6174 3420755f uniform mat4 u_ │ │ │ │ + 0x00d48590 7069766f 74547261 6e73666f 726d3b20 pivotTransform; │ │ │ │ + 0x00d485a0 0a202075 6e69666f 726d2076 65633420 . uniform vec4 │ │ │ │ + 0x00d485b0 755f7472 61666669 63506172 616d733b u_trafficParams; │ │ │ │ + 0x00d485c0 200a2020 756e6966 6f726d20 76656334 . uniform vec4 │ │ │ │ + 0x00d485d0 20755f6f 75746c69 6e65436f 6c6f723b u_outlineColor; │ │ │ │ + 0x00d485e0 200a2020 756e6966 6f726d20 76656334 . uniform vec4 │ │ │ │ + 0x00d485f0 20755f6c 69676874 4172726f 77436f6c u_lightArrowCol │ │ │ │ + 0x00d48600 6f723b20 0a202075 6e69666f 726d2076 or; . uniform v │ │ │ │ + 0x00d48610 65633420 755f6461 726b4172 726f7743 ec4 u_darkArrowC │ │ │ │ + 0x00d48620 6f6c6f72 3b200a20 20756e69 666f726d olor; . uniform │ │ │ │ + 0x00d48630 20666c6f 61742075 5f6f7574 6c696e65 float u_outline │ │ │ │ + 0x00d48640 3b200a20 20756e69 666f726d 20666c6f ; . uniform flo │ │ │ │ + 0x00d48650 61742075 5f6f7061 63697479 3b200a20 at u_opacity; . │ │ │ │ + 0x00d48660 20636f6e 73742066 6c6f6174 206b5368 const float kSh │ │ │ │ + 0x00d48670 61706543 6f6f7264 5363616c 6172203d apeCoordScalar = │ │ │ │ + 0x00d48680 20313030 302e303b 200a2020 76656334 1000.0; . vec4 │ │ │ │ + 0x00d48690 20617070 6c795069 766f7454 72616e73 applyPivotTrans │ │ │ │ + 0x00d486a0 666f726d 28766563 34207069 766f742c form(vec4 pivot, │ │ │ │ + 0x00d486b0 206d6174 34207069 766f7454 72616e73 mat4 pivotTrans │ │ │ │ + 0x00d486c0 666f726d 2c20666c 6f617420 7069766f form, float pivo │ │ │ │ + 0x00d486d0 74526561 6c5a2920 0a20207b 200a2020 tRealZ) . { . │ │ │ │ + 0x00d486e0 20207665 63342074 72616e73 666f726d vec4 transform │ │ │ │ + 0x00d486f0 65645069 766f7420 3d207069 766f743b edPivot = pivot; │ │ │ │ + 0x00d48700 200a2020 2020666c 6f617420 77203d20 . float w = │ │ │ │ + 0x00d48710 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ + 0x00d48720 2e773b20 0a202020 20747261 6e73666f .w; . transfo │ │ │ │ + 0x00d48730 726d6564 5069766f 742e7879 77203d20 rmedPivot.xyw = │ │ │ │ + 0x00d48740 28706976 6f745472 616e7366 6f726d20 (pivotTransform │ │ │ │ + 0x00d48750 2a207665 63342874 72616e73 666f726d * vec4(transform │ │ │ │ + 0x00d48760 65645069 766f742e 78792c20 7069766f edPivot.xy, pivo │ │ │ │ + 0x00d48770 74526561 6c5a2c20 7729292e 7879773b tRealZ, w)).xyw; │ │ │ │ + 0x00d48780 200a2020 20207472 616e7366 6f726d65 . transforme │ │ │ │ + 0x00d48790 64506976 6f742e7a 202a3d20 7472616e dPivot.z *= tran │ │ │ │ + 0x00d487a0 73666f72 6d656450 69766f74 2e77202f sformedPivot.w / │ │ │ │ + 0x00d487b0 20773b20 0a202023 69666465 66205655 w; . #ifdef VU │ │ │ │ + 0x00d487c0 4c4b414e 200a2020 20207472 616e7366 LKAN . transf │ │ │ │ + 0x00d487d0 6f726d65 64506976 6f742e79 203d202d ormedPivot.y = - │ │ │ │ + 0x00d487e0 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ + 0x00d487f0 2e793b20 0a202020 20747261 6e73666f .y; . transfo │ │ │ │ + 0x00d48800 726d6564 5069766f 742e7a20 3d202874 rmedPivot.z = (t │ │ │ │ + 0x00d48810 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ + 0x00d48820 7a20202b 20747261 6e73666f 726d6564 z + transformed │ │ │ │ + 0x00d48830 5069766f 742e7729 202f2032 2e303b20 Pivot.w) / 2.0; │ │ │ │ + 0x00d48840 0a202023 656e6469 66200a20 20202072 . #endif . r │ │ │ │ + 0x00d48850 65747572 6e207472 616e7366 6f726d65 eturn transforme │ │ │ │ + 0x00d48860 64506976 6f743b20 0a20207d 200a2020 dPivot; . } . │ │ │ │ + 0x00d48870 76656334 20617070 6c794269 6c6c626f vec4 applyBillbo │ │ │ │ + 0x00d48880 61726450 69766f74 5472616e 73666f72 ardPivotTransfor │ │ │ │ + 0x00d48890 6d287665 63342070 69766f74 2c206d61 m(vec4 pivot, ma │ │ │ │ + 0x00d488a0 74342070 69766f74 5472616e 73666f72 t4 pivotTransfor │ │ │ │ + 0x00d488b0 6d2c2066 6c6f6174 20706976 6f745265 m, float pivotRe │ │ │ │ + 0x00d488c0 616c5a2c 20766563 32206f66 66736574 alZ, vec2 offset │ │ │ │ + 0x00d488d0 29200a20 207b200a 20202020 666c6f61 ) . { . floa │ │ │ │ + 0x00d488e0 74206c6f 6769635a 203d2070 69766f74 t logicZ = pivot │ │ │ │ + 0x00d488f0 2e7a202f 20706976 6f742e77 3b200a20 .z / pivot.w; . │ │ │ │ + 0x00d48900 20202076 65633420 7472616e 73666f72 vec4 transfor │ │ │ │ + 0x00d48910 6d656450 69766f74 203d2070 69766f74 medPivot = pivot │ │ │ │ + 0x00d48920 5472616e 73666f72 6d202a20 76656334 Transform * vec4 │ │ │ │ + 0x00d48930 28706976 6f742e78 792c2070 69766f74 (pivot.xy, pivot │ │ │ │ + 0x00d48940 5265616c 5a2c2070 69766f74 2e77293b RealZ, pivot.w); │ │ │ │ + 0x00d48950 200a2020 20207665 63342073 63616c65 . vec4 scale │ │ │ │ + 0x00d48960 203d2070 69766f74 5472616e 73666f72 = pivotTransfor │ │ │ │ + 0x00d48970 6d202a20 76656334 28312e30 2c202d31 m * vec4(1.0, -1 │ │ │ │ + 0x00d48980 2e302c20 302e302c 20312e30 293b200a .0, 0.0, 1.0); . │ │ │ │ + 0x00d48990 20202020 76656334 20706f73 6974696f vec4 positio │ │ │ │ + 0x00d489a0 6e203d20 76656334 28747261 6e73666f n = vec4(transfo │ │ │ │ + 0x00d489b0 726d6564 5069766f 742e7879 202f2074 rmedPivot.xy / t │ │ │ │ + 0x00d489c0 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ + 0x00d489d0 772c206c 6f676963 5a2c2031 2e302920 w, logicZ, 1.0) │ │ │ │ + 0x00d489e0 2b207665 6334286f 66667365 74202f20 + vec4(offset / │ │ │ │ + 0x00d489f0 7363616c 652e7720 2a207363 616c652e scale.w * scale. │ │ │ │ + 0x00d48a00 782c2030 2e302c20 302e3029 3b200a20 x, 0.0, 0.0); . │ │ │ │ + 0x00d48a10 20236966 64656620 56554c4b 414e200a #ifdef VULKAN . │ │ │ │ + 0x00d48a20 20202020 706f7369 74696f6e 2e79203d position.y = │ │ │ │ + 0x00d48a30 202d706f 73697469 6f6e2e79 3b200a20 -position.y; . │ │ │ │ + 0x00d48a40 20202070 6f736974 696f6e2e 7a203d20 position.z = │ │ │ │ + 0x00d48a50 28706f73 6974696f 6e2e7a20 202b2070 (position.z + p │ │ │ │ + 0x00d48a60 6f736974 696f6e2e 7729202f 20322e30 osition.w) / 2.0 │ │ │ │ + 0x00d48a70 3b200a20 2023656e 64696620 0a202020 ; . #endif . │ │ │ │ + 0x00d48a80 20726574 75726e20 706f7369 74696f6e return position │ │ │ │ + 0x00d48a90 3b200a20 207d200a 20207665 63322063 ; . } . vec2 c │ │ │ │ + 0x00d48aa0 616c634c 696e6554 72616e73 666f726d alcLineTransform │ │ │ │ + 0x00d48ab0 65644178 6973506f 73287665 6332206f edAxisPos(vec2 o │ │ │ │ + 0x00d48ac0 72696769 6e616c41 78697350 6f732c20 riginalAxisPos, │ │ │ │ + 0x00d48ad0 76656332 20736869 66746564 506f732c vec2 shiftedPos, │ │ │ │ + 0x00d48ae0 206d6174 34206d6f 64656c56 6965772c mat4 modelView, │ │ │ │ + 0x00d48af0 20666c6f 61742068 616c6657 69647468 float halfWidth │ │ │ │ + 0x00d48b00 29200a20 207b200a 20202020 76656332 ) . { . vec2 │ │ │ │ + 0x00d48b10 2070203d 20287665 63342873 68696674 p = (vec4(shift │ │ │ │ + 0x00d48b20 6564506f 732c2030 2e302c20 312e3029 edPos, 0.0, 1.0) │ │ │ │ + 0x00d48b30 202a206d 6f64656c 56696577 292e7879 * modelView).xy │ │ │ │ + 0x00d48b40 3b200a20 20202076 65633220 64203d20 ; . vec2 d = │ │ │ │ + 0x00d48b50 70202d20 6f726967 696e616c 41786973 p - originalAxis │ │ │ │ + 0x00d48b60 506f733b 200a2020 20206966 2028646f Pos; . if (do │ │ │ │ + 0x00d48b70 7428642c 20642920 213d2030 2e302920 t(d, d) != 0.0) │ │ │ │ + 0x00d48b80 0a202020 20202072 65747572 6e206f72 . return or │ │ │ │ + 0x00d48b90 6967696e 616c4178 6973506f 73202b20 iginalAxisPos + │ │ │ │ + 0x00d48ba0 6e6f726d 616c697a 65286429 202a2068 normalize(d) * h │ │ │ │ + 0x00d48bb0 616c6657 69647468 3b200a20 20202065 alfWidth; . e │ │ │ │ + 0x00d48bc0 6c736520 0a202020 20202072 65747572 lse . retur │ │ │ │ + 0x00d48bd0 6e206f72 6967696e 616c4178 6973506f n originalAxisPo │ │ │ │ + 0x00d48be0 733b200a 20207d20 0a202076 6f696420 s; . } . void │ │ │ │ + 0x00d48bf0 6d61696e 2829200a 20207b20 0a202020 main() . { . │ │ │ │ + 0x00d48c00 20766563 32206e6f 726d616c 203d2061 vec2 normal = a │ │ │ │ + 0x00d48c10 5f6e6f72 6d616c2e 78793b20 0a202020 _normal.xy; . │ │ │ │ + 0x00d48c20 20766563 32207472 616e7366 6f726d65 vec2 transforme │ │ │ │ + 0x00d48c30 64417869 73506f73 203d2028 76656334 dAxisPos = (vec4 │ │ │ │ + 0x00d48c40 28615f70 6f736974 696f6e2e 78792c20 (a_position.xy, │ │ │ │ + 0x00d48c50 302e302c 20312e30 29202a20 755f6d6f 0.0, 1.0) * u_mo │ │ │ │ + 0x00d48c60 64656c56 69657729 2e78793b 200a2020 delView).xy; . │ │ │ │ + 0x00d48c70 2020696e 7420696e 64657820 3d20696e int index = in │ │ │ │ + 0x00d48c80 7428615f 706f7369 74696f6e 2e77293b t(a_position.w); │ │ │ │ + 0x00d48c90 200a2020 2020666c 6f617420 6c656674 . float left │ │ │ │ + 0x00d48ca0 53697a65 203d2075 5f6c6967 68744172 Size = u_lightAr │ │ │ │ + 0x00d48cb0 726f7743 6f6c6f72 5b696e64 65785d3b rowColor[index]; │ │ │ │ + 0x00d48cc0 200a2020 2020666c 6f617420 72696768 . float righ │ │ │ │ + 0x00d48cd0 7453697a 65203d20 755f6461 726b4172 tSize = u_darkAr │ │ │ │ + 0x00d48ce0 726f7743 6f6c6f72 5b696e64 65785d3b rowColor[index]; │ │ │ │ + 0x00d48cf0 200a2020 20206966 2028646f 74286e6f . if (dot(no │ │ │ │ + 0x00d48d00 726d616c 2c206e6f 726d616c 2920213d rmal, normal) != │ │ │ │ + 0x00d48d10 20302e30 29200a20 2020207b 200a2020 0.0) . { . │ │ │ │ + 0x00d48d20 20202020 76656332 206e6f72 6d203d20 vec2 norm = │ │ │ │ + 0x00d48d30 6e6f726d 616c202a 20302e35 202a2028 normal * 0.5 * ( │ │ │ │ + 0x00d48d40 72696768 7453697a 65202d20 6c656674 rightSize - left │ │ │ │ + 0x00d48d50 53697a65 293b200a 20202020 20207472 Size); . tr │ │ │ │ + 0x00d48d60 616e7366 6f726d65 64417869 73506f73 ansformedAxisPos │ │ │ │ + 0x00d48d70 203d2063 616c634c 696e6554 72616e73 = calcLineTrans │ │ │ │ + 0x00d48d80 666f726d 65644178 6973506f 73287472 formedAxisPos(tr │ │ │ │ + 0x00d48d90 616e7366 6f726d65 64417869 73506f73 ansformedAxisPos │ │ │ │ + 0x00d48da0 2c20615f 706f7369 74696f6e 2e787920 , a_position.xy │ │ │ │ + 0x00d48db0 2b206e6f 726d2c20 0a202020 20202020 + norm, . │ │ │ │ + 0x00d48dc0 20202020 20202020 20202020 20202020 │ │ │ │ + 0x00d48dd0 20202020 20202020 20202020 20202020 │ │ │ │ + 0x00d48de0 20202020 20202020 20202020 20202075 u │ │ │ │ + 0x00d48df0 5f6d6f64 656c5669 65772c20 6c656e67 _modelView, leng │ │ │ │ + 0x00d48e00 7468286e 6f726d29 293b200a 20202020 th(norm)); . │ │ │ │ + 0x00d48e10 7d200a20 20202076 5f726164 69757320 } . v_radius │ │ │ │ + 0x00d48e20 3d207665 63332861 5f6e6f72 6d616c2e = vec3(a_normal. │ │ │ │ + 0x00d48e30 7a772c20 312e3029 202a2030 2e35202a zw, 1.0) * 0.5 * │ │ │ │ + 0x00d48e40 20286c65 66745369 7a65202b 20726967 (leftSize + rig │ │ │ │ + 0x00d48e50 68745369 7a65293b 200a2020 20207665 htSize); . ve │ │ │ │ + 0x00d48e60 63322066 696e616c 506f7320 3d207472 c2 finalPos = tr │ │ │ │ + 0x00d48e70 616e7366 6f726d65 64417869 73506f73 ansformedAxisPos │ │ │ │ + 0x00d48e80 202b2076 5f726164 6975732e 78793b20 + v_radius.xy; │ │ │ │ + 0x00d48e90 0a202020 20765f63 6f6c6f72 54657843 . v_colorTexC │ │ │ │ + 0x00d48ea0 6f6f7264 203d2061 5f636f6c 6f725465 oord = a_colorTe │ │ │ │ + 0x00d48eb0 78436f6f 72643b20 0a202020 20766563 xCoord; . vec │ │ │ │ + 0x00d48ec0 3420706f 73203d20 76656334 2866696e 4 pos = vec4(fin │ │ │ │ + 0x00d48ed0 616c506f 732c2061 5f706f73 6974696f alPos, a_positio │ │ │ │ + 0x00d48ee0 6e2e7a2c 20312e30 29202a20 755f7072 n.z, 1.0) * u_pr │ │ │ │ + 0x00d48ef0 6f6a6563 74696f6e 3b200a20 20202067 ojection; . g │ │ │ │ + 0x00d48f00 6c5f506f 73697469 6f6e203d 20617070 l_Position = app │ │ │ │ + 0x00d48f10 6c795069 766f7454 72616e73 666f726d lyPivotTransform │ │ │ │ + 0x00d48f20 28706f73 2c20755f 7069766f 74547261 (pos, u_pivotTra │ │ │ │ + 0x00d48f30 6e73666f 726d2c20 302e3029 3b200a20 nsform, 0.0); . │ │ │ │ + 0x00d48f40 207d200a 00000000 00000000 00000000 } ............. │ │ │ │ + 0x00d48f50 00000000 00000000 00000000 00000000 ................ │ │ │ │ + 0x00d48f60 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d48f70 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d48f80 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d48f90 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d48fa0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d48fb0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d48fc0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d48fd0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d48fe0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d48ff0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d49000 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d49010 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d49020 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d49030 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d49040 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d49050 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d49060 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d49070 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d49080 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d49090 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d490a0 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d490b0 63332061 5f706f73 6974696f 6e3b200a c3 a_position; . │ │ │ │ + 0x00d490c0 2020696e 20766563 3320615f 6e6f726d in vec3 a_norm │ │ │ │ + 0x00d490d0 616c3b20 0a202069 6e207665 63322061 al; . in vec2 a │ │ │ │ + 0x00d490e0 5f636f6c 6f725465 78436f6f 72643b20 _colorTexCoord; │ │ │ │ + 0x00d490f0 0a202069 6e207665 63342061 5f6d6173 . in vec4 a_mas │ │ │ │ + 0x00d49100 6b546578 436f6f72 643b200a 20206f75 kTexCoord; . ou │ │ │ │ + 0x00d49110 74207665 63322076 5f636f6c 6f725465 t vec2 v_colorTe │ │ │ │ + 0x00d49120 78436f6f 72643b20 0a20206f 75742076 xCoord; . out v │ │ │ │ + 0x00d49130 65633220 765f6d61 736b5465 78436f6f ec2 v_maskTexCoo │ │ │ │ + 0x00d49140 72643b20 0a202075 6e69666f 726d206d rd; . uniform m │ │ │ │ + 0x00d49150 61743420 755f6d6f 64656c56 6965773b at4 u_modelView; │ │ │ │ + 0x00d49160 200a2020 756e6966 6f726d20 6d617434 . uniform mat4 │ │ │ │ + 0x00d49170 20755f70 726f6a65 6374696f 6e3b200a u_projection; . │ │ │ │ + 0x00d49180 2020756e 69666f72 6d206d61 74342075 uniform mat4 u │ │ │ │ + 0x00d49190 5f706976 6f745472 616e7366 6f726d3b _pivotTransform; │ │ │ │ + 0x00d491a0 200a2020 756e6966 6f726d20 76656332 . uniform vec2 │ │ │ │ + 0x00d491b0 20755f63 6f6e7472 61737447 616d6d61 u_contrastGamma │ │ │ │ + 0x00d491c0 3b200a20 20756e69 666f726d 20666c6f ; . uniform flo │ │ │ │ + 0x00d491d0 61742075 5f6f7061 63697479 3b200a20 at u_opacity; . │ │ │ │ + 0x00d491e0 20756e69 666f726d 20666c6f 61742075 uniform float u │ │ │ │ + 0x00d491f0 5f7a5363 616c653b 200a2020 756e6966 _zScale; . unif │ │ │ │ + 0x00d49200 6f726d20 666c6f61 7420755f 696e7465 orm float u_inte │ │ │ │ + 0x00d49210 72706f6c 6174696f 6e3b200a 2020756e rpolation; . un │ │ │ │ + 0x00d49220 69666f72 6d20666c 6f617420 755f6973 iform float u_is │ │ │ │ + 0x00d49230 4f75746c 696e6550 6173733b 200a2020 OutlinePass; . │ │ │ │ + 0x00d49240 636f6e73 7420666c 6f617420 6b536861 const float kSha │ │ │ │ + 0x00d49250 7065436f 6f726453 63616c61 72203d20 peCoordScalar = │ │ │ │ + 0x00d49260 31303030 2e303b20 0a202076 65633420 1000.0; . vec4 │ │ │ │ + 0x00d49270 6170706c 79506976 6f745472 616e7366 applyPivotTransf │ │ │ │ + 0x00d49280 6f726d28 76656334 20706976 6f742c20 orm(vec4 pivot, │ │ │ │ + 0x00d49290 6d617434 20706976 6f745472 616e7366 mat4 pivotTransf │ │ │ │ + 0x00d492a0 6f726d2c 20666c6f 61742070 69766f74 orm, float pivot │ │ │ │ + 0x00d492b0 5265616c 5a29200a 20207b20 0a202020 RealZ) . { . │ │ │ │ + 0x00d492c0 20766563 34207472 616e7366 6f726d65 vec4 transforme │ │ │ │ + 0x00d492d0 64506976 6f74203d 20706976 6f743b20 dPivot = pivot; │ │ │ │ + 0x00d492e0 0a202020 20666c6f 61742077 203d2074 . float w = t │ │ │ │ + 0x00d492f0 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ + 0x00d49300 773b200a 20202020 7472616e 73666f72 w; . transfor │ │ │ │ + 0x00d49310 6d656450 69766f74 2e787977 203d2028 medPivot.xyw = ( │ │ │ │ + 0x00d49320 7069766f 74547261 6e73666f 726d202a pivotTransform * │ │ │ │ + 0x00d49330 20766563 34287472 616e7366 6f726d65 vec4(transforme │ │ │ │ + 0x00d49340 64506976 6f742e78 792c2070 69766f74 dPivot.xy, pivot │ │ │ │ + 0x00d49350 5265616c 5a2c2077 29292e78 79773b20 RealZ, w)).xyw; │ │ │ │ + 0x00d49360 0a202020 20747261 6e73666f 726d6564 . transformed │ │ │ │ + 0x00d49370 5069766f 742e7a20 2a3d2074 72616e73 Pivot.z *= trans │ │ │ │ + 0x00d49380 666f726d 65645069 766f742e 77202f20 formedPivot.w / │ │ │ │ + 0x00d49390 773b200a 20202369 66646566 2056554c w; . #ifdef VUL │ │ │ │ + 0x00d493a0 4b414e20 0a202020 20747261 6e73666f KAN . transfo │ │ │ │ + 0x00d493b0 726d6564 5069766f 742e7920 3d202d74 rmedPivot.y = -t │ │ │ │ + 0x00d493c0 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ + 0x00d493d0 793b200a 20202020 7472616e 73666f72 y; . transfor │ │ │ │ + 0x00d493e0 6d656450 69766f74 2e7a203d 20287472 medPivot.z = (tr │ │ │ │ + 0x00d493f0 616e7366 6f726d65 64506976 6f742e7a ansformedPivot.z │ │ │ │ + 0x00d49400 20202b20 7472616e 73666f72 6d656450 + transformedP │ │ │ │ + 0x00d49410 69766f74 2e772920 2f20322e 303b200a ivot.w) / 2.0; . │ │ │ │ + 0x00d49420 20202365 6e646966 200a2020 20207265 #endif . re │ │ │ │ + 0x00d49430 7475726e 20747261 6e73666f 726d6564 turn transformed │ │ │ │ + 0x00d49440 5069766f 743b200a 20207d20 0a202076 Pivot; . } . v │ │ │ │ + 0x00d49450 65633420 6170706c 7942696c 6c626f61 ec4 applyBillboa │ │ │ │ + 0x00d49460 72645069 766f7454 72616e73 666f726d rdPivotTransform │ │ │ │ + 0x00d49470 28766563 34207069 766f742c 206d6174 (vec4 pivot, mat │ │ │ │ + 0x00d49480 34207069 766f7454 72616e73 666f726d 4 pivotTransform │ │ │ │ + 0x00d49490 2c20666c 6f617420 7069766f 74526561 , float pivotRea │ │ │ │ + 0x00d494a0 6c5a2c20 76656332 206f6666 73657429 lZ, vec2 offset) │ │ │ │ + 0x00d494b0 200a2020 7b200a20 20202066 6c6f6174 . { . float │ │ │ │ + 0x00d494c0 206c6f67 69635a20 3d207069 766f742e logicZ = pivot. │ │ │ │ + 0x00d494d0 7a202f20 7069766f 742e773b 200a2020 z / pivot.w; . │ │ │ │ + 0x00d494e0 20207665 63342074 72616e73 666f726d vec4 transform │ │ │ │ + 0x00d494f0 65645069 766f7420 3d207069 766f7454 edPivot = pivotT │ │ │ │ + 0x00d49500 72616e73 666f726d 202a2076 65633428 ransform * vec4( │ │ │ │ + 0x00d49510 7069766f 742e7879 2c207069 766f7452 pivot.xy, pivotR │ │ │ │ + 0x00d49520 65616c5a 2c207069 766f742e 77293b20 ealZ, pivot.w); │ │ │ │ + 0x00d49530 0a202020 20766563 34207363 616c6520 . vec4 scale │ │ │ │ + 0x00d49540 3d207069 766f7454 72616e73 666f726d = pivotTransform │ │ │ │ + 0x00d49550 202a2076 65633428 312e302c 202d312e * vec4(1.0, -1. │ │ │ │ + 0x00d49560 302c2030 2e302c20 312e3029 3b200a20 0, 0.0, 1.0); . │ │ │ │ + 0x00d49570 20202076 65633420 706f7369 74696f6e vec4 position │ │ │ │ + 0x00d49580 203d2076 65633428 7472616e 73666f72 = vec4(transfor │ │ │ │ + 0x00d49590 6d656450 69766f74 2e787920 2f207472 medPivot.xy / tr │ │ │ │ + 0x00d495a0 616e7366 6f726d65 64506976 6f742e77 ansformedPivot.w │ │ │ │ + 0x00d495b0 2c206c6f 6769635a 2c20312e 3029202b , logicZ, 1.0) + │ │ │ │ + 0x00d495c0 20766563 34286f66 66736574 202f2073 vec4(offset / s │ │ │ │ + 0x00d495d0 63616c65 2e77202a 20736361 6c652e78 cale.w * scale.x │ │ │ │ + 0x00d495e0 2c20302e 302c2030 2e30293b 200a2020 , 0.0, 0.0); . │ │ │ │ + 0x00d495f0 23696664 65662056 554c4b41 4e200a20 #ifdef VULKAN . │ │ │ │ + 0x00d49600 20202070 6f736974 696f6e2e 79203d20 position.y = │ │ │ │ + 0x00d49610 2d706f73 6974696f 6e2e793b 200a2020 -position.y; . │ │ │ │ + 0x00d49620 2020706f 73697469 6f6e2e7a 203d2028 position.z = ( │ │ │ │ + 0x00d49630 706f7369 74696f6e 2e7a2020 2b20706f position.z + po │ │ │ │ + 0x00d49640 73697469 6f6e2e77 29202f20 322e303b sition.w) / 2.0; │ │ │ │ + 0x00d49650 200a2020 23656e64 6966200a 20202020 . #endif . │ │ │ │ + 0x00d49660 72657475 726e2070 6f736974 696f6e3b return position; │ │ │ │ + 0x00d49670 200a2020 7d200a20 20766563 32206361 . } . vec2 ca │ │ │ │ + 0x00d49680 6c634c69 6e655472 616e7366 6f726d65 lcLineTransforme │ │ │ │ + 0x00d49690 64417869 73506f73 28766563 32206f72 dAxisPos(vec2 or │ │ │ │ + 0x00d496a0 6967696e 616c4178 6973506f 732c2076 iginalAxisPos, v │ │ │ │ + 0x00d496b0 65633220 73686966 74656450 6f732c20 ec2 shiftedPos, │ │ │ │ + 0x00d496c0 6d617434 206d6f64 656c5669 65772c20 mat4 modelView, │ │ │ │ + 0x00d496d0 666c6f61 74206861 6c665769 64746829 float halfWidth) │ │ │ │ + 0x00d496e0 200a2020 7b200a20 20202076 65633220 . { . vec2 │ │ │ │ + 0x00d496f0 70203d20 28766563 34287368 69667465 p = (vec4(shifte │ │ │ │ + 0x00d49700 64506f73 2c20302e 302c2031 2e302920 dPos, 0.0, 1.0) │ │ │ │ + 0x00d49710 2a206d6f 64656c56 69657729 2e78793b * modelView).xy; │ │ │ │ + 0x00d49720 200a2020 20207665 63322064 203d2070 . vec2 d = p │ │ │ │ + 0x00d49730 202d206f 72696769 6e616c41 78697350 - originalAxisP │ │ │ │ + 0x00d49740 6f733b20 0a202020 20696620 28646f74 os; . if (dot │ │ │ │ + 0x00d49750 28642c20 64292021 3d20302e 3029200a (d, d) != 0.0) . │ │ │ │ + 0x00d49760 20202020 20207265 7475726e 206f7269 return ori │ │ │ │ + 0x00d49770 67696e61 6c417869 73506f73 202b206e ginalAxisPos + n │ │ │ │ + 0x00d49780 6f726d61 6c697a65 28642920 2a206861 ormalize(d) * ha │ │ │ │ + 0x00d49790 6c665769 6474683b 200a2020 2020656c lfWidth; . el │ │ │ │ + 0x00d497a0 7365200a 20202020 20207265 7475726e se . return │ │ │ │ + 0x00d497b0 206f7269 67696e61 6c417869 73506f73 originalAxisPos │ │ │ │ + 0x00d497c0 3b200a20 207d200a 2020766f 6964206d ; . } . void m │ │ │ │ + 0x00d497d0 61696e28 29200a20 207b200a 20202020 ain() . { . │ │ │ │ + 0x00d497e0 76656332 206e6f72 6d616c20 3d20615f vec2 normal = a_ │ │ │ │ + 0x00d497f0 6e6f726d 616c2e78 793b200a 20202020 normal.xy; . │ │ │ │ + 0x00d49800 666c6f61 74206861 6c665769 64746820 float halfWidth │ │ │ │ + 0x00d49810 3d206c65 6e677468 286e6f72 6d616c29 = length(normal) │ │ │ │ + 0x00d49820 3b200a20 20202076 65633220 7472616e ; . vec2 tran │ │ │ │ + 0x00d49830 73666f72 6d656441 78697350 6f73203d sformedAxisPos = │ │ │ │ + 0x00d49840 20287665 63342861 5f706f73 6974696f (vec4(a_positio │ │ │ │ + 0x00d49850 6e2e7879 2c20302e 302c2031 2e302920 n.xy, 0.0, 1.0) │ │ │ │ + 0x00d49860 2a20755f 6d6f6465 6c566965 77292e78 * u_modelView).x │ │ │ │ + 0x00d49870 793b200a 20202020 69662028 68616c66 y; . if (half │ │ │ │ + 0x00d49880 57696474 6820213d 20302e30 29200a20 Width != 0.0) . │ │ │ │ + 0x00d49890 2020207b 200a2020 20202020 7472616e { . tran │ │ │ │ + 0x00d498a0 73666f72 6d656441 78697350 6f73203d sformedAxisPos = │ │ │ │ + 0x00d498b0 2063616c 634c696e 65547261 6e73666f calcLineTransfo │ │ │ │ + 0x00d498c0 726d6564 41786973 506f7328 7472616e rmedAxisPos(tran │ │ │ │ + 0x00d498d0 73666f72 6d656441 78697350 6f732c20 sformedAxisPos, │ │ │ │ + 0x00d498e0 615f706f 73697469 6f6e2e78 79202b20 a_position.xy + │ │ │ │ + 0x00d498f0 6e6f726d 616c2c20 0a202020 20202020 normal, . │ │ │ │ + 0x00d49900 20202020 20202020 20202020 20202020 │ │ │ │ 0x00d49910 20202020 20202020 20202020 20202020 │ │ │ │ - 0x00d49920 20202020 20202020 20202020 20202020 │ │ │ │ - 0x00d49930 20202020 20202020 20202020 20202020 │ │ │ │ - 0x00d49940 20202020 20755f6d 6f64656c 56696577 u_modelView │ │ │ │ - 0x00d49950 2c206c65 6e677468 286e6f72 6d29293b , length(norm)); │ │ │ │ - 0x00d49960 200a2020 20202020 69662028 755f6c69 . if (u_li │ │ │ │ - 0x00d49970 6e655061 72616d73 2e792021 3d20302e neParams.y != 0. │ │ │ │ - 0x00d49980 3029200a 20202020 20202020 6c656e20 0) . len │ │ │ │ - 0x00d49990 3d207665 63322861 5f6c656e 6774682e = vec2(a_length. │ │ │ │ - 0x00d499a0 78202b20 615f6c65 6e677468 2e79202a x + a_length.y * │ │ │ │ - 0x00d499b0 20755f6c 696e6550 6172616d 732e792c u_lineParams.y, │ │ │ │ - 0x00d499c0 20615f6c 656e6774 682e7a29 3b200a20 a_length.z); . │ │ │ │ - 0x00d499d0 2020207d 200a2020 23696664 65662045 } . #ifdef E │ │ │ │ - 0x00d499e0 4e41424c 455f5654 46200a20 20202076 NABLE_VTF . v │ │ │ │ - 0x00d499f0 5f636f6c 6f72203d 20746578 74757265 _color = texture │ │ │ │ - 0x00d49a00 28755f63 6f6c6f72 5465782c 20615f63 (u_colorTex, a_c │ │ │ │ - 0x00d49a10 6f6c6f72 54657843 6f6f7264 73293b20 olorTexCoords); │ │ │ │ - 0x00d49a20 0a202023 656c7365 200a2020 2020765f . #else . v_ │ │ │ │ - 0x00d49a30 636f6c6f 72546578 436f6f72 64203d20 colorTexCoord = │ │ │ │ - 0x00d49a40 615f636f 6c6f7254 6578436f 6f726473 a_colorTexCoords │ │ │ │ - 0x00d49a50 3b200a20 2023656e 64696620 0a202020 ; . #endif . │ │ │ │ - 0x00d49a60 20765f6c 656e6774 6859203d 206c656e v_lengthY = len │ │ │ │ - 0x00d49a70 2e793b20 0a202020 20766563 3420706f .y; . vec4 po │ │ │ │ - 0x00d49a80 73203d20 76656334 28747261 6e73666f s = vec4(transfo │ │ │ │ - 0x00d49a90 726d6564 41786973 506f732c 20615f70 rmedAxisPos, a_p │ │ │ │ - 0x00d49aa0 6f736974 696f6e2e 7a2c2031 2e302920 osition.z, 1.0) │ │ │ │ - 0x00d49ab0 2a20755f 70726f6a 65637469 6f6e3b20 * u_projection; │ │ │ │ - 0x00d49ac0 0a202020 20676c5f 506f7369 74696f6e . gl_Position │ │ │ │ - 0x00d49ad0 203d2061 70706c79 5069766f 74547261 = applyPivotTra │ │ │ │ - 0x00d49ae0 6e73666f 726d2870 6f732c20 755f7069 nsform(pos, u_pi │ │ │ │ - 0x00d49af0 766f7454 72616e73 666f726d 2c20302e votTransform, 0. │ │ │ │ - 0x00d49b00 30293b20 0a20207d 200a0000 00000000 0); . } ....... │ │ │ │ - 0x00d49b10 00000000 00000000 00000000 00000000 ................ │ │ │ │ - 0x00d49b20 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d49b30 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d49b40 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d49b50 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d49b60 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d49b70 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d49b80 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d49b90 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d49ba0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d49bb0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d49bc0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d49bd0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d49be0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d49bf0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d49c00 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d49c10 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d49c20 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d49c30 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d49c40 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d49c50 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d49c60 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d49c70 63342076 5f636f6f 7264733b 200a2020 c4 v_coords; . │ │ │ │ - 0x00d49c80 696e2076 65633420 765f6f66 66736574 in vec4 v_offset │ │ │ │ - 0x00d49c90 303b200a 2020696e 20766563 3420765f 0; . in vec4 v_ │ │ │ │ - 0x00d49ca0 6f666673 6574313b 200a2020 696e2076 offset1; . in v │ │ │ │ - 0x00d49cb0 65633420 765f6f66 66736574 323b200a ec4 v_offset2; . │ │ │ │ - 0x00d49cc0 20206f75 74207665 63342076 5f467261 out vec4 v_Fra │ │ │ │ - 0x00d49cd0 67436f6c 6f723b20 0a202075 6e69666f gColor; . unifo │ │ │ │ - 0x00d49ce0 726d2076 65633420 755f6672 616d6562 rm vec4 u_frameb │ │ │ │ - 0x00d49cf0 75666665 724d6574 72696373 3b200a20 ufferMetrics; . │ │ │ │ - 0x00d49d00 20756e69 666f726d 2073616d 706c6572 uniform sampler │ │ │ │ - 0x00d49d10 32442075 5f636f6c 6f725465 783b200a 2D u_colorTex; . │ │ │ │ - 0x00d49d20 2020756e 69666f72 6d207361 6d706c65 uniform sample │ │ │ │ - 0x00d49d30 72324420 755f736d 61614172 65613b20 r2D u_smaaArea; │ │ │ │ - 0x00d49d40 0a202075 6e69666f 726d2073 616d706c . uniform sampl │ │ │ │ - 0x00d49d50 65723244 20755f73 6d616153 65617263 er2D u_smaaSearc │ │ │ │ - 0x00d49d60 683b200a 20202364 6566696e 6520534d h; . #define SM │ │ │ │ - 0x00d49d70 41415f53 45415243 48544558 5f53495a AA_SEARCHTEX_SIZ │ │ │ │ - 0x00d49d80 45207665 63322836 362e302c 2033332e E vec2(66.0, 33. │ │ │ │ - 0x00d49d90 3029200a 20202364 6566696e 6520534d 0) . #define SM │ │ │ │ - 0x00d49da0 41415f53 45415243 48544558 5f504143 AA_SEARCHTEX_PAC │ │ │ │ - 0x00d49db0 4b45445f 53495a45 20766563 32283634 KED_SIZE vec2(64 │ │ │ │ - 0x00d49dc0 2e302c20 31362e30 29200a20 20236465 .0, 16.0) . #de │ │ │ │ - 0x00d49dd0 66696e65 20534d41 415f4152 45415445 fine SMAA_AREATE │ │ │ │ - 0x00d49de0 585f4d41 585f4449 5354414e 43452031 X_MAX_DISTANCE 1 │ │ │ │ - 0x00d49df0 362e3020 0a202023 64656669 6e652053 6.0 . #define S │ │ │ │ - 0x00d49e00 4d41415f 41524541 5445585f 50495845 MAA_AREATEX_PIXE │ │ │ │ - 0x00d49e10 4c5f5349 5a452028 76656332 28312e30 L_SIZE (vec2(1.0 │ │ │ │ - 0x00d49e20 202f2032 35362e30 2c20312e 30202f20 / 256.0, 1.0 / │ │ │ │ - 0x00d49e30 31303234 2e302929 200a2020 23646566 1024.0)) . #def │ │ │ │ - 0x00d49e40 696e6520 534d4141 4c6f6f70 42656769 ine SMAALoopBegi │ │ │ │ - 0x00d49e50 6e28636f 6e646974 696f6e29 20776869 n(condition) whi │ │ │ │ - 0x00d49e60 6c652028 636f6e64 6974696f 6e29207b le (condition) { │ │ │ │ - 0x00d49e70 200a2020 23646566 696e6520 534d4141 . #define SMAA │ │ │ │ - 0x00d49e80 4c6f6f70 456e6420 7d200a20 20236465 LoopEnd } . #de │ │ │ │ - 0x00d49e90 66696e65 20534d41 4153616d 706c654c fine SMAASampleL │ │ │ │ - 0x00d49ea0 6576656c 5a65726f 28746578 2c20636f evelZero(tex, co │ │ │ │ - 0x00d49eb0 6f726429 20746578 74757265 4c6f6428 ord) textureLod( │ │ │ │ - 0x00d49ec0 7465782c 20636f6f 72642c20 302e3029 tex, coord, 0.0) │ │ │ │ - 0x00d49ed0 200a2020 23646566 696e6520 534d4141 . #define SMAA │ │ │ │ - 0x00d49ee0 53616d70 6c654c65 76656c5a 65726f4f SampleLevelZeroO │ │ │ │ - 0x00d49ef0 66667365 74287465 782c2063 6f6f7264 ffset(tex, coord │ │ │ │ - 0x00d49f00 2c206f66 66736574 29207465 78747572 , offset) textur │ │ │ │ - 0x00d49f10 654c6f64 4f666673 65742874 65782c20 eLodOffset(tex, │ │ │ │ - 0x00d49f20 636f6f72 642c2030 2e302c20 6f666673 coord, 0.0, offs │ │ │ │ - 0x00d49f30 65742920 0a202023 64656669 6e652053 et) . #define S │ │ │ │ - 0x00d49f40 4d414152 6f756e64 28762920 726f756e MAARound(v) roun │ │ │ │ - 0x00d49f50 64282876 2929200a 20202364 6566696e d((v)) . #defin │ │ │ │ - 0x00d49f60 6520534d 41414f66 66736574 28782c79 e SMAAOffset(x,y │ │ │ │ - 0x00d49f70 29206976 65633228 782c7929 200a2020 ) ivec2(x,y) . │ │ │ │ - 0x00d49f80 636f6e73 74207665 6332206b 41726561 const vec2 kArea │ │ │ │ - 0x00d49f90 5465784d 61784469 7374616e 6365203d TexMaxDistance = │ │ │ │ - 0x00d49fa0 20766563 3228534d 41415f41 52454154 vec2(SMAA_AREAT │ │ │ │ - 0x00d49fb0 45585f4d 41585f44 49535441 4e43452c EX_MAX_DISTANCE, │ │ │ │ - 0x00d49fc0 20534d41 415f4152 45415445 585f4d41 SMAA_AREATEX_MA │ │ │ │ - 0x00d49fd0 585f4449 5354414e 4345293b 200a2020 X_DISTANCE); . │ │ │ │ - 0x00d49fe0 636f6e73 7420666c 6f617420 6b416374 const float kAct │ │ │ │ - 0x00d49ff0 69766174 696f6e54 68726573 686f6c64 ivationThreshold │ │ │ │ - 0x00d4a000 203d2030 2e383238 313b200a 2020666c = 0.8281; . fl │ │ │ │ - 0x00d4a010 6f617420 534d4141 53656172 63684c65 oat SMAASearchLe │ │ │ │ - 0x00d4a020 6e677468 28766563 3220652c 20666c6f ngth(vec2 e, flo │ │ │ │ - 0x00d4a030 6174206f 66667365 7429200a 20207b20 at offset) . { │ │ │ │ - 0x00d4a040 0a202020 20766563 32207363 616c6520 . vec2 scale │ │ │ │ - 0x00d4a050 3d20534d 41415f53 45415243 48544558 = SMAA_SEARCHTEX │ │ │ │ - 0x00d4a060 5f53495a 45202a20 76656332 28302e35 _SIZE * vec2(0.5 │ │ │ │ - 0x00d4a070 2c202d31 2e30293b 200a2020 20207665 , -1.0); . ve │ │ │ │ - 0x00d4a080 63322062 69617320 3d20534d 41415f53 c2 bias = SMAA_S │ │ │ │ - 0x00d4a090 45415243 48544558 5f53495a 45202a20 EARCHTEX_SIZE * │ │ │ │ - 0x00d4a0a0 76656332 286f6666 7365742c 20312e30 vec2(offset, 1.0 │ │ │ │ - 0x00d4a0b0 293b200a 20202020 7363616c 65202b3d ); . scale += │ │ │ │ - 0x00d4a0c0 20766563 32282d31 2e302c20 20312e30 vec2(-1.0, 1.0 │ │ │ │ - 0x00d4a0d0 293b200a 20202020 62696173 202b3d20 ); . bias += │ │ │ │ - 0x00d4a0e0 76656332 2820302e 352c202d 302e3529 vec2( 0.5, -0.5) │ │ │ │ - 0x00d4a0f0 3b200a20 20202073 63616c65 202a3d20 ; . scale *= │ │ │ │ - 0x00d4a100 312e3020 2f20534d 41415f53 45415243 1.0 / SMAA_SEARC │ │ │ │ - 0x00d4a110 48544558 5f504143 4b45445f 53495a45 HTEX_PACKED_SIZE │ │ │ │ - 0x00d4a120 3b200a20 20202062 69617320 2a3d2031 ; . bias *= 1 │ │ │ │ - 0x00d4a130 2e30202f 20534d41 415f5345 41524348 .0 / SMAA_SEARCH │ │ │ │ - 0x00d4a140 5445585f 5041434b 45445f53 495a453b TEX_PACKED_SIZE; │ │ │ │ - 0x00d4a150 200a2020 20207265 7475726e 20534d41 . return SMA │ │ │ │ - 0x00d4a160 4153616d 706c654c 6576656c 5a65726f ASampleLevelZero │ │ │ │ - 0x00d4a170 28755f73 6d616153 65617263 682c2073 (u_smaaSearch, s │ │ │ │ - 0x00d4a180 63616c65 202a2065 202b2062 69617329 cale * e + bias) │ │ │ │ - 0x00d4a190 2e723b20 0a20207d 200a2020 666c6f61 .r; . } . floa │ │ │ │ - 0x00d4a1a0 7420534d 41415365 61726368 584c6566 t SMAASearchXLef │ │ │ │ - 0x00d4a1b0 74287665 63322074 6578636f 6f72642c t(vec2 texcoord, │ │ │ │ - 0x00d4a1c0 20666c6f 61742065 6e642920 0a20207b float end) . { │ │ │ │ - 0x00d4a1d0 200a2020 20207665 63322065 203d2076 . vec2 e = v │ │ │ │ - 0x00d4a1e0 65633228 302e302c 20312e30 293b200a ec2(0.0, 1.0); . │ │ │ │ - 0x00d4a1f0 20202020 534d4141 4c6f6f70 42656769 SMAALoopBegi │ │ │ │ - 0x00d4a200 6e287465 78636f6f 72642e78 203e2065 n(texcoord.x > e │ │ │ │ - 0x00d4a210 6e642026 2620652e 67203e20 6b416374 nd && e.g > kAct │ │ │ │ - 0x00d4a220 69766174 696f6e54 68726573 686f6c64 ivationThreshold │ │ │ │ - 0x00d4a230 20262620 652e7220 3d3d2030 2e302920 && e.r == 0.0) │ │ │ │ - 0x00d4a240 0a202020 20202065 203d2053 4d414153 . e = SMAAS │ │ │ │ - 0x00d4a250 616d706c 654c6576 656c5a65 726f2875 ampleLevelZero(u │ │ │ │ - 0x00d4a260 5f636f6c 6f725465 782c2074 6578636f _colorTex, texco │ │ │ │ - 0x00d4a270 6f726429 2e72673b 200a2020 20202020 ord).rg; . │ │ │ │ - 0x00d4a280 74657863 6f6f7264 203d2076 65633228 texcoord = vec2( │ │ │ │ - 0x00d4a290 2d322e30 2c20302e 3029202a 20755f66 -2.0, 0.0) * u_f │ │ │ │ - 0x00d4a2a0 72616d65 62756666 65724d65 74726963 ramebufferMetric │ │ │ │ - 0x00d4a2b0 732e7879 202b2074 6578636f 6f72643b s.xy + texcoord; │ │ │ │ - 0x00d4a2c0 200a2020 2020534d 41414c6f 6f70456e . SMAALoopEn │ │ │ │ - 0x00d4a2d0 64200a20 20202066 6c6f6174 206f6666 d . float off │ │ │ │ - 0x00d4a2e0 73657420 3d20332e 3235202d 20283235 set = 3.25 - (25 │ │ │ │ - 0x00d4a2f0 352e3020 2f203132 372e3029 202a2053 5.0 / 127.0) * S │ │ │ │ - 0x00d4a300 4d414153 65617263 684c656e 67746828 MAASearchLength( │ │ │ │ - 0x00d4a310 652c2030 2e30293b 200a2020 20207265 e, 0.0); . re │ │ │ │ - 0x00d4a320 7475726e 20755f66 72616d65 62756666 turn u_framebuff │ │ │ │ - 0x00d4a330 65724d65 74726963 732e7820 2a206f66 erMetrics.x * of │ │ │ │ - 0x00d4a340 66736574 202b2074 6578636f 6f72642e fset + texcoord. │ │ │ │ - 0x00d4a350 783b200a 20207d20 0a202066 6c6f6174 x; . } . float │ │ │ │ - 0x00d4a360 20534d41 41536561 72636858 52696768 SMAASearchXRigh │ │ │ │ - 0x00d4a370 74287665 63322074 6578636f 6f72642c t(vec2 texcoord, │ │ │ │ - 0x00d4a380 20666c6f 61742065 6e642920 0a20207b float end) . { │ │ │ │ - 0x00d4a390 200a2020 20207665 63322065 203d2076 . vec2 e = v │ │ │ │ - 0x00d4a3a0 65633228 302e302c 20312e30 293b200a ec2(0.0, 1.0); . │ │ │ │ - 0x00d4a3b0 20202020 534d4141 4c6f6f70 42656769 SMAALoopBegi │ │ │ │ - 0x00d4a3c0 6e287465 78636f6f 72642e78 203c2065 n(texcoord.x < e │ │ │ │ - 0x00d4a3d0 6e642026 2620652e 67203e20 6b416374 nd && e.g > kAct │ │ │ │ - 0x00d4a3e0 69766174 696f6e54 68726573 686f6c64 ivationThreshold │ │ │ │ - 0x00d4a3f0 20262620 652e7220 3d3d2030 2e302920 && e.r == 0.0) │ │ │ │ - 0x00d4a400 0a202020 20202065 203d2053 4d414153 . e = SMAAS │ │ │ │ - 0x00d4a410 616d706c 654c6576 656c5a65 726f2875 ampleLevelZero(u │ │ │ │ - 0x00d4a420 5f636f6c 6f725465 782c2074 6578636f _colorTex, texco │ │ │ │ - 0x00d4a430 6f726429 2e72673b 200a2020 20202020 ord).rg; . │ │ │ │ - 0x00d4a440 74657863 6f6f7264 203d2076 65633228 texcoord = vec2( │ │ │ │ - 0x00d4a450 322e302c 20302e30 29202a20 755f6672 2.0, 0.0) * u_fr │ │ │ │ - 0x00d4a460 616d6562 75666665 724d6574 72696373 amebufferMetrics │ │ │ │ - 0x00d4a470 2e787920 2b207465 78636f6f 72643b20 .xy + texcoord; │ │ │ │ - 0x00d4a480 0a202020 20534d41 414c6f6f 70456e64 . SMAALoopEnd │ │ │ │ - 0x00d4a490 200a2020 2020666c 6f617420 6f666673 . float offs │ │ │ │ - 0x00d4a4a0 6574203d 20332e32 35202d20 28323535 et = 3.25 - (255 │ │ │ │ - 0x00d4a4b0 2e30202f 20313237 2e302920 2a20534d .0 / 127.0) * SM │ │ │ │ - 0x00d4a4c0 41415365 61726368 4c656e67 74682865 AASearchLength(e │ │ │ │ - 0x00d4a4d0 2c20302e 35293b20 0a202020 20726574 , 0.5); . ret │ │ │ │ - 0x00d4a4e0 75726e20 2d755f66 72616d65 62756666 urn -u_framebuff │ │ │ │ - 0x00d4a4f0 65724d65 74726963 732e7820 2a206f66 erMetrics.x * of │ │ │ │ - 0x00d4a500 66736574 202b2074 6578636f 6f72642e fset + texcoord. │ │ │ │ - 0x00d4a510 783b200a 20207d20 0a202066 6c6f6174 x; . } . float │ │ │ │ - 0x00d4a520 20534d41 41536561 72636859 55702876 SMAASearchYUp(v │ │ │ │ - 0x00d4a530 65633220 74657863 6f6f7264 2c20666c ec2 texcoord, fl │ │ │ │ - 0x00d4a540 6f617420 656e6429 200a2020 7b200a20 oat end) . { . │ │ │ │ - 0x00d4a550 20202076 65633220 65203d20 76656332 vec2 e = vec2 │ │ │ │ - 0x00d4a560 28312e30 2c20302e 30293b20 0a202020 (1.0, 0.0); . │ │ │ │ - 0x00d4a570 20534d41 414c6f6f 70426567 696e2874 SMAALoopBegin(t │ │ │ │ - 0x00d4a580 6578636f 6f72642e 79203e20 656e6420 excoord.y > end │ │ │ │ - 0x00d4a590 26262065 2e72203e 206b4163 74697661 && e.r > kActiva │ │ │ │ - 0x00d4a5a0 74696f6e 54687265 73686f6c 64202626 tionThreshold && │ │ │ │ - 0x00d4a5b0 20652e67 203d3d20 302e3029 200a2020 e.g == 0.0) . │ │ │ │ - 0x00d4a5c0 20202020 65203d20 534d4141 53616d70 e = SMAASamp │ │ │ │ - 0x00d4a5d0 6c654c65 76656c5a 65726f28 755f636f leLevelZero(u_co │ │ │ │ - 0x00d4a5e0 6c6f7254 65782c20 74657863 6f6f7264 lorTex, texcoord │ │ │ │ - 0x00d4a5f0 292e7267 3b200a20 20202020 20746578 ).rg; . tex │ │ │ │ - 0x00d4a600 636f6f72 64203d20 76656332 28302e30 coord = vec2(0.0 │ │ │ │ - 0x00d4a610 2c202d32 2e302920 2a20755f 6672616d , -2.0) * u_fram │ │ │ │ - 0x00d4a620 65627566 6665724d 65747269 63732e78 ebufferMetrics.x │ │ │ │ - 0x00d4a630 79202b20 74657863 6f6f7264 3b200a20 y + texcoord; . │ │ │ │ - 0x00d4a640 20202053 4d41414c 6f6f7045 6e64200a SMAALoopEnd . │ │ │ │ - 0x00d4a650 20202020 666c6f61 74206f66 66736574 float offset │ │ │ │ - 0x00d4a660 203d2033 2e323520 2d202832 35352e30 = 3.25 - (255.0 │ │ │ │ - 0x00d4a670 202f2031 32372e30 29202a20 534d4141 / 127.0) * SMAA │ │ │ │ - 0x00d4a680 53656172 63684c65 6e677468 28652e67 SearchLength(e.g │ │ │ │ - 0x00d4a690 722c2030 2e30293b 200a2020 20207265 r, 0.0); . re │ │ │ │ - 0x00d4a6a0 7475726e 20755f66 72616d65 62756666 turn u_framebuff │ │ │ │ - 0x00d4a6b0 65724d65 74726963 732e7920 2a206f66 erMetrics.y * of │ │ │ │ - 0x00d4a6c0 66736574 202b2074 6578636f 6f72642e fset + texcoord. │ │ │ │ - 0x00d4a6d0 793b200a 20207d20 0a202066 6c6f6174 y; . } . float │ │ │ │ - 0x00d4a6e0 20534d41 41536561 72636859 446f776e SMAASearchYDown │ │ │ │ - 0x00d4a6f0 28766563 32207465 78636f6f 72642c20 (vec2 texcoord, │ │ │ │ - 0x00d4a700 666c6f61 7420656e 6429200a 20207b20 float end) . { │ │ │ │ - 0x00d4a710 0a202020 20766563 32206520 3d207665 . vec2 e = ve │ │ │ │ - 0x00d4a720 63322831 2e302c20 302e3029 3b200a20 c2(1.0, 0.0); . │ │ │ │ - 0x00d4a730 20202053 4d41414c 6f6f7042 6567696e SMAALoopBegin │ │ │ │ - 0x00d4a740 28746578 636f6f72 642e7920 3c20656e (texcoord.y < en │ │ │ │ - 0x00d4a750 64202626 20652e72 203e206b 41637469 d && e.r > kActi │ │ │ │ - 0x00d4a760 76617469 6f6e5468 72657368 6f6c6420 vationThreshold │ │ │ │ - 0x00d4a770 26262065 2e67203d 3d20302e 3029200a && e.g == 0.0) . │ │ │ │ - 0x00d4a780 20202020 20206520 3d20534d 41415361 e = SMAASa │ │ │ │ - 0x00d4a790 6d706c65 4c657665 6c5a6572 6f28755f mpleLevelZero(u_ │ │ │ │ - 0x00d4a7a0 636f6c6f 72546578 2c207465 78636f6f colorTex, texcoo │ │ │ │ - 0x00d4a7b0 7264292e 72673b20 0a202020 20202074 rd).rg; . t │ │ │ │ - 0x00d4a7c0 6578636f 6f726420 3d207665 63322830 excoord = vec2(0 │ │ │ │ - 0x00d4a7d0 2e302c20 322e3029 202a2075 5f667261 .0, 2.0) * u_fra │ │ │ │ - 0x00d4a7e0 6d656275 66666572 4d657472 6963732e mebufferMetrics. │ │ │ │ - 0x00d4a7f0 7879202b 20746578 636f6f72 643b200a xy + texcoord; . │ │ │ │ - 0x00d4a800 20202020 534d4141 4c6f6f70 456e6420 SMAALoopEnd │ │ │ │ - 0x00d4a810 0a202020 20666c6f 6174206f 66667365 . float offse │ │ │ │ - 0x00d4a820 74203d20 332e3235 202d2028 3235352e t = 3.25 - (255. │ │ │ │ - 0x00d4a830 30202f20 3132372e 3029202a 20534d41 0 / 127.0) * SMA │ │ │ │ - 0x00d4a840 41536561 7263684c 656e6774 6828652e ASearchLength(e. │ │ │ │ - 0x00d4a850 67722c20 302e3529 3b200a20 20202072 gr, 0.5); . r │ │ │ │ - 0x00d4a860 65747572 6e202d75 5f667261 6d656275 eturn -u_framebu │ │ │ │ - 0x00d4a870 66666572 4d657472 6963732e 79202a20 fferMetrics.y * │ │ │ │ - 0x00d4a880 6f666673 6574202b 20746578 636f6f72 offset + texcoor │ │ │ │ - 0x00d4a890 642e793b 200a2020 7d200a20 20766563 d.y; . } . vec │ │ │ │ - 0x00d4a8a0 3220534d 41414172 65612876 65633220 2 SMAAArea(vec2 │ │ │ │ - 0x00d4a8b0 64697374 2c20666c 6f617420 65312c20 dist, float e1, │ │ │ │ - 0x00d4a8c0 666c6f61 74206532 29200a20 207b200a float e2) . { . │ │ │ │ - 0x00d4a8d0 20202020 76656332 20746578 636f6f72 vec2 texcoor │ │ │ │ - 0x00d4a8e0 64203d20 6b417265 61546578 4d617844 d = kAreaTexMaxD │ │ │ │ - 0x00d4a8f0 69737461 6e636520 2a20534d 4141526f istance * SMAARo │ │ │ │ - 0x00d4a900 756e6428 342e3020 2a207665 63322865 und(4.0 * vec2(e │ │ │ │ - 0x00d4a910 312c2065 32292920 2b206469 73743b20 1, e2)) + dist; │ │ │ │ - 0x00d4a920 0a202020 20746578 636f6f72 64203d20 . texcoord = │ │ │ │ - 0x00d4a930 534d4141 5f415245 41544558 5f504958 SMAA_AREATEX_PIX │ │ │ │ - 0x00d4a940 454c5f53 495a4520 2a202874 6578636f EL_SIZE * (texco │ │ │ │ - 0x00d4a950 6f726420 2b20302e 35293b20 0a202020 ord + 0.5); . │ │ │ │ - 0x00d4a960 20726574 75726e20 534d4141 53616d70 return SMAASamp │ │ │ │ - 0x00d4a970 6c654c65 76656c5a 65726f28 755f736d leLevelZero(u_sm │ │ │ │ - 0x00d4a980 61614172 65612c20 74657863 6f6f7264 aaArea, texcoord │ │ │ │ - 0x00d4a990 292e7267 3b200a20 207d200a 2020636f ).rg; . } . co │ │ │ │ - 0x00d4a9a0 6e737420 666c6f61 74206b53 68617065 nst float kShape │ │ │ │ - 0x00d4a9b0 436f6f72 64536361 6c617220 3d203130 CoordScalar = 10 │ │ │ │ - 0x00d4a9c0 30302e30 3b200a20 20766f69 64206d61 00.0; . void ma │ │ │ │ - 0x00d4a9d0 696e2829 200a2020 7b200a20 20202076 in() . { . v │ │ │ │ - 0x00d4a9e0 65633420 77656967 68747320 3d207665 ec4 weights = ve │ │ │ │ - 0x00d4a9f0 63342830 2e302c20 302e302c 20302e30 c4(0.0, 0.0, 0.0 │ │ │ │ - 0x00d4aa00 2c20302e 30293b20 0a202020 20766563 , 0.0); . vec │ │ │ │ - 0x00d4aa10 32206520 3d207465 78747572 6528755f 2 e = texture(u_ │ │ │ │ - 0x00d4aa20 636f6c6f 72546578 2c20765f 636f6f72 colorTex, v_coor │ │ │ │ - 0x00d4aa30 64732e78 79292e72 673b200a 20202020 ds.xy).rg; . │ │ │ │ - 0x00d4aa40 69662028 652e6720 3e20302e 3029202f if (e.g > 0.0) / │ │ │ │ - 0x00d4aa50 2f204564 67652061 74206e6f 72746820 / Edge at north │ │ │ │ - 0x00d4aa60 0a202020 207b200a 20202020 20207665 . { . ve │ │ │ │ - 0x00d4aa70 63322064 3b200a20 20202020 20766563 c2 d; . vec │ │ │ │ - 0x00d4aa80 3320636f 6f726473 3b200a20 20202020 3 coords; . │ │ │ │ - 0x00d4aa90 20636f6f 7264732e 78203d20 534d4141 coords.x = SMAA │ │ │ │ - 0x00d4aaa0 53656172 6368584c 65667428 765f6f66 SearchXLeft(v_of │ │ │ │ - 0x00d4aab0 66736574 302e7879 2c20765f 6f666673 fset0.xy, v_offs │ │ │ │ - 0x00d4aac0 6574322e 78293b20 0a202020 20202063 et2.x); . c │ │ │ │ - 0x00d4aad0 6f6f7264 732e7920 3d20765f 6f666673 oords.y = v_offs │ │ │ │ - 0x00d4aae0 6574312e 793b200a 20202020 2020642e et1.y; . d. │ │ │ │ - 0x00d4aaf0 78203d20 636f6f72 64732e78 3b200a20 x = coords.x; . │ │ │ │ - 0x00d4ab00 20202020 20666c6f 61742065 31203d20 float e1 = │ │ │ │ - 0x00d4ab10 534d4141 53616d70 6c654c65 76656c5a SMAASampleLevelZ │ │ │ │ - 0x00d4ab20 65726f28 755f636f 6c6f7254 65782c20 ero(u_colorTex, │ │ │ │ - 0x00d4ab30 636f6f72 64732e78 79292e72 3b200a20 coords.xy).r; . │ │ │ │ - 0x00d4ab40 20202020 20636f6f 7264732e 7a203d20 coords.z = │ │ │ │ - 0x00d4ab50 534d4141 53656172 63685852 69676874 SMAASearchXRight │ │ │ │ - 0x00d4ab60 28765f6f 66667365 74302e7a 772c2076 (v_offset0.zw, v │ │ │ │ - 0x00d4ab70 5f6f6666 73657432 2e79293b 200a2020 _offset2.y); . │ │ │ │ - 0x00d4ab80 20202020 642e7920 3d20636f 6f726473 d.y = coords │ │ │ │ - 0x00d4ab90 2e7a3b20 0a202020 20202076 65633220 .z; . vec2 │ │ │ │ - 0x00d4aba0 7a7a203d 20755f66 72616d65 62756666 zz = u_framebuff │ │ │ │ - 0x00d4abb0 65724d65 74726963 732e7a7a 3b200a20 erMetrics.zz; . │ │ │ │ - 0x00d4abc0 20202020 2064203d 20616273 28534d41 d = abs(SMA │ │ │ │ - 0x00d4abd0 41526f75 6e64287a 7a202a20 64202d20 ARound(zz * d - │ │ │ │ - 0x00d4abe0 765f636f 6f726473 2e7a7a29 293b200a v_coords.zz)); . │ │ │ │ - 0x00d4abf0 20202020 20207665 63322073 7172745f vec2 sqrt_ │ │ │ │ - 0x00d4ac00 64203d20 73717274 2864293b 200a2020 d = sqrt(d); . │ │ │ │ - 0x00d4ac10 20202020 666c6f61 74206532 203d2053 float e2 = S │ │ │ │ - 0x00d4ac20 4d414153 616d706c 654c6576 656c5a65 MAASampleLevelZe │ │ │ │ - 0x00d4ac30 726f4f66 66736574 28755f63 6f6c6f72 roOffset(u_color │ │ │ │ - 0x00d4ac40 5465782c 20636f6f 7264732e 7a792c20 Tex, coords.zy, │ │ │ │ - 0x00d4ac50 534d4141 4f666673 65742831 2c203029 SMAAOffset(1, 0) │ │ │ │ - 0x00d4ac60 292e723b 200a2020 20202020 77656967 ).r; . weig │ │ │ │ - 0x00d4ac70 6874732e 7267203d 20534d41 41417265 hts.rg = SMAAAre │ │ │ │ - 0x00d4ac80 61287371 72745f64 2c206531 2c206532 a(sqrt_d, e1, e2 │ │ │ │ - 0x00d4ac90 293b200a 20202020 7d200a20 20202069 ); . } . i │ │ │ │ - 0x00d4aca0 66202865 2e72203e 20302e30 29202f2f f (e.r > 0.0) // │ │ │ │ - 0x00d4acb0 20456467 65206174 20776573 74200a20 Edge at west . │ │ │ │ - 0x00d4acc0 2020207b 200a2020 20202020 76656332 { . vec2 │ │ │ │ - 0x00d4acd0 20643b20 0a202020 20202076 65633320 d; . vec3 │ │ │ │ - 0x00d4ace0 636f6f72 64733b20 0a202020 20202063 coords; . c │ │ │ │ - 0x00d4acf0 6f6f7264 732e7920 3d20534d 41415365 oords.y = SMAASe │ │ │ │ - 0x00d4ad00 61726368 59557028 765f6f66 66736574 archYUp(v_offset │ │ │ │ - 0x00d4ad10 312e7879 2c20765f 6f666673 6574322e 1.xy, v_offset2. │ │ │ │ - 0x00d4ad20 7a293b20 0a202020 20202063 6f6f7264 z); . coord │ │ │ │ - 0x00d4ad30 732e7820 3d20765f 6f666673 6574302e s.x = v_offset0. │ │ │ │ - 0x00d4ad40 783b200a 20202020 2020642e 78203d20 x; . d.x = │ │ │ │ - 0x00d4ad50 636f6f72 64732e79 3b200a20 20202020 coords.y; . │ │ │ │ - 0x00d4ad60 20666c6f 61742065 31203d20 534d4141 float e1 = SMAA │ │ │ │ - 0x00d4ad70 53616d70 6c654c65 76656c5a 65726f28 SampleLevelZero( │ │ │ │ - 0x00d4ad80 755f636f 6c6f7254 65782c20 636f6f72 u_colorTex, coor │ │ │ │ - 0x00d4ad90 64732e78 79292e67 3b200a20 20202020 ds.xy).g; . │ │ │ │ - 0x00d4ada0 20636f6f 7264732e 7a203d20 534d4141 coords.z = SMAA │ │ │ │ - 0x00d4adb0 53656172 63685944 6f776e28 765f6f66 SearchYDown(v_of │ │ │ │ - 0x00d4adc0 66736574 312e7a77 2c20765f 6f666673 fset1.zw, v_offs │ │ │ │ - 0x00d4add0 6574322e 77293b20 0a202020 20202064 et2.w); . d │ │ │ │ - 0x00d4ade0 2e79203d 20636f6f 7264732e 7a3b200a .y = coords.z; . │ │ │ │ - 0x00d4adf0 20202020 20207665 63322077 77203d20 vec2 ww = │ │ │ │ - 0x00d4ae00 755f6672 616d6562 75666665 724d6574 u_framebufferMet │ │ │ │ - 0x00d4ae10 72696373 2e77773b 200a2020 20202020 rics.ww; . │ │ │ │ - 0x00d4ae20 64203d20 61627328 534d4141 526f756e d = abs(SMAARoun │ │ │ │ - 0x00d4ae30 64287777 202a2064 202d2076 5f636f6f d(ww * d - v_coo │ │ │ │ - 0x00d4ae40 7264732e 77772929 3b200a20 20202020 rds.ww)); . │ │ │ │ - 0x00d4ae50 20766563 32207371 72745f64 203d2073 vec2 sqrt_d = s │ │ │ │ - 0x00d4ae60 71727428 64293b20 0a202020 20202066 qrt(d); . f │ │ │ │ - 0x00d4ae70 6c6f6174 20653220 3d20534d 41415361 loat e2 = SMAASa │ │ │ │ - 0x00d4ae80 6d706c65 4c657665 6c5a6572 6f4f6666 mpleLevelZeroOff │ │ │ │ - 0x00d4ae90 73657428 755f636f 6c6f7254 65782c20 set(u_colorTex, │ │ │ │ - 0x00d4aea0 636f6f72 64732e78 7a2c2053 4d41414f coords.xz, SMAAO │ │ │ │ - 0x00d4aeb0 66667365 7428302c 20312929 2e673b20 ffset(0, 1)).g; │ │ │ │ - 0x00d4aec0 0a202020 20202077 65696768 74732e62 . weights.b │ │ │ │ - 0x00d4aed0 61203d20 534d4141 41726561 28737172 a = SMAAArea(sqr │ │ │ │ - 0x00d4aee0 745f642c 2065312c 20653229 3b200a20 t_d, e1, e2); . │ │ │ │ - 0x00d4aef0 2020207d 200a2020 2020765f 46726167 } . v_Frag │ │ │ │ - 0x00d4af00 436f6c6f 72203d20 77656967 6874733b Color = weights; │ │ │ │ - 0x00d4af10 200a2020 7d200a00 00000000 00000000 . } .......... │ │ │ │ - 0x00d4af20 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d4af30 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d4af40 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d4af50 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d4af60 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d4af70 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d4af80 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d4af90 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d4afa0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d4afb0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d4afc0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d4afd0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d4afe0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d4aff0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d4b000 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d4b010 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d4b020 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d4b030 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d4b040 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d4b050 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d4b060 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d4b070 63322061 5f706f73 3b200a20 20696e20 c2 a_pos; . in │ │ │ │ - 0x00d4b080 76656332 20615f74 636f6f72 643b200a vec2 a_tcoord; . │ │ │ │ - 0x00d4b090 20206f75 74207665 63342076 5f636f6f out vec4 v_coo │ │ │ │ - 0x00d4b0a0 7264733b 200a2020 6f757420 76656334 rds; . out vec4 │ │ │ │ - 0x00d4b0b0 20765f6f 66667365 74303b20 0a20206f v_offset0; . o │ │ │ │ - 0x00d4b0c0 75742076 65633420 765f6f66 66736574 ut vec4 v_offset │ │ │ │ - 0x00d4b0d0 313b200a 20206f75 74207665 63342076 1; . out vec4 v │ │ │ │ - 0x00d4b0e0 5f6f6666 73657432 3b200a20 20756e69 _offset2; . uni │ │ │ │ - 0x00d4b0f0 666f726d 20766563 3420755f 6672616d form vec4 u_fram │ │ │ │ - 0x00d4b100 65627566 6665724d 65747269 63733b20 ebufferMetrics; │ │ │ │ - 0x00d4b110 0a202023 64656669 6e652053 4d41415f . #define SMAA_ │ │ │ │ - 0x00d4b120 4d41585f 53454152 43485f53 54455053 MAX_SEARCH_STEPS │ │ │ │ - 0x00d4b130 20382e30 200a2020 636f6e73 74207665 8.0 . const ve │ │ │ │ - 0x00d4b140 6334206b 4d617853 65617263 68537465 c4 kMaxSearchSte │ │ │ │ - 0x00d4b150 7073203d 20766563 34282d32 2e30202a ps = vec4(-2.0 * │ │ │ │ - 0x00d4b160 20534d41 415f4d41 585f5345 41524348 SMAA_MAX_SEARCH │ │ │ │ - 0x00d4b170 5f535445 50532c20 322e3020 2a20534d _STEPS, 2.0 * SM │ │ │ │ - 0x00d4b180 41415f4d 41585f53 45415243 485f5354 AA_MAX_SEARCH_ST │ │ │ │ - 0x00d4b190 4550532c 200a2020 20202020 20202020 EPS, . │ │ │ │ - 0x00d4b1a0 20202020 20202020 20202020 20202020 │ │ │ │ - 0x00d4b1b0 20202020 20202020 20202d32 2e30202a -2.0 * │ │ │ │ - 0x00d4b1c0 20534d41 415f4d41 585f5345 41524348 SMAA_MAX_SEARCH │ │ │ │ - 0x00d4b1d0 5f535445 50532c20 322e3020 202a2053 _STEPS, 2.0 * S │ │ │ │ - 0x00d4b1e0 4d41415f 4d41585f 53454152 43485f53 MAA_MAX_SEARCH_S │ │ │ │ - 0x00d4b1f0 54455053 293b200a 2020636f 6e737420 TEPS); . const │ │ │ │ - 0x00d4b200 666c6f61 74206b53 68617065 436f6f72 float kShapeCoor │ │ │ │ - 0x00d4b210 64536361 6c617220 3d203130 30302e30 dScalar = 1000.0 │ │ │ │ - 0x00d4b220 3b200a20 20766563 34206170 706c7950 ; . vec4 applyP │ │ │ │ - 0x00d4b230 69766f74 5472616e 73666f72 6d287665 ivotTransform(ve │ │ │ │ - 0x00d4b240 63342070 69766f74 2c206d61 74342070 c4 pivot, mat4 p │ │ │ │ - 0x00d4b250 69766f74 5472616e 73666f72 6d2c2066 ivotTransform, f │ │ │ │ - 0x00d4b260 6c6f6174 20706976 6f745265 616c5a29 loat pivotRealZ) │ │ │ │ - 0x00d4b270 200a2020 7b200a20 20202076 65633420 . { . vec4 │ │ │ │ - 0x00d4b280 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ - 0x00d4b290 203d2070 69766f74 3b200a20 20202066 = pivot; . f │ │ │ │ - 0x00d4b2a0 6c6f6174 2077203d 20747261 6e73666f loat w = transfo │ │ │ │ - 0x00d4b2b0 726d6564 5069766f 742e773b 200a2020 rmedPivot.w; . │ │ │ │ - 0x00d4b2c0 20207472 616e7366 6f726d65 64506976 transformedPiv │ │ │ │ - 0x00d4b2d0 6f742e78 7977203d 20287069 766f7454 ot.xyw = (pivotT │ │ │ │ - 0x00d4b2e0 72616e73 666f726d 202a2076 65633428 ransform * vec4( │ │ │ │ - 0x00d4b2f0 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ - 0x00d4b300 2e78792c 20706976 6f745265 616c5a2c .xy, pivotRealZ, │ │ │ │ - 0x00d4b310 20772929 2e787977 3b200a20 20202074 w)).xyw; . t │ │ │ │ - 0x00d4b320 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ - 0x00d4b330 7a202a3d 20747261 6e73666f 726d6564 z *= transformed │ │ │ │ - 0x00d4b340 5069766f 742e7720 2f20773b 200a2020 Pivot.w / w; . │ │ │ │ - 0x00d4b350 23696664 65662056 554c4b41 4e200a20 #ifdef VULKAN . │ │ │ │ - 0x00d4b360 20202074 72616e73 666f726d 65645069 transformedPi │ │ │ │ - 0x00d4b370 766f742e 79203d20 2d747261 6e73666f vot.y = -transfo │ │ │ │ - 0x00d4b380 726d6564 5069766f 742e793b 200a2020 rmedPivot.y; . │ │ │ │ - 0x00d4b390 20207472 616e7366 6f726d65 64506976 transformedPiv │ │ │ │ - 0x00d4b3a0 6f742e7a 203d2028 7472616e 73666f72 ot.z = (transfor │ │ │ │ - 0x00d4b3b0 6d656450 69766f74 2e7a2020 2b207472 medPivot.z + tr │ │ │ │ - 0x00d4b3c0 616e7366 6f726d65 64506976 6f742e77 ansformedPivot.w │ │ │ │ - 0x00d4b3d0 29202f20 322e303b 200a2020 23656e64 ) / 2.0; . #end │ │ │ │ - 0x00d4b3e0 6966200a 20202020 72657475 726e2074 if . return t │ │ │ │ - 0x00d4b3f0 72616e73 666f726d 65645069 766f743b ransformedPivot; │ │ │ │ - 0x00d4b400 200a2020 7d200a20 20766563 34206170 . } . vec4 ap │ │ │ │ - 0x00d4b410 706c7942 696c6c62 6f617264 5069766f plyBillboardPivo │ │ │ │ - 0x00d4b420 74547261 6e73666f 726d2876 65633420 tTransform(vec4 │ │ │ │ - 0x00d4b430 7069766f 742c206d 61743420 7069766f pivot, mat4 pivo │ │ │ │ - 0x00d4b440 74547261 6e73666f 726d2c20 666c6f61 tTransform, floa │ │ │ │ - 0x00d4b450 74207069 766f7452 65616c5a 2c207665 t pivotRealZ, ve │ │ │ │ - 0x00d4b460 6332206f 66667365 7429200a 20207b20 c2 offset) . { │ │ │ │ - 0x00d4b470 0a202020 20666c6f 6174206c 6f676963 . float logic │ │ │ │ - 0x00d4b480 5a203d20 7069766f 742e7a20 2f207069 Z = pivot.z / pi │ │ │ │ - 0x00d4b490 766f742e 773b200a 20202020 76656334 vot.w; . vec4 │ │ │ │ - 0x00d4b4a0 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ - 0x00d4b4b0 74203d20 7069766f 74547261 6e73666f t = pivotTransfo │ │ │ │ - 0x00d4b4c0 726d202a 20766563 34287069 766f742e rm * vec4(pivot. │ │ │ │ - 0x00d4b4d0 78792c20 7069766f 74526561 6c5a2c20 xy, pivotRealZ, │ │ │ │ - 0x00d4b4e0 7069766f 742e7729 3b200a20 20202076 pivot.w); . v │ │ │ │ - 0x00d4b4f0 65633420 7363616c 65203d20 7069766f ec4 scale = pivo │ │ │ │ - 0x00d4b500 74547261 6e73666f 726d202a 20766563 tTransform * vec │ │ │ │ - 0x00d4b510 3428312e 302c202d 312e302c 20302e30 4(1.0, -1.0, 0.0 │ │ │ │ - 0x00d4b520 2c20312e 30293b20 0a202020 20766563 , 1.0); . vec │ │ │ │ - 0x00d4b530 3420706f 73697469 6f6e203d 20766563 4 position = vec │ │ │ │ - 0x00d4b540 34287472 616e7366 6f726d65 64506976 4(transformedPiv │ │ │ │ - 0x00d4b550 6f742e78 79202f20 7472616e 73666f72 ot.xy / transfor │ │ │ │ - 0x00d4b560 6d656450 69766f74 2e772c20 6c6f6769 medPivot.w, logi │ │ │ │ - 0x00d4b570 635a2c20 312e3029 202b2076 65633428 cZ, 1.0) + vec4( │ │ │ │ - 0x00d4b580 6f666673 6574202f 20736361 6c652e77 offset / scale.w │ │ │ │ - 0x00d4b590 202a2073 63616c65 2e782c20 302e302c * scale.x, 0.0, │ │ │ │ - 0x00d4b5a0 20302e30 293b200a 20202369 66646566 0.0); . #ifdef │ │ │ │ - 0x00d4b5b0 2056554c 4b414e20 0a202020 20706f73 VULKAN . pos │ │ │ │ - 0x00d4b5c0 6974696f 6e2e7920 3d202d70 6f736974 ition.y = -posit │ │ │ │ - 0x00d4b5d0 696f6e2e 793b200a 20202020 706f7369 ion.y; . posi │ │ │ │ - 0x00d4b5e0 74696f6e 2e7a203d 2028706f 73697469 tion.z = (positi │ │ │ │ - 0x00d4b5f0 6f6e2e7a 20202b20 706f7369 74696f6e on.z + position │ │ │ │ - 0x00d4b600 2e772920 2f20322e 303b200a 20202365 .w) / 2.0; . #e │ │ │ │ - 0x00d4b610 6e646966 200a2020 20207265 7475726e ndif . return │ │ │ │ - 0x00d4b620 20706f73 6974696f 6e3b200a 20207d20 position; . } │ │ │ │ - 0x00d4b630 0a202076 65633220 63616c63 4c696e65 . vec2 calcLine │ │ │ │ - 0x00d4b640 5472616e 73666f72 6d656441 78697350 TransformedAxisP │ │ │ │ - 0x00d4b650 6f732876 65633220 6f726967 696e616c os(vec2 original │ │ │ │ - 0x00d4b660 41786973 506f732c 20766563 32207368 AxisPos, vec2 sh │ │ │ │ - 0x00d4b670 69667465 64506f73 2c206d61 7434206d iftedPos, mat4 m │ │ │ │ - 0x00d4b680 6f64656c 56696577 2c20666c 6f617420 odelView, float │ │ │ │ - 0x00d4b690 68616c66 57696474 6829200a 20207b20 halfWidth) . { │ │ │ │ - 0x00d4b6a0 0a202020 20766563 32207020 3d202876 . vec2 p = (v │ │ │ │ - 0x00d4b6b0 65633428 73686966 74656450 6f732c20 ec4(shiftedPos, │ │ │ │ - 0x00d4b6c0 302e302c 20312e30 29202a20 6d6f6465 0.0, 1.0) * mode │ │ │ │ - 0x00d4b6d0 6c566965 77292e78 793b200a 20202020 lView).xy; . │ │ │ │ - 0x00d4b6e0 76656332 2064203d 2070202d 206f7269 vec2 d = p - ori │ │ │ │ - 0x00d4b6f0 67696e61 6c417869 73506f73 3b200a20 ginalAxisPos; . │ │ │ │ - 0x00d4b700 20202069 66202864 6f742864 2c206429 if (dot(d, d) │ │ │ │ - 0x00d4b710 20213d20 302e3029 200a2020 20202020 != 0.0) . │ │ │ │ - 0x00d4b720 72657475 726e206f 72696769 6e616c41 return originalA │ │ │ │ - 0x00d4b730 78697350 6f73202b 206e6f72 6d616c69 xisPos + normali │ │ │ │ - 0x00d4b740 7a652864 29202a20 68616c66 57696474 ze(d) * halfWidt │ │ │ │ - 0x00d4b750 683b200a 20202020 656c7365 200a2020 h; . else . │ │ │ │ - 0x00d4b760 20202020 72657475 726e206f 72696769 return origi │ │ │ │ - 0x00d4b770 6e616c41 78697350 6f733b20 0a20207d nalAxisPos; . } │ │ │ │ - 0x00d4b780 200a2020 766f6964 206d6169 6e282920 . void main() │ │ │ │ - 0x00d4b790 0a20207b 200a2020 2020765f 636f6f72 . { . v_coor │ │ │ │ - 0x00d4b7a0 6473203d 20766563 3428615f 74636f6f ds = vec4(a_tcoo │ │ │ │ - 0x00d4b7b0 72642c20 615f7463 6f6f7264 202a2075 rd, a_tcoord * u │ │ │ │ - 0x00d4b7c0 5f667261 6d656275 66666572 4d657472 _framebufferMetr │ │ │ │ - 0x00d4b7d0 6963732e 7a77293b 200a2020 2020765f ics.zw); . v_ │ │ │ │ - 0x00d4b7e0 6f666673 65743020 3d20755f 6672616d offset0 = u_fram │ │ │ │ - 0x00d4b7f0 65627566 6665724d 65747269 63732e78 ebufferMetrics.x │ │ │ │ - 0x00d4b800 79787920 2a207665 6334282d 302e3235 yxy * vec4(-0.25 │ │ │ │ - 0x00d4b810 2c202d30 2e313235 2c20312e 32352c20 , -0.125, 1.25, │ │ │ │ - 0x00d4b820 2d302e31 32352920 2b20615f 74636f6f -0.125) + a_tcoo │ │ │ │ - 0x00d4b830 72642e78 7978793b 200a2020 2020765f rd.xyxy; . v_ │ │ │ │ - 0x00d4b840 6f666673 65743120 3d20755f 6672616d offset1 = u_fram │ │ │ │ - 0x00d4b850 65627566 6665724d 65747269 63732e78 ebufferMetrics.x │ │ │ │ - 0x00d4b860 79787920 2a207665 6334282d 302e3132 yxy * vec4(-0.12 │ │ │ │ - 0x00d4b870 352c202d 302e3235 2c202d30 2e313235 5, -0.25, -0.125 │ │ │ │ - 0x00d4b880 2c20312e 32352920 2b20615f 74636f6f , 1.25) + a_tcoo │ │ │ │ - 0x00d4b890 72642e78 7978793b 200a2020 2020765f rd.xyxy; . v_ │ │ │ │ - 0x00d4b8a0 6f666673 65743220 3d20755f 6672616d offset2 = u_fram │ │ │ │ - 0x00d4b8b0 65627566 6665724d 65747269 63732e78 ebufferMetrics.x │ │ │ │ - 0x00d4b8c0 78797920 2a206b4d 61785365 61726368 xyy * kMaxSearch │ │ │ │ - 0x00d4b8d0 53746570 73202b20 76656334 28765f6f Steps + vec4(v_o │ │ │ │ - 0x00d4b8e0 66667365 74302e78 7a2c2076 5f6f6666 ffset0.xz, v_off │ │ │ │ - 0x00d4b8f0 73657431 2e797729 3b200a20 20202067 set1.yw); . g │ │ │ │ - 0x00d4b900 6c5f506f 73697469 6f6e203d 20766563 l_Position = vec │ │ │ │ - 0x00d4b910 3428615f 706f732c 20302e30 2c20312e 4(a_pos, 0.0, 1. │ │ │ │ - 0x00d4b920 30293b20 0a20207d 200a0000 00000000 0); . } ....... │ │ │ │ - 0x00d4b930 00000000 00000000 00000000 00000000 ................ │ │ │ │ - 0x00d4b940 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d4b950 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d4b960 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d4b970 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d4b980 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d4b990 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d4b9a0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d4b9b0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d4b9c0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d4b9d0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d4b9e0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d4b9f0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d4ba00 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d4ba10 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d4ba20 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d4ba30 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d4ba40 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d4ba50 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d4ba60 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d4ba70 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d4ba80 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d4ba90 63322076 5f636f6c 6f725465 78436f6f c2 v_colorTexCoo │ │ │ │ - 0x00d4baa0 7264733b 200a2020 696e2076 65633420 rds; . in vec4 │ │ │ │ - 0x00d4bab0 765f6f66 66736574 303b200a 2020696e v_offset0; . in │ │ │ │ - 0x00d4bac0 20766563 3420765f 6f666673 6574313b vec4 v_offset1; │ │ │ │ - 0x00d4bad0 200a2020 696e2076 65633420 765f6f66 . in vec4 v_of │ │ │ │ - 0x00d4bae0 66736574 323b200a 20206f75 74207665 fset2; . out ve │ │ │ │ - 0x00d4baf0 63342076 5f467261 67436f6c 6f723b20 c4 v_FragColor; │ │ │ │ - 0x00d4bb00 0a202075 6e69666f 726d2073 616d706c . uniform sampl │ │ │ │ - 0x00d4bb10 65723244 20755f63 6f6c6f72 5465783b er2D u_colorTex; │ │ │ │ - 0x00d4bb20 200a2020 23646566 696e6520 534d4141 . #define SMAA │ │ │ │ - 0x00d4bb30 5f544852 4553484f 4c442030 2e303520 _THRESHOLD 0.05 │ │ │ │ - 0x00d4bb40 0a202063 6f6e7374 20766563 32206b54 . const vec2 kT │ │ │ │ - 0x00d4bb50 68726573 686f6c64 203d2076 65633228 hreshold = vec2( │ │ │ │ - 0x00d4bb60 534d4141 5f544852 4553484f 4c442c20 SMAA_THRESHOLD, │ │ │ │ - 0x00d4bb70 534d4141 5f544852 4553484f 4c44293b SMAA_THRESHOLD); │ │ │ │ - 0x00d4bb80 200a2020 23646566 696e6520 534d4141 . #define SMAA │ │ │ │ - 0x00d4bb90 5f4c4f43 414c5f43 4f4e5452 4153545f _LOCAL_CONTRAST_ │ │ │ │ - 0x00d4bba0 41444150 54415449 4f4e5f46 4143544f ADAPTATION_FACTO │ │ │ │ - 0x00d4bbb0 5220322e 30200a20 20636f6e 73742076 R 2.0 . const v │ │ │ │ - 0x00d4bbc0 65633320 6b576569 67687473 203d2076 ec3 kWeights = v │ │ │ │ - 0x00d4bbd0 65633328 302e3231 32362c20 302e3731 ec3(0.2126, 0.71 │ │ │ │ - 0x00d4bbe0 35322c20 302e3037 3232293b 200a2020 52, 0.0722); . │ │ │ │ - 0x00d4bbf0 636f6e73 7420666c 6f617420 6b536861 const float kSha │ │ │ │ - 0x00d4bc00 7065436f 6f726453 63616c61 72203d20 peCoordScalar = │ │ │ │ - 0x00d4bc10 31303030 2e303b20 0a202076 6f696420 1000.0; . void │ │ │ │ - 0x00d4bc20 6d61696e 2829200a 20207b20 0a202020 main() . { . │ │ │ │ - 0x00d4bc30 20666c6f 6174204c 203d2064 6f742874 float L = dot(t │ │ │ │ - 0x00d4bc40 65787475 72652875 5f636f6c 6f725465 exture(u_colorTe │ │ │ │ - 0x00d4bc50 782c2076 5f636f6c 6f725465 78436f6f x, v_colorTexCoo │ │ │ │ - 0x00d4bc60 72647329 2e726762 2c206b57 65696768 rds).rgb, kWeigh │ │ │ │ - 0x00d4bc70 7473293b 200a2020 2020666c 6f617420 ts); . float │ │ │ │ - 0x00d4bc80 4c6c6566 74203d20 646f7428 74657874 Lleft = dot(text │ │ │ │ - 0x00d4bc90 75726528 755f636f 6c6f7254 65782c20 ure(u_colorTex, │ │ │ │ - 0x00d4bca0 765f6f66 66736574 302e7879 292e7267 v_offset0.xy).rg │ │ │ │ - 0x00d4bcb0 622c206b 57656967 68747329 3b200a20 b, kWeights); . │ │ │ │ - 0x00d4bcc0 20202066 6c6f6174 204c746f 70203d20 float Ltop = │ │ │ │ - 0x00d4bcd0 646f7428 74657874 75726528 755f636f dot(texture(u_co │ │ │ │ - 0x00d4bce0 6c6f7254 65782c20 765f6f66 66736574 lorTex, v_offset │ │ │ │ - 0x00d4bcf0 302e7a77 292e7267 622c206b 57656967 0.zw).rgb, kWeig │ │ │ │ - 0x00d4bd00 68747329 3b200a20 20202076 65633420 hts); . vec4 │ │ │ │ - 0x00d4bd10 64656c74 613b200a 20202020 64656c74 delta; . delt │ │ │ │ - 0x00d4bd20 612e7879 203d2061 6273284c 202d2076 a.xy = abs(L - v │ │ │ │ - 0x00d4bd30 65633228 4c6c6566 742c204c 746f7029 ec2(Lleft, Ltop) │ │ │ │ - 0x00d4bd40 293b200a 20202020 76656332 20656467 ); . vec2 edg │ │ │ │ - 0x00d4bd50 6573203d 20737465 70286b54 68726573 es = step(kThres │ │ │ │ - 0x00d4bd60 686f6c64 2c206465 6c74612e 7879293b hold, delta.xy); │ │ │ │ - 0x00d4bd70 200a2020 20206966 2028646f 74286564 . if (dot(ed │ │ │ │ - 0x00d4bd80 6765732c 20766563 3228312e 302c2031 ges, vec2(1.0, 1 │ │ │ │ - 0x00d4bd90 2e302929 203d3d20 302e3029 200a2020 .0)) == 0.0) . │ │ │ │ - 0x00d4bda0 20202020 20206469 73636172 643b200a discard; . │ │ │ │ - 0x00d4bdb0 20202020 666c6f61 74204c72 69676874 float Lright │ │ │ │ - 0x00d4bdc0 203d2064 6f742874 65787475 72652875 = dot(texture(u │ │ │ │ - 0x00d4bdd0 5f636f6c 6f725465 782c2076 5f6f6666 _colorTex, v_off │ │ │ │ - 0x00d4bde0 73657431 2e787929 2e726762 2c206b57 set1.xy).rgb, kW │ │ │ │ - 0x00d4bdf0 65696768 7473293b 200a2020 2020666c eights); . fl │ │ │ │ - 0x00d4be00 6f617420 4c626f74 746f6d20 203d2064 oat Lbottom = d │ │ │ │ - 0x00d4be10 6f742874 65787475 72652875 5f636f6c ot(texture(u_col │ │ │ │ - 0x00d4be20 6f725465 782c2076 5f6f6666 73657431 orTex, v_offset1 │ │ │ │ - 0x00d4be30 2e7a7729 2e726762 2c206b57 65696768 .zw).rgb, kWeigh │ │ │ │ - 0x00d4be40 7473293b 200a2020 20206465 6c74612e ts); . delta. │ │ │ │ - 0x00d4be50 7a77203d 20616273 284c202d 20766563 zw = abs(L - vec │ │ │ │ - 0x00d4be60 32284c72 69676874 2c204c62 6f74746f 2(Lright, Lbotto │ │ │ │ - 0x00d4be70 6d29293b 200a2020 20207665 6332206d m)); . vec2 m │ │ │ │ - 0x00d4be80 61784465 6c746120 3d206d61 78286465 axDelta = max(de │ │ │ │ - 0x00d4be90 6c74612e 78792c20 64656c74 612e7a77 lta.xy, delta.zw │ │ │ │ - 0x00d4bea0 293b200a 20202020 666c6f61 74204c6c ); . float Ll │ │ │ │ - 0x00d4beb0 6566746c 65667420 3d20646f 74287465 eftleft = dot(te │ │ │ │ - 0x00d4bec0 78747572 6528755f 636f6c6f 72546578 xture(u_colorTex │ │ │ │ - 0x00d4bed0 2c20765f 6f666673 6574322e 7879292e , v_offset2.xy). │ │ │ │ - 0x00d4bee0 7267622c 206b5765 69676874 73293b20 rgb, kWeights); │ │ │ │ - 0x00d4bef0 0a202020 20666c6f 6174204c 746f7074 . float Ltopt │ │ │ │ - 0x00d4bf00 6f70203d 20646f74 28746578 74757265 op = dot(texture │ │ │ │ - 0x00d4bf10 28755f63 6f6c6f72 5465782c 20765f6f (u_colorTex, v_o │ │ │ │ - 0x00d4bf20 66667365 74322e7a 77292e72 67622c20 ffset2.zw).rgb, │ │ │ │ - 0x00d4bf30 6b576569 67687473 293b200a 20202020 kWeights); . │ │ │ │ - 0x00d4bf40 64656c74 612e7a77 203d2061 62732876 delta.zw = abs(v │ │ │ │ - 0x00d4bf50 65633228 4c6c6566 742c204c 746f7029 ec2(Lleft, Ltop) │ │ │ │ - 0x00d4bf60 202d2076 65633228 4c6c6566 746c6566 - vec2(Lleftlef │ │ │ │ - 0x00d4bf70 742c204c 746f7074 6f702929 3b200a20 t, Ltoptop)); . │ │ │ │ - 0x00d4bf80 2020206d 61784465 6c746120 3d206d61 maxDelta = ma │ │ │ │ - 0x00d4bf90 78286d61 7844656c 74612e78 792c2064 x(maxDelta.xy, d │ │ │ │ - 0x00d4bfa0 656c7461 2e7a7729 3b200a20 20202066 elta.zw); . f │ │ │ │ - 0x00d4bfb0 6c6f6174 2066696e 616c4465 6c746120 loat finalDelta │ │ │ │ - 0x00d4bfc0 3d206d61 78286d61 7844656c 74612e78 = max(maxDelta.x │ │ │ │ - 0x00d4bfd0 2c206d61 7844656c 74612e79 293b200a , maxDelta.y); . │ │ │ │ - 0x00d4bfe0 20202020 65646765 73202a3d 20737465 edges *= ste │ │ │ │ - 0x00d4bff0 70286669 6e616c44 656c7461 2c20534d p(finalDelta, SM │ │ │ │ - 0x00d4c000 41415f4c 4f43414c 5f434f4e 54524153 AA_LOCAL_CONTRAS │ │ │ │ - 0x00d4c010 545f4144 41505441 54494f4e 5f464143 T_ADAPTATION_FAC │ │ │ │ - 0x00d4c020 544f5220 2a206465 6c74612e 7879293b TOR * delta.xy); │ │ │ │ - 0x00d4c030 200a2020 2020765f 46726167 436f6c6f . v_FragColo │ │ │ │ - 0x00d4c040 72203d20 76656334 28656467 65732c20 r = vec4(edges, │ │ │ │ - 0x00d4c050 302e302c 20312e30 293b200a 20207d20 0.0, 1.0); . } │ │ │ │ - 0x00d4c060 0a000000 00000000 00000000 00000000 ................ │ │ │ │ - 0x00d4c070 00000000 00000000 00000000 00000000 ................ │ │ │ │ - 0x00d4c080 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d4c090 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d4c0a0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d4c0b0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d4c0c0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d4c0d0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d4c0e0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d4c0f0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d4c100 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d4c110 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d4c120 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d4c130 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d4c140 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d4c150 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d4c160 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d4c170 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d4c180 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d4c190 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d4c1a0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d4c1b0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d4c1c0 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d4c1d0 63322061 5f706f73 3b200a20 20696e20 c2 a_pos; . in │ │ │ │ - 0x00d4c1e0 76656332 20615f74 636f6f72 643b200a vec2 a_tcoord; . │ │ │ │ - 0x00d4c1f0 20206f75 74207665 63322076 5f636f6c out vec2 v_col │ │ │ │ - 0x00d4c200 6f725465 78436f6f 7264733b 200a2020 orTexCoords; . │ │ │ │ - 0x00d4c210 6f757420 76656334 20765f6f 66667365 out vec4 v_offse │ │ │ │ - 0x00d4c220 74303b20 0a20206f 75742076 65633420 t0; . out vec4 │ │ │ │ - 0x00d4c230 765f6f66 66736574 313b200a 20206f75 v_offset1; . ou │ │ │ │ - 0x00d4c240 74207665 63342076 5f6f6666 73657432 t vec4 v_offset2 │ │ │ │ - 0x00d4c250 3b200a20 20756e69 666f726d 20766563 ; . uniform vec │ │ │ │ - 0x00d4c260 3420755f 6672616d 65627566 6665724d 4 u_framebufferM │ │ │ │ - 0x00d4c270 65747269 63733b20 0a202063 6f6e7374 etrics; . const │ │ │ │ - 0x00d4c280 20666c6f 6174206b 53686170 65436f6f float kShapeCoo │ │ │ │ - 0x00d4c290 72645363 616c6172 203d2031 3030302e rdScalar = 1000. │ │ │ │ - 0x00d4c2a0 303b200a 20207665 63342061 70706c79 0; . vec4 apply │ │ │ │ - 0x00d4c2b0 5069766f 74547261 6e73666f 726d2876 PivotTransform(v │ │ │ │ - 0x00d4c2c0 65633420 7069766f 742c206d 61743420 ec4 pivot, mat4 │ │ │ │ - 0x00d4c2d0 7069766f 74547261 6e73666f 726d2c20 pivotTransform, │ │ │ │ - 0x00d4c2e0 666c6f61 74207069 766f7452 65616c5a float pivotRealZ │ │ │ │ - 0x00d4c2f0 29200a20 207b200a 20202020 76656334 ) . { . vec4 │ │ │ │ - 0x00d4c300 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ - 0x00d4c310 74203d20 7069766f 743b200a 20202020 t = pivot; . │ │ │ │ - 0x00d4c320 666c6f61 74207720 3d207472 616e7366 float w = transf │ │ │ │ - 0x00d4c330 6f726d65 64506976 6f742e77 3b200a20 ormedPivot.w; . │ │ │ │ - 0x00d4c340 20202074 72616e73 666f726d 65645069 transformedPi │ │ │ │ - 0x00d4c350 766f742e 78797720 3d202870 69766f74 vot.xyw = (pivot │ │ │ │ - 0x00d4c360 5472616e 73666f72 6d202a20 76656334 Transform * vec4 │ │ │ │ - 0x00d4c370 28747261 6e73666f 726d6564 5069766f (transformedPivo │ │ │ │ - 0x00d4c380 742e7879 2c207069 766f7452 65616c5a t.xy, pivotRealZ │ │ │ │ - 0x00d4c390 2c207729 292e7879 773b200a 20202020 , w)).xyw; . │ │ │ │ - 0x00d4c3a0 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ - 0x00d4c3b0 2e7a202a 3d207472 616e7366 6f726d65 .z *= transforme │ │ │ │ - 0x00d4c3c0 64506976 6f742e77 202f2077 3b200a20 dPivot.w / w; . │ │ │ │ - 0x00d4c3d0 20236966 64656620 56554c4b 414e200a #ifdef VULKAN . │ │ │ │ - 0x00d4c3e0 20202020 7472616e 73666f72 6d656450 transformedP │ │ │ │ - 0x00d4c3f0 69766f74 2e79203d 202d7472 616e7366 ivot.y = -transf │ │ │ │ - 0x00d4c400 6f726d65 64506976 6f742e79 3b200a20 ormedPivot.y; . │ │ │ │ - 0x00d4c410 20202074 72616e73 666f726d 65645069 transformedPi │ │ │ │ - 0x00d4c420 766f742e 7a203d20 28747261 6e73666f vot.z = (transfo │ │ │ │ - 0x00d4c430 726d6564 5069766f 742e7a20 202b2074 rmedPivot.z + t │ │ │ │ - 0x00d4c440 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ - 0x00d4c450 7729202f 20322e30 3b200a20 2023656e w) / 2.0; . #en │ │ │ │ - 0x00d4c460 64696620 0a202020 20726574 75726e20 dif . return │ │ │ │ - 0x00d4c470 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ - 0x00d4c480 3b200a20 207d200a 20207665 63342061 ; . } . vec4 a │ │ │ │ - 0x00d4c490 70706c79 42696c6c 626f6172 64506976 pplyBillboardPiv │ │ │ │ - 0x00d4c4a0 6f745472 616e7366 6f726d28 76656334 otTransform(vec4 │ │ │ │ - 0x00d4c4b0 20706976 6f742c20 6d617434 20706976 pivot, mat4 piv │ │ │ │ - 0x00d4c4c0 6f745472 616e7366 6f726d2c 20666c6f otTransform, flo │ │ │ │ - 0x00d4c4d0 61742070 69766f74 5265616c 5a2c2076 at pivotRealZ, v │ │ │ │ - 0x00d4c4e0 65633220 6f666673 65742920 0a20207b ec2 offset) . { │ │ │ │ - 0x00d4c4f0 200a2020 2020666c 6f617420 6c6f6769 . float logi │ │ │ │ - 0x00d4c500 635a203d 20706976 6f742e7a 202f2070 cZ = pivot.z / p │ │ │ │ - 0x00d4c510 69766f74 2e773b20 0a202020 20766563 ivot.w; . vec │ │ │ │ - 0x00d4c520 34207472 616e7366 6f726d65 64506976 4 transformedPiv │ │ │ │ - 0x00d4c530 6f74203d 20706976 6f745472 616e7366 ot = pivotTransf │ │ │ │ - 0x00d4c540 6f726d20 2a207665 63342870 69766f74 orm * vec4(pivot │ │ │ │ - 0x00d4c550 2e78792c 20706976 6f745265 616c5a2c .xy, pivotRealZ, │ │ │ │ - 0x00d4c560 20706976 6f742e77 293b200a 20202020 pivot.w); . │ │ │ │ - 0x00d4c570 76656334 20736361 6c65203d 20706976 vec4 scale = piv │ │ │ │ - 0x00d4c580 6f745472 616e7366 6f726d20 2a207665 otTransform * ve │ │ │ │ - 0x00d4c590 63342831 2e302c20 2d312e30 2c20302e c4(1.0, -1.0, 0. │ │ │ │ - 0x00d4c5a0 302c2031 2e30293b 200a2020 20207665 0, 1.0); . ve │ │ │ │ - 0x00d4c5b0 63342070 6f736974 696f6e20 3d207665 c4 position = ve │ │ │ │ - 0x00d4c5c0 63342874 72616e73 666f726d 65645069 c4(transformedPi │ │ │ │ - 0x00d4c5d0 766f742e 7879202f 20747261 6e73666f vot.xy / transfo │ │ │ │ - 0x00d4c5e0 726d6564 5069766f 742e772c 206c6f67 rmedPivot.w, log │ │ │ │ - 0x00d4c5f0 69635a2c 20312e30 29202b20 76656334 icZ, 1.0) + vec4 │ │ │ │ - 0x00d4c600 286f6666 73657420 2f207363 616c652e (offset / scale. │ │ │ │ - 0x00d4c610 77202a20 7363616c 652e782c 20302e30 w * scale.x, 0.0 │ │ │ │ - 0x00d4c620 2c20302e 30293b20 0a202023 69666465 , 0.0); . #ifde │ │ │ │ - 0x00d4c630 66205655 4c4b414e 200a2020 2020706f f VULKAN . po │ │ │ │ - 0x00d4c640 73697469 6f6e2e79 203d202d 706f7369 sition.y = -posi │ │ │ │ - 0x00d4c650 74696f6e 2e793b20 0a202020 20706f73 tion.y; . pos │ │ │ │ - 0x00d4c660 6974696f 6e2e7a20 3d202870 6f736974 ition.z = (posit │ │ │ │ - 0x00d4c670 696f6e2e 7a20202b 20706f73 6974696f ion.z + positio │ │ │ │ - 0x00d4c680 6e2e7729 202f2032 2e303b20 0a202023 n.w) / 2.0; . # │ │ │ │ - 0x00d4c690 656e6469 66200a20 20202072 65747572 endif . retur │ │ │ │ - 0x00d4c6a0 6e20706f 73697469 6f6e3b20 0a20207d n position; . } │ │ │ │ - 0x00d4c6b0 200a2020 76656332 2063616c 634c696e . vec2 calcLin │ │ │ │ - 0x00d4c6c0 65547261 6e73666f 726d6564 41786973 eTransformedAxis │ │ │ │ - 0x00d4c6d0 506f7328 76656332 206f7269 67696e61 Pos(vec2 origina │ │ │ │ - 0x00d4c6e0 6c417869 73506f73 2c207665 63322073 lAxisPos, vec2 s │ │ │ │ - 0x00d4c6f0 68696674 6564506f 732c206d 61743420 hiftedPos, mat4 │ │ │ │ - 0x00d4c700 6d6f6465 6c566965 772c2066 6c6f6174 modelView, float │ │ │ │ - 0x00d4c710 2068616c 66576964 74682920 0a20207b halfWidth) . { │ │ │ │ - 0x00d4c720 200a2020 20207665 63322070 203d2028 . vec2 p = ( │ │ │ │ - 0x00d4c730 76656334 28736869 66746564 506f732c vec4(shiftedPos, │ │ │ │ - 0x00d4c740 20302e30 2c20312e 3029202a 206d6f64 0.0, 1.0) * mod │ │ │ │ - 0x00d4c750 656c5669 6577292e 78793b20 0a202020 elView).xy; . │ │ │ │ - 0x00d4c760 20766563 32206420 3d207020 2d206f72 vec2 d = p - or │ │ │ │ - 0x00d4c770 6967696e 616c4178 6973506f 733b200a iginalAxisPos; . │ │ │ │ - 0x00d4c780 20202020 69662028 646f7428 642c2064 if (dot(d, d │ │ │ │ - 0x00d4c790 2920213d 20302e30 29200a20 20202020 ) != 0.0) . │ │ │ │ - 0x00d4c7a0 20726574 75726e20 6f726967 696e616c return original │ │ │ │ - 0x00d4c7b0 41786973 506f7320 2b206e6f 726d616c AxisPos + normal │ │ │ │ - 0x00d4c7c0 697a6528 6429202a 2068616c 66576964 ize(d) * halfWid │ │ │ │ - 0x00d4c7d0 74683b20 0a202020 20656c73 65200a20 th; . else . │ │ │ │ - 0x00d4c7e0 20202020 20726574 75726e20 6f726967 return orig │ │ │ │ - 0x00d4c7f0 696e616c 41786973 506f733b 200a2020 inalAxisPos; . │ │ │ │ - 0x00d4c800 7d200a20 20766f69 64206d61 696e2829 } . void main() │ │ │ │ - 0x00d4c810 200a2020 7b200a20 20202076 5f636f6c . { . v_col │ │ │ │ - 0x00d4c820 6f725465 78436f6f 72647320 3d20615f orTexCoords = a_ │ │ │ │ - 0x00d4c830 74636f6f 72643b20 0a202020 20765f6f tcoord; . v_o │ │ │ │ - 0x00d4c840 66667365 7430203d 20755f66 72616d65 ffset0 = u_frame │ │ │ │ - 0x00d4c850 62756666 65724d65 74726963 732e7879 bufferMetrics.xy │ │ │ │ - 0x00d4c860 7879202a 20766563 34282d31 2e302c20 xy * vec4(-1.0, │ │ │ │ - 0x00d4c870 302e302c 20302e30 2c202d31 2e302920 0.0, 0.0, -1.0) │ │ │ │ - 0x00d4c880 2b20615f 74636f6f 72642e78 7978793b + a_tcoord.xyxy; │ │ │ │ - 0x00d4c890 200a2020 2020765f 6f666673 65743120 . v_offset1 │ │ │ │ - 0x00d4c8a0 3d20755f 6672616d 65627566 6665724d = u_framebufferM │ │ │ │ - 0x00d4c8b0 65747269 63732e78 79787920 2a207665 etrics.xyxy * ve │ │ │ │ - 0x00d4c8c0 63342820 312e302c 20302e30 2c20302e c4( 1.0, 0.0, 0. │ │ │ │ - 0x00d4c8d0 302c2020 312e3029 202b2061 5f74636f 0, 1.0) + a_tco │ │ │ │ - 0x00d4c8e0 6f72642e 78797879 3b200a20 20202076 ord.xyxy; . v │ │ │ │ - 0x00d4c8f0 5f6f6666 73657432 203d2075 5f667261 _offset2 = u_fra │ │ │ │ - 0x00d4c900 6d656275 66666572 4d657472 6963732e mebufferMetrics. │ │ │ │ - 0x00d4c910 78797879 202a2076 65633428 2d322e30 xyxy * vec4(-2.0 │ │ │ │ - 0x00d4c920 2c20302e 302c2030 2e302c20 2d322e30 , 0.0, 0.0, -2.0 │ │ │ │ - 0x00d4c930 29202b20 615f7463 6f6f7264 2e787978 ) + a_tcoord.xyx │ │ │ │ - 0x00d4c940 793b200a 20202020 676c5f50 6f736974 y; . gl_Posit │ │ │ │ - 0x00d4c950 696f6e20 3d207665 63342861 5f706f73 ion = vec4(a_pos │ │ │ │ - 0x00d4c960 2c20302e 302c2031 2e30293b 200a2020 , 0.0, 1.0); . │ │ │ │ - 0x00d4c970 7d200a00 00000000 00000000 00000000 } .............. │ │ │ │ - 0x00d4c980 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d4c990 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d4c9a0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d4c9b0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d4c9c0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d4c9d0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d4c9e0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d4c9f0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d4ca00 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d4ca10 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d4ca20 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d4ca30 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d4ca40 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d4ca50 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d4ca60 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d4ca70 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d4ca80 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d4ca90 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d4caa0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d4cab0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d4cac0 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d4cad0 63322076 5f636f6c 6f725465 78436f6f c2 v_colorTexCoo │ │ │ │ - 0x00d4cae0 7264733b 200a2020 696e2076 65633420 rds; . in vec4 │ │ │ │ - 0x00d4caf0 765f6f66 66736574 3b200a20 206f7574 v_offset; . out │ │ │ │ - 0x00d4cb00 20766563 3420765f 46726167 436f6c6f vec4 v_FragColo │ │ │ │ - 0x00d4cb10 723b200a 2020756e 69666f72 6d207665 r; . uniform ve │ │ │ │ - 0x00d4cb20 63342075 5f667261 6d656275 66666572 c4 u_framebuffer │ │ │ │ - 0x00d4cb30 4d657472 6963733b 200a2020 756e6966 Metrics; . unif │ │ │ │ - 0x00d4cb40 6f726d20 73616d70 6c657232 4420755f orm sampler2D u_ │ │ │ │ - 0x00d4cb50 636f6c6f 72546578 3b200a20 20756e69 colorTex; . uni │ │ │ │ - 0x00d4cb60 666f726d 2073616d 706c6572 32442075 form sampler2D u │ │ │ │ - 0x00d4cb70 5f626c65 6e64696e 67576569 67687454 _blendingWeightT │ │ │ │ - 0x00d4cb80 65783b20 0a202023 64656669 6e652053 ex; . #define S │ │ │ │ - 0x00d4cb90 4d414153 616d706c 654c6576 656c5a65 MAASampleLevelZe │ │ │ │ - 0x00d4cba0 726f2874 65782c20 636f6f72 64292074 ro(tex, coord) t │ │ │ │ - 0x00d4cbb0 65787475 72654c6f 64287465 782c2063 extureLod(tex, c │ │ │ │ - 0x00d4cbc0 6f6f7264 2c20302e 3029200a 2020636f oord, 0.0) . co │ │ │ │ - 0x00d4cbd0 6e737420 666c6f61 74206b53 68617065 nst float kShape │ │ │ │ - 0x00d4cbe0 436f6f72 64536361 6c617220 3d203130 CoordScalar = 10 │ │ │ │ - 0x00d4cbf0 30302e30 3b200a20 20766f69 64206d61 00.0; . void ma │ │ │ │ - 0x00d4cc00 696e2829 200a2020 7b200a20 20202076 in() . { . v │ │ │ │ - 0x00d4cc10 65633420 613b200a 20202020 612e7820 ec4 a; . a.x │ │ │ │ - 0x00d4cc20 3d207465 78747572 6528755f 626c656e = texture(u_blen │ │ │ │ - 0x00d4cc30 64696e67 57656967 68745465 782c2076 dingWeightTex, v │ │ │ │ - 0x00d4cc40 5f6f6666 7365742e 7879292e 613b202f _offset.xy).a; / │ │ │ │ - 0x00d4cc50 2f205269 67687420 0a202020 20612e79 / Right . a.y │ │ │ │ - 0x00d4cc60 203d2074 65787475 72652875 5f626c65 = texture(u_ble │ │ │ │ - 0x00d4cc70 6e64696e 67576569 67687454 65782c20 ndingWeightTex, │ │ │ │ - 0x00d4cc80 765f6f66 66736574 2e7a7729 2e673b20 v_offset.zw).g; │ │ │ │ - 0x00d4cc90 2f2f2054 6f70200a 20202020 612e777a // Top . a.wz │ │ │ │ - 0x00d4cca0 203d2074 65787475 72652875 5f626c65 = texture(u_ble │ │ │ │ - 0x00d4ccb0 6e64696e 67576569 67687454 65782c20 ndingWeightTex, │ │ │ │ - 0x00d4ccc0 765f636f 6c6f7254 6578436f 6f726473 v_colorTexCoords │ │ │ │ - 0x00d4ccd0 292e787a 3b202f2f 20426f74 746f6d20 ).xz; // Bottom │ │ │ │ - 0x00d4cce0 2f204c65 6674200a 20202020 69662028 / Left . if ( │ │ │ │ - 0x00d4ccf0 646f7428 612c2076 65633428 312e302c dot(a, vec4(1.0, │ │ │ │ - 0x00d4cd00 20312e30 2c20312e 302c2031 2e302929 1.0, 1.0, 1.0)) │ │ │ │ - 0x00d4cd10 203c2031 652d3529 200a2020 20207b20 < 1e-5) . { │ │ │ │ - 0x00d4cd20 0a202020 20202076 5f467261 67436f6c . v_FragCol │ │ │ │ - 0x00d4cd30 6f72203d 20746578 74757265 28755f63 or = texture(u_c │ │ │ │ - 0x00d4cd40 6f6c6f72 5465782c 20765f63 6f6c6f72 olorTex, v_color │ │ │ │ - 0x00d4cd50 54657843 6f6f7264 73293b20 0a202020 TexCoords); . │ │ │ │ - 0x00d4cd60 207d200a 20202020 656c7365 200a2020 } . else . │ │ │ │ - 0x00d4cd70 20207b20 0a202020 20202076 65633420 { . vec4 │ │ │ │ - 0x00d4cd80 626c656e 64696e67 4f666673 6574203d blendingOffset = │ │ │ │ - 0x00d4cd90 20766563 3428302e 302c2061 2e792c20 vec4(0.0, a.y, │ │ │ │ - 0x00d4cda0 302e302c 20612e77 293b200a 20202020 0.0, a.w); . │ │ │ │ - 0x00d4cdb0 20207665 63322062 6c656e64 696e6757 vec2 blendingW │ │ │ │ - 0x00d4cdc0 65696768 74203d20 612e7977 3b200a20 eight = a.yw; . │ │ │ │ - 0x00d4cdd0 20202020 20696620 286d6178 28612e78 if (max(a.x │ │ │ │ - 0x00d4cde0 2c20612e 7a29203e 206d6178 28612e79 , a.z) > max(a.y │ │ │ │ - 0x00d4cdf0 2c20612e 77292920 0a202020 2020207b , a.w)) . { │ │ │ │ - 0x00d4ce00 200a2020 20202020 2020626c 656e6469 . blendi │ │ │ │ - 0x00d4ce10 6e674f66 66736574 203d2076 65633428 ngOffset = vec4( │ │ │ │ - 0x00d4ce20 612e782c 20302e30 2c20612e 7a2c2030 a.x, 0.0, a.z, 0 │ │ │ │ - 0x00d4ce30 2e30293b 200a2020 20202020 2020626c .0); . bl │ │ │ │ - 0x00d4ce40 656e6469 6e675765 69676874 203d2061 endingWeight = a │ │ │ │ - 0x00d4ce50 2e787a3b 200a2020 20202020 7d200a20 .xz; . } . │ │ │ │ - 0x00d4ce60 20202020 20626c65 6e64696e 67576569 blendingWei │ │ │ │ - 0x00d4ce70 67687420 2f3d2064 6f742862 6c656e64 ght /= dot(blend │ │ │ │ - 0x00d4ce80 696e6757 65696768 742c2076 65633228 ingWeight, vec2( │ │ │ │ - 0x00d4ce90 312e302c 20312e30 29293b20 0a202020 1.0, 1.0)); . │ │ │ │ - 0x00d4cea0 20202076 65633420 6263203d 20626c65 vec4 bc = ble │ │ │ │ - 0x00d4ceb0 6e64696e 674f6666 73657420 2a207665 ndingOffset * ve │ │ │ │ - 0x00d4cec0 63342875 5f667261 6d656275 66666572 c4(u_framebuffer │ │ │ │ - 0x00d4ced0 4d657472 6963732e 78792c20 2d755f66 Metrics.xy, -u_f │ │ │ │ - 0x00d4cee0 72616d65 62756666 65724d65 74726963 ramebufferMetric │ │ │ │ - 0x00d4cef0 732e7879 293b200a 20202020 20206263 s.xy); . bc │ │ │ │ - 0x00d4cf00 202b3d20 765f636f 6c6f7254 6578436f += v_colorTexCo │ │ │ │ - 0x00d4cf10 6f726473 2e787978 793b200a 20202020 ords.xyxy; . │ │ │ │ - 0x00d4cf20 20207665 63342063 6f6c6f72 203d2062 vec4 color = b │ │ │ │ - 0x00d4cf30 6c656e64 696e6757 65696768 742e7820 lendingWeight.x │ │ │ │ - 0x00d4cf40 2a20534d 41415361 6d706c65 4c657665 * SMAASampleLeve │ │ │ │ - 0x00d4cf50 6c5a6572 6f28755f 636f6c6f 72546578 lZero(u_colorTex │ │ │ │ - 0x00d4cf60 2c206263 2e787929 3b200a20 20202020 , bc.xy); . │ │ │ │ - 0x00d4cf70 20636f6c 6f72202b 3d20626c 656e6469 color += blendi │ │ │ │ - 0x00d4cf80 6e675765 69676874 2e79202a 20534d41 ngWeight.y * SMA │ │ │ │ - 0x00d4cf90 4153616d 706c654c 6576656c 5a65726f ASampleLevelZero │ │ │ │ - 0x00d4cfa0 28755f63 6f6c6f72 5465782c 2062632e (u_colorTex, bc. │ │ │ │ - 0x00d4cfb0 7a77293b 200a2020 20202020 765f4672 zw); . v_Fr │ │ │ │ - 0x00d4cfc0 6167436f 6c6f7220 3d20636f 6c6f723b agColor = color; │ │ │ │ - 0x00d4cfd0 200a2020 20207d20 0a20207d 200a0000 . } . } ... │ │ │ │ - 0x00d4cfe0 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d4cff0 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d4d000 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d4d010 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d4d020 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d4d030 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d4d040 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d4d050 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d4d060 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d4d070 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d4d080 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d4d090 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d4d0a0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d4d0b0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d4d0c0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d4d0d0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d4d0e0 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d4d0f0 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d4d100 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d4d110 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d4d120 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d4d130 63322061 5f706f73 3b200a20 20696e20 c2 a_pos; . in │ │ │ │ - 0x00d4d140 76656332 20615f74 636f6f72 643b200a vec2 a_tcoord; . │ │ │ │ - 0x00d4d150 20206f75 74207665 63322076 5f636f6c out vec2 v_col │ │ │ │ - 0x00d4d160 6f725465 78436f6f 7264733b 200a2020 orTexCoords; . │ │ │ │ - 0x00d4d170 6f757420 76656334 20765f6f 66667365 out vec4 v_offse │ │ │ │ - 0x00d4d180 743b200a 2020756e 69666f72 6d207665 t; . uniform ve │ │ │ │ - 0x00d4d190 63342075 5f667261 6d656275 66666572 c4 u_framebuffer │ │ │ │ - 0x00d4d1a0 4d657472 6963733b 200a2020 636f6e73 Metrics; . cons │ │ │ │ - 0x00d4d1b0 7420666c 6f617420 6b536861 7065436f t float kShapeCo │ │ │ │ - 0x00d4d1c0 6f726453 63616c61 72203d20 31303030 ordScalar = 1000 │ │ │ │ - 0x00d4d1d0 2e303b20 0a202076 65633420 6170706c .0; . vec4 appl │ │ │ │ - 0x00d4d1e0 79506976 6f745472 616e7366 6f726d28 yPivotTransform( │ │ │ │ - 0x00d4d1f0 76656334 20706976 6f742c20 6d617434 vec4 pivot, mat4 │ │ │ │ - 0x00d4d200 20706976 6f745472 616e7366 6f726d2c pivotTransform, │ │ │ │ - 0x00d4d210 20666c6f 61742070 69766f74 5265616c float pivotReal │ │ │ │ - 0x00d4d220 5a29200a 20207b20 0a202020 20766563 Z) . { . vec │ │ │ │ - 0x00d4d230 34207472 616e7366 6f726d65 64506976 4 transformedPiv │ │ │ │ - 0x00d4d240 6f74203d 20706976 6f743b20 0a202020 ot = pivot; . │ │ │ │ - 0x00d4d250 20666c6f 61742077 203d2074 72616e73 float w = trans │ │ │ │ - 0x00d4d260 666f726d 65645069 766f742e 773b200a formedPivot.w; . │ │ │ │ - 0x00d4d270 20202020 7472616e 73666f72 6d656450 transformedP │ │ │ │ - 0x00d4d280 69766f74 2e787977 203d2028 7069766f ivot.xyw = (pivo │ │ │ │ - 0x00d4d290 74547261 6e73666f 726d202a 20766563 tTransform * vec │ │ │ │ - 0x00d4d2a0 34287472 616e7366 6f726d65 64506976 4(transformedPiv │ │ │ │ - 0x00d4d2b0 6f742e78 792c2070 69766f74 5265616c ot.xy, pivotReal │ │ │ │ - 0x00d4d2c0 5a2c2077 29292e78 79773b20 0a202020 Z, w)).xyw; . │ │ │ │ - 0x00d4d2d0 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ - 0x00d4d2e0 742e7a20 2a3d2074 72616e73 666f726d t.z *= transform │ │ │ │ - 0x00d4d2f0 65645069 766f742e 77202f20 773b200a edPivot.w / w; . │ │ │ │ - 0x00d4d300 20202369 66646566 2056554c 4b414e20 #ifdef VULKAN │ │ │ │ - 0x00d4d310 0a202020 20747261 6e73666f 726d6564 . transformed │ │ │ │ - 0x00d4d320 5069766f 742e7920 3d202d74 72616e73 Pivot.y = -trans │ │ │ │ - 0x00d4d330 666f726d 65645069 766f742e 793b200a formedPivot.y; . │ │ │ │ - 0x00d4d340 20202020 7472616e 73666f72 6d656450 transformedP │ │ │ │ - 0x00d4d350 69766f74 2e7a203d 20287472 616e7366 ivot.z = (transf │ │ │ │ - 0x00d4d360 6f726d65 64506976 6f742e7a 20202b20 ormedPivot.z + │ │ │ │ - 0x00d4d370 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ - 0x00d4d380 2e772920 2f20322e 303b200a 20202365 .w) / 2.0; . #e │ │ │ │ - 0x00d4d390 6e646966 200a2020 20207265 7475726e ndif . return │ │ │ │ - 0x00d4d3a0 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ - 0x00d4d3b0 743b200a 20207d20 0a202076 65633420 t; . } . vec4 │ │ │ │ - 0x00d4d3c0 6170706c 7942696c 6c626f61 72645069 applyBillboardPi │ │ │ │ - 0x00d4d3d0 766f7454 72616e73 666f726d 28766563 votTransform(vec │ │ │ │ - 0x00d4d3e0 34207069 766f742c 206d6174 34207069 4 pivot, mat4 pi │ │ │ │ - 0x00d4d3f0 766f7454 72616e73 666f726d 2c20666c votTransform, fl │ │ │ │ - 0x00d4d400 6f617420 7069766f 74526561 6c5a2c20 oat pivotRealZ, │ │ │ │ - 0x00d4d410 76656332 206f6666 73657429 200a2020 vec2 offset) . │ │ │ │ - 0x00d4d420 7b200a20 20202066 6c6f6174 206c6f67 { . float log │ │ │ │ - 0x00d4d430 69635a20 3d207069 766f742e 7a202f20 icZ = pivot.z / │ │ │ │ - 0x00d4d440 7069766f 742e773b 200a2020 20207665 pivot.w; . ve │ │ │ │ - 0x00d4d450 63342074 72616e73 666f726d 65645069 c4 transformedPi │ │ │ │ - 0x00d4d460 766f7420 3d207069 766f7454 72616e73 vot = pivotTrans │ │ │ │ - 0x00d4d470 666f726d 202a2076 65633428 7069766f form * vec4(pivo │ │ │ │ - 0x00d4d480 742e7879 2c207069 766f7452 65616c5a t.xy, pivotRealZ │ │ │ │ - 0x00d4d490 2c207069 766f742e 77293b20 0a202020 , pivot.w); . │ │ │ │ - 0x00d4d4a0 20766563 34207363 616c6520 3d207069 vec4 scale = pi │ │ │ │ - 0x00d4d4b0 766f7454 72616e73 666f726d 202a2076 votTransform * v │ │ │ │ - 0x00d4d4c0 65633428 312e302c 202d312e 302c2030 ec4(1.0, -1.0, 0 │ │ │ │ - 0x00d4d4d0 2e302c20 312e3029 3b200a20 20202076 .0, 1.0); . v │ │ │ │ - 0x00d4d4e0 65633420 706f7369 74696f6e 203d2076 ec4 position = v │ │ │ │ - 0x00d4d4f0 65633428 7472616e 73666f72 6d656450 ec4(transformedP │ │ │ │ - 0x00d4d500 69766f74 2e787920 2f207472 616e7366 ivot.xy / transf │ │ │ │ - 0x00d4d510 6f726d65 64506976 6f742e77 2c206c6f ormedPivot.w, lo │ │ │ │ - 0x00d4d520 6769635a 2c20312e 3029202b 20766563 gicZ, 1.0) + vec │ │ │ │ - 0x00d4d530 34286f66 66736574 202f2073 63616c65 4(offset / scale │ │ │ │ - 0x00d4d540 2e77202a 20736361 6c652e78 2c20302e .w * scale.x, 0. │ │ │ │ - 0x00d4d550 302c2030 2e30293b 200a2020 23696664 0, 0.0); . #ifd │ │ │ │ - 0x00d4d560 65662056 554c4b41 4e200a20 20202070 ef VULKAN . p │ │ │ │ - 0x00d4d570 6f736974 696f6e2e 79203d20 2d706f73 osition.y = -pos │ │ │ │ - 0x00d4d580 6974696f 6e2e793b 200a2020 2020706f ition.y; . po │ │ │ │ - 0x00d4d590 73697469 6f6e2e7a 203d2028 706f7369 sition.z = (posi │ │ │ │ - 0x00d4d5a0 74696f6e 2e7a2020 2b20706f 73697469 tion.z + positi │ │ │ │ - 0x00d4d5b0 6f6e2e77 29202f20 322e303b 200a2020 on.w) / 2.0; . │ │ │ │ - 0x00d4d5c0 23656e64 6966200a 20202020 72657475 #endif . retu │ │ │ │ - 0x00d4d5d0 726e2070 6f736974 696f6e3b 200a2020 rn position; . │ │ │ │ - 0x00d4d5e0 7d200a20 20766563 32206361 6c634c69 } . vec2 calcLi │ │ │ │ - 0x00d4d5f0 6e655472 616e7366 6f726d65 64417869 neTransformedAxi │ │ │ │ - 0x00d4d600 73506f73 28766563 32206f72 6967696e sPos(vec2 origin │ │ │ │ - 0x00d4d610 616c4178 6973506f 732c2076 65633220 alAxisPos, vec2 │ │ │ │ - 0x00d4d620 73686966 74656450 6f732c20 6d617434 shiftedPos, mat4 │ │ │ │ - 0x00d4d630 206d6f64 656c5669 65772c20 666c6f61 modelView, floa │ │ │ │ - 0x00d4d640 74206861 6c665769 64746829 200a2020 t halfWidth) . │ │ │ │ - 0x00d4d650 7b200a20 20202076 65633220 70203d20 { . vec2 p = │ │ │ │ - 0x00d4d660 28766563 34287368 69667465 64506f73 (vec4(shiftedPos │ │ │ │ - 0x00d4d670 2c20302e 302c2031 2e302920 2a206d6f , 0.0, 1.0) * mo │ │ │ │ - 0x00d4d680 64656c56 69657729 2e78793b 200a2020 delView).xy; . │ │ │ │ - 0x00d4d690 20207665 63322064 203d2070 202d206f vec2 d = p - o │ │ │ │ - 0x00d4d6a0 72696769 6e616c41 78697350 6f733b20 riginalAxisPos; │ │ │ │ - 0x00d4d6b0 0a202020 20696620 28646f74 28642c20 . if (dot(d, │ │ │ │ - 0x00d4d6c0 64292021 3d20302e 3029200a 20202020 d) != 0.0) . │ │ │ │ - 0x00d4d6d0 20207265 7475726e 206f7269 67696e61 return origina │ │ │ │ - 0x00d4d6e0 6c417869 73506f73 202b206e 6f726d61 lAxisPos + norma │ │ │ │ - 0x00d4d6f0 6c697a65 28642920 2a206861 6c665769 lize(d) * halfWi │ │ │ │ - 0x00d4d700 6474683b 200a2020 2020656c 7365200a dth; . else . │ │ │ │ - 0x00d4d710 20202020 20207265 7475726e 206f7269 return ori │ │ │ │ - 0x00d4d720 67696e61 6c417869 73506f73 3b200a20 ginalAxisPos; . │ │ │ │ - 0x00d4d730 207d200a 2020766f 6964206d 61696e28 } . void main( │ │ │ │ - 0x00d4d740 29200a20 207b200a 20202020 765f636f ) . { . v_co │ │ │ │ - 0x00d4d750 6c6f7254 6578436f 6f726473 203d2061 lorTexCoords = a │ │ │ │ - 0x00d4d760 5f74636f 6f72643b 200a2020 2020765f _tcoord; . v_ │ │ │ │ - 0x00d4d770 6f666673 6574203d 20755f66 72616d65 offset = u_frame │ │ │ │ - 0x00d4d780 62756666 65724d65 74726963 732e7879 bufferMetrics.xy │ │ │ │ - 0x00d4d790 7879202a 20766563 3428312e 302c2030 xy * vec4(1.0, 0 │ │ │ │ - 0x00d4d7a0 2e302c20 302e302c 20312e30 29202b20 .0, 0.0, 1.0) + │ │ │ │ - 0x00d4d7b0 615f7463 6f6f7264 2e787978 793b200a a_tcoord.xyxy; . │ │ │ │ - 0x00d4d7c0 20202020 676c5f50 6f736974 696f6e20 gl_Position │ │ │ │ - 0x00d4d7d0 3d207665 63342861 5f706f73 2c20302e = vec4(a_pos, 0. │ │ │ │ - 0x00d4d7e0 302c2031 2e30293b 200a2020 7d200a00 0, 1.0); . } .. │ │ │ │ - 0x00d4d7f0 00000000 00000000 00000000 00000000 ................ │ │ │ │ - 0x00d4d800 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d4d810 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d4d820 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d4d830 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d4d840 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d4d850 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d4d860 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d4d870 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d4d880 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d4d890 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d4d8a0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d4d8b0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d4d8c0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d4d8d0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d4d8e0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d4d8f0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d4d900 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d4d910 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d4d920 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d4d930 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d4d940 2023656e 64696620 0a202023 69666465 #endif . #ifde │ │ │ │ - 0x00d4d950 6620454e 41424c45 5f565446 200a2020 f ENABLE_VTF . │ │ │ │ - 0x00d4d960 696e204c 4f575f50 20766563 3420765f in LOW_P vec4 v_ │ │ │ │ - 0x00d4d970 636f6c6f 723b200a 20202365 6c736520 color; . #else │ │ │ │ - 0x00d4d980 0a202069 6e207665 63322076 5f636f6c . in vec2 v_col │ │ │ │ - 0x00d4d990 6f725465 78436f6f 7264733b 200a2020 orTexCoords; . │ │ │ │ - 0x00d4d9a0 756e6966 6f726d20 73616d70 6c657232 uniform sampler2 │ │ │ │ - 0x00d4d9b0 4420755f 636f6c6f 72546578 3b200a20 D u_colorTex; . │ │ │ │ - 0x00d4d9c0 2023656e 64696620 0a20206f 75742076 #endif . out v │ │ │ │ - 0x00d4d9d0 65633420 765f4672 6167436f 6c6f723b ec4 v_FragColor; │ │ │ │ - 0x00d4d9e0 200a2020 756e6966 6f726d20 6d617434 . uniform mat4 │ │ │ │ - 0x00d4d9f0 20755f6d 6f64656c 56696577 3b200a20 u_modelView; . │ │ │ │ - 0x00d4da00 20756e69 666f726d 206d6174 3420755f uniform mat4 u_ │ │ │ │ - 0x00d4da10 70726f6a 65637469 6f6e3b20 0a202075 projection; . u │ │ │ │ - 0x00d4da20 6e69666f 726d206d 61743420 755f7069 niform mat4 u_pi │ │ │ │ - 0x00d4da30 766f7454 72616e73 666f726d 3b200a20 votTransform; . │ │ │ │ - 0x00d4da40 20756e69 666f726d 20766563 3220755f uniform vec2 u_ │ │ │ │ - 0x00d4da50 636f6e74 72617374 47616d6d 613b200a contrastGamma; . │ │ │ │ - 0x00d4da60 2020756e 69666f72 6d20666c 6f617420 uniform float │ │ │ │ - 0x00d4da70 755f6f70 61636974 793b200a 2020756e u_opacity; . un │ │ │ │ - 0x00d4da80 69666f72 6d20666c 6f617420 755f7a53 iform float u_zS │ │ │ │ - 0x00d4da90 63616c65 3b200a20 20756e69 666f726d cale; . uniform │ │ │ │ - 0x00d4daa0 20666c6f 61742075 5f696e74 6572706f float u_interpo │ │ │ │ - 0x00d4dab0 6c617469 6f6e3b20 0a202075 6e69666f lation; . unifo │ │ │ │ - 0x00d4dac0 726d2066 6c6f6174 20755f69 734f7574 rm float u_isOut │ │ │ │ - 0x00d4dad0 6c696e65 50617373 3b200a20 20636f6e linePass; . con │ │ │ │ - 0x00d4dae0 73742066 6c6f6174 206b5368 61706543 st float kShapeC │ │ │ │ - 0x00d4daf0 6f6f7264 5363616c 6172203d 20313030 oordScalar = 100 │ │ │ │ - 0x00d4db00 302e303b 200a2020 766f6964 206d6169 0.0; . void mai │ │ │ │ - 0x00d4db10 6e282920 0a20207b 200a2020 23696664 n() . { . #ifd │ │ │ │ - 0x00d4db20 65662045 4e41424c 455f5654 46200a20 ef ENABLE_VTF . │ │ │ │ - 0x00d4db30 2020204c 4f575f50 20766563 34206669 LOW_P vec4 fi │ │ │ │ - 0x00d4db40 6e616c43 6f6c6f72 203d2076 5f636f6c nalColor = v_col │ │ │ │ - 0x00d4db50 6f723b20 0a202023 656c7365 200a2020 or; . #else . │ │ │ │ - 0x00d4db60 20204c4f 575f5020 76656334 2066696e LOW_P vec4 fin │ │ │ │ - 0x00d4db70 616c436f 6c6f7220 3d207465 78747572 alColor = textur │ │ │ │ - 0x00d4db80 6528755f 636f6c6f 72546578 2c20765f e(u_colorTex, v_ │ │ │ │ - 0x00d4db90 636f6c6f 72546578 436f6f72 6473293b colorTexCoords); │ │ │ │ - 0x00d4dba0 200a2020 23656e64 6966200a 20202020 . #endif . │ │ │ │ - 0x00d4dbb0 66696e61 6c436f6c 6f722e61 202a3d20 finalColor.a *= │ │ │ │ - 0x00d4dbc0 755f6f70 61636974 793b200a 20202020 u_opacity; . │ │ │ │ - 0x00d4dbd0 765f4672 6167436f 6c6f7220 3d206669 v_FragColor = fi │ │ │ │ - 0x00d4dbe0 6e616c43 6f6c6f72 3b200a20 207d200a nalColor; . } . │ │ │ │ - 0x00d4dbf0 00000000 00000000 00000000 00000000 ................ │ │ │ │ - 0x00d4dc00 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d4dc10 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d4dc20 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d4dc30 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d4dc40 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d4dc50 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d4dc60 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d4dc70 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d4dc80 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d4dc90 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d4dca0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d4dcb0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d4dcc0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d4dcd0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d4dce0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d4dcf0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d4dd00 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d4dd10 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d4dd20 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d4dd30 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d4dd40 2023656e 64696620 0a202023 69666465 #endif . #ifde │ │ │ │ - 0x00d4dd50 6620454e 41424c45 5f565446 200a2020 f ENABLE_VTF . │ │ │ │ - 0x00d4dd60 696e204c 4f575f50 20766563 3420765f in LOW_P vec4 v_ │ │ │ │ - 0x00d4dd70 636f6c6f 723b200a 20202365 6c736520 color; . #else │ │ │ │ - 0x00d4dd80 0a202069 6e207665 63322076 5f636f6c . in vec2 v_col │ │ │ │ - 0x00d4dd90 6f725465 78436f6f 72643b20 0a202075 orTexCoord; . u │ │ │ │ - 0x00d4dda0 6e69666f 726d2073 616d706c 65723244 niform sampler2D │ │ │ │ - 0x00d4ddb0 20755f63 6f6c6f72 5465783b 200a2020 u_colorTex; . │ │ │ │ - 0x00d4ddc0 23656e64 6966200a 2020696e 20766563 #endif . in vec │ │ │ │ - 0x00d4ddd0 3220765f 6d61736b 54657843 6f6f7264 2 v_maskTexCoord │ │ │ │ - 0x00d4dde0 3b200a20 206f7574 20766563 3420765f ; . out vec4 v_ │ │ │ │ - 0x00d4ddf0 46726167 436f6c6f 723b200a 2020756e FragColor; . un │ │ │ │ - 0x00d4de00 69666f72 6d206d61 74342075 5f6d6f64 iform mat4 u_mod │ │ │ │ - 0x00d4de10 656c5669 65773b20 0a202075 6e69666f elView; . unifo │ │ │ │ - 0x00d4de20 726d206d 61743420 755f7072 6f6a6563 rm mat4 u_projec │ │ │ │ - 0x00d4de30 74696f6e 3b200a20 20756e69 666f726d tion; . uniform │ │ │ │ - 0x00d4de40 206d6174 3420755f 7069766f 74547261 mat4 u_pivotTra │ │ │ │ - 0x00d4de50 6e73666f 726d3b20 0a202075 6e69666f nsform; . unifo │ │ │ │ - 0x00d4de60 726d2076 65633220 755f636f 6e747261 rm vec2 u_contra │ │ │ │ - 0x00d4de70 73744761 6d6d613b 200a2020 756e6966 stGamma; . unif │ │ │ │ - 0x00d4de80 6f726d20 666c6f61 7420755f 6f706163 orm float u_opac │ │ │ │ - 0x00d4de90 6974793b 200a2020 756e6966 6f726d20 ity; . uniform │ │ │ │ - 0x00d4dea0 666c6f61 7420755f 7a536361 6c653b20 float u_zScale; │ │ │ │ - 0x00d4deb0 0a202075 6e69666f 726d2066 6c6f6174 . uniform float │ │ │ │ - 0x00d4dec0 20755f69 6e746572 706f6c61 74696f6e u_interpolation │ │ │ │ - 0x00d4ded0 3b200a20 20756e69 666f726d 20666c6f ; . uniform flo │ │ │ │ - 0x00d4dee0 61742075 5f69734f 75746c69 6e655061 at u_isOutlinePa │ │ │ │ - 0x00d4def0 73733b20 0a202075 6e69666f 726d2073 ss; . uniform s │ │ │ │ - 0x00d4df00 616d706c 65723244 20755f6d 61736b54 ampler2D u_maskT │ │ │ │ - 0x00d4df10 65783b20 0a202063 6f6e7374 20666c6f ex; . const flo │ │ │ │ - 0x00d4df20 6174206b 53686170 65436f6f 72645363 at kShapeCoordSc │ │ │ │ - 0x00d4df30 616c6172 203d2031 3030302e 303b200a alar = 1000.0; . │ │ │ │ - 0x00d4df40 2020766f 6964206d 61696e28 29200a20 void main() . │ │ │ │ - 0x00d4df50 207b200a 20202369 66646566 20454e41 { . #ifdef ENA │ │ │ │ - 0x00d4df60 424c455f 56544620 0a202020 204c4f57 BLE_VTF . LOW │ │ │ │ - 0x00d4df70 5f502076 65633420 676c7970 68436f6c _P vec4 glyphCol │ │ │ │ - 0x00d4df80 6f72203d 20765f63 6f6c6f72 3b200a20 or = v_color; . │ │ │ │ - 0x00d4df90 2023656c 7365200a 20202020 4c4f575f #else . LOW_ │ │ │ │ - 0x00d4dfa0 50207665 63342067 6c797068 436f6c6f P vec4 glyphColo │ │ │ │ - 0x00d4dfb0 72203d20 74657874 75726528 755f636f r = texture(u_co │ │ │ │ - 0x00d4dfc0 6c6f7254 65782c20 765f636f 6c6f7254 lorTex, v_colorT │ │ │ │ - 0x00d4dfd0 6578436f 6f726429 3b200a20 2023656e exCoord); . #en │ │ │ │ - 0x00d4dfe0 64696620 0a202020 20666c6f 61742064 dif . float d │ │ │ │ - 0x00d4dff0 69737420 3d207465 78747572 6528755f ist = texture(u_ │ │ │ │ - 0x00d4e000 6d61736b 5465782c 20765f6d 61736b54 maskTex, v_maskT │ │ │ │ - 0x00d4e010 6578436f 6f726429 2e723b20 0a202020 exCoord).r; . │ │ │ │ - 0x00d4e020 20666c6f 61742061 6c706861 203d2073 float alpha = s │ │ │ │ - 0x00d4e030 6d6f6f74 68737465 7028755f 636f6e74 moothstep(u_cont │ │ │ │ - 0x00d4e040 72617374 47616d6d 612e7820 2d20755f rastGamma.x - u_ │ │ │ │ - 0x00d4e050 636f6e74 72617374 47616d6d 612e792c contrastGamma.y, │ │ │ │ - 0x00d4e060 20755f63 6f6e7472 61737447 616d6d61 u_contrastGamma │ │ │ │ - 0x00d4e070 2e78202b 20755f63 6f6e7472 61737447 .x + u_contrastG │ │ │ │ - 0x00d4e080 616d6d61 2e792c20 64697374 29202a20 amma.y, dist) * │ │ │ │ - 0x00d4e090 755f6f70 61636974 793b200a 20202020 u_opacity; . │ │ │ │ - 0x00d4e0a0 676c7970 68436f6c 6f722e61 202a3d20 glyphColor.a *= │ │ │ │ - 0x00d4e0b0 616c7068 613b200a 20202020 765f4672 alpha; . v_Fr │ │ │ │ - 0x00d4e0c0 6167436f 6c6f7220 3d20676c 79706843 agColor = glyphC │ │ │ │ - 0x00d4e0d0 6f6c6f72 3b200a20 207d200a 00000000 olor; . } ..... │ │ │ │ - 0x00d4e0e0 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d4e0f0 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d4e100 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d4e110 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d4e120 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d4e130 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d4e140 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d4e150 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d4e160 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d4e170 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d4e180 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d4e190 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d4e1a0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d4e1b0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d4e1c0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d4e1d0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d4e1e0 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d4e1f0 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d4e200 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d4e210 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d4e220 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d4e230 63322061 5f636f6c 6f725465 78436f6f c2 a_colorTexCoo │ │ │ │ - 0x00d4e240 72643b20 0a202069 6e207665 63322061 rd; . in vec2 a │ │ │ │ - 0x00d4e250 5f6d6173 6b546578 436f6f72 643b200a _maskTexCoord; . │ │ │ │ - 0x00d4e260 2020696e 20766563 3420615f 706f7369 in vec4 a_posi │ │ │ │ - 0x00d4e270 74696f6e 3b200a20 20696e20 76656332 tion; . in vec2 │ │ │ │ - 0x00d4e280 20615f6e 6f726d61 6c3b200a 20202369 a_normal; . #i │ │ │ │ - 0x00d4e290 66646566 20454e41 424c455f 56544620 fdef ENABLE_VTF │ │ │ │ - 0x00d4e2a0 0a20206f 7574204c 4f575f50 20766563 . out LOW_P vec │ │ │ │ - 0x00d4e2b0 3420765f 636f6c6f 723b200a 20202365 4 v_color; . #e │ │ │ │ - 0x00d4e2c0 6c736520 0a20206f 75742076 65633220 lse . out vec2 │ │ │ │ - 0x00d4e2d0 765f636f 6c6f7254 6578436f 6f72643b v_colorTexCoord; │ │ │ │ - 0x00d4e2e0 200a2020 23656e64 6966200a 20206f75 . #endif . ou │ │ │ │ - 0x00d4e2f0 74207665 63322076 5f6d6173 6b546578 t vec2 v_maskTex │ │ │ │ - 0x00d4e300 436f6f72 643b200a 2020756e 69666f72 Coord; . unifor │ │ │ │ - 0x00d4e310 6d206d61 74342075 5f6d6f64 656c5669 m mat4 u_modelVi │ │ │ │ - 0x00d4e320 65773b20 0a202075 6e69666f 726d206d ew; . uniform m │ │ │ │ - 0x00d4e330 61743420 755f7072 6f6a6563 74696f6e at4 u_projection │ │ │ │ - 0x00d4e340 3b200a20 20756e69 666f726d 206d6174 ; . uniform mat │ │ │ │ - 0x00d4e350 3420755f 7069766f 74547261 6e73666f 4 u_pivotTransfo │ │ │ │ - 0x00d4e360 726d3b20 0a202075 6e69666f 726d2076 rm; . uniform v │ │ │ │ - 0x00d4e370 65633220 755f636f 6e747261 73744761 ec2 u_contrastGa │ │ │ │ - 0x00d4e380 6d6d613b 200a2020 756e6966 6f726d20 mma; . uniform │ │ │ │ - 0x00d4e390 666c6f61 7420755f 6f706163 6974793b float u_opacity; │ │ │ │ - 0x00d4e3a0 200a2020 756e6966 6f726d20 666c6f61 . uniform floa │ │ │ │ - 0x00d4e3b0 7420755f 7a536361 6c653b20 0a202075 t u_zScale; . u │ │ │ │ - 0x00d4e3c0 6e69666f 726d2066 6c6f6174 20755f69 niform float u_i │ │ │ │ - 0x00d4e3d0 6e746572 706f6c61 74696f6e 3b200a20 nterpolation; . │ │ │ │ - 0x00d4e3e0 20756e69 666f726d 20666c6f 61742075 uniform float u │ │ │ │ - 0x00d4e3f0 5f69734f 75746c69 6e655061 73733b20 _isOutlinePass; │ │ │ │ - 0x00d4e400 0a202023 69666465 6620454e 41424c45 . #ifdef ENABLE │ │ │ │ - 0x00d4e410 5f565446 200a2020 756e6966 6f726d20 _VTF . uniform │ │ │ │ - 0x00d4e420 73616d70 6c657232 4420755f 636f6c6f sampler2D u_colo │ │ │ │ - 0x00d4e430 72546578 3b200a20 2023656e 64696620 rTex; . #endif │ │ │ │ - 0x00d4e440 0a202063 6f6e7374 20666c6f 6174206b . const float k │ │ │ │ - 0x00d4e450 53686170 65436f6f 72645363 616c6172 ShapeCoordScalar │ │ │ │ - 0x00d4e460 203d2031 3030302e 303b200a 20207665 = 1000.0; . ve │ │ │ │ - 0x00d4e470 63342061 70706c79 5069766f 74547261 c4 applyPivotTra │ │ │ │ - 0x00d4e480 6e73666f 726d2876 65633420 7069766f nsform(vec4 pivo │ │ │ │ - 0x00d4e490 742c206d 61743420 7069766f 74547261 t, mat4 pivotTra │ │ │ │ - 0x00d4e4a0 6e73666f 726d2c20 666c6f61 74207069 nsform, float pi │ │ │ │ - 0x00d4e4b0 766f7452 65616c5a 29200a20 207b200a votRealZ) . { . │ │ │ │ - 0x00d4e4c0 20202020 76656334 20747261 6e73666f vec4 transfo │ │ │ │ - 0x00d4e4d0 726d6564 5069766f 74203d20 7069766f rmedPivot = pivo │ │ │ │ - 0x00d4e4e0 743b200a 20202020 666c6f61 74207720 t; . float w │ │ │ │ - 0x00d4e4f0 3d207472 616e7366 6f726d65 64506976 = transformedPiv │ │ │ │ - 0x00d4e500 6f742e77 3b200a20 20202074 72616e73 ot.w; . trans │ │ │ │ - 0x00d4e510 666f726d 65645069 766f742e 78797720 formedPivot.xyw │ │ │ │ - 0x00d4e520 3d202870 69766f74 5472616e 73666f72 = (pivotTransfor │ │ │ │ - 0x00d4e530 6d202a20 76656334 28747261 6e73666f m * vec4(transfo │ │ │ │ - 0x00d4e540 726d6564 5069766f 742e7879 2c207069 rmedPivot.xy, pi │ │ │ │ - 0x00d4e550 766f7452 65616c5a 2c207729 292e7879 votRealZ, w)).xy │ │ │ │ - 0x00d4e560 773b200a 20202020 7472616e 73666f72 w; . transfor │ │ │ │ - 0x00d4e570 6d656450 69766f74 2e7a202a 3d207472 medPivot.z *= tr │ │ │ │ - 0x00d4e580 616e7366 6f726d65 64506976 6f742e77 ansformedPivot.w │ │ │ │ - 0x00d4e590 202f2077 3b200a20 20236966 64656620 / w; . #ifdef │ │ │ │ - 0x00d4e5a0 56554c4b 414e200a 20202020 7472616e VULKAN . tran │ │ │ │ - 0x00d4e5b0 73666f72 6d656450 69766f74 2e79203d sformedPivot.y = │ │ │ │ - 0x00d4e5c0 202d7472 616e7366 6f726d65 64506976 -transformedPiv │ │ │ │ - 0x00d4e5d0 6f742e79 3b200a20 20202074 72616e73 ot.y; . trans │ │ │ │ - 0x00d4e5e0 666f726d 65645069 766f742e 7a203d20 formedPivot.z = │ │ │ │ - 0x00d4e5f0 28747261 6e73666f 726d6564 5069766f (transformedPivo │ │ │ │ - 0x00d4e600 742e7a20 202b2074 72616e73 666f726d t.z + transform │ │ │ │ - 0x00d4e610 65645069 766f742e 7729202f 20322e30 edPivot.w) / 2.0 │ │ │ │ - 0x00d4e620 3b200a20 2023656e 64696620 0a202020 ; . #endif . │ │ │ │ - 0x00d4e630 20726574 75726e20 7472616e 73666f72 return transfor │ │ │ │ - 0x00d4e640 6d656450 69766f74 3b200a20 207d200a medPivot; . } . │ │ │ │ - 0x00d4e650 20207665 63342061 70706c79 42696c6c vec4 applyBill │ │ │ │ - 0x00d4e660 626f6172 64506976 6f745472 616e7366 boardPivotTransf │ │ │ │ - 0x00d4e670 6f726d28 76656334 20706976 6f742c20 orm(vec4 pivot, │ │ │ │ - 0x00d4e680 6d617434 20706976 6f745472 616e7366 mat4 pivotTransf │ │ │ │ - 0x00d4e690 6f726d2c 20666c6f 61742070 69766f74 orm, float pivot │ │ │ │ - 0x00d4e6a0 5265616c 5a2c2076 65633220 6f666673 RealZ, vec2 offs │ │ │ │ - 0x00d4e6b0 65742920 0a20207b 200a2020 2020666c et) . { . fl │ │ │ │ - 0x00d4e6c0 6f617420 6c6f6769 635a203d 20706976 oat logicZ = piv │ │ │ │ - 0x00d4e6d0 6f742e7a 202f2070 69766f74 2e773b20 ot.z / pivot.w; │ │ │ │ - 0x00d4e6e0 0a202020 20766563 34207472 616e7366 . vec4 transf │ │ │ │ - 0x00d4e6f0 6f726d65 64506976 6f74203d 20706976 ormedPivot = piv │ │ │ │ - 0x00d4e700 6f745472 616e7366 6f726d20 2a207665 otTransform * ve │ │ │ │ - 0x00d4e710 63342870 69766f74 2e78792c 20706976 c4(pivot.xy, piv │ │ │ │ - 0x00d4e720 6f745265 616c5a2c 20706976 6f742e77 otRealZ, pivot.w │ │ │ │ - 0x00d4e730 293b200a 20202020 76656334 20736361 ); . vec4 sca │ │ │ │ - 0x00d4e740 6c65203d 20706976 6f745472 616e7366 le = pivotTransf │ │ │ │ - 0x00d4e750 6f726d20 2a207665 63342831 2e302c20 orm * vec4(1.0, │ │ │ │ - 0x00d4e760 2d312e30 2c20302e 302c2031 2e30293b -1.0, 0.0, 1.0); │ │ │ │ - 0x00d4e770 200a2020 20207665 63342070 6f736974 . vec4 posit │ │ │ │ - 0x00d4e780 696f6e20 3d207665 63342874 72616e73 ion = vec4(trans │ │ │ │ - 0x00d4e790 666f726d 65645069 766f742e 7879202f formedPivot.xy / │ │ │ │ - 0x00d4e7a0 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ - 0x00d4e7b0 742e772c 206c6f67 69635a2c 20312e30 t.w, logicZ, 1.0 │ │ │ │ - 0x00d4e7c0 29202b20 76656334 286f6666 73657420 ) + vec4(offset │ │ │ │ - 0x00d4e7d0 2f207363 616c652e 77202a20 7363616c / scale.w * scal │ │ │ │ - 0x00d4e7e0 652e782c 20302e30 2c20302e 30293b20 e.x, 0.0, 0.0); │ │ │ │ - 0x00d4e7f0 0a202023 69666465 66205655 4c4b414e . #ifdef VULKAN │ │ │ │ - 0x00d4e800 200a2020 2020706f 73697469 6f6e2e79 . position.y │ │ │ │ - 0x00d4e810 203d202d 706f7369 74696f6e 2e793b20 = -position.y; │ │ │ │ - 0x00d4e820 0a202020 20706f73 6974696f 6e2e7a20 . position.z │ │ │ │ - 0x00d4e830 3d202870 6f736974 696f6e2e 7a20202b = (position.z + │ │ │ │ - 0x00d4e840 20706f73 6974696f 6e2e7729 202f2032 position.w) / 2 │ │ │ │ - 0x00d4e850 2e303b20 0a202023 656e6469 66200a20 .0; . #endif . │ │ │ │ - 0x00d4e860 20202072 65747572 6e20706f 73697469 return positi │ │ │ │ - 0x00d4e870 6f6e3b20 0a20207d 200a2020 76656332 on; . } . vec2 │ │ │ │ - 0x00d4e880 2063616c 634c696e 65547261 6e73666f calcLineTransfo │ │ │ │ - 0x00d4e890 726d6564 41786973 506f7328 76656332 rmedAxisPos(vec2 │ │ │ │ - 0x00d4e8a0 206f7269 67696e61 6c417869 73506f73 originalAxisPos │ │ │ │ - 0x00d4e8b0 2c207665 63322073 68696674 6564506f , vec2 shiftedPo │ │ │ │ - 0x00d4e8c0 732c206d 61743420 6d6f6465 6c566965 s, mat4 modelVie │ │ │ │ - 0x00d4e8d0 772c2066 6c6f6174 2068616c 66576964 w, float halfWid │ │ │ │ - 0x00d4e8e0 74682920 0a20207b 200a2020 20207665 th) . { . ve │ │ │ │ - 0x00d4e8f0 63322070 203d2028 76656334 28736869 c2 p = (vec4(shi │ │ │ │ - 0x00d4e900 66746564 506f732c 20302e30 2c20312e ftedPos, 0.0, 1. │ │ │ │ - 0x00d4e910 3029202a 206d6f64 656c5669 6577292e 0) * modelView). │ │ │ │ - 0x00d4e920 78793b20 0a202020 20766563 32206420 xy; . vec2 d │ │ │ │ - 0x00d4e930 3d207020 2d206f72 6967696e 616c4178 = p - originalAx │ │ │ │ - 0x00d4e940 6973506f 733b200a 20202020 69662028 isPos; . if ( │ │ │ │ - 0x00d4e950 646f7428 642c2064 2920213d 20302e30 dot(d, d) != 0.0 │ │ │ │ - 0x00d4e960 29200a20 20202020 20726574 75726e20 ) . return │ │ │ │ - 0x00d4e970 6f726967 696e616c 41786973 506f7320 originalAxisPos │ │ │ │ - 0x00d4e980 2b206e6f 726d616c 697a6528 6429202a + normalize(d) * │ │ │ │ - 0x00d4e990 2068616c 66576964 74683b20 0a202020 halfWidth; . │ │ │ │ - 0x00d4e9a0 20656c73 65200a20 20202020 20726574 else . ret │ │ │ │ - 0x00d4e9b0 75726e20 6f726967 696e616c 41786973 urn originalAxis │ │ │ │ - 0x00d4e9c0 506f733b 200a2020 7d200a20 20766f69 Pos; . } . voi │ │ │ │ - 0x00d4e9d0 64206d61 696e2829 200a2020 7b200a20 d main() . { . │ │ │ │ - 0x00d4e9e0 20202076 65633420 706f7320 3d207665 vec4 pos = ve │ │ │ │ - 0x00d4e9f0 63342861 5f706f73 6974696f 6e2e7879 c4(a_position.xy │ │ │ │ - 0x00d4ea00 7a2c2031 29202a20 755f6d6f 64656c56 z, 1) * u_modelV │ │ │ │ - 0x00d4ea10 6965773b 200a2020 20207665 63342073 iew; . vec4 s │ │ │ │ - 0x00d4ea20 68696674 6564506f 73203d20 76656334 hiftedPos = vec4 │ │ │ │ - 0x00d4ea30 28615f6e 6f726d61 6c2c2030 2e302c20 (a_normal, 0.0, │ │ │ │ - 0x00d4ea40 302e3029 202b2070 6f733b20 0a202020 0.0) + pos; . │ │ │ │ - 0x00d4ea50 20676c5f 506f7369 74696f6e 203d2061 gl_Position = a │ │ │ │ - 0x00d4ea60 70706c79 5069766f 74547261 6e73666f pplyPivotTransfo │ │ │ │ - 0x00d4ea70 726d2873 68696674 6564506f 73202a20 rm(shiftedPos * │ │ │ │ - 0x00d4ea80 755f7072 6f6a6563 74696f6e 2c20755f u_projection, u_ │ │ │ │ - 0x00d4ea90 7069766f 74547261 6e73666f 726d2c20 pivotTransform, │ │ │ │ - 0x00d4eaa0 302e3029 3b200a20 20236966 64656620 0.0); . #ifdef │ │ │ │ - 0x00d4eab0 454e4142 4c455f56 5446200a 20202020 ENABLE_VTF . │ │ │ │ - 0x00d4eac0 765f636f 6c6f7220 3d207465 78747572 v_color = textur │ │ │ │ - 0x00d4ead0 6528755f 636f6c6f 72546578 2c20615f e(u_colorTex, a_ │ │ │ │ - 0x00d4eae0 636f6c6f 72546578 436f6f72 64293b20 colorTexCoord); │ │ │ │ - 0x00d4eaf0 0a202023 656c7365 200a2020 2020765f . #else . v_ │ │ │ │ - 0x00d4eb00 636f6c6f 72546578 436f6f72 64203d20 colorTexCoord = │ │ │ │ - 0x00d4eb10 615f636f 6c6f7254 6578436f 6f72643b a_colorTexCoord; │ │ │ │ - 0x00d4eb20 200a2020 23656e64 6966200a 20202020 . #endif . │ │ │ │ - 0x00d4eb30 765f6d61 736b5465 78436f6f 7264203d v_maskTexCoord = │ │ │ │ - 0x00d4eb40 20615f6d 61736b54 6578436f 6f72643b a_maskTexCoord; │ │ │ │ - 0x00d4eb50 200a2020 7d200a00 00000000 00000000 . } .......... │ │ │ │ - 0x00d4eb60 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d4eb70 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d4eb80 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d4eb90 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d4eba0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d4ebb0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d4ebc0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d4ebd0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d4ebe0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d4ebf0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d4ec00 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d4ec10 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d4ec20 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d4ec30 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d4ec40 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d4ec50 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d4ec60 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d4ec70 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d4ec80 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d4ec90 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d4eca0 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d4ecb0 63322061 5f636f6c 6f725465 78436f6f c2 a_colorTexCoo │ │ │ │ - 0x00d4ecc0 72643b20 0a202069 6e207665 63322061 rd; . in vec2 a │ │ │ │ - 0x00d4ecd0 5f6d6173 6b546578 436f6f72 643b200a _maskTexCoord; . │ │ │ │ - 0x00d4ece0 2020696e 20766563 3420615f 706f7369 in vec4 a_posi │ │ │ │ - 0x00d4ecf0 74696f6e 3b200a20 20696e20 76656332 tion; . in vec2 │ │ │ │ - 0x00d4ed00 20615f6e 6f726d61 6c3b200a 20202369 a_normal; . #i │ │ │ │ - 0x00d4ed10 66646566 20454e41 424c455f 56544620 fdef ENABLE_VTF │ │ │ │ - 0x00d4ed20 0a20206f 7574204c 4f575f50 20766563 . out LOW_P vec │ │ │ │ - 0x00d4ed30 3420765f 636f6c6f 723b200a 20202365 4 v_color; . #e │ │ │ │ - 0x00d4ed40 6c736520 0a20206f 75742076 65633220 lse . out vec2 │ │ │ │ - 0x00d4ed50 765f636f 6c6f7254 6578436f 6f72643b v_colorTexCoord; │ │ │ │ - 0x00d4ed60 200a2020 23656e64 6966200a 20206f75 . #endif . ou │ │ │ │ - 0x00d4ed70 74207665 63322076 5f6d6173 6b546578 t vec2 v_maskTex │ │ │ │ - 0x00d4ed80 436f6f72 643b200a 2020756e 69666f72 Coord; . unifor │ │ │ │ - 0x00d4ed90 6d206d61 74342075 5f6d6f64 656c5669 m mat4 u_modelVi │ │ │ │ - 0x00d4eda0 65773b20 0a202075 6e69666f 726d206d ew; . uniform m │ │ │ │ - 0x00d4edb0 61743420 755f7072 6f6a6563 74696f6e at4 u_projection │ │ │ │ - 0x00d4edc0 3b200a20 20756e69 666f726d 206d6174 ; . uniform mat │ │ │ │ - 0x00d4edd0 3420755f 7069766f 74547261 6e73666f 4 u_pivotTransfo │ │ │ │ - 0x00d4ede0 726d3b20 0a202075 6e69666f 726d2076 rm; . uniform v │ │ │ │ - 0x00d4edf0 65633220 755f636f 6e747261 73744761 ec2 u_contrastGa │ │ │ │ - 0x00d4ee00 6d6d613b 200a2020 756e6966 6f726d20 mma; . uniform │ │ │ │ - 0x00d4ee10 666c6f61 7420755f 6f706163 6974793b float u_opacity; │ │ │ │ - 0x00d4ee20 200a2020 756e6966 6f726d20 666c6f61 . uniform floa │ │ │ │ - 0x00d4ee30 7420755f 7a536361 6c653b20 0a202075 t u_zScale; . u │ │ │ │ - 0x00d4ee40 6e69666f 726d2066 6c6f6174 20755f69 niform float u_i │ │ │ │ - 0x00d4ee50 6e746572 706f6c61 74696f6e 3b200a20 nterpolation; . │ │ │ │ - 0x00d4ee60 20756e69 666f726d 20666c6f 61742075 uniform float u │ │ │ │ - 0x00d4ee70 5f69734f 75746c69 6e655061 73733b20 _isOutlinePass; │ │ │ │ - 0x00d4ee80 0a202075 6e69666f 726d2073 616d706c . uniform sampl │ │ │ │ - 0x00d4ee90 65723244 20755f63 6f6c6f72 5465783b er2D u_colorTex; │ │ │ │ - 0x00d4eea0 200a2020 636f6e73 7420666c 6f617420 . const float │ │ │ │ - 0x00d4eeb0 6b536861 7065436f 6f726453 63616c61 kShapeCoordScala │ │ │ │ - 0x00d4eec0 72203d20 31303030 2e303b20 0a202076 r = 1000.0; . v │ │ │ │ - 0x00d4eed0 65633420 6170706c 79506976 6f745472 ec4 applyPivotTr │ │ │ │ - 0x00d4eee0 616e7366 6f726d28 76656334 20706976 ansform(vec4 piv │ │ │ │ - 0x00d4eef0 6f742c20 6d617434 20706976 6f745472 ot, mat4 pivotTr │ │ │ │ - 0x00d4ef00 616e7366 6f726d2c 20666c6f 61742070 ansform, float p │ │ │ │ - 0x00d4ef10 69766f74 5265616c 5a29200a 20207b20 ivotRealZ) . { │ │ │ │ - 0x00d4ef20 0a202020 20766563 34207472 616e7366 . vec4 transf │ │ │ │ - 0x00d4ef30 6f726d65 64506976 6f74203d 20706976 ormedPivot = piv │ │ │ │ - 0x00d4ef40 6f743b20 0a202020 20666c6f 61742077 ot; . float w │ │ │ │ - 0x00d4ef50 203d2074 72616e73 666f726d 65645069 = transformedPi │ │ │ │ - 0x00d4ef60 766f742e 773b200a 20202020 7472616e vot.w; . tran │ │ │ │ - 0x00d4ef70 73666f72 6d656450 69766f74 2e787977 sformedPivot.xyw │ │ │ │ - 0x00d4ef80 203d2028 7069766f 74547261 6e73666f = (pivotTransfo │ │ │ │ - 0x00d4ef90 726d202a 20766563 34287472 616e7366 rm * vec4(transf │ │ │ │ - 0x00d4efa0 6f726d65 64506976 6f742e78 792c2070 ormedPivot.xy, p │ │ │ │ - 0x00d4efb0 69766f74 5265616c 5a2c2077 29292e78 ivotRealZ, w)).x │ │ │ │ - 0x00d4efc0 79773b20 0a202020 20747261 6e73666f yw; . transfo │ │ │ │ - 0x00d4efd0 726d6564 5069766f 742e7a20 2a3d2074 rmedPivot.z *= t │ │ │ │ - 0x00d4efe0 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ - 0x00d4eff0 77202f20 773b200a 20202369 66646566 w / w; . #ifdef │ │ │ │ - 0x00d4f000 2056554c 4b414e20 0a202020 20747261 VULKAN . tra │ │ │ │ - 0x00d4f010 6e73666f 726d6564 5069766f 742e7920 nsformedPivot.y │ │ │ │ - 0x00d4f020 3d202d74 72616e73 666f726d 65645069 = -transformedPi │ │ │ │ - 0x00d4f030 766f742e 793b200a 20202020 7472616e vot.y; . tran │ │ │ │ - 0x00d4f040 73666f72 6d656450 69766f74 2e7a203d sformedPivot.z = │ │ │ │ - 0x00d4f050 20287472 616e7366 6f726d65 64506976 (transformedPiv │ │ │ │ - 0x00d4f060 6f742e7a 20202b20 7472616e 73666f72 ot.z + transfor │ │ │ │ - 0x00d4f070 6d656450 69766f74 2e772920 2f20322e medPivot.w) / 2. │ │ │ │ - 0x00d4f080 303b200a 20202365 6e646966 200a2020 0; . #endif . │ │ │ │ - 0x00d4f090 20207265 7475726e 20747261 6e73666f return transfo │ │ │ │ - 0x00d4f0a0 726d6564 5069766f 743b200a 20207d20 rmedPivot; . } │ │ │ │ - 0x00d4f0b0 0a202076 65633420 6170706c 7942696c . vec4 applyBil │ │ │ │ - 0x00d4f0c0 6c626f61 72645069 766f7454 72616e73 lboardPivotTrans │ │ │ │ - 0x00d4f0d0 666f726d 28766563 34207069 766f742c form(vec4 pivot, │ │ │ │ - 0x00d4f0e0 206d6174 34207069 766f7454 72616e73 mat4 pivotTrans │ │ │ │ - 0x00d4f0f0 666f726d 2c20666c 6f617420 7069766f form, float pivo │ │ │ │ - 0x00d4f100 74526561 6c5a2c20 76656332 206f6666 tRealZ, vec2 off │ │ │ │ - 0x00d4f110 73657429 200a2020 7b200a20 20202066 set) . { . f │ │ │ │ - 0x00d4f120 6c6f6174 206c6f67 69635a20 3d207069 loat logicZ = pi │ │ │ │ - 0x00d4f130 766f742e 7a202f20 7069766f 742e773b vot.z / pivot.w; │ │ │ │ - 0x00d4f140 200a2020 20207665 63342074 72616e73 . vec4 trans │ │ │ │ - 0x00d4f150 666f726d 65645069 766f7420 3d207069 formedPivot = pi │ │ │ │ - 0x00d4f160 766f7454 72616e73 666f726d 202a2076 votTransform * v │ │ │ │ - 0x00d4f170 65633428 7069766f 742e7879 2c207069 ec4(pivot.xy, pi │ │ │ │ - 0x00d4f180 766f7452 65616c5a 2c207069 766f742e votRealZ, pivot. │ │ │ │ - 0x00d4f190 77293b20 0a202020 20766563 34207363 w); . vec4 sc │ │ │ │ - 0x00d4f1a0 616c6520 3d207069 766f7454 72616e73 ale = pivotTrans │ │ │ │ - 0x00d4f1b0 666f726d 202a2076 65633428 312e302c form * vec4(1.0, │ │ │ │ - 0x00d4f1c0 202d312e 302c2030 2e302c20 312e3029 -1.0, 0.0, 1.0) │ │ │ │ - 0x00d4f1d0 3b200a20 20202076 65633420 706f7369 ; . vec4 posi │ │ │ │ - 0x00d4f1e0 74696f6e 203d2076 65633428 7472616e tion = vec4(tran │ │ │ │ - 0x00d4f1f0 73666f72 6d656450 69766f74 2e787920 sformedPivot.xy │ │ │ │ - 0x00d4f200 2f207472 616e7366 6f726d65 64506976 / transformedPiv │ │ │ │ - 0x00d4f210 6f742e77 2c206c6f 6769635a 2c20312e ot.w, logicZ, 1. │ │ │ │ - 0x00d4f220 3029202b 20766563 34286f66 66736574 0) + vec4(offset │ │ │ │ - 0x00d4f230 202f2073 63616c65 2e77202a 20736361 / scale.w * sca │ │ │ │ - 0x00d4f240 6c652e78 2c20302e 302c2030 2e30293b le.x, 0.0, 0.0); │ │ │ │ - 0x00d4f250 200a2020 23696664 65662056 554c4b41 . #ifdef VULKA │ │ │ │ - 0x00d4f260 4e200a20 20202070 6f736974 696f6e2e N . position. │ │ │ │ - 0x00d4f270 79203d20 2d706f73 6974696f 6e2e793b y = -position.y; │ │ │ │ - 0x00d4f280 200a2020 2020706f 73697469 6f6e2e7a . position.z │ │ │ │ - 0x00d4f290 203d2028 706f7369 74696f6e 2e7a2020 = (position.z │ │ │ │ - 0x00d4f2a0 2b20706f 73697469 6f6e2e77 29202f20 + position.w) / │ │ │ │ - 0x00d4f2b0 322e303b 200a2020 23656e64 6966200a 2.0; . #endif . │ │ │ │ - 0x00d4f2c0 20202020 72657475 726e2070 6f736974 return posit │ │ │ │ - 0x00d4f2d0 696f6e3b 200a2020 7d200a20 20766563 ion; . } . vec │ │ │ │ - 0x00d4f2e0 32206361 6c634c69 6e655472 616e7366 2 calcLineTransf │ │ │ │ - 0x00d4f2f0 6f726d65 64417869 73506f73 28766563 ormedAxisPos(vec │ │ │ │ - 0x00d4f300 32206f72 6967696e 616c4178 6973506f 2 originalAxisPo │ │ │ │ - 0x00d4f310 732c2076 65633220 73686966 74656450 s, vec2 shiftedP │ │ │ │ - 0x00d4f320 6f732c20 6d617434 206d6f64 656c5669 os, mat4 modelVi │ │ │ │ - 0x00d4f330 65772c20 666c6f61 74206861 6c665769 ew, float halfWi │ │ │ │ - 0x00d4f340 64746829 200a2020 7b200a20 20202076 dth) . { . v │ │ │ │ - 0x00d4f350 65633220 70203d20 28766563 34287368 ec2 p = (vec4(sh │ │ │ │ - 0x00d4f360 69667465 64506f73 2c20302e 302c2031 iftedPos, 0.0, 1 │ │ │ │ - 0x00d4f370 2e302920 2a206d6f 64656c56 69657729 .0) * modelView) │ │ │ │ - 0x00d4f380 2e78793b 200a2020 20207665 63322064 .xy; . vec2 d │ │ │ │ - 0x00d4f390 203d2070 202d206f 72696769 6e616c41 = p - originalA │ │ │ │ - 0x00d4f3a0 78697350 6f733b20 0a202020 20696620 xisPos; . if │ │ │ │ - 0x00d4f3b0 28646f74 28642c20 64292021 3d20302e (dot(d, d) != 0. │ │ │ │ - 0x00d4f3c0 3029200a 20202020 20207265 7475726e 0) . return │ │ │ │ - 0x00d4f3d0 206f7269 67696e61 6c417869 73506f73 originalAxisPos │ │ │ │ - 0x00d4f3e0 202b206e 6f726d61 6c697a65 28642920 + normalize(d) │ │ │ │ - 0x00d4f3f0 2a206861 6c665769 6474683b 200a2020 * halfWidth; . │ │ │ │ - 0x00d4f400 2020656c 7365200a 20202020 20207265 else . re │ │ │ │ - 0x00d4f410 7475726e 206f7269 67696e61 6c417869 turn originalAxi │ │ │ │ - 0x00d4f420 73506f73 3b200a20 207d200a 2020766f sPos; . } . vo │ │ │ │ - 0x00d4f430 6964206d 61696e28 29200a20 207b200a id main() . { . │ │ │ │ - 0x00d4f440 20202020 76656334 20706976 6f74203d vec4 pivot = │ │ │ │ - 0x00d4f450 20766563 3428615f 706f7369 74696f6e vec4(a_position │ │ │ │ - 0x00d4f460 2e78797a 2c20312e 3029202a 20755f6d .xyz, 1.0) * u_m │ │ │ │ - 0x00d4f470 6f64656c 56696577 3b200a20 20202076 odelView; . v │ │ │ │ - 0x00d4f480 65633420 6f666673 6574203d 20766563 ec4 offset = vec │ │ │ │ - 0x00d4f490 3428615f 6e6f726d 616c2c20 302e302c 4(a_normal, 0.0, │ │ │ │ - 0x00d4f4a0 20302e30 29202a20 755f7072 6f6a6563 0.0) * u_projec │ │ │ │ - 0x00d4f4b0 74696f6e 3b200a20 20202067 6c5f506f tion; . gl_Po │ │ │ │ - 0x00d4f4c0 73697469 6f6e203d 20617070 6c794269 sition = applyBi │ │ │ │ - 0x00d4f4d0 6c6c626f 61726450 69766f74 5472616e llboardPivotTran │ │ │ │ - 0x00d4f4e0 73666f72 6d287069 766f7420 2a20755f sform(pivot * u_ │ │ │ │ - 0x00d4f4f0 70726f6a 65637469 6f6e2c20 755f7069 projection, u_pi │ │ │ │ - 0x00d4f500 766f7454 72616e73 666f726d 2c200a20 votTransform, . │ │ │ │ - 0x00d4f510 20202020 20202020 20202020 20202020 │ │ │ │ - 0x00d4f520 20202020 20202020 20202020 20202020 │ │ │ │ - 0x00d4f530 20202020 20202020 20202020 2020615f a_ │ │ │ │ - 0x00d4f540 706f7369 74696f6e 2e77202a 20755f7a position.w * u_z │ │ │ │ - 0x00d4f550 5363616c 652c206f 66667365 742e7879 Scale, offset.xy │ │ │ │ - 0x00d4f560 293b200a 20202369 66646566 20454e41 ); . #ifdef ENA │ │ │ │ - 0x00d4f570 424c455f 56544620 0a202020 20765f63 BLE_VTF . v_c │ │ │ │ - 0x00d4f580 6f6c6f72 203d2074 65787475 72652875 olor = texture(u │ │ │ │ - 0x00d4f590 5f636f6c 6f725465 782c2061 5f636f6c _colorTex, a_col │ │ │ │ - 0x00d4f5a0 6f725465 78436f6f 7264293b 200a2020 orTexCoord); . │ │ │ │ - 0x00d4f5b0 23656c73 65200a20 20202076 5f636f6c #else . v_col │ │ │ │ - 0x00d4f5c0 6f725465 78436f6f 7264203d 20615f63 orTexCoord = a_c │ │ │ │ - 0x00d4f5d0 6f6c6f72 54657843 6f6f7264 3b200a20 olorTexCoord; . │ │ │ │ - 0x00d4f5e0 2023656e 64696620 0a202020 20765f6d #endif . v_m │ │ │ │ - 0x00d4f5f0 61736b54 6578436f 6f726420 3d20615f askTexCoord = a_ │ │ │ │ - 0x00d4f600 6d61736b 54657843 6f6f7264 3b200a20 maskTexCoord; . │ │ │ │ - 0x00d4f610 207d200a 00000000 00000000 00000000 } ............. │ │ │ │ - 0x00d4f620 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d4f630 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d4f640 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d4f650 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d4f660 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d4f670 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d4f680 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d4f690 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d4f6a0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d4f6b0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d4f6c0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d4f6d0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d4f6e0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d4f6f0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d4f700 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d4f710 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d4f720 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d4f730 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d4f740 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d4f750 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d4f760 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d4f770 63322061 5f636f6c 6f725465 78436f6f c2 a_colorTexCoo │ │ │ │ - 0x00d4f780 72643b20 0a202069 6e207665 63322061 rd; . in vec2 a │ │ │ │ - 0x00d4f790 5f6f7574 6c696e65 436f6c6f 72546578 _outlineColorTex │ │ │ │ - 0x00d4f7a0 436f6f72 643b200a 2020696e 20766563 Coord; . in vec │ │ │ │ - 0x00d4f7b0 3220615f 6d61736b 54657843 6f6f7264 2 a_maskTexCoord │ │ │ │ - 0x00d4f7c0 3b200a20 20696e20 76656334 20615f70 ; . in vec4 a_p │ │ │ │ - 0x00d4f7d0 6f736974 696f6e3b 200a2020 696e2076 osition; . in v │ │ │ │ - 0x00d4f7e0 65633220 615f6e6f 726d616c 3b200a20 ec2 a_normal; . │ │ │ │ - 0x00d4f7f0 20236966 64656620 454e4142 4c455f56 #ifdef ENABLE_V │ │ │ │ - 0x00d4f800 5446200a 20206f75 74204c4f 575f5020 TF . out LOW_P │ │ │ │ - 0x00d4f810 76656334 20765f63 6f6c6f72 3b200a20 vec4 v_color; . │ │ │ │ - 0x00d4f820 2023656c 7365200a 20206f75 74207665 #else . out ve │ │ │ │ - 0x00d4f830 63322076 5f636f6c 6f725465 78436f6f c2 v_colorTexCoo │ │ │ │ - 0x00d4f840 72643b20 0a202023 656e6469 66200a20 rd; . #endif . │ │ │ │ - 0x00d4f850 206f7574 20766563 3220765f 6d61736b out vec2 v_mask │ │ │ │ - 0x00d4f860 54657843 6f6f7264 3b200a20 20756e69 TexCoord; . uni │ │ │ │ - 0x00d4f870 666f726d 206d6174 3420755f 6d6f6465 form mat4 u_mode │ │ │ │ - 0x00d4f880 6c566965 773b200a 2020756e 69666f72 lView; . unifor │ │ │ │ - 0x00d4f890 6d206d61 74342075 5f70726f 6a656374 m mat4 u_project │ │ │ │ - 0x00d4f8a0 696f6e3b 200a2020 756e6966 6f726d20 ion; . uniform │ │ │ │ - 0x00d4f8b0 6d617434 20755f70 69766f74 5472616e mat4 u_pivotTran │ │ │ │ - 0x00d4f8c0 73666f72 6d3b200a 2020756e 69666f72 sform; . unifor │ │ │ │ - 0x00d4f8d0 6d207665 63322075 5f636f6e 74726173 m vec2 u_contras │ │ │ │ - 0x00d4f8e0 7447616d 6d613b20 0a202075 6e69666f tGamma; . unifo │ │ │ │ - 0x00d4f8f0 726d2066 6c6f6174 20755f6f 70616369 rm float u_opaci │ │ │ │ - 0x00d4f900 74793b20 0a202075 6e69666f 726d2066 ty; . uniform f │ │ │ │ - 0x00d4f910 6c6f6174 20755f7a 5363616c 653b200a loat u_zScale; . │ │ │ │ - 0x00d4f920 2020756e 69666f72 6d20666c 6f617420 uniform float │ │ │ │ - 0x00d4f930 755f696e 74657270 6f6c6174 696f6e3b u_interpolation; │ │ │ │ - 0x00d4f940 200a2020 756e6966 6f726d20 666c6f61 . uniform floa │ │ │ │ - 0x00d4f950 7420755f 69734f75 746c696e 65506173 t u_isOutlinePas │ │ │ │ - 0x00d4f960 733b200a 20202369 66646566 20454e41 s; . #ifdef ENA │ │ │ │ - 0x00d4f970 424c455f 56544620 0a202075 6e69666f BLE_VTF . unifo │ │ │ │ - 0x00d4f980 726d2073 616d706c 65723244 20755f63 rm sampler2D u_c │ │ │ │ - 0x00d4f990 6f6c6f72 5465783b 200a2020 23656e64 olorTex; . #end │ │ │ │ - 0x00d4f9a0 6966200a 2020636f 6e737420 666c6f61 if . const floa │ │ │ │ - 0x00d4f9b0 74204261 73654465 70746853 68696674 t BaseDepthShift │ │ │ │ - 0x00d4f9c0 203d202d 31302e30 3b200a20 20636f6e = -10.0; . con │ │ │ │ - 0x00d4f9d0 73742066 6c6f6174 206b5368 61706543 st float kShapeC │ │ │ │ - 0x00d4f9e0 6f6f7264 5363616c 6172203d 20313030 oordScalar = 100 │ │ │ │ - 0x00d4f9f0 302e303b 200a2020 76656334 20617070 0.0; . vec4 app │ │ │ │ - 0x00d4fa00 6c795069 766f7454 72616e73 666f726d lyPivotTransform │ │ │ │ - 0x00d4fa10 28766563 34207069 766f742c 206d6174 (vec4 pivot, mat │ │ │ │ - 0x00d4fa20 34207069 766f7454 72616e73 666f726d 4 pivotTransform │ │ │ │ - 0x00d4fa30 2c20666c 6f617420 7069766f 74526561 , float pivotRea │ │ │ │ - 0x00d4fa40 6c5a2920 0a20207b 200a2020 20207665 lZ) . { . ve │ │ │ │ - 0x00d4fa50 63342074 72616e73 666f726d 65645069 c4 transformedPi │ │ │ │ - 0x00d4fa60 766f7420 3d207069 766f743b 200a2020 vot = pivot; . │ │ │ │ - 0x00d4fa70 2020666c 6f617420 77203d20 7472616e float w = tran │ │ │ │ - 0x00d4fa80 73666f72 6d656450 69766f74 2e773b20 sformedPivot.w; │ │ │ │ - 0x00d4fa90 0a202020 20747261 6e73666f 726d6564 . transformed │ │ │ │ - 0x00d4faa0 5069766f 742e7879 77203d20 28706976 Pivot.xyw = (piv │ │ │ │ - 0x00d4fab0 6f745472 616e7366 6f726d20 2a207665 otTransform * ve │ │ │ │ - 0x00d4fac0 63342874 72616e73 666f726d 65645069 c4(transformedPi │ │ │ │ - 0x00d4fad0 766f742e 78792c20 7069766f 74526561 vot.xy, pivotRea │ │ │ │ - 0x00d4fae0 6c5a2c20 7729292e 7879773b 200a2020 lZ, w)).xyw; . │ │ │ │ - 0x00d4faf0 20207472 616e7366 6f726d65 64506976 transformedPiv │ │ │ │ - 0x00d4fb00 6f742e7a 202a3d20 7472616e 73666f72 ot.z *= transfor │ │ │ │ - 0x00d4fb10 6d656450 69766f74 2e77202f 20773b20 medPivot.w / w; │ │ │ │ - 0x00d4fb20 0a202023 69666465 66205655 4c4b414e . #ifdef VULKAN │ │ │ │ - 0x00d4fb30 200a2020 20207472 616e7366 6f726d65 . transforme │ │ │ │ - 0x00d4fb40 64506976 6f742e79 203d202d 7472616e dPivot.y = -tran │ │ │ │ - 0x00d4fb50 73666f72 6d656450 69766f74 2e793b20 sformedPivot.y; │ │ │ │ - 0x00d4fb60 0a202020 20747261 6e73666f 726d6564 . transformed │ │ │ │ - 0x00d4fb70 5069766f 742e7a20 3d202874 72616e73 Pivot.z = (trans │ │ │ │ - 0x00d4fb80 666f726d 65645069 766f742e 7a20202b formedPivot.z + │ │ │ │ - 0x00d4fb90 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ - 0x00d4fba0 742e7729 202f2032 2e303b20 0a202023 t.w) / 2.0; . # │ │ │ │ - 0x00d4fbb0 656e6469 66200a20 20202072 65747572 endif . retur │ │ │ │ - 0x00d4fbc0 6e207472 616e7366 6f726d65 64506976 n transformedPiv │ │ │ │ - 0x00d4fbd0 6f743b20 0a20207d 200a2020 76656334 ot; . } . vec4 │ │ │ │ - 0x00d4fbe0 20617070 6c794269 6c6c626f 61726450 applyBillboardP │ │ │ │ - 0x00d4fbf0 69766f74 5472616e 73666f72 6d287665 ivotTransform(ve │ │ │ │ - 0x00d4fc00 63342070 69766f74 2c206d61 74342070 c4 pivot, mat4 p │ │ │ │ - 0x00d4fc10 69766f74 5472616e 73666f72 6d2c2066 ivotTransform, f │ │ │ │ - 0x00d4fc20 6c6f6174 20706976 6f745265 616c5a2c loat pivotRealZ, │ │ │ │ - 0x00d4fc30 20766563 32206f66 66736574 29200a20 vec2 offset) . │ │ │ │ - 0x00d4fc40 207b200a 20202020 666c6f61 74206c6f { . float lo │ │ │ │ - 0x00d4fc50 6769635a 203d2070 69766f74 2e7a202f gicZ = pivot.z / │ │ │ │ - 0x00d4fc60 20706976 6f742e77 3b200a20 20202076 pivot.w; . v │ │ │ │ - 0x00d4fc70 65633420 7472616e 73666f72 6d656450 ec4 transformedP │ │ │ │ - 0x00d4fc80 69766f74 203d2070 69766f74 5472616e ivot = pivotTran │ │ │ │ - 0x00d4fc90 73666f72 6d202a20 76656334 28706976 sform * vec4(piv │ │ │ │ - 0x00d4fca0 6f742e78 792c2070 69766f74 5265616c ot.xy, pivotReal │ │ │ │ - 0x00d4fcb0 5a2c2070 69766f74 2e77293b 200a2020 Z, pivot.w); . │ │ │ │ - 0x00d4fcc0 20207665 63342073 63616c65 203d2070 vec4 scale = p │ │ │ │ - 0x00d4fcd0 69766f74 5472616e 73666f72 6d202a20 ivotTransform * │ │ │ │ - 0x00d4fce0 76656334 28312e30 2c202d31 2e302c20 vec4(1.0, -1.0, │ │ │ │ - 0x00d4fcf0 302e302c 20312e30 293b200a 20202020 0.0, 1.0); . │ │ │ │ - 0x00d4fd00 76656334 20706f73 6974696f 6e203d20 vec4 position = │ │ │ │ - 0x00d4fd10 76656334 28747261 6e73666f 726d6564 vec4(transformed │ │ │ │ - 0x00d4fd20 5069766f 742e7879 202f2074 72616e73 Pivot.xy / trans │ │ │ │ - 0x00d4fd30 666f726d 65645069 766f742e 772c206c formedPivot.w, l │ │ │ │ - 0x00d4fd40 6f676963 5a2c2031 2e302920 2b207665 ogicZ, 1.0) + ve │ │ │ │ - 0x00d4fd50 6334286f 66667365 74202f20 7363616c c4(offset / scal │ │ │ │ - 0x00d4fd60 652e7720 2a207363 616c652e 782c2030 e.w * scale.x, 0 │ │ │ │ - 0x00d4fd70 2e302c20 302e3029 3b200a20 20236966 .0, 0.0); . #if │ │ │ │ - 0x00d4fd80 64656620 56554c4b 414e200a 20202020 def VULKAN . │ │ │ │ - 0x00d4fd90 706f7369 74696f6e 2e79203d 202d706f position.y = -po │ │ │ │ - 0x00d4fda0 73697469 6f6e2e79 3b200a20 20202070 sition.y; . p │ │ │ │ - 0x00d4fdb0 6f736974 696f6e2e 7a203d20 28706f73 osition.z = (pos │ │ │ │ - 0x00d4fdc0 6974696f 6e2e7a20 202b2070 6f736974 ition.z + posit │ │ │ │ - 0x00d4fdd0 696f6e2e 7729202f 20322e30 3b200a20 ion.w) / 2.0; . │ │ │ │ - 0x00d4fde0 2023656e 64696620 0a202020 20726574 #endif . ret │ │ │ │ - 0x00d4fdf0 75726e20 706f7369 74696f6e 3b200a20 urn position; . │ │ │ │ - 0x00d4fe00 207d200a 20207665 63322063 616c634c } . vec2 calcL │ │ │ │ - 0x00d4fe10 696e6554 72616e73 666f726d 65644178 ineTransformedAx │ │ │ │ - 0x00d4fe20 6973506f 73287665 6332206f 72696769 isPos(vec2 origi │ │ │ │ - 0x00d4fe30 6e616c41 78697350 6f732c20 76656332 nalAxisPos, vec2 │ │ │ │ - 0x00d4fe40 20736869 66746564 506f732c 206d6174 shiftedPos, mat │ │ │ │ - 0x00d4fe50 34206d6f 64656c56 6965772c 20666c6f 4 modelView, flo │ │ │ │ - 0x00d4fe60 61742068 616c6657 69647468 29200a20 at halfWidth) . │ │ │ │ - 0x00d4fe70 207b200a 20202020 76656332 2070203d { . vec2 p = │ │ │ │ - 0x00d4fe80 20287665 63342873 68696674 6564506f (vec4(shiftedPo │ │ │ │ - 0x00d4fe90 732c2030 2e302c20 312e3029 202a206d s, 0.0, 1.0) * m │ │ │ │ - 0x00d4fea0 6f64656c 56696577 292e7879 3b200a20 odelView).xy; . │ │ │ │ - 0x00d4feb0 20202076 65633220 64203d20 70202d20 vec2 d = p - │ │ │ │ - 0x00d4fec0 6f726967 696e616c 41786973 506f733b originalAxisPos; │ │ │ │ - 0x00d4fed0 200a2020 20206966 2028646f 7428642c . if (dot(d, │ │ │ │ - 0x00d4fee0 20642920 213d2030 2e302920 0a202020 d) != 0.0) . │ │ │ │ - 0x00d4fef0 20202072 65747572 6e206f72 6967696e return origin │ │ │ │ - 0x00d4ff00 616c4178 6973506f 73202b20 6e6f726d alAxisPos + norm │ │ │ │ - 0x00d4ff10 616c697a 65286429 202a2068 616c6657 alize(d) * halfW │ │ │ │ - 0x00d4ff20 69647468 3b200a20 20202065 6c736520 idth; . else │ │ │ │ - 0x00d4ff30 0a202020 20202072 65747572 6e206f72 . return or │ │ │ │ - 0x00d4ff40 6967696e 616c4178 6973506f 733b200a iginalAxisPos; . │ │ │ │ - 0x00d4ff50 20207d20 0a202076 6f696420 6d61696e } . void main │ │ │ │ - 0x00d4ff60 2829200a 20207b20 0a202020 20666c6f () . { . flo │ │ │ │ - 0x00d4ff70 61742069 734f7574 6c696e65 203d2073 at isOutline = s │ │ │ │ - 0x00d4ff80 74657028 302e352c 20755f69 734f7574 tep(0.5, u_isOut │ │ │ │ - 0x00d4ff90 6c696e65 50617373 293b200a 20202020 linePass); . │ │ │ │ - 0x00d4ffa0 666c6f61 74206e6f 744f7574 6c696e65 float notOutline │ │ │ │ - 0x00d4ffb0 203d2031 2e30202d 2069734f 75746c69 = 1.0 - isOutli │ │ │ │ - 0x00d4ffc0 6e653b20 0a202020 20666c6f 61742064 ne; . float d │ │ │ │ - 0x00d4ffd0 65707468 53686966 74203d20 42617365 epthShift = Base │ │ │ │ - 0x00d4ffe0 44657074 68536869 6674202a 2069734f DepthShift * isO │ │ │ │ - 0x00d4fff0 75746c69 6e653b20 0a202020 20766563 utline; . vec │ │ │ │ - 0x00d50000 3420706f 73203d20 28766563 3428615f 4 pos = (vec4(a_ │ │ │ │ - 0x00d50010 706f7369 74696f6e 2e78797a 2c203129 position.xyz, 1) │ │ │ │ - 0x00d50020 202b2076 65633428 302e302c 20302e30 + vec4(0.0, 0.0 │ │ │ │ - 0x00d50030 2c206465 70746853 68696674 2c20302e , depthShift, 0. │ │ │ │ - 0x00d50040 30292920 2a20755f 6d6f6465 6c566965 0)) * u_modelVie │ │ │ │ - 0x00d50050 773b200a 20202020 76656334 20736869 w; . vec4 shi │ │ │ │ - 0x00d50060 66746564 506f7320 3d207665 63342861 ftedPos = vec4(a │ │ │ │ - 0x00d50070 5f6e6f72 6d616c2c 20302e30 2c20302e _normal, 0.0, 0. │ │ │ │ - 0x00d50080 3029202b 20706f73 3b200a20 20202067 0) + pos; . g │ │ │ │ - 0x00d50090 6c5f506f 73697469 6f6e203d 20617070 l_Position = app │ │ │ │ - 0x00d500a0 6c795069 766f7454 72616e73 666f726d lyPivotTransform │ │ │ │ - 0x00d500b0 28736869 66746564 506f7320 2a20755f (shiftedPos * u_ │ │ │ │ - 0x00d500c0 70726f6a 65637469 6f6e2c20 755f7069 projection, u_pi │ │ │ │ - 0x00d500d0 766f7454 72616e73 666f726d 2c20302e votTransform, 0. │ │ │ │ - 0x00d500e0 30293b20 0a202020 20766563 3220636f 0); . vec2 co │ │ │ │ - 0x00d500f0 6c6f7254 6578436f 6f726420 3d20615f lorTexCoord = a_ │ │ │ │ - 0x00d50100 636f6c6f 72546578 436f6f72 64202a20 colorTexCoord * │ │ │ │ - 0x00d50110 6e6f744f 75746c69 6e65202b 20615f6f notOutline + a_o │ │ │ │ - 0x00d50120 75746c69 6e65436f 6c6f7254 6578436f utlineColorTexCo │ │ │ │ - 0x00d50130 6f726420 2a206973 4f75746c 696e653b ord * isOutline; │ │ │ │ - 0x00d50140 200a2020 23696664 65662045 4e41424c . #ifdef ENABL │ │ │ │ - 0x00d50150 455f5654 46200a20 20202076 5f636f6c E_VTF . v_col │ │ │ │ - 0x00d50160 6f72203d 20746578 74757265 28755f63 or = texture(u_c │ │ │ │ - 0x00d50170 6f6c6f72 5465782c 20636f6c 6f725465 olorTex, colorTe │ │ │ │ - 0x00d50180 78436f6f 7264293b 200a2020 23656c73 xCoord); . #els │ │ │ │ - 0x00d50190 65200a20 20202076 5f636f6c 6f725465 e . v_colorTe │ │ │ │ - 0x00d501a0 78436f6f 7264203d 20636f6c 6f725465 xCoord = colorTe │ │ │ │ - 0x00d501b0 78436f6f 72643b20 0a202023 656e6469 xCoord; . #endi │ │ │ │ - 0x00d501c0 66200a20 20202076 5f6d6173 6b546578 f . v_maskTex │ │ │ │ - 0x00d501d0 436f6f72 64203d20 615f6d61 736b5465 Coord = a_maskTe │ │ │ │ - 0x00d501e0 78436f6f 72643b20 0a20207d 200a0000 xCoord; . } ... │ │ │ │ - 0x00d501f0 00000000 00000000 00000000 00000000 ................ │ │ │ │ - 0x00d50200 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d50210 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d50220 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d50230 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d50240 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d50250 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d50260 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d50270 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d50280 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d50290 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d502a0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d502b0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d502c0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d502d0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d502e0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d502f0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d50300 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d50310 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d50320 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d50330 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d50340 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d50350 63322061 5f636f6c 6f725465 78436f6f c2 a_colorTexCoo │ │ │ │ - 0x00d50360 72643b20 0a202069 6e207665 63322061 rd; . in vec2 a │ │ │ │ - 0x00d50370 5f6f7574 6c696e65 436f6c6f 72546578 _outlineColorTex │ │ │ │ - 0x00d50380 436f6f72 643b200a 2020696e 20766563 Coord; . in vec │ │ │ │ - 0x00d50390 3220615f 6d61736b 54657843 6f6f7264 2 a_maskTexCoord │ │ │ │ - 0x00d503a0 3b200a20 20696e20 76656334 20615f70 ; . in vec4 a_p │ │ │ │ - 0x00d503b0 6f736974 696f6e3b 200a2020 696e2076 osition; . in v │ │ │ │ - 0x00d503c0 65633220 615f6e6f 726d616c 3b200a20 ec2 a_normal; . │ │ │ │ - 0x00d503d0 20236966 64656620 454e4142 4c455f56 #ifdef ENABLE_V │ │ │ │ - 0x00d503e0 5446200a 20206f75 74204c4f 575f5020 TF . out LOW_P │ │ │ │ - 0x00d503f0 76656334 20765f63 6f6c6f72 3b200a20 vec4 v_color; . │ │ │ │ - 0x00d50400 2023656c 7365200a 20206f75 74207665 #else . out ve │ │ │ │ - 0x00d50410 63322076 5f636f6c 6f725465 78436f6f c2 v_colorTexCoo │ │ │ │ - 0x00d50420 72643b20 0a202023 656e6469 66200a20 rd; . #endif . │ │ │ │ - 0x00d50430 206f7574 20766563 3220765f 6d61736b out vec2 v_mask │ │ │ │ - 0x00d50440 54657843 6f6f7264 3b200a20 20756e69 TexCoord; . uni │ │ │ │ - 0x00d50450 666f726d 206d6174 3420755f 6d6f6465 form mat4 u_mode │ │ │ │ - 0x00d50460 6c566965 773b200a 2020756e 69666f72 lView; . unifor │ │ │ │ - 0x00d50470 6d206d61 74342075 5f70726f 6a656374 m mat4 u_project │ │ │ │ - 0x00d50480 696f6e3b 200a2020 756e6966 6f726d20 ion; . uniform │ │ │ │ - 0x00d50490 6d617434 20755f70 69766f74 5472616e mat4 u_pivotTran │ │ │ │ - 0x00d504a0 73666f72 6d3b200a 2020756e 69666f72 sform; . unifor │ │ │ │ - 0x00d504b0 6d207665 63322075 5f636f6e 74726173 m vec2 u_contras │ │ │ │ - 0x00d504c0 7447616d 6d613b20 0a202075 6e69666f tGamma; . unifo │ │ │ │ - 0x00d504d0 726d2066 6c6f6174 20755f6f 70616369 rm float u_opaci │ │ │ │ - 0x00d504e0 74793b20 0a202075 6e69666f 726d2066 ty; . uniform f │ │ │ │ - 0x00d504f0 6c6f6174 20755f7a 5363616c 653b200a loat u_zScale; . │ │ │ │ - 0x00d50500 2020756e 69666f72 6d20666c 6f617420 uniform float │ │ │ │ - 0x00d50510 755f696e 74657270 6f6c6174 696f6e3b u_interpolation; │ │ │ │ - 0x00d50520 200a2020 756e6966 6f726d20 666c6f61 . uniform floa │ │ │ │ - 0x00d50530 7420755f 69734f75 746c696e 65506173 t u_isOutlinePas │ │ │ │ - 0x00d50540 733b200a 2020756e 69666f72 6d207361 s; . uniform sa │ │ │ │ - 0x00d50550 6d706c65 72324420 755f636f 6c6f7254 mpler2D u_colorT │ │ │ │ - 0x00d50560 65783b20 0a202063 6f6e7374 20666c6f ex; . const flo │ │ │ │ - 0x00d50570 6174206b 42617365 44657074 68536869 at kBaseDepthShi │ │ │ │ - 0x00d50580 6674203d 202d3130 2e303b20 0a202063 ft = -10.0; . c │ │ │ │ - 0x00d50590 6f6e7374 20666c6f 6174206b 53686170 onst float kShap │ │ │ │ - 0x00d505a0 65436f6f 72645363 616c6172 203d2031 eCoordScalar = 1 │ │ │ │ - 0x00d505b0 3030302e 303b200a 20207665 63342061 000.0; . vec4 a │ │ │ │ - 0x00d505c0 70706c79 5069766f 74547261 6e73666f pplyPivotTransfo │ │ │ │ - 0x00d505d0 726d2876 65633420 7069766f 742c206d rm(vec4 pivot, m │ │ │ │ - 0x00d505e0 61743420 7069766f 74547261 6e73666f at4 pivotTransfo │ │ │ │ - 0x00d505f0 726d2c20 666c6f61 74207069 766f7452 rm, float pivotR │ │ │ │ - 0x00d50600 65616c5a 29200a20 207b200a 20202020 ealZ) . { . │ │ │ │ - 0x00d50610 76656334 20747261 6e73666f 726d6564 vec4 transformed │ │ │ │ - 0x00d50620 5069766f 74203d20 7069766f 743b200a Pivot = pivot; . │ │ │ │ - 0x00d50630 20202020 666c6f61 74207720 3d207472 float w = tr │ │ │ │ - 0x00d50640 616e7366 6f726d65 64506976 6f742e77 ansformedPivot.w │ │ │ │ - 0x00d50650 3b200a20 20202074 72616e73 666f726d ; . transform │ │ │ │ - 0x00d50660 65645069 766f742e 78797720 3d202870 edPivot.xyw = (p │ │ │ │ - 0x00d50670 69766f74 5472616e 73666f72 6d202a20 ivotTransform * │ │ │ │ - 0x00d50680 76656334 28747261 6e73666f 726d6564 vec4(transformed │ │ │ │ - 0x00d50690 5069766f 742e7879 2c207069 766f7452 Pivot.xy, pivotR │ │ │ │ - 0x00d506a0 65616c5a 2c207729 292e7879 773b200a ealZ, w)).xyw; . │ │ │ │ - 0x00d506b0 20202020 7472616e 73666f72 6d656450 transformedP │ │ │ │ - 0x00d506c0 69766f74 2e7a202a 3d207472 616e7366 ivot.z *= transf │ │ │ │ - 0x00d506d0 6f726d65 64506976 6f742e77 202f2077 ormedPivot.w / w │ │ │ │ - 0x00d506e0 3b200a20 20236966 64656620 56554c4b ; . #ifdef VULK │ │ │ │ - 0x00d506f0 414e200a 20202020 7472616e 73666f72 AN . transfor │ │ │ │ - 0x00d50700 6d656450 69766f74 2e79203d 202d7472 medPivot.y = -tr │ │ │ │ - 0x00d50710 616e7366 6f726d65 64506976 6f742e79 ansformedPivot.y │ │ │ │ - 0x00d50720 3b200a20 20202074 72616e73 666f726d ; . transform │ │ │ │ - 0x00d50730 65645069 766f742e 7a203d20 28747261 edPivot.z = (tra │ │ │ │ - 0x00d50740 6e73666f 726d6564 5069766f 742e7a20 nsformedPivot.z │ │ │ │ - 0x00d50750 202b2074 72616e73 666f726d 65645069 + transformedPi │ │ │ │ - 0x00d50760 766f742e 7729202f 20322e30 3b200a20 vot.w) / 2.0; . │ │ │ │ - 0x00d50770 2023656e 64696620 0a202020 20726574 #endif . ret │ │ │ │ - 0x00d50780 75726e20 7472616e 73666f72 6d656450 urn transformedP │ │ │ │ - 0x00d50790 69766f74 3b200a20 207d200a 20207665 ivot; . } . ve │ │ │ │ - 0x00d507a0 63342061 70706c79 42696c6c 626f6172 c4 applyBillboar │ │ │ │ - 0x00d507b0 64506976 6f745472 616e7366 6f726d28 dPivotTransform( │ │ │ │ - 0x00d507c0 76656334 20706976 6f742c20 6d617434 vec4 pivot, mat4 │ │ │ │ - 0x00d507d0 20706976 6f745472 616e7366 6f726d2c pivotTransform, │ │ │ │ - 0x00d507e0 20666c6f 61742070 69766f74 5265616c float pivotReal │ │ │ │ - 0x00d507f0 5a2c2076 65633220 6f666673 65742920 Z, vec2 offset) │ │ │ │ - 0x00d50800 0a20207b 200a2020 2020666c 6f617420 . { . float │ │ │ │ - 0x00d50810 6c6f6769 635a203d 20706976 6f742e7a logicZ = pivot.z │ │ │ │ - 0x00d50820 202f2070 69766f74 2e773b20 0a202020 / pivot.w; . │ │ │ │ - 0x00d50830 20766563 34207472 616e7366 6f726d65 vec4 transforme │ │ │ │ - 0x00d50840 64506976 6f74203d 20706976 6f745472 dPivot = pivotTr │ │ │ │ - 0x00d50850 616e7366 6f726d20 2a207665 63342870 ansform * vec4(p │ │ │ │ - 0x00d50860 69766f74 2e78792c 20706976 6f745265 ivot.xy, pivotRe │ │ │ │ - 0x00d50870 616c5a2c 20706976 6f742e77 293b200a alZ, pivot.w); . │ │ │ │ - 0x00d50880 20202020 76656334 20736361 6c65203d vec4 scale = │ │ │ │ - 0x00d50890 20706976 6f745472 616e7366 6f726d20 pivotTransform │ │ │ │ - 0x00d508a0 2a207665 63342831 2e302c20 2d312e30 * vec4(1.0, -1.0 │ │ │ │ - 0x00d508b0 2c20302e 302c2031 2e30293b 200a2020 , 0.0, 1.0); . │ │ │ │ - 0x00d508c0 20207665 63342070 6f736974 696f6e20 vec4 position │ │ │ │ - 0x00d508d0 3d207665 63342874 72616e73 666f726d = vec4(transform │ │ │ │ - 0x00d508e0 65645069 766f742e 7879202f 20747261 edPivot.xy / tra │ │ │ │ - 0x00d508f0 6e73666f 726d6564 5069766f 742e772c nsformedPivot.w, │ │ │ │ - 0x00d50900 206c6f67 69635a2c 20312e30 29202b20 logicZ, 1.0) + │ │ │ │ - 0x00d50910 76656334 286f6666 73657420 2f207363 vec4(offset / sc │ │ │ │ - 0x00d50920 616c652e 77202a20 7363616c 652e782c ale.w * scale.x, │ │ │ │ - 0x00d50930 20302e30 2c20302e 30293b20 0a202023 0.0, 0.0); . # │ │ │ │ - 0x00d50940 69666465 66205655 4c4b414e 200a2020 ifdef VULKAN . │ │ │ │ - 0x00d50950 2020706f 73697469 6f6e2e79 203d202d position.y = - │ │ │ │ - 0x00d50960 706f7369 74696f6e 2e793b20 0a202020 position.y; . │ │ │ │ - 0x00d50970 20706f73 6974696f 6e2e7a20 3d202870 position.z = (p │ │ │ │ - 0x00d50980 6f736974 696f6e2e 7a20202b 20706f73 osition.z + pos │ │ │ │ - 0x00d50990 6974696f 6e2e7729 202f2032 2e303b20 ition.w) / 2.0; │ │ │ │ - 0x00d509a0 0a202023 656e6469 66200a20 20202072 . #endif . r │ │ │ │ - 0x00d509b0 65747572 6e20706f 73697469 6f6e3b20 eturn position; │ │ │ │ - 0x00d509c0 0a20207d 200a2020 76656332 2063616c . } . vec2 cal │ │ │ │ - 0x00d509d0 634c696e 65547261 6e73666f 726d6564 cLineTransformed │ │ │ │ - 0x00d509e0 41786973 506f7328 76656332 206f7269 AxisPos(vec2 ori │ │ │ │ - 0x00d509f0 67696e61 6c417869 73506f73 2c207665 ginalAxisPos, ve │ │ │ │ - 0x00d50a00 63322073 68696674 6564506f 732c206d c2 shiftedPos, m │ │ │ │ - 0x00d50a10 61743420 6d6f6465 6c566965 772c2066 at4 modelView, f │ │ │ │ - 0x00d50a20 6c6f6174 2068616c 66576964 74682920 loat halfWidth) │ │ │ │ - 0x00d50a30 0a20207b 200a2020 20207665 63322070 . { . vec2 p │ │ │ │ - 0x00d50a40 203d2028 76656334 28736869 66746564 = (vec4(shifted │ │ │ │ - 0x00d50a50 506f732c 20302e30 2c20312e 3029202a Pos, 0.0, 1.0) * │ │ │ │ - 0x00d50a60 206d6f64 656c5669 6577292e 78793b20 modelView).xy; │ │ │ │ - 0x00d50a70 0a202020 20766563 32206420 3d207020 . vec2 d = p │ │ │ │ - 0x00d50a80 2d206f72 6967696e 616c4178 6973506f - originalAxisPo │ │ │ │ - 0x00d50a90 733b200a 20202020 69662028 646f7428 s; . if (dot( │ │ │ │ - 0x00d50aa0 642c2064 2920213d 20302e30 29200a20 d, d) != 0.0) . │ │ │ │ - 0x00d50ab0 20202020 20726574 75726e20 6f726967 return orig │ │ │ │ - 0x00d50ac0 696e616c 41786973 506f7320 2b206e6f inalAxisPos + no │ │ │ │ - 0x00d50ad0 726d616c 697a6528 6429202a 2068616c rmalize(d) * hal │ │ │ │ - 0x00d50ae0 66576964 74683b20 0a202020 20656c73 fWidth; . els │ │ │ │ - 0x00d50af0 65200a20 20202020 20726574 75726e20 e . return │ │ │ │ - 0x00d50b00 6f726967 696e616c 41786973 506f733b originalAxisPos; │ │ │ │ - 0x00d50b10 200a2020 7d200a20 20766f69 64206d61 . } . void ma │ │ │ │ - 0x00d50b20 696e2829 200a2020 7b200a20 20202066 in() . { . f │ │ │ │ - 0x00d50b30 6c6f6174 2069734f 75746c69 6e65203d loat isOutline = │ │ │ │ - 0x00d50b40 20737465 7028302e 352c2075 5f69734f step(0.5, u_isO │ │ │ │ - 0x00d50b50 75746c69 6e655061 7373293b 200a2020 utlinePass); . │ │ │ │ - 0x00d50b60 2020666c 6f617420 64657074 68536869 float depthShi │ │ │ │ - 0x00d50b70 6674203d 206b4261 73654465 70746853 ft = kBaseDepthS │ │ │ │ - 0x00d50b80 68696674 202a2069 734f7574 6c696e65 hift * isOutline │ │ │ │ - 0x00d50b90 3b200a20 20202076 65633420 7069766f ; . vec4 pivo │ │ │ │ - 0x00d50ba0 74203d20 28766563 3428615f 706f7369 t = (vec4(a_posi │ │ │ │ - 0x00d50bb0 74696f6e 2e78797a 2c20312e 3029202b tion.xyz, 1.0) + │ │ │ │ - 0x00d50bc0 20766563 3428302e 302c2030 2e302c20 vec4(0.0, 0.0, │ │ │ │ - 0x00d50bd0 64657074 68536869 66742c20 302e3029 depthShift, 0.0) │ │ │ │ - 0x00d50be0 29202a20 755f6d6f 64656c56 6965773b ) * u_modelView; │ │ │ │ - 0x00d50bf0 200a2020 20207665 6334206f 66667365 . vec4 offse │ │ │ │ - 0x00d50c00 74203d20 76656334 28615f6e 6f726d61 t = vec4(a_norma │ │ │ │ - 0x00d50c10 6c2c2030 2e302c20 302e3029 202a2075 l, 0.0, 0.0) * u │ │ │ │ - 0x00d50c20 5f70726f 6a656374 696f6e3b 200a2020 _projection; . │ │ │ │ - 0x00d50c30 2020676c 5f506f73 6974696f 6e203d20 gl_Position = │ │ │ │ - 0x00d50c40 6170706c 7942696c 6c626f61 72645069 applyBillboardPi │ │ │ │ - 0x00d50c50 766f7454 72616e73 666f726d 28706976 votTransform(piv │ │ │ │ - 0x00d50c60 6f74202a 20755f70 726f6a65 6374696f ot * u_projectio │ │ │ │ - 0x00d50c70 6e2c2075 5f706976 6f745472 616e7366 n, u_pivotTransf │ │ │ │ - 0x00d50c80 6f726d2c 200a2020 20202020 20202020 orm, . │ │ │ │ - 0x00d50c90 20202020 20202020 20202020 20202020 │ │ │ │ - 0x00d50ca0 20202020 20202020 20202020 20202020 │ │ │ │ - 0x00d50cb0 20202020 20615f70 6f736974 696f6e2e a_position. │ │ │ │ - 0x00d50cc0 77202a20 755f7a53 63616c65 2c206f66 w * u_zScale, of │ │ │ │ - 0x00d50cd0 66736574 2e787929 3b200a20 20202076 fset.xy); . v │ │ │ │ - 0x00d50ce0 65633220 636f6c6f 72546578 436f6f72 ec2 colorTexCoor │ │ │ │ - 0x00d50cf0 64203d20 6d697828 615f636f 6c6f7254 d = mix(a_colorT │ │ │ │ - 0x00d50d00 6578436f 6f72642c 20615f6f 75746c69 exCoord, a_outli │ │ │ │ - 0x00d50d10 6e65436f 6c6f7254 6578436f 6f72642c neColorTexCoord, │ │ │ │ - 0x00d50d20 2069734f 75746c69 6e65293b 200a2020 isOutline); . │ │ │ │ - 0x00d50d30 23696664 65662045 4e41424c 455f5654 #ifdef ENABLE_VT │ │ │ │ - 0x00d50d40 46200a20 20202076 5f636f6c 6f72203d F . v_color = │ │ │ │ - 0x00d50d50 20746578 74757265 28755f63 6f6c6f72 texture(u_color │ │ │ │ - 0x00d50d60 5465782c 20636f6c 6f725465 78436f6f Tex, colorTexCoo │ │ │ │ - 0x00d50d70 7264293b 200a2020 23656c73 65200a20 rd); . #else . │ │ │ │ - 0x00d50d80 20202076 5f636f6c 6f725465 78436f6f v_colorTexCoo │ │ │ │ - 0x00d50d90 7264203d 20636f6c 6f725465 78436f6f rd = colorTexCoo │ │ │ │ - 0x00d50da0 72643b20 0a202023 656e6469 66200a20 rd; . #endif . │ │ │ │ - 0x00d50db0 20202076 5f6d6173 6b546578 436f6f72 v_maskTexCoor │ │ │ │ - 0x00d50dc0 64203d20 615f6d61 736b5465 78436f6f d = a_maskTexCoo │ │ │ │ - 0x00d50dd0 72643b20 0a20207d 200a0000 00000000 rd; . } ....... │ │ │ │ - 0x00d50de0 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d50df0 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d50e00 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d50e10 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d50e20 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d50e30 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d50e40 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d50e50 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d50e60 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d50e70 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d50e80 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d50e90 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d50ea0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d50eb0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d50ec0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d50ed0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d50ee0 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d50ef0 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d50f00 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d50f10 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d50f20 2023656e 64696620 0a202023 69666465 #endif . #ifde │ │ │ │ - 0x00d50f30 6620454e 41424c45 5f565446 200a2020 f ENABLE_VTF . │ │ │ │ - 0x00d50f40 696e204c 4f575f50 20766563 3420765f in LOW_P vec4 v_ │ │ │ │ - 0x00d50f50 636f6c6f 723b200a 20202365 6c736520 color; . #else │ │ │ │ - 0x00d50f60 0a202069 6e207665 63322076 5f636f6c . in vec2 v_col │ │ │ │ - 0x00d50f70 6f725465 78436f6f 72643b20 0a202075 orTexCoord; . u │ │ │ │ - 0x00d50f80 6e69666f 726d2073 616d706c 65723244 niform sampler2D │ │ │ │ - 0x00d50f90 20755f63 6f6c6f72 5465783b 200a2020 u_colorTex; . │ │ │ │ - 0x00d50fa0 23656e64 6966200a 2020696e 20766563 #endif . in vec │ │ │ │ - 0x00d50fb0 3220765f 6d61736b 54657843 6f6f7264 2 v_maskTexCoord │ │ │ │ - 0x00d50fc0 3b200a20 206f7574 20766563 3420765f ; . out vec4 v_ │ │ │ │ - 0x00d50fd0 46726167 436f6c6f 723b200a 2020756e FragColor; . un │ │ │ │ - 0x00d50fe0 69666f72 6d206d61 74342075 5f6d6f64 iform mat4 u_mod │ │ │ │ - 0x00d50ff0 656c5669 65773b20 0a202075 6e69666f elView; . unifo │ │ │ │ - 0x00d51000 726d206d 61743420 755f7072 6f6a6563 rm mat4 u_projec │ │ │ │ - 0x00d51010 74696f6e 3b200a20 20756e69 666f726d tion; . uniform │ │ │ │ - 0x00d51020 20766563 3220755f 636f6e74 72617374 vec2 u_contrast │ │ │ │ - 0x00d51030 47616d6d 613b200a 2020756e 69666f72 Gamma; . unifor │ │ │ │ - 0x00d51040 6d207665 63322075 5f706f73 6974696f m vec2 u_positio │ │ │ │ - 0x00d51050 6e3b200a 2020756e 69666f72 6d20666c n; . uniform fl │ │ │ │ - 0x00d51060 6f617420 755f6973 4f75746c 696e6550 oat u_isOutlineP │ │ │ │ - 0x00d51070 6173733b 200a2020 756e6966 6f726d20 ass; . uniform │ │ │ │ - 0x00d51080 666c6f61 7420755f 6f706163 6974793b float u_opacity; │ │ │ │ - 0x00d51090 200a2020 756e6966 6f726d20 666c6f61 . uniform floa │ │ │ │ - 0x00d510a0 7420755f 6c656e67 74683b20 0a202075 t u_length; . u │ │ │ │ - 0x00d510b0 6e69666f 726d2073 616d706c 65723244 niform sampler2D │ │ │ │ - 0x00d510c0 20755f6d 61736b54 65783b20 0a202063 u_maskTex; . c │ │ │ │ - 0x00d510d0 6f6e7374 20666c6f 6174206b 53686170 onst float kShap │ │ │ │ - 0x00d510e0 65436f6f 72645363 616c6172 203d2031 eCoordScalar = 1 │ │ │ │ - 0x00d510f0 3030302e 303b200a 2020766f 6964206d 000.0; . void m │ │ │ │ - 0x00d51100 61696e28 29200a20 207b200a 20202369 ain() . { . #i │ │ │ │ - 0x00d51110 66646566 20454e41 424c455f 56544620 fdef ENABLE_VTF │ │ │ │ - 0x00d51120 0a202020 204c4f57 5f502076 65633420 . LOW_P vec4 │ │ │ │ - 0x00d51130 676c7970 68436f6c 6f72203d 20765f63 glyphColor = v_c │ │ │ │ - 0x00d51140 6f6c6f72 3b200a20 2023656c 7365200a olor; . #else . │ │ │ │ - 0x00d51150 20202020 4c4f575f 50207665 63342067 LOW_P vec4 g │ │ │ │ - 0x00d51160 6c797068 436f6c6f 72203d20 74657874 lyphColor = text │ │ │ │ - 0x00d51170 75726528 755f636f 6c6f7254 65782c20 ure(u_colorTex, │ │ │ │ - 0x00d51180 765f636f 6c6f7254 6578436f 6f726429 v_colorTexCoord) │ │ │ │ - 0x00d51190 3b200a20 2023656e 64696620 0a202020 ; . #endif . │ │ │ │ - 0x00d511a0 20666c6f 61742064 69737420 3d207465 float dist = te │ │ │ │ - 0x00d511b0 78747572 6528755f 6d61736b 5465782c xture(u_maskTex, │ │ │ │ - 0x00d511c0 20765f6d 61736b54 6578436f 6f726429 v_maskTexCoord) │ │ │ │ - 0x00d511d0 2e723b20 0a202020 20666c6f 61742061 .r; . float a │ │ │ │ - 0x00d511e0 6c706861 203d2073 6d6f6f74 68737465 lpha = smoothste │ │ │ │ - 0x00d511f0 7028755f 636f6e74 72617374 47616d6d p(u_contrastGamm │ │ │ │ - 0x00d51200 612e7820 2d20755f 636f6e74 72617374 a.x - u_contrast │ │ │ │ - 0x00d51210 47616d6d 612e792c 20755f63 6f6e7472 Gamma.y, u_contr │ │ │ │ - 0x00d51220 61737447 616d6d61 2e78202b 20755f63 astGamma.x + u_c │ │ │ │ - 0x00d51230 6f6e7472 61737447 616d6d61 2e792c20 ontrastGamma.y, │ │ │ │ - 0x00d51240 64697374 29202a20 755f6f70 61636974 dist) * u_opacit │ │ │ │ - 0x00d51250 793b200a 20202020 676c7970 68436f6c y; . glyphCol │ │ │ │ - 0x00d51260 6f722e61 202a3d20 616c7068 613b200a or.a *= alpha; . │ │ │ │ - 0x00d51270 20202020 765f4672 6167436f 6c6f7220 v_FragColor │ │ │ │ - 0x00d51280 3d20676c 79706843 6f6c6f72 3b200a20 = glyphColor; . │ │ │ │ - 0x00d51290 207d200a 00000000 00000000 00000000 } ............. │ │ │ │ - 0x00d512a0 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d512b0 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d512c0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d512d0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d512e0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d512f0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d51300 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d51310 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d51320 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d51330 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d51340 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d51350 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d51360 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d51370 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d51380 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d51390 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d513a0 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d513b0 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d513c0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d513d0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d513e0 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d513f0 63332061 5f706f73 6974696f 6e3b200a c3 a_position; . │ │ │ │ - 0x00d51400 2020696e 20766563 3220615f 636f6c6f in vec2 a_colo │ │ │ │ - 0x00d51410 72546578 436f6f72 643b200a 2020696e rTexCoord; . in │ │ │ │ - 0x00d51420 20766563 3220615f 6f75746c 696e6543 vec2 a_outlineC │ │ │ │ - 0x00d51430 6f6c6f72 54657843 6f6f7264 3b200a20 olorTexCoord; . │ │ │ │ - 0x00d51440 20696e20 76656332 20615f6e 6f726d61 in vec2 a_norma │ │ │ │ - 0x00d51450 6c3b200a 2020696e 20766563 3220615f l; . in vec2 a_ │ │ │ │ - 0x00d51460 6d61736b 54657843 6f6f7264 3b200a20 maskTexCoord; . │ │ │ │ - 0x00d51470 20236966 64656620 454e4142 4c455f56 #ifdef ENABLE_V │ │ │ │ - 0x00d51480 5446200a 20206f75 74204c4f 575f5020 TF . out LOW_P │ │ │ │ - 0x00d51490 76656334 20765f63 6f6c6f72 3b200a20 vec4 v_color; . │ │ │ │ - 0x00d514a0 2023656c 7365200a 20206f75 74207665 #else . out ve │ │ │ │ - 0x00d514b0 63322076 5f636f6c 6f725465 78436f6f c2 v_colorTexCoo │ │ │ │ - 0x00d514c0 72643b20 0a202023 656e6469 66200a20 rd; . #endif . │ │ │ │ - 0x00d514d0 206f7574 20766563 3220765f 6d61736b out vec2 v_mask │ │ │ │ - 0x00d514e0 54657843 6f6f7264 3b200a20 20756e69 TexCoord; . uni │ │ │ │ - 0x00d514f0 666f726d 206d6174 3420755f 6d6f6465 form mat4 u_mode │ │ │ │ - 0x00d51500 6c566965 773b200a 2020756e 69666f72 lView; . unifor │ │ │ │ - 0x00d51510 6d206d61 74342075 5f70726f 6a656374 m mat4 u_project │ │ │ │ - 0x00d51520 696f6e3b 200a2020 756e6966 6f726d20 ion; . uniform │ │ │ │ - 0x00d51530 76656332 20755f63 6f6e7472 61737447 vec2 u_contrastG │ │ │ │ - 0x00d51540 616d6d61 3b200a20 20756e69 666f726d amma; . uniform │ │ │ │ - 0x00d51550 20766563 3220755f 706f7369 74696f6e vec2 u_position │ │ │ │ - 0x00d51560 3b200a20 20756e69 666f726d 20666c6f ; . uniform flo │ │ │ │ - 0x00d51570 61742075 5f69734f 75746c69 6e655061 at u_isOutlinePa │ │ │ │ - 0x00d51580 73733b20 0a202075 6e69666f 726d2066 ss; . uniform f │ │ │ │ - 0x00d51590 6c6f6174 20755f6f 70616369 74793b20 loat u_opacity; │ │ │ │ - 0x00d515a0 0a202075 6e69666f 726d2066 6c6f6174 . uniform float │ │ │ │ - 0x00d515b0 20755f6c 656e6774 683b200a 20202369 u_length; . #i │ │ │ │ - 0x00d515c0 66646566 20454e41 424c455f 56544620 fdef ENABLE_VTF │ │ │ │ - 0x00d515d0 0a202075 6e69666f 726d2073 616d706c . uniform sampl │ │ │ │ - 0x00d515e0 65723244 20755f63 6f6c6f72 5465783b er2D u_colorTex; │ │ │ │ - 0x00d515f0 200a2020 23656e64 6966200a 2020636f . #endif . co │ │ │ │ - 0x00d51600 6e737420 666c6f61 74206b42 61736544 nst float kBaseD │ │ │ │ - 0x00d51610 65707468 53686966 74203d20 2d31302e epthShift = -10. │ │ │ │ - 0x00d51620 303b200a 2020636f 6e737420 666c6f61 0; . const floa │ │ │ │ - 0x00d51630 74206b53 68617065 436f6f72 64536361 t kShapeCoordSca │ │ │ │ - 0x00d51640 6c617220 3d203130 30302e30 3b200a20 lar = 1000.0; . │ │ │ │ - 0x00d51650 20766563 34206170 706c7950 69766f74 vec4 applyPivot │ │ │ │ - 0x00d51660 5472616e 73666f72 6d287665 63342070 Transform(vec4 p │ │ │ │ - 0x00d51670 69766f74 2c206d61 74342070 69766f74 ivot, mat4 pivot │ │ │ │ - 0x00d51680 5472616e 73666f72 6d2c2066 6c6f6174 Transform, float │ │ │ │ - 0x00d51690 20706976 6f745265 616c5a29 200a2020 pivotRealZ) . │ │ │ │ - 0x00d516a0 7b200a20 20202076 65633420 7472616e { . vec4 tran │ │ │ │ - 0x00d516b0 73666f72 6d656450 69766f74 203d2070 sformedPivot = p │ │ │ │ - 0x00d516c0 69766f74 3b200a20 20202066 6c6f6174 ivot; . float │ │ │ │ - 0x00d516d0 2077203d 20747261 6e73666f 726d6564 w = transformed │ │ │ │ - 0x00d516e0 5069766f 742e773b 200a2020 20207472 Pivot.w; . tr │ │ │ │ - 0x00d516f0 616e7366 6f726d65 64506976 6f742e78 ansformedPivot.x │ │ │ │ - 0x00d51700 7977203d 20287069 766f7454 72616e73 yw = (pivotTrans │ │ │ │ - 0x00d51710 666f726d 202a2076 65633428 7472616e form * vec4(tran │ │ │ │ - 0x00d51720 73666f72 6d656450 69766f74 2e78792c sformedPivot.xy, │ │ │ │ - 0x00d51730 20706976 6f745265 616c5a2c 20772929 pivotRealZ, w)) │ │ │ │ - 0x00d51740 2e787977 3b200a20 20202074 72616e73 .xyw; . trans │ │ │ │ - 0x00d51750 666f726d 65645069 766f742e 7a202a3d formedPivot.z *= │ │ │ │ - 0x00d51760 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ - 0x00d51770 742e7720 2f20773b 200a2020 23696664 t.w / w; . #ifd │ │ │ │ - 0x00d51780 65662056 554c4b41 4e200a20 20202074 ef VULKAN . t │ │ │ │ - 0x00d51790 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ - 0x00d517a0 79203d20 2d747261 6e73666f 726d6564 y = -transformed │ │ │ │ - 0x00d517b0 5069766f 742e793b 200a2020 20207472 Pivot.y; . tr │ │ │ │ - 0x00d517c0 616e7366 6f726d65 64506976 6f742e7a ansformedPivot.z │ │ │ │ - 0x00d517d0 203d2028 7472616e 73666f72 6d656450 = (transformedP │ │ │ │ - 0x00d517e0 69766f74 2e7a2020 2b207472 616e7366 ivot.z + transf │ │ │ │ - 0x00d517f0 6f726d65 64506976 6f742e77 29202f20 ormedPivot.w) / │ │ │ │ - 0x00d51800 322e303b 200a2020 23656e64 6966200a 2.0; . #endif . │ │ │ │ - 0x00d51810 20202020 72657475 726e2074 72616e73 return trans │ │ │ │ - 0x00d51820 666f726d 65645069 766f743b 200a2020 formedPivot; . │ │ │ │ - 0x00d51830 7d200a20 20766563 34206170 706c7942 } . vec4 applyB │ │ │ │ - 0x00d51840 696c6c62 6f617264 5069766f 74547261 illboardPivotTra │ │ │ │ - 0x00d51850 6e73666f 726d2876 65633420 7069766f nsform(vec4 pivo │ │ │ │ - 0x00d51860 742c206d 61743420 7069766f 74547261 t, mat4 pivotTra │ │ │ │ - 0x00d51870 6e73666f 726d2c20 666c6f61 74207069 nsform, float pi │ │ │ │ - 0x00d51880 766f7452 65616c5a 2c207665 6332206f votRealZ, vec2 o │ │ │ │ - 0x00d51890 66667365 7429200a 20207b20 0a202020 ffset) . { . │ │ │ │ - 0x00d518a0 20666c6f 6174206c 6f676963 5a203d20 float logicZ = │ │ │ │ - 0x00d518b0 7069766f 742e7a20 2f207069 766f742e pivot.z / pivot. │ │ │ │ - 0x00d518c0 773b200a 20202020 76656334 20747261 w; . vec4 tra │ │ │ │ - 0x00d518d0 6e73666f 726d6564 5069766f 74203d20 nsformedPivot = │ │ │ │ - 0x00d518e0 7069766f 74547261 6e73666f 726d202a pivotTransform * │ │ │ │ - 0x00d518f0 20766563 34287069 766f742e 78792c20 vec4(pivot.xy, │ │ │ │ - 0x00d51900 7069766f 74526561 6c5a2c20 7069766f pivotRealZ, pivo │ │ │ │ - 0x00d51910 742e7729 3b200a20 20202076 65633420 t.w); . vec4 │ │ │ │ - 0x00d51920 7363616c 65203d20 7069766f 74547261 scale = pivotTra │ │ │ │ - 0x00d51930 6e73666f 726d202a 20766563 3428312e nsform * vec4(1. │ │ │ │ - 0x00d51940 302c202d 312e302c 20302e30 2c20312e 0, -1.0, 0.0, 1. │ │ │ │ - 0x00d51950 30293b20 0a202020 20766563 3420706f 0); . vec4 po │ │ │ │ - 0x00d51960 73697469 6f6e203d 20766563 34287472 sition = vec4(tr │ │ │ │ - 0x00d51970 616e7366 6f726d65 64506976 6f742e78 ansformedPivot.x │ │ │ │ - 0x00d51980 79202f20 7472616e 73666f72 6d656450 y / transformedP │ │ │ │ - 0x00d51990 69766f74 2e772c20 6c6f6769 635a2c20 ivot.w, logicZ, │ │ │ │ - 0x00d519a0 312e3029 202b2076 65633428 6f666673 1.0) + vec4(offs │ │ │ │ - 0x00d519b0 6574202f 20736361 6c652e77 202a2073 et / scale.w * s │ │ │ │ - 0x00d519c0 63616c65 2e782c20 302e302c 20302e30 cale.x, 0.0, 0.0 │ │ │ │ - 0x00d519d0 293b200a 20202369 66646566 2056554c ); . #ifdef VUL │ │ │ │ - 0x00d519e0 4b414e20 0a202020 20706f73 6974696f KAN . positio │ │ │ │ - 0x00d519f0 6e2e7920 3d202d70 6f736974 696f6e2e n.y = -position. │ │ │ │ - 0x00d51a00 793b200a 20202020 706f7369 74696f6e y; . position │ │ │ │ - 0x00d51a10 2e7a203d 2028706f 73697469 6f6e2e7a .z = (position.z │ │ │ │ - 0x00d51a20 20202b20 706f7369 74696f6e 2e772920 + position.w) │ │ │ │ - 0x00d51a30 2f20322e 303b200a 20202365 6e646966 / 2.0; . #endif │ │ │ │ - 0x00d51a40 200a2020 20207265 7475726e 20706f73 . return pos │ │ │ │ - 0x00d51a50 6974696f 6e3b200a 20207d20 0a202076 ition; . } . v │ │ │ │ - 0x00d51a60 65633220 63616c63 4c696e65 5472616e ec2 calcLineTran │ │ │ │ - 0x00d51a70 73666f72 6d656441 78697350 6f732876 sformedAxisPos(v │ │ │ │ - 0x00d51a80 65633220 6f726967 696e616c 41786973 ec2 originalAxis │ │ │ │ - 0x00d51a90 506f732c 20766563 32207368 69667465 Pos, vec2 shifte │ │ │ │ - 0x00d51aa0 64506f73 2c206d61 7434206d 6f64656c dPos, mat4 model │ │ │ │ - 0x00d51ab0 56696577 2c20666c 6f617420 68616c66 View, float half │ │ │ │ - 0x00d51ac0 57696474 6829200a 20207b20 0a202020 Width) . { . │ │ │ │ - 0x00d51ad0 20766563 32207020 3d202876 65633428 vec2 p = (vec4( │ │ │ │ - 0x00d51ae0 73686966 74656450 6f732c20 302e302c shiftedPos, 0.0, │ │ │ │ - 0x00d51af0 20312e30 29202a20 6d6f6465 6c566965 1.0) * modelVie │ │ │ │ - 0x00d51b00 77292e78 793b200a 20202020 76656332 w).xy; . vec2 │ │ │ │ - 0x00d51b10 2064203d 2070202d 206f7269 67696e61 d = p - origina │ │ │ │ - 0x00d51b20 6c417869 73506f73 3b200a20 20202069 lAxisPos; . i │ │ │ │ - 0x00d51b30 66202864 6f742864 2c206429 20213d20 f (dot(d, d) != │ │ │ │ - 0x00d51b40 302e3029 200a2020 20202020 72657475 0.0) . retu │ │ │ │ - 0x00d51b50 726e206f 72696769 6e616c41 78697350 rn originalAxisP │ │ │ │ - 0x00d51b60 6f73202b 206e6f72 6d616c69 7a652864 os + normalize(d │ │ │ │ - 0x00d51b70 29202a20 68616c66 57696474 683b200a ) * halfWidth; . │ │ │ │ - 0x00d51b80 20202020 656c7365 200a2020 20202020 else . │ │ │ │ - 0x00d51b90 72657475 726e206f 72696769 6e616c41 return originalA │ │ │ │ - 0x00d51ba0 78697350 6f733b20 0a20207d 200a2020 xisPos; . } . │ │ │ │ - 0x00d51bb0 766f6964 206d6169 6e282920 0a20207b void main() . { │ │ │ │ - 0x00d51bc0 200a2020 2020666c 6f617420 69734f75 . float isOu │ │ │ │ - 0x00d51bd0 746c696e 65203d20 73746570 28302e35 tline = step(0.5 │ │ │ │ - 0x00d51be0 2c20755f 69734f75 746c696e 65506173 , u_isOutlinePas │ │ │ │ - 0x00d51bf0 73293b20 0a202020 20666c6f 61742064 s); . float d │ │ │ │ - 0x00d51c00 65707468 53686966 74203d20 6b426173 epthShift = kBas │ │ │ │ - 0x00d51c10 65446570 74685368 69667420 2a206973 eDepthShift * is │ │ │ │ - 0x00d51c20 4f75746c 696e653b 200a2020 20207665 Outline; . ve │ │ │ │ - 0x00d51c30 63342070 6f73203d 20287665 63342861 c4 pos = (vec4(a │ │ │ │ - 0x00d51c40 5f706f73 6974696f 6e2c2031 2e302920 _position, 1.0) │ │ │ │ - 0x00d51c50 2b207665 63342830 2e302c20 302e302c + vec4(0.0, 0.0, │ │ │ │ - 0x00d51c60 20646570 74685368 6966742c 20302e30 depthShift, 0.0 │ │ │ │ - 0x00d51c70 2929202a 20755f6d 6f64656c 56696577 )) * u_modelView │ │ │ │ - 0x00d51c80 3b200a20 20202076 65633420 73686966 ; . vec4 shif │ │ │ │ - 0x00d51c90 74656450 6f73203d 20766563 3428615f tedPos = vec4(a_ │ │ │ │ - 0x00d51ca0 6e6f726d 616c2c20 302e302c 20302e30 normal, 0.0, 0.0 │ │ │ │ - 0x00d51cb0 29202b20 706f733b 200a2020 2020676c ) + pos; . gl │ │ │ │ - 0x00d51cc0 5f506f73 6974696f 6e203d20 73686966 _Position = shif │ │ │ │ - 0x00d51cd0 74656450 6f73202a 20755f70 726f6a65 tedPos * u_proje │ │ │ │ - 0x00d51ce0 6374696f 6e3b200a 20202369 66646566 ction; . #ifdef │ │ │ │ - 0x00d51cf0 2056554c 4b414e20 0a202020 20676c5f VULKAN . gl_ │ │ │ │ - 0x00d51d00 506f7369 74696f6e 2e79203d 202d676c Position.y = -gl │ │ │ │ - 0x00d51d10 5f506f73 6974696f 6e2e793b 200a2020 _Position.y; . │ │ │ │ - 0x00d51d20 2020676c 5f506f73 6974696f 6e2e7a20 gl_Position.z │ │ │ │ - 0x00d51d30 3d202867 6c5f506f 73697469 6f6e2e7a = (gl_Position.z │ │ │ │ - 0x00d51d40 20202b20 676c5f50 6f736974 696f6e2e + gl_Position. │ │ │ │ - 0x00d51d50 7729202a 20302e35 3b200a20 2023656e w) * 0.5; . #en │ │ │ │ - 0x00d51d60 64696620 0a202020 20766563 3220636f dif . vec2 co │ │ │ │ - 0x00d51d70 6c6f7254 6578436f 6f726420 3d206d69 lorTexCoord = mi │ │ │ │ - 0x00d51d80 7828615f 636f6c6f 72546578 436f6f72 x(a_colorTexCoor │ │ │ │ - 0x00d51d90 642c2061 5f6f7574 6c696e65 436f6c6f d, a_outlineColo │ │ │ │ - 0x00d51da0 72546578 436f6f72 642c2069 734f7574 rTexCoord, isOut │ │ │ │ - 0x00d51db0 6c696e65 293b200a 20202369 66646566 line); . #ifdef │ │ │ │ - 0x00d51dc0 20454e41 424c455f 56544620 0a202020 ENABLE_VTF . │ │ │ │ - 0x00d51dd0 20765f63 6f6c6f72 203d2074 65787475 v_color = textu │ │ │ │ - 0x00d51de0 72652875 5f636f6c 6f725465 782c2063 re(u_colorTex, c │ │ │ │ - 0x00d51df0 6f6c6f72 54657843 6f6f7264 293b200a olorTexCoord); . │ │ │ │ - 0x00d51e00 20202365 6c736520 0a202020 20765f63 #else . v_c │ │ │ │ - 0x00d51e10 6f6c6f72 54657843 6f6f7264 203d2063 olorTexCoord = c │ │ │ │ - 0x00d51e20 6f6c6f72 54657843 6f6f7264 3b200a20 olorTexCoord; . │ │ │ │ - 0x00d51e30 2023656e 64696620 0a202020 20765f6d #endif . v_m │ │ │ │ - 0x00d51e40 61736b54 6578436f 6f726420 3d20615f askTexCoord = a_ │ │ │ │ - 0x00d51e50 6d61736b 54657843 6f6f7264 3b200a20 maskTexCoord; . │ │ │ │ - 0x00d51e60 207d200a 00000000 00000000 00000000 } ............. │ │ │ │ - 0x00d51e70 00000000 00000000 00000000 00000000 ................ │ │ │ │ - 0x00d51e80 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d51e90 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d51ea0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d51eb0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d51ec0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d51ed0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d51ee0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d51ef0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d51f00 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d51f10 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d51f20 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d51f30 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d51f40 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d51f50 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d51f60 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d51f70 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d51f80 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d51f90 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d51fa0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d51fb0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d51fc0 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d51fd0 63322076 5f636f6c 6f725465 78436f6f c2 v_colorTexCoo │ │ │ │ - 0x00d51fe0 7264733b 200a2020 6f757420 76656334 rds; . out vec4 │ │ │ │ - 0x00d51ff0 20765f46 72616743 6f6c6f72 3b200a20 v_FragColor; . │ │ │ │ - 0x00d52000 20756e69 666f726d 206d6174 3420755f uniform mat4 u_ │ │ │ │ - 0x00d52010 6d6f6465 6c566965 773b200a 2020756e modelView; . un │ │ │ │ - 0x00d52020 69666f72 6d206d61 74342075 5f70726f iform mat4 u_pro │ │ │ │ - 0x00d52030 6a656374 696f6e3b 200a2020 756e6966 jection; . unif │ │ │ │ - 0x00d52040 6f726d20 6d617434 20755f70 69766f74 orm mat4 u_pivot │ │ │ │ - 0x00d52050 5472616e 73666f72 6d3b200a 2020756e Transform; . un │ │ │ │ - 0x00d52060 69666f72 6d207665 63322075 5f636f6e iform vec2 u_con │ │ │ │ - 0x00d52070 74726173 7447616d 6d613b20 0a202075 trastGamma; . u │ │ │ │ - 0x00d52080 6e69666f 726d2066 6c6f6174 20755f6f niform float u_o │ │ │ │ - 0x00d52090 70616369 74793b20 0a202075 6e69666f pacity; . unifo │ │ │ │ - 0x00d520a0 726d2066 6c6f6174 20755f7a 5363616c rm float u_zScal │ │ │ │ - 0x00d520b0 653b200a 2020756e 69666f72 6d20666c e; . uniform fl │ │ │ │ - 0x00d520c0 6f617420 755f696e 74657270 6f6c6174 oat u_interpolat │ │ │ │ - 0x00d520d0 696f6e3b 200a2020 756e6966 6f726d20 ion; . uniform │ │ │ │ - 0x00d520e0 666c6f61 7420755f 69734f75 746c696e float u_isOutlin │ │ │ │ - 0x00d520f0 65506173 733b200a 2020756e 69666f72 ePass; . unifor │ │ │ │ - 0x00d52100 6d207361 6d706c65 72324420 755f636f m sampler2D u_co │ │ │ │ - 0x00d52110 6c6f7254 65783b20 0a202063 6f6e7374 lorTex; . const │ │ │ │ - 0x00d52120 20666c6f 6174206b 53686170 65436f6f float kShapeCoo │ │ │ │ - 0x00d52130 72645363 616c6172 203d2031 3030302e rdScalar = 1000. │ │ │ │ - 0x00d52140 303b200a 2020766f 6964206d 61696e28 0; . void main( │ │ │ │ - 0x00d52150 29200a20 207b200a 20202020 76656334 ) . { . vec4 │ │ │ │ - 0x00d52160 2066696e 616c436f 6c6f7220 3d207465 finalColor = te │ │ │ │ - 0x00d52170 78747572 6528755f 636f6c6f 72546578 xture(u_colorTex │ │ │ │ - 0x00d52180 2c20765f 636f6c6f 72546578 436f6f72 , v_colorTexCoor │ │ │ │ - 0x00d52190 6473293b 200a2020 20206669 6e616c43 ds); . finalC │ │ │ │ - 0x00d521a0 6f6c6f72 2e61202a 3d20755f 6f706163 olor.a *= u_opac │ │ │ │ - 0x00d521b0 6974793b 200a2020 2020765f 46726167 ity; . v_Frag │ │ │ │ - 0x00d521c0 436f6c6f 72203d20 66696e61 6c436f6c Color = finalCol │ │ │ │ - 0x00d521d0 6f723b20 0a20207d 200a0000 00000000 or; . } ....... │ │ │ │ - 0x00d521e0 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d521f0 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d52200 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d52210 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d52220 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d52230 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d52240 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d52250 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d52260 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d52270 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d52280 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d52290 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d522a0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d522b0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d522c0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d522d0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d522e0 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d522f0 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d52300 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d52310 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d52320 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d52330 63342061 5f706f73 6974696f 6e3b200a c4 a_position; . │ │ │ │ - 0x00d52340 2020696e 20766563 3220615f 6e6f726d in vec2 a_norm │ │ │ │ - 0x00d52350 616c3b20 0a202069 6e207665 63322061 al; . in vec2 a │ │ │ │ - 0x00d52360 5f636f6c 6f725465 78436f6f 7264733b _colorTexCoords; │ │ │ │ - 0x00d52370 200a2020 6f757420 76656332 20765f63 . out vec2 v_c │ │ │ │ - 0x00d52380 6f6c6f72 54657843 6f6f7264 733b200a olorTexCoords; . │ │ │ │ - 0x00d52390 2020756e 69666f72 6d206d61 74342075 uniform mat4 u │ │ │ │ - 0x00d523a0 5f6d6f64 656c5669 65773b20 0a202075 _modelView; . u │ │ │ │ - 0x00d523b0 6e69666f 726d206d 61743420 755f7072 niform mat4 u_pr │ │ │ │ - 0x00d523c0 6f6a6563 74696f6e 3b200a20 20756e69 ojection; . uni │ │ │ │ - 0x00d523d0 666f726d 206d6174 3420755f 7069766f form mat4 u_pivo │ │ │ │ - 0x00d523e0 74547261 6e73666f 726d3b20 0a202075 tTransform; . u │ │ │ │ - 0x00d523f0 6e69666f 726d2076 65633220 755f636f niform vec2 u_co │ │ │ │ - 0x00d52400 6e747261 73744761 6d6d613b 200a2020 ntrastGamma; . │ │ │ │ - 0x00d52410 756e6966 6f726d20 666c6f61 7420755f uniform float u_ │ │ │ │ - 0x00d52420 6f706163 6974793b 200a2020 756e6966 opacity; . unif │ │ │ │ - 0x00d52430 6f726d20 666c6f61 7420755f 7a536361 orm float u_zSca │ │ │ │ - 0x00d52440 6c653b20 0a202075 6e69666f 726d2066 le; . uniform f │ │ │ │ - 0x00d52450 6c6f6174 20755f69 6e746572 706f6c61 loat u_interpola │ │ │ │ - 0x00d52460 74696f6e 3b200a20 20756e69 666f726d tion; . uniform │ │ │ │ - 0x00d52470 20666c6f 61742075 5f69734f 75746c69 float u_isOutli │ │ │ │ - 0x00d52480 6e655061 73733b20 0a202063 6f6e7374 nePass; . const │ │ │ │ - 0x00d52490 20666c6f 6174206b 53686170 65436f6f float kShapeCoo │ │ │ │ - 0x00d524a0 72645363 616c6172 203d2031 3030302e rdScalar = 1000. │ │ │ │ - 0x00d524b0 303b200a 20207665 63342061 70706c79 0; . vec4 apply │ │ │ │ - 0x00d524c0 5069766f 74547261 6e73666f 726d2876 PivotTransform(v │ │ │ │ - 0x00d524d0 65633420 7069766f 742c206d 61743420 ec4 pivot, mat4 │ │ │ │ - 0x00d524e0 7069766f 74547261 6e73666f 726d2c20 pivotTransform, │ │ │ │ - 0x00d524f0 666c6f61 74207069 766f7452 65616c5a float pivotRealZ │ │ │ │ - 0x00d52500 29200a20 207b200a 20202020 76656334 ) . { . vec4 │ │ │ │ - 0x00d52510 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ - 0x00d52520 74203d20 7069766f 743b200a 20202020 t = pivot; . │ │ │ │ - 0x00d52530 666c6f61 74207720 3d207472 616e7366 float w = transf │ │ │ │ - 0x00d52540 6f726d65 64506976 6f742e77 3b200a20 ormedPivot.w; . │ │ │ │ - 0x00d52550 20202074 72616e73 666f726d 65645069 transformedPi │ │ │ │ - 0x00d52560 766f742e 78797720 3d202870 69766f74 vot.xyw = (pivot │ │ │ │ - 0x00d52570 5472616e 73666f72 6d202a20 76656334 Transform * vec4 │ │ │ │ - 0x00d52580 28747261 6e73666f 726d6564 5069766f (transformedPivo │ │ │ │ - 0x00d52590 742e7879 2c207069 766f7452 65616c5a t.xy, pivotRealZ │ │ │ │ - 0x00d525a0 2c207729 292e7879 773b200a 20202020 , w)).xyw; . │ │ │ │ - 0x00d525b0 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ - 0x00d525c0 2e7a202a 3d207472 616e7366 6f726d65 .z *= transforme │ │ │ │ - 0x00d525d0 64506976 6f742e77 202f2077 3b200a20 dPivot.w / w; . │ │ │ │ - 0x00d525e0 20236966 64656620 56554c4b 414e200a #ifdef VULKAN . │ │ │ │ - 0x00d525f0 20202020 7472616e 73666f72 6d656450 transformedP │ │ │ │ - 0x00d52600 69766f74 2e79203d 202d7472 616e7366 ivot.y = -transf │ │ │ │ - 0x00d52610 6f726d65 64506976 6f742e79 3b200a20 ormedPivot.y; . │ │ │ │ - 0x00d52620 20202074 72616e73 666f726d 65645069 transformedPi │ │ │ │ - 0x00d52630 766f742e 7a203d20 28747261 6e73666f vot.z = (transfo │ │ │ │ - 0x00d52640 726d6564 5069766f 742e7a20 202b2074 rmedPivot.z + t │ │ │ │ - 0x00d52650 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ - 0x00d52660 7729202f 20322e30 3b200a20 2023656e w) / 2.0; . #en │ │ │ │ - 0x00d52670 64696620 0a202020 20726574 75726e20 dif . return │ │ │ │ - 0x00d52680 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ - 0x00d52690 3b200a20 207d200a 20207665 63342061 ; . } . vec4 a │ │ │ │ - 0x00d526a0 70706c79 42696c6c 626f6172 64506976 pplyBillboardPiv │ │ │ │ - 0x00d526b0 6f745472 616e7366 6f726d28 76656334 otTransform(vec4 │ │ │ │ - 0x00d526c0 20706976 6f742c20 6d617434 20706976 pivot, mat4 piv │ │ │ │ - 0x00d526d0 6f745472 616e7366 6f726d2c 20666c6f otTransform, flo │ │ │ │ - 0x00d526e0 61742070 69766f74 5265616c 5a2c2076 at pivotRealZ, v │ │ │ │ - 0x00d526f0 65633220 6f666673 65742920 0a20207b ec2 offset) . { │ │ │ │ - 0x00d52700 200a2020 2020666c 6f617420 6c6f6769 . float logi │ │ │ │ - 0x00d52710 635a203d 20706976 6f742e7a 202f2070 cZ = pivot.z / p │ │ │ │ - 0x00d52720 69766f74 2e773b20 0a202020 20766563 ivot.w; . vec │ │ │ │ - 0x00d52730 34207472 616e7366 6f726d65 64506976 4 transformedPiv │ │ │ │ - 0x00d52740 6f74203d 20706976 6f745472 616e7366 ot = pivotTransf │ │ │ │ - 0x00d52750 6f726d20 2a207665 63342870 69766f74 orm * vec4(pivot │ │ │ │ - 0x00d52760 2e78792c 20706976 6f745265 616c5a2c .xy, pivotRealZ, │ │ │ │ - 0x00d52770 20706976 6f742e77 293b200a 20202020 pivot.w); . │ │ │ │ - 0x00d52780 76656334 20736361 6c65203d 20706976 vec4 scale = piv │ │ │ │ - 0x00d52790 6f745472 616e7366 6f726d20 2a207665 otTransform * ve │ │ │ │ - 0x00d527a0 63342831 2e302c20 2d312e30 2c20302e c4(1.0, -1.0, 0. │ │ │ │ - 0x00d527b0 302c2031 2e30293b 200a2020 20207665 0, 1.0); . ve │ │ │ │ - 0x00d527c0 63342070 6f736974 696f6e20 3d207665 c4 position = ve │ │ │ │ - 0x00d527d0 63342874 72616e73 666f726d 65645069 c4(transformedPi │ │ │ │ - 0x00d527e0 766f742e 7879202f 20747261 6e73666f vot.xy / transfo │ │ │ │ - 0x00d527f0 726d6564 5069766f 742e772c 206c6f67 rmedPivot.w, log │ │ │ │ - 0x00d52800 69635a2c 20312e30 29202b20 76656334 icZ, 1.0) + vec4 │ │ │ │ - 0x00d52810 286f6666 73657420 2f207363 616c652e (offset / scale. │ │ │ │ - 0x00d52820 77202a20 7363616c 652e782c 20302e30 w * scale.x, 0.0 │ │ │ │ - 0x00d52830 2c20302e 30293b20 0a202023 69666465 , 0.0); . #ifde │ │ │ │ - 0x00d52840 66205655 4c4b414e 200a2020 2020706f f VULKAN . po │ │ │ │ - 0x00d52850 73697469 6f6e2e79 203d202d 706f7369 sition.y = -posi │ │ │ │ - 0x00d52860 74696f6e 2e793b20 0a202020 20706f73 tion.y; . pos │ │ │ │ - 0x00d52870 6974696f 6e2e7a20 3d202870 6f736974 ition.z = (posit │ │ │ │ - 0x00d52880 696f6e2e 7a20202b 20706f73 6974696f ion.z + positio │ │ │ │ - 0x00d52890 6e2e7729 202f2032 2e303b20 0a202023 n.w) / 2.0; . # │ │ │ │ - 0x00d528a0 656e6469 66200a20 20202072 65747572 endif . retur │ │ │ │ - 0x00d528b0 6e20706f 73697469 6f6e3b20 0a20207d n position; . } │ │ │ │ - 0x00d528c0 200a2020 76656332 2063616c 634c696e . vec2 calcLin │ │ │ │ - 0x00d528d0 65547261 6e73666f 726d6564 41786973 eTransformedAxis │ │ │ │ - 0x00d528e0 506f7328 76656332 206f7269 67696e61 Pos(vec2 origina │ │ │ │ - 0x00d528f0 6c417869 73506f73 2c207665 63322073 lAxisPos, vec2 s │ │ │ │ - 0x00d52900 68696674 6564506f 732c206d 61743420 hiftedPos, mat4 │ │ │ │ - 0x00d52910 6d6f6465 6c566965 772c2066 6c6f6174 modelView, float │ │ │ │ - 0x00d52920 2068616c 66576964 74682920 0a20207b halfWidth) . { │ │ │ │ - 0x00d52930 200a2020 20207665 63322070 203d2028 . vec2 p = ( │ │ │ │ - 0x00d52940 76656334 28736869 66746564 506f732c vec4(shiftedPos, │ │ │ │ - 0x00d52950 20302e30 2c20312e 3029202a 206d6f64 0.0, 1.0) * mod │ │ │ │ - 0x00d52960 656c5669 6577292e 78793b20 0a202020 elView).xy; . │ │ │ │ - 0x00d52970 20766563 32206420 3d207020 2d206f72 vec2 d = p - or │ │ │ │ - 0x00d52980 6967696e 616c4178 6973506f 733b200a iginalAxisPos; . │ │ │ │ - 0x00d52990 20202020 69662028 646f7428 642c2064 if (dot(d, d │ │ │ │ - 0x00d529a0 2920213d 20302e30 29200a20 20202020 ) != 0.0) . │ │ │ │ - 0x00d529b0 20726574 75726e20 6f726967 696e616c return original │ │ │ │ - 0x00d529c0 41786973 506f7320 2b206e6f 726d616c AxisPos + normal │ │ │ │ - 0x00d529d0 697a6528 6429202a 2068616c 66576964 ize(d) * halfWid │ │ │ │ - 0x00d529e0 74683b20 0a202020 20656c73 65200a20 th; . else . │ │ │ │ - 0x00d529f0 20202020 20726574 75726e20 6f726967 return orig │ │ │ │ - 0x00d52a00 696e616c 41786973 506f733b 200a2020 inalAxisPos; . │ │ │ │ - 0x00d52a10 7d200a20 20766f69 64206d61 696e2829 } . void main() │ │ │ │ - 0x00d52a20 200a2020 7b200a20 20202076 65633420 . { . vec4 │ │ │ │ - 0x00d52a30 706f7320 3d207665 63342861 5f706f73 pos = vec4(a_pos │ │ │ │ - 0x00d52a40 6974696f 6e2e7879 7a2c2031 29202a20 ition.xyz, 1) * │ │ │ │ - 0x00d52a50 755f6d6f 64656c56 6965773b 200a2020 u_modelView; . │ │ │ │ - 0x00d52a60 20207665 63342073 68696674 6564506f vec4 shiftedPo │ │ │ │ - 0x00d52a70 73203d20 76656334 28615f6e 6f726d61 s = vec4(a_norma │ │ │ │ - 0x00d52a80 6c2c2030 2c203029 202b2070 6f733b20 l, 0, 0) + pos; │ │ │ │ - 0x00d52a90 0a202020 20676c5f 506f7369 74696f6e . gl_Position │ │ │ │ - 0x00d52aa0 203d2061 70706c79 5069766f 74547261 = applyPivotTra │ │ │ │ - 0x00d52ab0 6e73666f 726d2873 68696674 6564506f nsform(shiftedPo │ │ │ │ - 0x00d52ac0 73202a20 755f7072 6f6a6563 74696f6e s * u_projection │ │ │ │ - 0x00d52ad0 2c20755f 7069766f 74547261 6e73666f , u_pivotTransfo │ │ │ │ - 0x00d52ae0 726d2c20 302e3029 3b200a20 20202076 rm, 0.0); . v │ │ │ │ - 0x00d52af0 5f636f6c 6f725465 78436f6f 72647320 _colorTexCoords │ │ │ │ - 0x00d52b00 3d20615f 636f6c6f 72546578 436f6f72 = a_colorTexCoor │ │ │ │ - 0x00d52b10 64733b20 0a20207d 200a0000 00000000 ds; . } ....... │ │ │ │ - 0x00d52b20 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d52b30 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d52b40 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d52b50 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d52b60 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d52b70 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d52b80 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d52b90 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d52ba0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d52bb0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d52bc0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d52bd0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d52be0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d52bf0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d52c00 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d52c10 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d52c20 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d52c30 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d52c40 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d52c50 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d52c60 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d52c70 63322076 5f636f6c 6f725465 78436f6f c2 v_colorTexCoo │ │ │ │ - 0x00d52c80 7264733b 200a2020 696e2066 6c6f6174 rds; . in float │ │ │ │ - 0x00d52c90 20765f69 6e74656e 73697479 3b200a20 v_intensity; . │ │ │ │ - 0x00d52ca0 206f7574 20766563 3420765f 46726167 out vec4 v_Frag │ │ │ │ - 0x00d52cb0 436f6c6f 723b200a 2020756e 69666f72 Color; . unifor │ │ │ │ - 0x00d52cc0 6d206d61 74342075 5f6d6f64 656c5669 m mat4 u_modelVi │ │ │ │ - 0x00d52cd0 65773b20 0a202075 6e69666f 726d206d ew; . uniform m │ │ │ │ - 0x00d52ce0 61743420 755f7072 6f6a6563 74696f6e at4 u_projection │ │ │ │ - 0x00d52cf0 3b200a20 20756e69 666f726d 206d6174 ; . uniform mat │ │ │ │ - 0x00d52d00 3420755f 7069766f 74547261 6e73666f 4 u_pivotTransfo │ │ │ │ - 0x00d52d10 726d3b20 0a202075 6e69666f 726d2076 rm; . uniform v │ │ │ │ - 0x00d52d20 65633220 755f636f 6e747261 73744761 ec2 u_contrastGa │ │ │ │ - 0x00d52d30 6d6d613b 200a2020 756e6966 6f726d20 mma; . uniform │ │ │ │ - 0x00d52d40 666c6f61 7420755f 6f706163 6974793b float u_opacity; │ │ │ │ - 0x00d52d50 200a2020 756e6966 6f726d20 666c6f61 . uniform floa │ │ │ │ - 0x00d52d60 7420755f 7a536361 6c653b20 0a202075 t u_zScale; . u │ │ │ │ - 0x00d52d70 6e69666f 726d2066 6c6f6174 20755f69 niform float u_i │ │ │ │ - 0x00d52d80 6e746572 706f6c61 74696f6e 3b200a20 nterpolation; . │ │ │ │ - 0x00d52d90 20756e69 666f726d 20666c6f 61742075 uniform float u │ │ │ │ - 0x00d52da0 5f69734f 75746c69 6e655061 73733b20 _isOutlinePass; │ │ │ │ - 0x00d52db0 0a202075 6e69666f 726d2073 616d706c . uniform sampl │ │ │ │ - 0x00d52dc0 65723244 20755f63 6f6c6f72 5465783b er2D u_colorTex; │ │ │ │ - 0x00d52dd0 200a2020 636f6e73 7420666c 6f617420 . const float │ │ │ │ - 0x00d52de0 6b536861 7065436f 6f726453 63616c61 kShapeCoordScala │ │ │ │ - 0x00d52df0 72203d20 31303030 2e303b20 0a202076 r = 1000.0; . v │ │ │ │ - 0x00d52e00 6f696420 6d61696e 2829200a 20207b20 oid main() . { │ │ │ │ - 0x00d52e10 0a202020 20766563 34206669 6e616c43 . vec4 finalC │ │ │ │ - 0x00d52e20 6f6c6f72 203d2076 65633428 74657874 olor = vec4(text │ │ │ │ - 0x00d52e30 75726528 755f636f 6c6f7254 65782c20 ure(u_colorTex, │ │ │ │ - 0x00d52e40 765f636f 6c6f7254 6578436f 6f726473 v_colorTexCoords │ │ │ │ - 0x00d52e50 292e7267 622c2075 5f6f7061 63697479 ).rgb, u_opacity │ │ │ │ - 0x00d52e60 293b200a 20202020 765f4672 6167436f ); . v_FragCo │ │ │ │ - 0x00d52e70 6c6f7220 3d207665 63342828 765f696e lor = vec4((v_in │ │ │ │ - 0x00d52e80 74656e73 69747920 2a20302e 32202b20 tensity * 0.2 + │ │ │ │ - 0x00d52e90 302e3829 202a2066 696e616c 436f6c6f 0.8) * finalColo │ │ │ │ - 0x00d52ea0 722e7267 622c2066 696e616c 436f6c6f r.rgb, finalColo │ │ │ │ - 0x00d52eb0 722e6129 3b200a20 207d200a 00000000 r.a); . } ..... │ │ │ │ - 0x00d52ec0 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d52ed0 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d52ee0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d52ef0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d52f00 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d52f10 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d52f20 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d52f30 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d52f40 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d52f50 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d52f60 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d52f70 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d52f80 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d52f90 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d52fa0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d52fb0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d52fc0 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d52fd0 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d52fe0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d52ff0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d53000 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d53010 63342061 5f706f73 6974696f 6e3b200a c4 a_position; . │ │ │ │ - 0x00d53020 2020696e 20766563 3220615f 6e6f726d in vec2 a_norm │ │ │ │ - 0x00d53030 616c3b20 0a202069 6e207665 63322061 al; . in vec2 a │ │ │ │ - 0x00d53040 5f636f6c 6f725465 78436f6f 7264733b _colorTexCoords; │ │ │ │ - 0x00d53050 200a2020 6f757420 76656332 20765f63 . out vec2 v_c │ │ │ │ - 0x00d53060 6f6c6f72 54657843 6f6f7264 733b200a olorTexCoords; . │ │ │ │ - 0x00d53070 2020756e 69666f72 6d206d61 74342075 uniform mat4 u │ │ │ │ - 0x00d53080 5f6d6f64 656c5669 65773b20 0a202075 _modelView; . u │ │ │ │ - 0x00d53090 6e69666f 726d206d 61743420 755f7072 niform mat4 u_pr │ │ │ │ - 0x00d530a0 6f6a6563 74696f6e 3b200a20 20756e69 ojection; . uni │ │ │ │ - 0x00d530b0 666f726d 206d6174 3420755f 7069766f form mat4 u_pivo │ │ │ │ - 0x00d530c0 74547261 6e73666f 726d3b20 0a202075 tTransform; . u │ │ │ │ - 0x00d530d0 6e69666f 726d2076 65633220 755f636f niform vec2 u_co │ │ │ │ - 0x00d530e0 6e747261 73744761 6d6d613b 200a2020 ntrastGamma; . │ │ │ │ - 0x00d530f0 756e6966 6f726d20 666c6f61 7420755f uniform float u_ │ │ │ │ - 0x00d53100 6f706163 6974793b 200a2020 756e6966 opacity; . unif │ │ │ │ - 0x00d53110 6f726d20 666c6f61 7420755f 7a536361 orm float u_zSca │ │ │ │ - 0x00d53120 6c653b20 0a202075 6e69666f 726d2066 le; . uniform f │ │ │ │ - 0x00d53130 6c6f6174 20755f69 6e746572 706f6c61 loat u_interpola │ │ │ │ - 0x00d53140 74696f6e 3b200a20 20756e69 666f726d tion; . uniform │ │ │ │ - 0x00d53150 20666c6f 61742075 5f69734f 75746c69 float u_isOutli │ │ │ │ - 0x00d53160 6e655061 73733b20 0a202063 6f6e7374 nePass; . const │ │ │ │ - 0x00d53170 20666c6f 6174206b 53686170 65436f6f float kShapeCoo │ │ │ │ - 0x00d53180 72645363 616c6172 203d2031 3030302e rdScalar = 1000. │ │ │ │ - 0x00d53190 303b200a 20207665 63342061 70706c79 0; . vec4 apply │ │ │ │ - 0x00d531a0 5069766f 74547261 6e73666f 726d2876 PivotTransform(v │ │ │ │ - 0x00d531b0 65633420 7069766f 742c206d 61743420 ec4 pivot, mat4 │ │ │ │ - 0x00d531c0 7069766f 74547261 6e73666f 726d2c20 pivotTransform, │ │ │ │ - 0x00d531d0 666c6f61 74207069 766f7452 65616c5a float pivotRealZ │ │ │ │ - 0x00d531e0 29200a20 207b200a 20202020 76656334 ) . { . vec4 │ │ │ │ - 0x00d531f0 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ - 0x00d53200 74203d20 7069766f 743b200a 20202020 t = pivot; . │ │ │ │ - 0x00d53210 666c6f61 74207720 3d207472 616e7366 float w = transf │ │ │ │ - 0x00d53220 6f726d65 64506976 6f742e77 3b200a20 ormedPivot.w; . │ │ │ │ - 0x00d53230 20202074 72616e73 666f726d 65645069 transformedPi │ │ │ │ - 0x00d53240 766f742e 78797720 3d202870 69766f74 vot.xyw = (pivot │ │ │ │ - 0x00d53250 5472616e 73666f72 6d202a20 76656334 Transform * vec4 │ │ │ │ - 0x00d53260 28747261 6e73666f 726d6564 5069766f (transformedPivo │ │ │ │ - 0x00d53270 742e7879 2c207069 766f7452 65616c5a t.xy, pivotRealZ │ │ │ │ - 0x00d53280 2c207729 292e7879 773b200a 20202020 , w)).xyw; . │ │ │ │ - 0x00d53290 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ - 0x00d532a0 2e7a202a 3d207472 616e7366 6f726d65 .z *= transforme │ │ │ │ - 0x00d532b0 64506976 6f742e77 202f2077 3b200a20 dPivot.w / w; . │ │ │ │ - 0x00d532c0 20236966 64656620 56554c4b 414e200a #ifdef VULKAN . │ │ │ │ - 0x00d532d0 20202020 7472616e 73666f72 6d656450 transformedP │ │ │ │ - 0x00d532e0 69766f74 2e79203d 202d7472 616e7366 ivot.y = -transf │ │ │ │ - 0x00d532f0 6f726d65 64506976 6f742e79 3b200a20 ormedPivot.y; . │ │ │ │ - 0x00d53300 20202074 72616e73 666f726d 65645069 transformedPi │ │ │ │ - 0x00d53310 766f742e 7a203d20 28747261 6e73666f vot.z = (transfo │ │ │ │ - 0x00d53320 726d6564 5069766f 742e7a20 202b2074 rmedPivot.z + t │ │ │ │ - 0x00d53330 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ - 0x00d53340 7729202f 20322e30 3b200a20 2023656e w) / 2.0; . #en │ │ │ │ - 0x00d53350 64696620 0a202020 20726574 75726e20 dif . return │ │ │ │ - 0x00d53360 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ - 0x00d53370 3b200a20 207d200a 20207665 63342061 ; . } . vec4 a │ │ │ │ - 0x00d53380 70706c79 42696c6c 626f6172 64506976 pplyBillboardPiv │ │ │ │ - 0x00d53390 6f745472 616e7366 6f726d28 76656334 otTransform(vec4 │ │ │ │ - 0x00d533a0 20706976 6f742c20 6d617434 20706976 pivot, mat4 piv │ │ │ │ - 0x00d533b0 6f745472 616e7366 6f726d2c 20666c6f otTransform, flo │ │ │ │ - 0x00d533c0 61742070 69766f74 5265616c 5a2c2076 at pivotRealZ, v │ │ │ │ - 0x00d533d0 65633220 6f666673 65742920 0a20207b ec2 offset) . { │ │ │ │ - 0x00d533e0 200a2020 2020666c 6f617420 6c6f6769 . float logi │ │ │ │ - 0x00d533f0 635a203d 20706976 6f742e7a 202f2070 cZ = pivot.z / p │ │ │ │ - 0x00d53400 69766f74 2e773b20 0a202020 20766563 ivot.w; . vec │ │ │ │ - 0x00d53410 34207472 616e7366 6f726d65 64506976 4 transformedPiv │ │ │ │ - 0x00d53420 6f74203d 20706976 6f745472 616e7366 ot = pivotTransf │ │ │ │ - 0x00d53430 6f726d20 2a207665 63342870 69766f74 orm * vec4(pivot │ │ │ │ - 0x00d53440 2e78792c 20706976 6f745265 616c5a2c .xy, pivotRealZ, │ │ │ │ - 0x00d53450 20706976 6f742e77 293b200a 20202020 pivot.w); . │ │ │ │ - 0x00d53460 76656334 20736361 6c65203d 20706976 vec4 scale = piv │ │ │ │ - 0x00d53470 6f745472 616e7366 6f726d20 2a207665 otTransform * ve │ │ │ │ - 0x00d53480 63342831 2e302c20 2d312e30 2c20302e c4(1.0, -1.0, 0. │ │ │ │ - 0x00d53490 302c2031 2e30293b 200a2020 20207665 0, 1.0); . ve │ │ │ │ - 0x00d534a0 63342070 6f736974 696f6e20 3d207665 c4 position = ve │ │ │ │ - 0x00d534b0 63342874 72616e73 666f726d 65645069 c4(transformedPi │ │ │ │ - 0x00d534c0 766f742e 7879202f 20747261 6e73666f vot.xy / transfo │ │ │ │ - 0x00d534d0 726d6564 5069766f 742e772c 206c6f67 rmedPivot.w, log │ │ │ │ - 0x00d534e0 69635a2c 20312e30 29202b20 76656334 icZ, 1.0) + vec4 │ │ │ │ - 0x00d534f0 286f6666 73657420 2f207363 616c652e (offset / scale. │ │ │ │ - 0x00d53500 77202a20 7363616c 652e782c 20302e30 w * scale.x, 0.0 │ │ │ │ - 0x00d53510 2c20302e 30293b20 0a202023 69666465 , 0.0); . #ifde │ │ │ │ - 0x00d53520 66205655 4c4b414e 200a2020 2020706f f VULKAN . po │ │ │ │ - 0x00d53530 73697469 6f6e2e79 203d202d 706f7369 sition.y = -posi │ │ │ │ - 0x00d53540 74696f6e 2e793b20 0a202020 20706f73 tion.y; . pos │ │ │ │ - 0x00d53550 6974696f 6e2e7a20 3d202870 6f736974 ition.z = (posit │ │ │ │ - 0x00d53560 696f6e2e 7a20202b 20706f73 6974696f ion.z + positio │ │ │ │ - 0x00d53570 6e2e7729 202f2032 2e303b20 0a202023 n.w) / 2.0; . # │ │ │ │ - 0x00d53580 656e6469 66200a20 20202072 65747572 endif . retur │ │ │ │ - 0x00d53590 6e20706f 73697469 6f6e3b20 0a20207d n position; . } │ │ │ │ - 0x00d535a0 200a2020 76656332 2063616c 634c696e . vec2 calcLin │ │ │ │ - 0x00d535b0 65547261 6e73666f 726d6564 41786973 eTransformedAxis │ │ │ │ - 0x00d535c0 506f7328 76656332 206f7269 67696e61 Pos(vec2 origina │ │ │ │ - 0x00d535d0 6c417869 73506f73 2c207665 63322073 lAxisPos, vec2 s │ │ │ │ - 0x00d535e0 68696674 6564506f 732c206d 61743420 hiftedPos, mat4 │ │ │ │ - 0x00d535f0 6d6f6465 6c566965 772c2066 6c6f6174 modelView, float │ │ │ │ - 0x00d53600 2068616c 66576964 74682920 0a20207b halfWidth) . { │ │ │ │ - 0x00d53610 200a2020 20207665 63322070 203d2028 . vec2 p = ( │ │ │ │ - 0x00d53620 76656334 28736869 66746564 506f732c vec4(shiftedPos, │ │ │ │ - 0x00d53630 20302e30 2c20312e 3029202a 206d6f64 0.0, 1.0) * mod │ │ │ │ - 0x00d53640 656c5669 6577292e 78793b20 0a202020 elView).xy; . │ │ │ │ - 0x00d53650 20766563 32206420 3d207020 2d206f72 vec2 d = p - or │ │ │ │ - 0x00d53660 6967696e 616c4178 6973506f 733b200a iginalAxisPos; . │ │ │ │ - 0x00d53670 20202020 69662028 646f7428 642c2064 if (dot(d, d │ │ │ │ - 0x00d53680 2920213d 20302e30 29200a20 20202020 ) != 0.0) . │ │ │ │ - 0x00d53690 20726574 75726e20 6f726967 696e616c return original │ │ │ │ - 0x00d536a0 41786973 506f7320 2b206e6f 726d616c AxisPos + normal │ │ │ │ - 0x00d536b0 697a6528 6429202a 2068616c 66576964 ize(d) * halfWid │ │ │ │ - 0x00d536c0 74683b20 0a202020 20656c73 65200a20 th; . else . │ │ │ │ - 0x00d536d0 20202020 20726574 75726e20 6f726967 return orig │ │ │ │ - 0x00d536e0 696e616c 41786973 506f733b 200a2020 inalAxisPos; . │ │ │ │ - 0x00d536f0 7d200a20 20766f69 64206d61 696e2829 } . void main() │ │ │ │ - 0x00d53700 200a2020 7b200a20 20202076 65633420 . { . vec4 │ │ │ │ - 0x00d53710 7069766f 74203d20 76656334 28615f70 pivot = vec4(a_p │ │ │ │ - 0x00d53720 6f736974 696f6e2e 78797a2c 20312e30 osition.xyz, 1.0 │ │ │ │ - 0x00d53730 29202a20 755f6d6f 64656c56 6965773b ) * u_modelView; │ │ │ │ - 0x00d53740 200a2020 20207665 6334206f 66667365 . vec4 offse │ │ │ │ - 0x00d53750 74203d20 76656334 28615f6e 6f726d61 t = vec4(a_norma │ │ │ │ - 0x00d53760 6c2c2030 2e302c20 302e3029 202a2075 l, 0.0, 0.0) * u │ │ │ │ - 0x00d53770 5f70726f 6a656374 696f6e3b 200a2020 _projection; . │ │ │ │ - 0x00d53780 2020676c 5f506f73 6974696f 6e203d20 gl_Position = │ │ │ │ - 0x00d53790 6170706c 7942696c 6c626f61 72645069 applyBillboardPi │ │ │ │ - 0x00d537a0 766f7454 72616e73 666f726d 28706976 votTransform(piv │ │ │ │ - 0x00d537b0 6f74202a 20755f70 726f6a65 6374696f ot * u_projectio │ │ │ │ - 0x00d537c0 6e2c2075 5f706976 6f745472 616e7366 n, u_pivotTransf │ │ │ │ - 0x00d537d0 6f726d2c 200a2020 20202020 20202020 orm, . │ │ │ │ - 0x00d537e0 20202020 20202020 20202020 20202020 │ │ │ │ - 0x00d537f0 20202020 20202020 20202020 20202020 │ │ │ │ - 0x00d53800 20202020 20615f70 6f736974 696f6e2e a_position. │ │ │ │ - 0x00d53810 77202a20 755f7a53 63616c65 2c206f66 w * u_zScale, of │ │ │ │ - 0x00d53820 66736574 2e787929 3b200a20 20202076 fset.xy); . v │ │ │ │ - 0x00d53830 5f636f6c 6f725465 78436f6f 72647320 _colorTexCoords │ │ │ │ - 0x00d53840 3d20615f 636f6c6f 72546578 436f6f72 = a_colorTexCoor │ │ │ │ - 0x00d53850 64733b20 0a20207d 200a0000 00000000 ds; . } ....... │ │ │ │ - 0x00d53860 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d53870 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d53880 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d53890 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d538a0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d538b0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d538c0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d538d0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d538e0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d538f0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d53900 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d53910 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d53920 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d53930 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d53940 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d53950 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d53960 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d53970 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d53980 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d53990 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d539a0 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d539b0 63322076 5f636f6c 6f725465 78436f6f c2 v_colorTexCoo │ │ │ │ - 0x00d539c0 7264733b 200a2020 6f757420 76656334 rds; . out vec4 │ │ │ │ - 0x00d539d0 20765f46 72616743 6f6c6f72 3b200a20 v_FragColor; . │ │ │ │ - 0x00d539e0 20756e69 666f726d 206d6174 3420755f uniform mat4 u_ │ │ │ │ - 0x00d539f0 6d6f6465 6c566965 773b200a 2020756e modelView; . un │ │ │ │ - 0x00d53a00 69666f72 6d206d61 74342075 5f70726f iform mat4 u_pro │ │ │ │ - 0x00d53a10 6a656374 696f6e3b 200a2020 756e6966 jection; . unif │ │ │ │ - 0x00d53a20 6f726d20 76656332 20755f63 6f6e7472 orm vec2 u_contr │ │ │ │ - 0x00d53a30 61737447 616d6d61 3b200a20 20756e69 astGamma; . uni │ │ │ │ - 0x00d53a40 666f726d 20766563 3220755f 706f7369 form vec2 u_posi │ │ │ │ - 0x00d53a50 74696f6e 3b200a20 20756e69 666f726d tion; . uniform │ │ │ │ - 0x00d53a60 20666c6f 61742075 5f69734f 75746c69 float u_isOutli │ │ │ │ - 0x00d53a70 6e655061 73733b20 0a202075 6e69666f nePass; . unifo │ │ │ │ - 0x00d53a80 726d2066 6c6f6174 20755f6f 70616369 rm float u_opaci │ │ │ │ - 0x00d53a90 74793b20 0a202075 6e69666f 726d2066 ty; . uniform f │ │ │ │ - 0x00d53aa0 6c6f6174 20755f6c 656e6774 683b200a loat u_length; . │ │ │ │ - 0x00d53ab0 2020756e 69666f72 6d207361 6d706c65 uniform sample │ │ │ │ - 0x00d53ac0 72324420 755f636f 6c6f7254 65783b20 r2D u_colorTex; │ │ │ │ - 0x00d53ad0 0a202063 6f6e7374 20666c6f 6174206b . const float k │ │ │ │ - 0x00d53ae0 53686170 65436f6f 72645363 616c6172 ShapeCoordScalar │ │ │ │ - 0x00d53af0 203d2031 3030302e 303b200a 2020766f = 1000.0; . vo │ │ │ │ - 0x00d53b00 6964206d 61696e28 29200a20 207b200a id main() . { . │ │ │ │ - 0x00d53b10 20202020 76656334 2066696e 616c436f vec4 finalCo │ │ │ │ - 0x00d53b20 6c6f7220 3d207465 78747572 6528755f lor = texture(u_ │ │ │ │ - 0x00d53b30 636f6c6f 72546578 2c20765f 636f6c6f colorTex, v_colo │ │ │ │ - 0x00d53b40 72546578 436f6f72 6473293b 200a2020 rTexCoords); . │ │ │ │ - 0x00d53b50 20206669 6e616c43 6f6c6f72 2e61202a finalColor.a * │ │ │ │ - 0x00d53b60 3d20755f 6f706163 6974793b 200a2020 = u_opacity; . │ │ │ │ - 0x00d53b70 2020765f 46726167 436f6c6f 72203d20 v_FragColor = │ │ │ │ - 0x00d53b80 66696e61 6c436f6c 6f723b20 0a20207d finalColor; . } │ │ │ │ - 0x00d53b90 200a0000 00000000 00000000 00000000 ............... │ │ │ │ - 0x00d53ba0 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d53bb0 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d53bc0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d53bd0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d53be0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d53bf0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d53c00 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d53c10 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d53c20 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d53c30 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d53c40 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d53c50 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d53c60 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d53c70 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d53c80 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d53c90 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d53ca0 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d53cb0 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d53cc0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d53cd0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d53ce0 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d53cf0 63322061 5f706f73 6974696f 6e3b200a c2 a_position; . │ │ │ │ - 0x00d53d00 2020696e 20766563 3220615f 636f6c6f in vec2 a_colo │ │ │ │ - 0x00d53d10 72546578 436f6f72 64733b20 0a20206f rTexCoords; . o │ │ │ │ - 0x00d53d20 75742076 65633220 765f636f 6c6f7254 ut vec2 v_colorT │ │ │ │ - 0x00d53d30 6578436f 6f726473 3b200a20 20756e69 exCoords; . uni │ │ │ │ - 0x00d53d40 666f726d 206d6174 3420755f 6d6f6465 form mat4 u_mode │ │ │ │ - 0x00d53d50 6c566965 773b200a 2020756e 69666f72 lView; . unifor │ │ │ │ - 0x00d53d60 6d206d61 74342075 5f70726f 6a656374 m mat4 u_project │ │ │ │ - 0x00d53d70 696f6e3b 200a2020 756e6966 6f726d20 ion; . uniform │ │ │ │ - 0x00d53d80 76656332 20755f63 6f6e7472 61737447 vec2 u_contrastG │ │ │ │ - 0x00d53d90 616d6d61 3b200a20 20756e69 666f726d amma; . uniform │ │ │ │ - 0x00d53da0 20766563 3220755f 706f7369 74696f6e vec2 u_position │ │ │ │ - 0x00d53db0 3b200a20 20756e69 666f726d 20666c6f ; . uniform flo │ │ │ │ - 0x00d53dc0 61742075 5f69734f 75746c69 6e655061 at u_isOutlinePa │ │ │ │ - 0x00d53dd0 73733b20 0a202075 6e69666f 726d2066 ss; . uniform f │ │ │ │ - 0x00d53de0 6c6f6174 20755f6f 70616369 74793b20 loat u_opacity; │ │ │ │ - 0x00d53df0 0a202075 6e69666f 726d2066 6c6f6174 . uniform float │ │ │ │ - 0x00d53e00 20755f6c 656e6774 683b200a 2020636f u_length; . co │ │ │ │ - 0x00d53e10 6e737420 666c6f61 74206b53 68617065 nst float kShape │ │ │ │ - 0x00d53e20 436f6f72 64536361 6c617220 3d203130 CoordScalar = 10 │ │ │ │ - 0x00d53e30 30302e30 3b200a20 20766563 34206170 00.0; . vec4 ap │ │ │ │ - 0x00d53e40 706c7950 69766f74 5472616e 73666f72 plyPivotTransfor │ │ │ │ - 0x00d53e50 6d287665 63342070 69766f74 2c206d61 m(vec4 pivot, ma │ │ │ │ - 0x00d53e60 74342070 69766f74 5472616e 73666f72 t4 pivotTransfor │ │ │ │ - 0x00d53e70 6d2c2066 6c6f6174 20706976 6f745265 m, float pivotRe │ │ │ │ - 0x00d53e80 616c5a29 200a2020 7b200a20 20202076 alZ) . { . v │ │ │ │ - 0x00d53e90 65633420 7472616e 73666f72 6d656450 ec4 transformedP │ │ │ │ - 0x00d53ea0 69766f74 203d2070 69766f74 3b200a20 ivot = pivot; . │ │ │ │ - 0x00d53eb0 20202066 6c6f6174 2077203d 20747261 float w = tra │ │ │ │ - 0x00d53ec0 6e73666f 726d6564 5069766f 742e773b nsformedPivot.w; │ │ │ │ - 0x00d53ed0 200a2020 20207472 616e7366 6f726d65 . transforme │ │ │ │ - 0x00d53ee0 64506976 6f742e78 7977203d 20287069 dPivot.xyw = (pi │ │ │ │ - 0x00d53ef0 766f7454 72616e73 666f726d 202a2076 votTransform * v │ │ │ │ - 0x00d53f00 65633428 7472616e 73666f72 6d656450 ec4(transformedP │ │ │ │ - 0x00d53f10 69766f74 2e78792c 20706976 6f745265 ivot.xy, pivotRe │ │ │ │ - 0x00d53f20 616c5a2c 20772929 2e787977 3b200a20 alZ, w)).xyw; . │ │ │ │ - 0x00d53f30 20202074 72616e73 666f726d 65645069 transformedPi │ │ │ │ - 0x00d53f40 766f742e 7a202a3d 20747261 6e73666f vot.z *= transfo │ │ │ │ - 0x00d53f50 726d6564 5069766f 742e7720 2f20773b rmedPivot.w / w; │ │ │ │ - 0x00d53f60 200a2020 23696664 65662056 554c4b41 . #ifdef VULKA │ │ │ │ - 0x00d53f70 4e200a20 20202074 72616e73 666f726d N . transform │ │ │ │ - 0x00d53f80 65645069 766f742e 79203d20 2d747261 edPivot.y = -tra │ │ │ │ - 0x00d53f90 6e73666f 726d6564 5069766f 742e793b nsformedPivot.y; │ │ │ │ - 0x00d53fa0 200a2020 20207472 616e7366 6f726d65 . transforme │ │ │ │ - 0x00d53fb0 64506976 6f742e7a 203d2028 7472616e dPivot.z = (tran │ │ │ │ - 0x00d53fc0 73666f72 6d656450 69766f74 2e7a2020 sformedPivot.z │ │ │ │ - 0x00d53fd0 2b207472 616e7366 6f726d65 64506976 + transformedPiv │ │ │ │ - 0x00d53fe0 6f742e77 29202f20 322e303b 200a2020 ot.w) / 2.0; . │ │ │ │ - 0x00d53ff0 23656e64 6966200a 20202020 72657475 #endif . retu │ │ │ │ - 0x00d54000 726e2074 72616e73 666f726d 65645069 rn transformedPi │ │ │ │ - 0x00d54010 766f743b 200a2020 7d200a20 20766563 vot; . } . vec │ │ │ │ - 0x00d54020 34206170 706c7942 696c6c62 6f617264 4 applyBillboard │ │ │ │ - 0x00d54030 5069766f 74547261 6e73666f 726d2876 PivotTransform(v │ │ │ │ - 0x00d54040 65633420 7069766f 742c206d 61743420 ec4 pivot, mat4 │ │ │ │ - 0x00d54050 7069766f 74547261 6e73666f 726d2c20 pivotTransform, │ │ │ │ - 0x00d54060 666c6f61 74207069 766f7452 65616c5a float pivotRealZ │ │ │ │ - 0x00d54070 2c207665 6332206f 66667365 7429200a , vec2 offset) . │ │ │ │ - 0x00d54080 20207b20 0a202020 20666c6f 6174206c { . float l │ │ │ │ - 0x00d54090 6f676963 5a203d20 7069766f 742e7a20 ogicZ = pivot.z │ │ │ │ - 0x00d540a0 2f207069 766f742e 773b200a 20202020 / pivot.w; . │ │ │ │ - 0x00d540b0 76656334 20747261 6e73666f 726d6564 vec4 transformed │ │ │ │ - 0x00d540c0 5069766f 74203d20 7069766f 74547261 Pivot = pivotTra │ │ │ │ - 0x00d540d0 6e73666f 726d202a 20766563 34287069 nsform * vec4(pi │ │ │ │ - 0x00d540e0 766f742e 78792c20 7069766f 74526561 vot.xy, pivotRea │ │ │ │ - 0x00d540f0 6c5a2c20 7069766f 742e7729 3b200a20 lZ, pivot.w); . │ │ │ │ - 0x00d54100 20202076 65633420 7363616c 65203d20 vec4 scale = │ │ │ │ - 0x00d54110 7069766f 74547261 6e73666f 726d202a pivotTransform * │ │ │ │ - 0x00d54120 20766563 3428312e 302c202d 312e302c vec4(1.0, -1.0, │ │ │ │ - 0x00d54130 20302e30 2c20312e 30293b20 0a202020 0.0, 1.0); . │ │ │ │ - 0x00d54140 20766563 3420706f 73697469 6f6e203d vec4 position = │ │ │ │ - 0x00d54150 20766563 34287472 616e7366 6f726d65 vec4(transforme │ │ │ │ - 0x00d54160 64506976 6f742e78 79202f20 7472616e dPivot.xy / tran │ │ │ │ - 0x00d54170 73666f72 6d656450 69766f74 2e772c20 sformedPivot.w, │ │ │ │ - 0x00d54180 6c6f6769 635a2c20 312e3029 202b2076 logicZ, 1.0) + v │ │ │ │ - 0x00d54190 65633428 6f666673 6574202f 20736361 ec4(offset / sca │ │ │ │ - 0x00d541a0 6c652e77 202a2073 63616c65 2e782c20 le.w * scale.x, │ │ │ │ - 0x00d541b0 302e302c 20302e30 293b200a 20202369 0.0, 0.0); . #i │ │ │ │ - 0x00d541c0 66646566 2056554c 4b414e20 0a202020 fdef VULKAN . │ │ │ │ - 0x00d541d0 20706f73 6974696f 6e2e7920 3d202d70 position.y = -p │ │ │ │ - 0x00d541e0 6f736974 696f6e2e 793b200a 20202020 osition.y; . │ │ │ │ - 0x00d541f0 706f7369 74696f6e 2e7a203d 2028706f position.z = (po │ │ │ │ - 0x00d54200 73697469 6f6e2e7a 20202b20 706f7369 sition.z + posi │ │ │ │ - 0x00d54210 74696f6e 2e772920 2f20322e 303b200a tion.w) / 2.0; . │ │ │ │ - 0x00d54220 20202365 6e646966 200a2020 20207265 #endif . re │ │ │ │ - 0x00d54230 7475726e 20706f73 6974696f 6e3b200a turn position; . │ │ │ │ - 0x00d54240 20207d20 0a202076 65633220 63616c63 } . vec2 calc │ │ │ │ - 0x00d54250 4c696e65 5472616e 73666f72 6d656441 LineTransformedA │ │ │ │ - 0x00d54260 78697350 6f732876 65633220 6f726967 xisPos(vec2 orig │ │ │ │ - 0x00d54270 696e616c 41786973 506f732c 20766563 inalAxisPos, vec │ │ │ │ - 0x00d54280 32207368 69667465 64506f73 2c206d61 2 shiftedPos, ma │ │ │ │ - 0x00d54290 7434206d 6f64656c 56696577 2c20666c t4 modelView, fl │ │ │ │ - 0x00d542a0 6f617420 68616c66 57696474 6829200a oat halfWidth) . │ │ │ │ - 0x00d542b0 20207b20 0a202020 20766563 32207020 { . vec2 p │ │ │ │ - 0x00d542c0 3d202876 65633428 73686966 74656450 = (vec4(shiftedP │ │ │ │ - 0x00d542d0 6f732c20 302e302c 20312e30 29202a20 os, 0.0, 1.0) * │ │ │ │ - 0x00d542e0 6d6f6465 6c566965 77292e78 793b200a modelView).xy; . │ │ │ │ - 0x00d542f0 20202020 76656332 2064203d 2070202d vec2 d = p - │ │ │ │ - 0x00d54300 206f7269 67696e61 6c417869 73506f73 originalAxisPos │ │ │ │ - 0x00d54310 3b200a20 20202069 66202864 6f742864 ; . if (dot(d │ │ │ │ - 0x00d54320 2c206429 20213d20 302e3029 200a2020 , d) != 0.0) . │ │ │ │ - 0x00d54330 20202020 72657475 726e206f 72696769 return origi │ │ │ │ - 0x00d54340 6e616c41 78697350 6f73202b 206e6f72 nalAxisPos + nor │ │ │ │ - 0x00d54350 6d616c69 7a652864 29202a20 68616c66 malize(d) * half │ │ │ │ - 0x00d54360 57696474 683b200a 20202020 656c7365 Width; . else │ │ │ │ - 0x00d54370 200a2020 20202020 72657475 726e206f . return o │ │ │ │ - 0x00d54380 72696769 6e616c41 78697350 6f733b20 riginalAxisPos; │ │ │ │ - 0x00d54390 0a20207d 200a2020 766f6964 206d6169 . } . void mai │ │ │ │ - 0x00d543a0 6e282920 0a20207b 200a2020 2020676c n() . { . gl │ │ │ │ - 0x00d543b0 5f506f73 6974696f 6e203d20 76656334 _Position = vec4 │ │ │ │ - 0x00d543c0 28615f70 6f736974 696f6e2c 20302c20 (a_position, 0, │ │ │ │ - 0x00d543d0 3129202a 20755f6d 6f64656c 56696577 1) * u_modelView │ │ │ │ - 0x00d543e0 202a2075 5f70726f 6a656374 696f6e3b * u_projection; │ │ │ │ - 0x00d543f0 200a2020 23696664 65662056 554c4b41 . #ifdef VULKA │ │ │ │ - 0x00d54400 4e200a20 20202067 6c5f506f 73697469 N . gl_Positi │ │ │ │ - 0x00d54410 6f6e2e79 203d202d 676c5f50 6f736974 on.y = -gl_Posit │ │ │ │ - 0x00d54420 696f6e2e 793b200a 20202020 676c5f50 ion.y; . gl_P │ │ │ │ - 0x00d54430 6f736974 696f6e2e 7a203d20 28676c5f osition.z = (gl_ │ │ │ │ - 0x00d54440 506f7369 74696f6e 2e7a2020 2b20676c Position.z + gl │ │ │ │ - 0x00d54450 5f506f73 6974696f 6e2e7729 202a2030 _Position.w) * 0 │ │ │ │ - 0x00d54460 2e353b20 0a202023 656e6469 66200a20 .5; . #endif . │ │ │ │ - 0x00d54470 20202076 5f636f6c 6f725465 78436f6f v_colorTexCoo │ │ │ │ - 0x00d54480 72647320 3d20615f 636f6c6f 72546578 rds = a_colorTex │ │ │ │ - 0x00d54490 436f6f72 64733b20 0a20207d 200a0000 Coords; . } ... │ │ │ │ - 0x00d544a0 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d544b0 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d544c0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d544d0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d544e0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d544f0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d54500 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d54510 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d54520 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d54530 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d54540 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d54550 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d54560 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d54570 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d54580 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d54590 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d545a0 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d545b0 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d545c0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d545d0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d545e0 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d545f0 63322076 5f636f6c 6f725465 78436f6f c2 v_colorTexCoo │ │ │ │ - 0x00d54600 7264733b 200a2020 6f757420 76656334 rds; . out vec4 │ │ │ │ - 0x00d54610 20765f46 72616743 6f6c6f72 3b200a20 v_FragColor; . │ │ │ │ - 0x00d54620 20756e69 666f726d 206d6174 3420755f uniform mat4 u_ │ │ │ │ - 0x00d54630 6d6f6465 6c566965 773b200a 2020756e modelView; . un │ │ │ │ - 0x00d54640 69666f72 6d206d61 74342075 5f70726f iform mat4 u_pro │ │ │ │ - 0x00d54650 6a656374 696f6e3b 200a2020 756e6966 jection; . unif │ │ │ │ - 0x00d54660 6f726d20 6d617434 20755f70 69766f74 orm mat4 u_pivot │ │ │ │ - 0x00d54670 5472616e 73666f72 6d3b200a 2020756e Transform; . un │ │ │ │ - 0x00d54680 69666f72 6d207665 63342075 5f706f73 iform vec4 u_pos │ │ │ │ - 0x00d54690 6974696f 6e3b200a 2020756e 69666f72 ition; . unifor │ │ │ │ - 0x00d546a0 6d207665 63322075 5f6c696e 65506172 m vec2 u_linePar │ │ │ │ - 0x00d546b0 616d733b 200a2020 756e6966 6f726d20 ams; . uniform │ │ │ │ - 0x00d546c0 666c6f61 7420755f 61636375 72616379 float u_accuracy │ │ │ │ - 0x00d546d0 3b200a20 20756e69 666f726d 20666c6f ; . uniform flo │ │ │ │ - 0x00d546e0 61742075 5f7a5363 616c653b 200a2020 at u_zScale; . │ │ │ │ - 0x00d546f0 756e6966 6f726d20 666c6f61 7420755f uniform float u_ │ │ │ │ - 0x00d54700 6f706163 6974793b 200a2020 756e6966 opacity; . unif │ │ │ │ - 0x00d54710 6f726d20 666c6f61 7420755f 617a696d orm float u_azim │ │ │ │ - 0x00d54720 75743b20 0a202075 6e69666f 726d2073 ut; . uniform s │ │ │ │ - 0x00d54730 616d706c 65723244 20755f63 6f6c6f72 ampler2D u_color │ │ │ │ - 0x00d54740 5465783b 200a2020 636f6e73 7420666c Tex; . const fl │ │ │ │ - 0x00d54750 6f617420 6b536861 7065436f 6f726453 oat kShapeCoordS │ │ │ │ - 0x00d54760 63616c61 72203d20 31303030 2e303b20 calar = 1000.0; │ │ │ │ - 0x00d54770 0a202076 6f696420 6d61696e 2829200a . void main() . │ │ │ │ - 0x00d54780 20207b20 0a202020 20766563 34206669 { . vec4 fi │ │ │ │ - 0x00d54790 6e616c43 6f6c6f72 203d2074 65787475 nalColor = textu │ │ │ │ - 0x00d547a0 72652875 5f636f6c 6f725465 782c2076 re(u_colorTex, v │ │ │ │ - 0x00d547b0 5f636f6c 6f725465 78436f6f 72647329 _colorTexCoords) │ │ │ │ - 0x00d547c0 3b200a20 20202066 696e616c 436f6c6f ; . finalColo │ │ │ │ - 0x00d547d0 722e6120 2a3d2075 5f6f7061 63697479 r.a *= u_opacity │ │ │ │ - 0x00d547e0 3b200a20 20202076 5f467261 67436f6c ; . v_FragCol │ │ │ │ - 0x00d547f0 6f72203d 2066696e 616c436f 6c6f723b or = finalColor; │ │ │ │ - 0x00d54800 200a2020 7d200a00 00000000 00000000 . } .......... │ │ │ │ - 0x00d54810 00000000 00000000 00000000 00000000 ................ │ │ │ │ - 0x00d54820 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d54830 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d54840 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d54850 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d54860 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d54870 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d54880 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d54890 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d548a0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d548b0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d548c0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d548d0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d548e0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d548f0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d54900 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d54910 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d54920 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d54930 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d54940 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d54950 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d54960 2023656e 64696620 0a202075 6e69666f #endif . unifo │ │ │ │ - 0x00d54970 726d2073 616d706c 65723244 20755f63 rm sampler2D u_c │ │ │ │ - 0x00d54980 6f6c6f72 5465783b 200a2020 696e2076 olorTex; . in v │ │ │ │ - 0x00d54990 65633320 765f7465 78436f6f 7264733b ec3 v_texCoords; │ │ │ │ - 0x00d549a0 200a2020 6f757420 76656334 20765f46 . out vec4 v_F │ │ │ │ - 0x00d549b0 72616743 6f6c6f72 3b200a20 20636f6e ragColor; . con │ │ │ │ - 0x00d549c0 73742066 6c6f6174 206b5368 61706543 st float kShapeC │ │ │ │ - 0x00d549d0 6f6f7264 5363616c 6172203d 20313030 oordScalar = 100 │ │ │ │ - 0x00d549e0 302e303b 200a2020 766f6964 206d6169 0.0; . void mai │ │ │ │ - 0x00d549f0 6e282920 0a20207b 200a2020 2020765f n() . { . v_ │ │ │ │ - 0x00d54a00 46726167 436f6c6f 72203d20 74657874 FragColor = text │ │ │ │ - 0x00d54a10 75726528 755f636f 6c6f7254 65782c20 ure(u_colorTex, │ │ │ │ - 0x00d54a20 765f7465 78436f6f 7264732e 7879293b v_texCoords.xy); │ │ │ │ - 0x00d54a30 200a2020 7d200a00 00000000 00000000 . } .......... │ │ │ │ - 0x00d54a40 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d54a50 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d54a60 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d54a70 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d54a80 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d54a90 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d54aa0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d54ab0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d54ac0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d54ad0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d54ae0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d54af0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d54b00 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d54b10 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d54b20 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d54b30 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d54b40 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d54b50 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d54b60 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d54b70 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d54b80 2023656e 64696620 0a202023 64656669 #endif . #defi │ │ │ │ - 0x00d54b90 6e652054 494c455f 4241434b 47524f55 ne TILE_BACKGROU │ │ │ │ - 0x00d54ba0 4e445f4d 41585f43 4f554e54 20363420 ND_MAX_COUNT 64 │ │ │ │ - 0x00d54bb0 0a20206f 75742076 65633320 765f7465 . out vec3 v_te │ │ │ │ - 0x00d54bc0 78436f6f 7264733b 200a2020 756e6966 xCoords; . unif │ │ │ │ - 0x00d54bd0 6f726d20 76656334 20755f74 696c6543 orm vec4 u_tileC │ │ │ │ - 0x00d54be0 6f6f7264 734d696e 4d61785b 54494c45 oordsMinMax[TILE │ │ │ │ - 0x00d54bf0 5f424143 4b47524f 554e445f 4d41585f _BACKGROUND_MAX_ │ │ │ │ - 0x00d54c00 434f554e 545d3b20 0a202075 6e69666f COUNT]; . unifo │ │ │ │ - 0x00d54c10 726d2069 6e742075 5f746578 74757265 rm int u_texture │ │ │ │ - 0x00d54c20 496e6465 785b5449 4c455f42 41434b47 Index[TILE_BACKG │ │ │ │ - 0x00d54c30 524f554e 445f4d41 585f434f 554e545d ROUND_MAX_COUNT] │ │ │ │ - 0x00d54c40 3b200a20 20756e69 666f726d 206d6174 ; . uniform mat │ │ │ │ - 0x00d54c50 3420755f 6d6f6465 6c566965 773b200a 4 u_modelView; . │ │ │ │ - 0x00d54c60 2020756e 69666f72 6d206d61 74342075 uniform mat4 u │ │ │ │ - 0x00d54c70 5f70726f 6a656374 696f6e3b 200a2020 _projection; . │ │ │ │ - 0x00d54c80 756e6966 6f726d20 6d617434 20755f70 uniform mat4 u_p │ │ │ │ - 0x00d54c90 69766f74 5472616e 73666f72 6d3b200a ivotTransform; . │ │ │ │ - 0x00d54ca0 2020636f 6e737420 666c6f61 74206b53 const float kS │ │ │ │ - 0x00d54cb0 68617065 436f6f72 64536361 6c617220 hapeCoordScalar │ │ │ │ - 0x00d54cc0 3d203130 30302e30 3b200a20 20766563 = 1000.0; . vec │ │ │ │ - 0x00d54cd0 34206170 706c7950 69766f74 5472616e 4 applyPivotTran │ │ │ │ - 0x00d54ce0 73666f72 6d287665 63342070 69766f74 sform(vec4 pivot │ │ │ │ - 0x00d54cf0 2c206d61 74342070 69766f74 5472616e , mat4 pivotTran │ │ │ │ - 0x00d54d00 73666f72 6d2c2066 6c6f6174 20706976 sform, float piv │ │ │ │ - 0x00d54d10 6f745265 616c5a29 200a2020 7b200a20 otRealZ) . { . │ │ │ │ - 0x00d54d20 20202076 65633420 7472616e 73666f72 vec4 transfor │ │ │ │ - 0x00d54d30 6d656450 69766f74 203d2070 69766f74 medPivot = pivot │ │ │ │ - 0x00d54d40 3b200a20 20202066 6c6f6174 2077203d ; . float w = │ │ │ │ - 0x00d54d50 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ - 0x00d54d60 742e773b 200a2020 20207472 616e7366 t.w; . transf │ │ │ │ - 0x00d54d70 6f726d65 64506976 6f742e78 7977203d ormedPivot.xyw = │ │ │ │ - 0x00d54d80 20287069 766f7454 72616e73 666f726d (pivotTransform │ │ │ │ - 0x00d54d90 202a2076 65633428 7472616e 73666f72 * vec4(transfor │ │ │ │ - 0x00d54da0 6d656450 69766f74 2e78792c 20706976 medPivot.xy, piv │ │ │ │ - 0x00d54db0 6f745265 616c5a2c 20772929 2e787977 otRealZ, w)).xyw │ │ │ │ - 0x00d54dc0 3b200a20 20202074 72616e73 666f726d ; . transform │ │ │ │ - 0x00d54dd0 65645069 766f742e 7a202a3d 20747261 edPivot.z *= tra │ │ │ │ - 0x00d54de0 6e73666f 726d6564 5069766f 742e7720 nsformedPivot.w │ │ │ │ - 0x00d54df0 2f20773b 200a2020 23696664 65662056 / w; . #ifdef V │ │ │ │ - 0x00d54e00 554c4b41 4e200a20 20202074 72616e73 ULKAN . trans │ │ │ │ - 0x00d54e10 666f726d 65645069 766f742e 79203d20 formedPivot.y = │ │ │ │ - 0x00d54e20 2d747261 6e73666f 726d6564 5069766f -transformedPivo │ │ │ │ - 0x00d54e30 742e793b 200a2020 20207472 616e7366 t.y; . transf │ │ │ │ - 0x00d54e40 6f726d65 64506976 6f742e7a 203d2028 ormedPivot.z = ( │ │ │ │ - 0x00d54e50 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ - 0x00d54e60 2e7a2020 2b207472 616e7366 6f726d65 .z + transforme │ │ │ │ - 0x00d54e70 64506976 6f742e77 29202f20 322e303b dPivot.w) / 2.0; │ │ │ │ - 0x00d54e80 200a2020 23656e64 6966200a 20202020 . #endif . │ │ │ │ - 0x00d54e90 72657475 726e2074 72616e73 666f726d return transform │ │ │ │ - 0x00d54ea0 65645069 766f743b 200a2020 7d200a20 edPivot; . } . │ │ │ │ - 0x00d54eb0 20766563 34206170 706c7942 696c6c62 vec4 applyBillb │ │ │ │ - 0x00d54ec0 6f617264 5069766f 74547261 6e73666f oardPivotTransfo │ │ │ │ - 0x00d54ed0 726d2876 65633420 7069766f 742c206d rm(vec4 pivot, m │ │ │ │ - 0x00d54ee0 61743420 7069766f 74547261 6e73666f at4 pivotTransfo │ │ │ │ - 0x00d54ef0 726d2c20 666c6f61 74207069 766f7452 rm, float pivotR │ │ │ │ - 0x00d54f00 65616c5a 2c207665 6332206f 66667365 ealZ, vec2 offse │ │ │ │ - 0x00d54f10 7429200a 20207b20 0a202020 20666c6f t) . { . flo │ │ │ │ - 0x00d54f20 6174206c 6f676963 5a203d20 7069766f at logicZ = pivo │ │ │ │ - 0x00d54f30 742e7a20 2f207069 766f742e 773b200a t.z / pivot.w; . │ │ │ │ - 0x00d54f40 20202020 76656334 20747261 6e73666f vec4 transfo │ │ │ │ - 0x00d54f50 726d6564 5069766f 74203d20 7069766f rmedPivot = pivo │ │ │ │ - 0x00d54f60 74547261 6e73666f 726d202a 20766563 tTransform * vec │ │ │ │ - 0x00d54f70 34287069 766f742e 78792c20 7069766f 4(pivot.xy, pivo │ │ │ │ - 0x00d54f80 74526561 6c5a2c20 7069766f 742e7729 tRealZ, pivot.w) │ │ │ │ - 0x00d54f90 3b200a20 20202076 65633420 7363616c ; . vec4 scal │ │ │ │ - 0x00d54fa0 65203d20 7069766f 74547261 6e73666f e = pivotTransfo │ │ │ │ - 0x00d54fb0 726d202a 20766563 3428312e 302c202d rm * vec4(1.0, - │ │ │ │ - 0x00d54fc0 312e302c 20302e30 2c20312e 30293b20 1.0, 0.0, 1.0); │ │ │ │ - 0x00d54fd0 0a202020 20766563 3420706f 73697469 . vec4 positi │ │ │ │ - 0x00d54fe0 6f6e203d 20766563 34287472 616e7366 on = vec4(transf │ │ │ │ - 0x00d54ff0 6f726d65 64506976 6f742e78 79202f20 ormedPivot.xy / │ │ │ │ - 0x00d55000 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ - 0x00d55010 2e772c20 6c6f6769 635a2c20 312e3029 .w, logicZ, 1.0) │ │ │ │ - 0x00d55020 202b2076 65633428 6f666673 6574202f + vec4(offset / │ │ │ │ - 0x00d55030 20736361 6c652e77 202a2073 63616c65 scale.w * scale │ │ │ │ - 0x00d55040 2e782c20 302e302c 20302e30 293b200a .x, 0.0, 0.0); . │ │ │ │ - 0x00d55050 20202369 66646566 2056554c 4b414e20 #ifdef VULKAN │ │ │ │ - 0x00d55060 0a202020 20706f73 6974696f 6e2e7920 . position.y │ │ │ │ - 0x00d55070 3d202d70 6f736974 696f6e2e 793b200a = -position.y; . │ │ │ │ - 0x00d55080 20202020 706f7369 74696f6e 2e7a203d position.z = │ │ │ │ - 0x00d55090 2028706f 73697469 6f6e2e7a 20202b20 (position.z + │ │ │ │ - 0x00d550a0 706f7369 74696f6e 2e772920 2f20322e position.w) / 2. │ │ │ │ - 0x00d550b0 303b200a 20202365 6e646966 200a2020 0; . #endif . │ │ │ │ - 0x00d550c0 20207265 7475726e 20706f73 6974696f return positio │ │ │ │ - 0x00d550d0 6e3b200a 20207d20 0a202076 65633220 n; . } . vec2 │ │ │ │ - 0x00d550e0 63616c63 4c696e65 5472616e 73666f72 calcLineTransfor │ │ │ │ - 0x00d550f0 6d656441 78697350 6f732876 65633220 medAxisPos(vec2 │ │ │ │ - 0x00d55100 6f726967 696e616c 41786973 506f732c originalAxisPos, │ │ │ │ - 0x00d55110 20766563 32207368 69667465 64506f73 vec2 shiftedPos │ │ │ │ - 0x00d55120 2c206d61 7434206d 6f64656c 56696577 , mat4 modelView │ │ │ │ - 0x00d55130 2c20666c 6f617420 68616c66 57696474 , float halfWidt │ │ │ │ - 0x00d55140 6829200a 20207b20 0a202020 20766563 h) . { . vec │ │ │ │ - 0x00d55150 32207020 3d202876 65633428 73686966 2 p = (vec4(shif │ │ │ │ - 0x00d55160 74656450 6f732c20 302e302c 20312e30 tedPos, 0.0, 1.0 │ │ │ │ - 0x00d55170 29202a20 6d6f6465 6c566965 77292e78 ) * modelView).x │ │ │ │ - 0x00d55180 793b200a 20202020 76656332 2064203d y; . vec2 d = │ │ │ │ - 0x00d55190 2070202d 206f7269 67696e61 6c417869 p - originalAxi │ │ │ │ - 0x00d551a0 73506f73 3b200a20 20202069 66202864 sPos; . if (d │ │ │ │ - 0x00d551b0 6f742864 2c206429 20213d20 302e3029 ot(d, d) != 0.0) │ │ │ │ - 0x00d551c0 200a2020 20202020 72657475 726e206f . return o │ │ │ │ - 0x00d551d0 72696769 6e616c41 78697350 6f73202b riginalAxisPos + │ │ │ │ - 0x00d551e0 206e6f72 6d616c69 7a652864 29202a20 normalize(d) * │ │ │ │ - 0x00d551f0 68616c66 57696474 683b200a 20202020 halfWidth; . │ │ │ │ - 0x00d55200 656c7365 200a2020 20202020 72657475 else . retu │ │ │ │ - 0x00d55210 726e206f 72696769 6e616c41 78697350 rn originalAxisP │ │ │ │ - 0x00d55220 6f733b20 0a20207d 200a2020 766f6964 os; . } . void │ │ │ │ - 0x00d55230 206d6169 6e282920 0a20207b 200a2020 main() . { . │ │ │ │ - 0x00d55240 20207665 63322071 75616456 65727465 vec2 quadVerte │ │ │ │ - 0x00d55250 78203d20 76656332 28676c5f 56657274 x = vec2(gl_Vert │ │ │ │ - 0x00d55260 65784944 20262031 2c202867 6c5f5665 exID & 1, (gl_Ve │ │ │ │ - 0x00d55270 72746578 4944203e 3e203129 20262031 rtexID >> 1) & 1 │ │ │ │ - 0x00d55280 293b200a 2020200a 20202020 76656334 ); . . vec4 │ │ │ │ - 0x00d55290 2074696c 65436f6f 7264734d 696e4d61 tileCoordsMinMa │ │ │ │ - 0x00d552a0 78203d20 755f7469 6c65436f 6f726473 x = u_tileCoords │ │ │ │ - 0x00d552b0 4d696e4d 61785b67 6c5f496e 7374616e MinMax[gl_Instan │ │ │ │ - 0x00d552c0 63654944 5d3b200a 20202020 76656332 ceID]; . vec2 │ │ │ │ - 0x00d552d0 20776f72 6c64506f 73203d20 6d697828 worldPos = mix( │ │ │ │ - 0x00d552e0 74696c65 436f6f72 64734d69 6e4d6178 tileCoordsMinMax │ │ │ │ - 0x00d552f0 2e78792c 2074696c 65436f6f 7264734d .xy, tileCoordsM │ │ │ │ - 0x00d55300 696e4d61 782e7a77 2c207175 61645665 inMax.zw, quadVe │ │ │ │ - 0x00d55310 72746578 293b200a 20202020 76656334 rtex); . vec4 │ │ │ │ - 0x00d55320 20706f73 203d2076 65633428 776f726c pos = vec4(worl │ │ │ │ - 0x00d55330 64506f73 2c20302e 302c2031 2e302920 dPos, 0.0, 1.0) │ │ │ │ - 0x00d55340 2a20755f 6d6f6465 6c566965 77202a20 * u_modelView * │ │ │ │ - 0x00d55350 755f7072 6f6a6563 74696f6e 3b200a20 u_projection; . │ │ │ │ - 0x00d55360 20202067 6c5f506f 73697469 6f6e203d gl_Position = │ │ │ │ - 0x00d55370 20617070 6c795069 766f7454 72616e73 applyPivotTrans │ │ │ │ - 0x00d55380 666f726d 28706f73 2c20755f 7069766f form(pos, u_pivo │ │ │ │ - 0x00d55390 74547261 6e73666f 726d2c20 302e3029 tTransform, 0.0) │ │ │ │ - 0x00d553a0 3b200a20 20200a20 20202076 5f746578 ; . . v_tex │ │ │ │ - 0x00d553b0 436f6f72 6473203d 20766563 33287175 Coords = vec3(qu │ │ │ │ - 0x00d553c0 61645665 72746578 2c20666c 6f617428 adVertex, float( │ │ │ │ - 0x00d553d0 755f7465 78747572 65496e64 65785b67 u_textureIndex[g │ │ │ │ - 0x00d553e0 6c5f496e 7374616e 63654944 5d29293b l_InstanceID])); │ │ │ │ - 0x00d553f0 200a2020 7d200a00 00000000 00000000 . } .......... │ │ │ │ - 0x00d55400 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d55410 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d55420 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d55430 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d55440 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d55450 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d55460 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d55470 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d55480 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d55490 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d554a0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d554b0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d554c0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d554d0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d554e0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d554f0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d55500 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d55510 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d55520 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d55530 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d55540 2023656e 64696620 0a202075 6e69666f #endif . unifo │ │ │ │ - 0x00d55550 726d204d 45444955 4d5f5020 73616d70 rm MEDIUM_P samp │ │ │ │ - 0x00d55560 6c657232 44417272 61792075 5f636f6c ler2DArray u_col │ │ │ │ - 0x00d55570 6f725465 783b200a 2020696e 20766563 orTex; . in vec │ │ │ │ - 0x00d55580 3320765f 74657843 6f6f7264 733b200a 3 v_texCoords; . │ │ │ │ - 0x00d55590 20206f75 74207665 63342076 5f467261 out vec4 v_Fra │ │ │ │ - 0x00d555a0 67436f6c 6f723b20 0a202063 6f6e7374 gColor; . const │ │ │ │ - 0x00d555b0 20666c6f 6174206b 53686170 65436f6f float kShapeCoo │ │ │ │ - 0x00d555c0 72645363 616c6172 203d2031 3030302e rdScalar = 1000. │ │ │ │ - 0x00d555d0 303b200a 2020766f 6964206d 61696e28 0; . void main( │ │ │ │ - 0x00d555e0 29200a20 207b200a 20202020 765f4672 ) . { . v_Fr │ │ │ │ - 0x00d555f0 6167436f 6c6f7220 3d207465 78747572 agColor = textur │ │ │ │ - 0x00d55600 6528755f 636f6c6f 72546578 2c20765f e(u_colorTex, v_ │ │ │ │ - 0x00d55610 74657843 6f6f7264 73293b20 0a20207d texCoords); . } │ │ │ │ - 0x00d55620 200a0000 00000000 00000000 00000000 ............... │ │ │ │ - 0x00d55630 00000000 00000000 00000000 00000000 ................ │ │ │ │ - 0x00d55640 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d55650 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d55660 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d55670 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d55680 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d55690 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d556a0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d556b0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d556c0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d556d0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d556e0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d556f0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d55700 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d55710 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d55720 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d55730 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d55740 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d55750 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d55760 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d55770 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d55780 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d55790 63322076 5f636f6c 6f725465 78436f6f c2 v_colorTexCoo │ │ │ │ - 0x00d557a0 72643b20 0a202069 6e207665 63322076 rd; . in vec2 v │ │ │ │ - 0x00d557b0 5f6d6173 6b546578 436f6f72 643b200a _maskTexCoord; . │ │ │ │ - 0x00d557c0 2020696e 20666c6f 61742076 5f68616c in float v_hal │ │ │ │ - 0x00d557d0 664c656e 6774683b 200a2020 6f757420 fLength; . out │ │ │ │ - 0x00d557e0 76656334 20765f46 72616743 6f6c6f72 vec4 v_FragColor │ │ │ │ - 0x00d557f0 3b200a20 20756e69 666f726d 206d6174 ; . uniform mat │ │ │ │ - 0x00d55800 3420755f 6d6f6465 6c566965 773b200a 4 u_modelView; . │ │ │ │ - 0x00d55810 2020756e 69666f72 6d206d61 74342075 uniform mat4 u │ │ │ │ - 0x00d55820 5f70726f 6a656374 696f6e3b 200a2020 _projection; . │ │ │ │ - 0x00d55830 756e6966 6f726d20 6d617434 20755f70 uniform mat4 u_p │ │ │ │ - 0x00d55840 69766f74 5472616e 73666f72 6d3b200a ivotTransform; . │ │ │ │ - 0x00d55850 2020756e 69666f72 6d207665 63342075 uniform vec4 u │ │ │ │ - 0x00d55860 5f747261 66666963 50617261 6d733b20 _trafficParams; │ │ │ │ - 0x00d55870 0a202075 6e69666f 726d2076 65633420 . uniform vec4 │ │ │ │ - 0x00d55880 755f6f75 746c696e 65436f6c 6f723b20 u_outlineColor; │ │ │ │ - 0x00d55890 0a202075 6e69666f 726d2076 65633420 . uniform vec4 │ │ │ │ - 0x00d558a0 755f6c69 67687441 72726f77 436f6c6f u_lightArrowColo │ │ │ │ - 0x00d558b0 723b200a 2020756e 69666f72 6d207665 r; . uniform ve │ │ │ │ - 0x00d558c0 63342075 5f646172 6b417272 6f77436f c4 u_darkArrowCo │ │ │ │ - 0x00d558d0 6c6f723b 200a2020 756e6966 6f726d20 lor; . uniform │ │ │ │ - 0x00d558e0 666c6f61 7420755f 6f75746c 696e653b float u_outline; │ │ │ │ - 0x00d558f0 200a2020 756e6966 6f726d20 666c6f61 . uniform floa │ │ │ │ - 0x00d55900 7420755f 6f706163 6974793b 200a2020 t u_opacity; . │ │ │ │ - 0x00d55910 756e6966 6f726d20 73616d70 6c657232 uniform sampler2 │ │ │ │ - 0x00d55920 4420755f 636f6c6f 72546578 3b200a20 D u_colorTex; . │ │ │ │ - 0x00d55930 20756e69 666f726d 2073616d 706c6572 uniform sampler │ │ │ │ - 0x00d55940 32442075 5f6d6173 6b546578 3b200a20 2D u_maskTex; . │ │ │ │ - 0x00d55950 20636f6e 73742066 6c6f6174 206b416e const float kAn │ │ │ │ - 0x00d55960 7469616c 69617369 6e675468 72657368 tialiasingThresh │ │ │ │ - 0x00d55970 6f6c6420 3d20302e 39323b20 0a202063 old = 0.92; . c │ │ │ │ - 0x00d55980 6f6e7374 20666c6f 6174206b 4f75746c onst float kOutl │ │ │ │ - 0x00d55990 696e6554 68726573 686f6c64 31203d20 ineThreshold1 = │ │ │ │ - 0x00d559a0 302e383b 200a2020 636f6e73 7420666c 0.8; . const fl │ │ │ │ - 0x00d559b0 6f617420 6b4f7574 6c696e65 54687265 oat kOutlineThre │ │ │ │ - 0x00d559c0 73686f6c 6432203d 20302e35 3b200a20 shold2 = 0.5; . │ │ │ │ - 0x00d559d0 20636f6e 73742066 6c6f6174 206b4d61 const float kMa │ │ │ │ - 0x00d559e0 736b4f70 61636974 79203d20 302e373b skOpacity = 0.7; │ │ │ │ - 0x00d559f0 200a2020 636f6e73 7420666c 6f617420 . const float │ │ │ │ - 0x00d55a00 6b536861 7065436f 6f726453 63616c61 kShapeCoordScala │ │ │ │ - 0x00d55a10 72203d20 31303030 2e303b20 0a202076 r = 1000.0; . v │ │ │ │ - 0x00d55a20 6f696420 6d61696e 2829200a 20207b20 oid main() . { │ │ │ │ - 0x00d55a30 0a202020 20766563 3420636f 6c6f7220 . vec4 color │ │ │ │ - 0x00d55a40 3d207465 78747572 6528755f 636f6c6f = texture(u_colo │ │ │ │ - 0x00d55a50 72546578 2c20765f 636f6c6f 72546578 rTex, v_colorTex │ │ │ │ - 0x00d55a60 436f6f72 64293b20 0a202020 20666c6f Coord); . flo │ │ │ │ - 0x00d55a70 61742061 6c706861 436f6465 203d2063 at alphaCode = c │ │ │ │ - 0x00d55a80 6f6c6f72 2e613b20 0a202020 20766563 olor.a; . vec │ │ │ │ - 0x00d55a90 34206d61 736b203d 20746578 74757265 4 mask = texture │ │ │ │ - 0x00d55aa0 28755f6d 61736b54 65782c20 765f6d61 (u_maskTex, v_ma │ │ │ │ - 0x00d55ab0 736b5465 78436f6f 7264293b 200a2020 skTexCoord); . │ │ │ │ - 0x00d55ac0 2020636f 6c6f722e 61203d20 755f6f70 color.a = u_op │ │ │ │ - 0x00d55ad0 61636974 79202a20 28312e30 202d2073 acity * (1.0 - s │ │ │ │ - 0x00d55ae0 6d6f6f74 68737465 70286b41 6e746961 moothstep(kAntia │ │ │ │ - 0x00d55af0 6c696173 696e6754 68726573 686f6c64 liasingThreshold │ │ │ │ - 0x00d55b00 2c20312e 302c2061 62732876 5f68616c , 1.0, abs(v_hal │ │ │ │ - 0x00d55b10 664c656e 67746829 29293b20 0a202020 fLength))); . │ │ │ │ - 0x00d55b20 20636f6c 6f722e72 6762203d 206d6978 color.rgb = mix │ │ │ │ - 0x00d55b30 28636f6c 6f722e72 67622c20 6d61736b (color.rgb, mask │ │ │ │ - 0x00d55b40 2e726762 202a206d 69782875 5f6c6967 .rgb * mix(u_lig │ │ │ │ - 0x00d55b50 68744172 726f7743 6f6c6f72 2e726762 htArrowColor.rgb │ │ │ │ - 0x00d55b60 2c20755f 6461726b 4172726f 77436f6c , u_darkArrowCol │ │ │ │ - 0x00d55b70 6f722e72 67622c20 73746570 28616c70 or.rgb, step(alp │ │ │ │ - 0x00d55b80 6861436f 64652c20 302e3629 292c206d haCode, 0.6)), m │ │ │ │ - 0x00d55b90 61736b2e 61202a20 6b4d6173 6b4f7061 ask.a * kMaskOpa │ │ │ │ - 0x00d55ba0 63697479 293b200a 20202020 69662028 city); . if ( │ │ │ │ - 0x00d55bb0 755f6f75 746c696e 65203e20 302e3029 u_outline > 0.0) │ │ │ │ - 0x00d55bc0 200a2020 20207b20 0a202020 20202063 . { . c │ │ │ │ - 0x00d55bd0 6f6c6f72 2e726762 203d206d 69782863 olor.rgb = mix(c │ │ │ │ - 0x00d55be0 6f6c6f72 2e726762 2c20755f 6f75746c olor.rgb, u_outl │ │ │ │ - 0x00d55bf0 696e6543 6f6c6f72 2e726762 2c207374 ineColor.rgb, st │ │ │ │ - 0x00d55c00 6570286b 4f75746c 696e6554 68726573 ep(kOutlineThres │ │ │ │ - 0x00d55c10 686f6c64 312c2061 62732876 5f68616c hold1, abs(v_hal │ │ │ │ - 0x00d55c20 664c656e 67746829 29293b20 0a202020 fLength))); . │ │ │ │ - 0x00d55c30 20202063 6f6c6f72 2e726762 203d206d color.rgb = m │ │ │ │ - 0x00d55c40 69782863 6f6c6f72 2e726762 2c20755f ix(color.rgb, u_ │ │ │ │ - 0x00d55c50 6f75746c 696e6543 6f6c6f72 2e726762 outlineColor.rgb │ │ │ │ - 0x00d55c60 2c20736d 6f6f7468 73746570 286b4f75 , smoothstep(kOu │ │ │ │ - 0x00d55c70 746c696e 65546872 6573686f 6c64322c tlineThreshold2, │ │ │ │ - 0x00d55c80 206b4f75 746c696e 65546872 6573686f kOutlineThresho │ │ │ │ - 0x00d55c90 6c64312c 20616273 28765f68 616c664c ld1, abs(v_halfL │ │ │ │ - 0x00d55ca0 656e6774 68292929 3b200a20 2020207d ength))); . } │ │ │ │ - 0x00d55cb0 200a2020 2020765f 46726167 436f6c6f . v_FragColo │ │ │ │ - 0x00d55cc0 72203d20 636f6c6f 723b200a 20207d20 r = color; . } │ │ │ │ - 0x00d55cd0 0a000000 00000000 00000000 00000000 ................ │ │ │ │ - 0x00d55ce0 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d55cf0 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d55d00 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d55d10 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d55d20 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d55d30 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d55d40 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d55d50 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d55d60 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d55d70 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d55d80 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d55d90 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d55da0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d55db0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d55dc0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d55dd0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d55de0 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d55df0 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d55e00 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d55e10 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d55e20 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d55e30 63332061 5f706f73 6974696f 6e3b200a c3 a_position; . │ │ │ │ - 0x00d55e40 2020696e 20766563 3420615f 6e6f726d in vec4 a_norm │ │ │ │ - 0x00d55e50 616c3b20 0a202069 6e207665 63342061 al; . in vec4 a │ │ │ │ - 0x00d55e60 5f636f6c 6f725465 78436f6f 72643b20 _colorTexCoord; │ │ │ │ - 0x00d55e70 0a20206f 75742076 65633220 765f636f . out vec2 v_co │ │ │ │ - 0x00d55e80 6c6f7254 6578436f 6f72643b 200a2020 lorTexCoord; . │ │ │ │ - 0x00d55e90 6f757420 76656332 20765f6d 61736b54 out vec2 v_maskT │ │ │ │ - 0x00d55ea0 6578436f 6f72643b 200a2020 6f757420 exCoord; . out │ │ │ │ - 0x00d55eb0 666c6f61 7420765f 68616c66 4c656e67 float v_halfLeng │ │ │ │ - 0x00d55ec0 74683b20 0a202075 6e69666f 726d206d th; . uniform m │ │ │ │ - 0x00d55ed0 61743420 755f6d6f 64656c56 6965773b at4 u_modelView; │ │ │ │ - 0x00d55ee0 200a2020 756e6966 6f726d20 6d617434 . uniform mat4 │ │ │ │ - 0x00d55ef0 20755f70 726f6a65 6374696f 6e3b200a u_projection; . │ │ │ │ - 0x00d55f00 2020756e 69666f72 6d206d61 74342075 uniform mat4 u │ │ │ │ - 0x00d55f10 5f706976 6f745472 616e7366 6f726d3b _pivotTransform; │ │ │ │ - 0x00d55f20 200a2020 756e6966 6f726d20 76656334 . uniform vec4 │ │ │ │ - 0x00d55f30 20755f74 72616666 69635061 72616d73 u_trafficParams │ │ │ │ - 0x00d55f40 3b200a20 20756e69 666f726d 20766563 ; . uniform vec │ │ │ │ - 0x00d55f50 3420755f 6f75746c 696e6543 6f6c6f72 4 u_outlineColor │ │ │ │ - 0x00d55f60 3b200a20 20756e69 666f726d 20766563 ; . uniform vec │ │ │ │ - 0x00d55f70 3420755f 6c696768 74417272 6f77436f 4 u_lightArrowCo │ │ │ │ - 0x00d55f80 6c6f723b 200a2020 756e6966 6f726d20 lor; . uniform │ │ │ │ - 0x00d55f90 76656334 20755f64 61726b41 72726f77 vec4 u_darkArrow │ │ │ │ - 0x00d55fa0 436f6c6f 723b200a 2020756e 69666f72 Color; . unifor │ │ │ │ - 0x00d55fb0 6d20666c 6f617420 755f6f75 746c696e m float u_outlin │ │ │ │ - 0x00d55fc0 653b200a 2020756e 69666f72 6d20666c e; . uniform fl │ │ │ │ - 0x00d55fd0 6f617420 755f6f70 61636974 793b200a oat u_opacity; . │ │ │ │ - 0x00d55fe0 2020636f 6e737420 666c6f61 74206b41 const float kA │ │ │ │ - 0x00d55ff0 72726f77 5653697a 65203d20 302e3235 rrowVSize = 0.25 │ │ │ │ - 0x00d56000 3b200a20 20636f6e 73742066 6c6f6174 ; . const float │ │ │ │ - 0x00d56010 206b5368 61706543 6f6f7264 5363616c kShapeCoordScal │ │ │ │ - 0x00d56020 6172203d 20313030 302e303b 200a2020 ar = 1000.0; . │ │ │ │ - 0x00d56030 76656334 20617070 6c795069 766f7454 vec4 applyPivotT │ │ │ │ - 0x00d56040 72616e73 666f726d 28766563 34207069 ransform(vec4 pi │ │ │ │ - 0x00d56050 766f742c 206d6174 34207069 766f7454 vot, mat4 pivotT │ │ │ │ - 0x00d56060 72616e73 666f726d 2c20666c 6f617420 ransform, float │ │ │ │ - 0x00d56070 7069766f 74526561 6c5a2920 0a20207b pivotRealZ) . { │ │ │ │ - 0x00d56080 200a2020 20207665 63342074 72616e73 . vec4 trans │ │ │ │ - 0x00d56090 666f726d 65645069 766f7420 3d207069 formedPivot = pi │ │ │ │ - 0x00d560a0 766f743b 200a2020 2020666c 6f617420 vot; . float │ │ │ │ - 0x00d560b0 77203d20 7472616e 73666f72 6d656450 w = transformedP │ │ │ │ - 0x00d560c0 69766f74 2e773b20 0a202020 20747261 ivot.w; . tra │ │ │ │ - 0x00d560d0 6e73666f 726d6564 5069766f 742e7879 nsformedPivot.xy │ │ │ │ - 0x00d560e0 77203d20 28706976 6f745472 616e7366 w = (pivotTransf │ │ │ │ - 0x00d560f0 6f726d20 2a207665 63342874 72616e73 orm * vec4(trans │ │ │ │ - 0x00d56100 666f726d 65645069 766f742e 78792c20 formedPivot.xy, │ │ │ │ - 0x00d56110 7069766f 74526561 6c5a2c20 7729292e pivotRealZ, w)). │ │ │ │ - 0x00d56120 7879773b 200a2020 20207472 616e7366 xyw; . transf │ │ │ │ - 0x00d56130 6f726d65 64506976 6f742e7a 202a3d20 ormedPivot.z *= │ │ │ │ - 0x00d56140 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ - 0x00d56150 2e77202f 20773b20 0a202023 69666465 .w / w; . #ifde │ │ │ │ - 0x00d56160 66205655 4c4b414e 200a2020 20207472 f VULKAN . tr │ │ │ │ - 0x00d56170 616e7366 6f726d65 64506976 6f742e79 ansformedPivot.y │ │ │ │ - 0x00d56180 203d202d 7472616e 73666f72 6d656450 = -transformedP │ │ │ │ - 0x00d56190 69766f74 2e793b20 0a202020 20747261 ivot.y; . tra │ │ │ │ - 0x00d561a0 6e73666f 726d6564 5069766f 742e7a20 nsformedPivot.z │ │ │ │ - 0x00d561b0 3d202874 72616e73 666f726d 65645069 = (transformedPi │ │ │ │ - 0x00d561c0 766f742e 7a20202b 20747261 6e73666f vot.z + transfo │ │ │ │ - 0x00d561d0 726d6564 5069766f 742e7729 202f2032 rmedPivot.w) / 2 │ │ │ │ - 0x00d561e0 2e303b20 0a202023 656e6469 66200a20 .0; . #endif . │ │ │ │ - 0x00d561f0 20202072 65747572 6e207472 616e7366 return transf │ │ │ │ - 0x00d56200 6f726d65 64506976 6f743b20 0a20207d ormedPivot; . } │ │ │ │ - 0x00d56210 200a2020 76656334 20617070 6c794269 . vec4 applyBi │ │ │ │ - 0x00d56220 6c6c626f 61726450 69766f74 5472616e llboardPivotTran │ │ │ │ - 0x00d56230 73666f72 6d287665 63342070 69766f74 sform(vec4 pivot │ │ │ │ - 0x00d56240 2c206d61 74342070 69766f74 5472616e , mat4 pivotTran │ │ │ │ - 0x00d56250 73666f72 6d2c2066 6c6f6174 20706976 sform, float piv │ │ │ │ - 0x00d56260 6f745265 616c5a2c 20766563 32206f66 otRealZ, vec2 of │ │ │ │ - 0x00d56270 66736574 29200a20 207b200a 20202020 fset) . { . │ │ │ │ - 0x00d56280 666c6f61 74206c6f 6769635a 203d2070 float logicZ = p │ │ │ │ - 0x00d56290 69766f74 2e7a202f 20706976 6f742e77 ivot.z / pivot.w │ │ │ │ - 0x00d562a0 3b200a20 20202076 65633420 7472616e ; . vec4 tran │ │ │ │ - 0x00d562b0 73666f72 6d656450 69766f74 203d2070 sformedPivot = p │ │ │ │ - 0x00d562c0 69766f74 5472616e 73666f72 6d202a20 ivotTransform * │ │ │ │ - 0x00d562d0 76656334 28706976 6f742e78 792c2070 vec4(pivot.xy, p │ │ │ │ - 0x00d562e0 69766f74 5265616c 5a2c2070 69766f74 ivotRealZ, pivot │ │ │ │ - 0x00d562f0 2e77293b 200a2020 20207665 63342073 .w); . vec4 s │ │ │ │ - 0x00d56300 63616c65 203d2070 69766f74 5472616e cale = pivotTran │ │ │ │ - 0x00d56310 73666f72 6d202a20 76656334 28312e30 sform * vec4(1.0 │ │ │ │ - 0x00d56320 2c202d31 2e302c20 302e302c 20312e30 , -1.0, 0.0, 1.0 │ │ │ │ - 0x00d56330 293b200a 20202020 76656334 20706f73 ); . vec4 pos │ │ │ │ - 0x00d56340 6974696f 6e203d20 76656334 28747261 ition = vec4(tra │ │ │ │ - 0x00d56350 6e73666f 726d6564 5069766f 742e7879 nsformedPivot.xy │ │ │ │ - 0x00d56360 202f2074 72616e73 666f726d 65645069 / transformedPi │ │ │ │ - 0x00d56370 766f742e 772c206c 6f676963 5a2c2031 vot.w, logicZ, 1 │ │ │ │ - 0x00d56380 2e302920 2b207665 6334286f 66667365 .0) + vec4(offse │ │ │ │ - 0x00d56390 74202f20 7363616c 652e7720 2a207363 t / scale.w * sc │ │ │ │ - 0x00d563a0 616c652e 782c2030 2e302c20 302e3029 ale.x, 0.0, 0.0) │ │ │ │ - 0x00d563b0 3b200a20 20236966 64656620 56554c4b ; . #ifdef VULK │ │ │ │ - 0x00d563c0 414e200a 20202020 706f7369 74696f6e AN . position │ │ │ │ - 0x00d563d0 2e79203d 202d706f 73697469 6f6e2e79 .y = -position.y │ │ │ │ - 0x00d563e0 3b200a20 20202070 6f736974 696f6e2e ; . position. │ │ │ │ - 0x00d563f0 7a203d20 28706f73 6974696f 6e2e7a20 z = (position.z │ │ │ │ - 0x00d56400 202b2070 6f736974 696f6e2e 7729202f + position.w) / │ │ │ │ - 0x00d56410 20322e30 3b200a20 2023656e 64696620 2.0; . #endif │ │ │ │ - 0x00d56420 0a202020 20726574 75726e20 706f7369 . return posi │ │ │ │ - 0x00d56430 74696f6e 3b200a20 207d200a 20207665 tion; . } . ve │ │ │ │ - 0x00d56440 63322063 616c634c 696e6554 72616e73 c2 calcLineTrans │ │ │ │ - 0x00d56450 666f726d 65644178 6973506f 73287665 formedAxisPos(ve │ │ │ │ - 0x00d56460 6332206f 72696769 6e616c41 78697350 c2 originalAxisP │ │ │ │ - 0x00d56470 6f732c20 76656332 20736869 66746564 os, vec2 shifted │ │ │ │ - 0x00d56480 506f732c 206d6174 34206d6f 64656c56 Pos, mat4 modelV │ │ │ │ - 0x00d56490 6965772c 20666c6f 61742068 616c6657 iew, float halfW │ │ │ │ - 0x00d564a0 69647468 29200a20 207b200a 20202020 idth) . { . │ │ │ │ - 0x00d564b0 76656332 2070203d 20287665 63342873 vec2 p = (vec4(s │ │ │ │ - 0x00d564c0 68696674 6564506f 732c2030 2e302c20 hiftedPos, 0.0, │ │ │ │ - 0x00d564d0 312e3029 202a206d 6f64656c 56696577 1.0) * modelView │ │ │ │ - 0x00d564e0 292e7879 3b200a20 20202076 65633220 ).xy; . vec2 │ │ │ │ - 0x00d564f0 64203d20 70202d20 6f726967 696e616c d = p - original │ │ │ │ - 0x00d56500 41786973 506f733b 200a2020 20206966 AxisPos; . if │ │ │ │ - 0x00d56510 2028646f 7428642c 20642920 213d2030 (dot(d, d) != 0 │ │ │ │ - 0x00d56520 2e302920 0a202020 20202072 65747572 .0) . retur │ │ │ │ - 0x00d56530 6e206f72 6967696e 616c4178 6973506f n originalAxisPo │ │ │ │ - 0x00d56540 73202b20 6e6f726d 616c697a 65286429 s + normalize(d) │ │ │ │ - 0x00d56550 202a2068 616c6657 69647468 3b200a20 * halfWidth; . │ │ │ │ - 0x00d56560 20202065 6c736520 0a202020 20202072 else . r │ │ │ │ - 0x00d56570 65747572 6e206f72 6967696e 616c4178 eturn originalAx │ │ │ │ - 0x00d56580 6973506f 733b200a 20207d20 0a202076 isPos; . } . v │ │ │ │ - 0x00d56590 6f696420 6d61696e 2829200a 20207b20 oid main() . { │ │ │ │ - 0x00d565a0 0a202020 20766563 32206e6f 726d616c . vec2 normal │ │ │ │ - 0x00d565b0 203d2061 5f6e6f72 6d616c2e 78793b20 = a_normal.xy; │ │ │ │ - 0x00d565c0 0a202020 20766563 32207472 616e7366 . vec2 transf │ │ │ │ - 0x00d565d0 6f726d65 64417869 73506f73 203d2028 ormedAxisPos = ( │ │ │ │ - 0x00d565e0 76656334 28615f70 6f736974 696f6e2e vec4(a_position. │ │ │ │ - 0x00d565f0 78792c20 302e302c 20312e30 29202a20 xy, 0.0, 1.0) * │ │ │ │ - 0x00d56600 755f6d6f 64656c56 69657729 2e78793b u_modelView).xy; │ │ │ │ - 0x00d56610 200a2020 20206966 2028646f 74286e6f . if (dot(no │ │ │ │ - 0x00d56620 726d616c 2c206e6f 726d616c 2920213d rmal, normal) != │ │ │ │ - 0x00d56630 20302e30 29200a20 2020207b 200a2020 0.0) . { . │ │ │ │ - 0x00d56640 20202020 76656332 206e6f72 6d203d20 vec2 norm = │ │ │ │ - 0x00d56650 6e6f726d 616c202a 20755f74 72616666 normal * u_traff │ │ │ │ - 0x00d56660 69635061 72616d73 2e783b20 0a202020 icParams.x; . │ │ │ │ - 0x00d56670 20202069 66202861 5f6e6f72 6d616c2e if (a_normal. │ │ │ │ - 0x00d56680 7a203c20 302e3029 200a2020 20202020 z < 0.0) . │ │ │ │ - 0x00d56690 20206e6f 726d203d 206e6f72 6d616c20 norm = normal │ │ │ │ - 0x00d566a0 2a20755f 74726166 66696350 6172616d * u_trafficParam │ │ │ │ - 0x00d566b0 732e793b 200a2020 20202020 7472616e s.y; . tran │ │ │ │ - 0x00d566c0 73666f72 6d656441 78697350 6f73203d sformedAxisPos = │ │ │ │ - 0x00d566d0 2063616c 634c696e 65547261 6e73666f calcLineTransfo │ │ │ │ - 0x00d566e0 726d6564 41786973 506f7328 7472616e rmedAxisPos(tran │ │ │ │ - 0x00d566f0 73666f72 6d656441 78697350 6f732c20 sformedAxisPos, │ │ │ │ - 0x00d56700 615f706f 73697469 6f6e2e78 79202b20 a_position.xy + │ │ │ │ - 0x00d56710 6e6f726d 2c200a20 20202020 20202020 norm, . │ │ │ │ - 0x00d56720 20202020 20202020 20202020 20202020 │ │ │ │ - 0x00d56730 20202020 20202020 20202020 20202020 │ │ │ │ - 0x00d56740 20202020 20202020 20202020 20755f6d u_m │ │ │ │ - 0x00d56750 6f64656c 56696577 2c206c65 6e677468 odelView, length │ │ │ │ - 0x00d56760 286e6f72 6d29293b 200a2020 20207d20 (norm)); . } │ │ │ │ - 0x00d56770 0a202020 20666c6f 61742075 4f666673 . float uOffs │ │ │ │ - 0x00d56780 6574203d 206c656e 67746828 76656334 et = length(vec4 │ │ │ │ - 0x00d56790 286b5368 61706543 6f6f7264 5363616c (kShapeCoordScal │ │ │ │ - 0x00d567a0 61722c20 302c2030 2c203029 202a2075 ar, 0, 0, 0) * u │ │ │ │ - 0x00d567b0 5f6d6f64 656c5669 65772920 2a20615f _modelView) * a_ │ │ │ │ - 0x00d567c0 6e6f726d 616c2e77 3b200a20 20202076 normal.w; . v │ │ │ │ - 0x00d567d0 5f636f6c 6f725465 78436f6f 7264203d _colorTexCoord = │ │ │ │ - 0x00d567e0 20615f63 6f6c6f72 54657843 6f6f7264 a_colorTexCoord │ │ │ │ - 0x00d567f0 2e78793b 200a2020 2020666c 6f617420 .xy; . float │ │ │ │ - 0x00d56800 76203d20 6d697828 615f636f 6c6f7254 v = mix(a_colorT │ │ │ │ - 0x00d56810 6578436f 6f72642e 7a2c2061 5f636f6c exCoord.z, a_col │ │ │ │ - 0x00d56820 6f725465 78436f6f 72642e7a 202b206b orTexCoord.z + k │ │ │ │ - 0x00d56830 4172726f 77565369 7a652c20 302e3520 ArrowVSize, 0.5 │ │ │ │ - 0x00d56840 2a20615f 6e6f726d 616c2e7a 202b2030 * a_normal.z + 0 │ │ │ │ - 0x00d56850 2e35293b 200a2020 2020765f 6d61736b .5); . v_mask │ │ │ │ - 0x00d56860 54657843 6f6f7264 203d2076 65633228 TexCoord = vec2( │ │ │ │ - 0x00d56870 754f6666 73657420 2a20755f 74726166 uOffset * u_traf │ │ │ │ - 0x00d56880 66696350 6172616d 732e7a2c 20762920 ficParams.z, v) │ │ │ │ - 0x00d56890 2a20755f 74726166 66696350 6172616d * u_trafficParam │ │ │ │ - 0x00d568a0 732e773b 200a2020 2020765f 6d61736b s.w; . v_mask │ │ │ │ - 0x00d568b0 54657843 6f6f7264 2e78202a 3d207374 TexCoord.x *= st │ │ │ │ - 0x00d568c0 65702861 5f636f6c 6f725465 78436f6f ep(a_colorTexCoo │ │ │ │ - 0x00d568d0 72642e77 2c20765f 6d61736b 54657843 rd.w, v_maskTexC │ │ │ │ - 0x00d568e0 6f6f7264 2e78293b 200a2020 2020765f oord.x); . v_ │ │ │ │ - 0x00d568f0 68616c66 4c656e67 7468203d 20615f6e halfLength = a_n │ │ │ │ - 0x00d56900 6f726d61 6c2e7a3b 200a2020 20207665 ormal.z; . ve │ │ │ │ - 0x00d56910 63342070 6f73203d 20766563 34287472 c4 pos = vec4(tr │ │ │ │ - 0x00d56920 616e7366 6f726d65 64417869 73506f73 ansformedAxisPos │ │ │ │ - 0x00d56930 2c20615f 706f7369 74696f6e 2e7a2c20 , a_position.z, │ │ │ │ - 0x00d56940 312e3029 202a2075 5f70726f 6a656374 1.0) * u_project │ │ │ │ - 0x00d56950 696f6e3b 200a2020 2020676c 5f506f73 ion; . gl_Pos │ │ │ │ - 0x00d56960 6974696f 6e203d20 6170706c 79506976 ition = applyPiv │ │ │ │ - 0x00d56970 6f745472 616e7366 6f726d28 706f732c otTransform(pos, │ │ │ │ - 0x00d56980 20755f70 69766f74 5472616e 73666f72 u_pivotTransfor │ │ │ │ - 0x00d56990 6d2c2030 2e30293b 200a2020 7d200a00 m, 0.0); . } .. │ │ │ │ - 0x00d569a0 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d569b0 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d569c0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d569d0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d569e0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d569f0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d56a00 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d56a10 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d56a20 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d56a30 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d56a40 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d56a50 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d56a60 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d56a70 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d56a80 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d56a90 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d56aa0 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d56ab0 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d56ac0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d56ad0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d56ae0 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d56af0 63322076 5f636f6c 6f725465 78436f6f c2 v_colorTexCoo │ │ │ │ - 0x00d56b00 72643b20 0a202069 6e207665 63332076 rd; . in vec3 v │ │ │ │ - 0x00d56b10 5f726164 6975733b 200a2020 6f757420 _radius; . out │ │ │ │ - 0x00d56b20 76656334 20765f46 72616743 6f6c6f72 vec4 v_FragColor │ │ │ │ - 0x00d56b30 3b200a20 20756e69 666f726d 206d6174 ; . uniform mat │ │ │ │ - 0x00d56b40 3420755f 6d6f6465 6c566965 773b200a 4 u_modelView; . │ │ │ │ - 0x00d56b50 2020756e 69666f72 6d206d61 74342075 uniform mat4 u │ │ │ │ - 0x00d56b60 5f70726f 6a656374 696f6e3b 200a2020 _projection; . │ │ │ │ - 0x00d56b70 756e6966 6f726d20 6d617434 20755f70 uniform mat4 u_p │ │ │ │ - 0x00d56b80 69766f74 5472616e 73666f72 6d3b200a ivotTransform; . │ │ │ │ - 0x00d56b90 2020756e 69666f72 6d207665 63342075 uniform vec4 u │ │ │ │ - 0x00d56ba0 5f747261 66666963 50617261 6d733b20 _trafficParams; │ │ │ │ - 0x00d56bb0 0a202075 6e69666f 726d2076 65633420 . uniform vec4 │ │ │ │ - 0x00d56bc0 755f6f75 746c696e 65436f6c 6f723b20 u_outlineColor; │ │ │ │ - 0x00d56bd0 0a202075 6e69666f 726d2076 65633420 . uniform vec4 │ │ │ │ - 0x00d56be0 755f6c69 67687441 72726f77 436f6c6f u_lightArrowColo │ │ │ │ - 0x00d56bf0 723b200a 2020756e 69666f72 6d207665 r; . uniform ve │ │ │ │ - 0x00d56c00 63342075 5f646172 6b417272 6f77436f c4 u_darkArrowCo │ │ │ │ - 0x00d56c10 6c6f723b 200a2020 756e6966 6f726d20 lor; . uniform │ │ │ │ - 0x00d56c20 666c6f61 7420755f 6f75746c 696e653b float u_outline; │ │ │ │ - 0x00d56c30 200a2020 756e6966 6f726d20 666c6f61 . uniform floa │ │ │ │ - 0x00d56c40 7420755f 6f706163 6974793b 200a2020 t u_opacity; . │ │ │ │ - 0x00d56c50 756e6966 6f726d20 73616d70 6c657232 uniform sampler2 │ │ │ │ - 0x00d56c60 4420755f 636f6c6f 72546578 3b200a20 D u_colorTex; . │ │ │ │ - 0x00d56c70 20636f6e 73742066 6c6f6174 206b416e const float kAn │ │ │ │ - 0x00d56c80 7469616c 69617369 6e675468 72657368 tialiasingThresh │ │ │ │ - 0x00d56c90 6f6c6420 3d20302e 39323b20 0a202063 old = 0.92; . c │ │ │ │ - 0x00d56ca0 6f6e7374 20666c6f 6174206b 53686170 onst float kShap │ │ │ │ - 0x00d56cb0 65436f6f 72645363 616c6172 203d2031 eCoordScalar = 1 │ │ │ │ - 0x00d56cc0 3030302e 303b200a 2020766f 6964206d 000.0; . void m │ │ │ │ - 0x00d56cd0 61696e28 29200a20 207b200a 20202020 ain() . { . │ │ │ │ - 0x00d56ce0 76656334 20636f6c 6f72203d 20746578 vec4 color = tex │ │ │ │ - 0x00d56cf0 74757265 28755f63 6f6c6f72 5465782c ture(u_colorTex, │ │ │ │ - 0x00d56d00 20765f63 6f6c6f72 54657843 6f6f7264 v_colorTexCoord │ │ │ │ - 0x00d56d10 293b200a 20202020 666c6f61 7420736d ); . float sm │ │ │ │ - 0x00d56d20 616c6c52 61646975 73203d20 765f7261 allRadius = v_ra │ │ │ │ - 0x00d56d30 64697573 2e7a202a 206b416e 7469616c dius.z * kAntial │ │ │ │ - 0x00d56d40 69617369 6e675468 72657368 6f6c643b iasingThreshold; │ │ │ │ - 0x00d56d50 200a2020 2020666c 6f617420 73746570 . float step │ │ │ │ - 0x00d56d60 56616c75 65203d20 736d6f6f 74687374 Value = smoothst │ │ │ │ - 0x00d56d70 65702873 6d616c6c 52616469 7573202a ep(smallRadius * │ │ │ │ - 0x00d56d80 20736d61 6c6c5261 64697573 2c20765f smallRadius, v_ │ │ │ │ - 0x00d56d90 72616469 75732e7a 202a2076 5f726164 radius.z * v_rad │ │ │ │ - 0x00d56da0 6975732e 7a2c200a 20202020 20202020 ius.z, . │ │ │ │ - 0x00d56db0 20202020 20202020 20202020 20202020 │ │ │ │ - 0x00d56dc0 20202020 20202020 20765f72 61646975 v_radiu │ │ │ │ - 0x00d56dd0 732e7820 2a20765f 72616469 75732e78 s.x * v_radius.x │ │ │ │ - 0x00d56de0 202b2076 5f726164 6975732e 79202a20 + v_radius.y * │ │ │ │ - 0x00d56df0 765f7261 64697573 2e79293b 200a2020 v_radius.y); . │ │ │ │ - 0x00d56e00 2020636f 6c6f722e 61203d20 755f6f70 color.a = u_op │ │ │ │ - 0x00d56e10 61636974 79202a20 28312e30 202d2073 acity * (1.0 - s │ │ │ │ - 0x00d56e20 74657056 616c7565 293b200a 20202020 tepValue); . │ │ │ │ - 0x00d56e30 69662028 636f6c6f 722e6120 3c20302e if (color.a < 0. │ │ │ │ - 0x00d56e40 30312920 0a202020 20202064 69736361 01) . disca │ │ │ │ - 0x00d56e50 72643b20 0a202020 20765f46 72616743 rd; . v_FragC │ │ │ │ - 0x00d56e60 6f6c6f72 203d2063 6f6c6f72 3b200a20 olor = color; . │ │ │ │ - 0x00d56e70 207d200a 00000000 00000000 00000000 } ............. │ │ │ │ - 0x00d56e80 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d56e90 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d56ea0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d56eb0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d56ec0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d56ed0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d56ee0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d56ef0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d56f00 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d56f10 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d56f20 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d56f30 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d56f40 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d56f50 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d56f60 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d56f70 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d56f80 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d56f90 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d56fa0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d56fb0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d56fc0 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d56fd0 63342061 5f706f73 6974696f 6e3b200a c4 a_position; . │ │ │ │ - 0x00d56fe0 2020696e 20766563 3420615f 6e6f726d in vec4 a_norm │ │ │ │ - 0x00d56ff0 616c3b20 0a202069 6e207665 63322061 al; . in vec2 a │ │ │ │ - 0x00d57000 5f636f6c 6f725465 78436f6f 72643b20 _colorTexCoord; │ │ │ │ - 0x00d57010 0a20206f 75742076 65633220 765f636f . out vec2 v_co │ │ │ │ - 0x00d57020 6c6f7254 6578436f 6f72643b 200a2020 lorTexCoord; . │ │ │ │ - 0x00d57030 6f757420 76656333 20765f72 61646975 out vec3 v_radiu │ │ │ │ - 0x00d57040 733b200a 2020756e 69666f72 6d206d61 s; . uniform ma │ │ │ │ - 0x00d57050 74342075 5f6d6f64 656c5669 65773b20 t4 u_modelView; │ │ │ │ - 0x00d57060 0a202075 6e69666f 726d206d 61743420 . uniform mat4 │ │ │ │ - 0x00d57070 755f7072 6f6a6563 74696f6e 3b200a20 u_projection; . │ │ │ │ - 0x00d57080 20756e69 666f726d 206d6174 3420755f uniform mat4 u_ │ │ │ │ - 0x00d57090 7069766f 74547261 6e73666f 726d3b20 pivotTransform; │ │ │ │ - 0x00d570a0 0a202075 6e69666f 726d2076 65633420 . uniform vec4 │ │ │ │ - 0x00d570b0 755f7472 61666669 63506172 616d733b u_trafficParams; │ │ │ │ - 0x00d570c0 200a2020 756e6966 6f726d20 76656334 . uniform vec4 │ │ │ │ - 0x00d570d0 20755f6f 75746c69 6e65436f 6c6f723b u_outlineColor; │ │ │ │ - 0x00d570e0 200a2020 756e6966 6f726d20 76656334 . uniform vec4 │ │ │ │ - 0x00d570f0 20755f6c 69676874 4172726f 77436f6c u_lightArrowCol │ │ │ │ - 0x00d57100 6f723b20 0a202075 6e69666f 726d2076 or; . uniform v │ │ │ │ - 0x00d57110 65633420 755f6461 726b4172 726f7743 ec4 u_darkArrowC │ │ │ │ - 0x00d57120 6f6c6f72 3b200a20 20756e69 666f726d olor; . uniform │ │ │ │ - 0x00d57130 20666c6f 61742075 5f6f7574 6c696e65 float u_outline │ │ │ │ - 0x00d57140 3b200a20 20756e69 666f726d 20666c6f ; . uniform flo │ │ │ │ - 0x00d57150 61742075 5f6f7061 63697479 3b200a20 at u_opacity; . │ │ │ │ - 0x00d57160 20636f6e 73742066 6c6f6174 206b5368 const float kSh │ │ │ │ - 0x00d57170 61706543 6f6f7264 5363616c 6172203d apeCoordScalar = │ │ │ │ - 0x00d57180 20313030 302e303b 200a2020 76656334 1000.0; . vec4 │ │ │ │ - 0x00d57190 20617070 6c795069 766f7454 72616e73 applyPivotTrans │ │ │ │ - 0x00d571a0 666f726d 28766563 34207069 766f742c form(vec4 pivot, │ │ │ │ - 0x00d571b0 206d6174 34207069 766f7454 72616e73 mat4 pivotTrans │ │ │ │ - 0x00d571c0 666f726d 2c20666c 6f617420 7069766f form, float pivo │ │ │ │ - 0x00d571d0 74526561 6c5a2920 0a20207b 200a2020 tRealZ) . { . │ │ │ │ - 0x00d571e0 20207665 63342074 72616e73 666f726d vec4 transform │ │ │ │ - 0x00d571f0 65645069 766f7420 3d207069 766f743b edPivot = pivot; │ │ │ │ - 0x00d57200 200a2020 2020666c 6f617420 77203d20 . float w = │ │ │ │ - 0x00d57210 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ - 0x00d57220 2e773b20 0a202020 20747261 6e73666f .w; . transfo │ │ │ │ - 0x00d57230 726d6564 5069766f 742e7879 77203d20 rmedPivot.xyw = │ │ │ │ - 0x00d57240 28706976 6f745472 616e7366 6f726d20 (pivotTransform │ │ │ │ - 0x00d57250 2a207665 63342874 72616e73 666f726d * vec4(transform │ │ │ │ - 0x00d57260 65645069 766f742e 78792c20 7069766f edPivot.xy, pivo │ │ │ │ - 0x00d57270 74526561 6c5a2c20 7729292e 7879773b tRealZ, w)).xyw; │ │ │ │ - 0x00d57280 200a2020 20207472 616e7366 6f726d65 . transforme │ │ │ │ - 0x00d57290 64506976 6f742e7a 202a3d20 7472616e dPivot.z *= tran │ │ │ │ - 0x00d572a0 73666f72 6d656450 69766f74 2e77202f sformedPivot.w / │ │ │ │ - 0x00d572b0 20773b20 0a202023 69666465 66205655 w; . #ifdef VU │ │ │ │ - 0x00d572c0 4c4b414e 200a2020 20207472 616e7366 LKAN . transf │ │ │ │ - 0x00d572d0 6f726d65 64506976 6f742e79 203d202d ormedPivot.y = - │ │ │ │ - 0x00d572e0 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ - 0x00d572f0 2e793b20 0a202020 20747261 6e73666f .y; . transfo │ │ │ │ - 0x00d57300 726d6564 5069766f 742e7a20 3d202874 rmedPivot.z = (t │ │ │ │ - 0x00d57310 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ - 0x00d57320 7a20202b 20747261 6e73666f 726d6564 z + transformed │ │ │ │ - 0x00d57330 5069766f 742e7729 202f2032 2e303b20 Pivot.w) / 2.0; │ │ │ │ - 0x00d57340 0a202023 656e6469 66200a20 20202072 . #endif . r │ │ │ │ - 0x00d57350 65747572 6e207472 616e7366 6f726d65 eturn transforme │ │ │ │ - 0x00d57360 64506976 6f743b20 0a20207d 200a2020 dPivot; . } . │ │ │ │ - 0x00d57370 76656334 20617070 6c794269 6c6c626f vec4 applyBillbo │ │ │ │ - 0x00d57380 61726450 69766f74 5472616e 73666f72 ardPivotTransfor │ │ │ │ - 0x00d57390 6d287665 63342070 69766f74 2c206d61 m(vec4 pivot, ma │ │ │ │ - 0x00d573a0 74342070 69766f74 5472616e 73666f72 t4 pivotTransfor │ │ │ │ - 0x00d573b0 6d2c2066 6c6f6174 20706976 6f745265 m, float pivotRe │ │ │ │ - 0x00d573c0 616c5a2c 20766563 32206f66 66736574 alZ, vec2 offset │ │ │ │ - 0x00d573d0 29200a20 207b200a 20202020 666c6f61 ) . { . floa │ │ │ │ - 0x00d573e0 74206c6f 6769635a 203d2070 69766f74 t logicZ = pivot │ │ │ │ - 0x00d573f0 2e7a202f 20706976 6f742e77 3b200a20 .z / pivot.w; . │ │ │ │ - 0x00d57400 20202076 65633420 7472616e 73666f72 vec4 transfor │ │ │ │ - 0x00d57410 6d656450 69766f74 203d2070 69766f74 medPivot = pivot │ │ │ │ - 0x00d57420 5472616e 73666f72 6d202a20 76656334 Transform * vec4 │ │ │ │ - 0x00d57430 28706976 6f742e78 792c2070 69766f74 (pivot.xy, pivot │ │ │ │ - 0x00d57440 5265616c 5a2c2070 69766f74 2e77293b RealZ, pivot.w); │ │ │ │ - 0x00d57450 200a2020 20207665 63342073 63616c65 . vec4 scale │ │ │ │ - 0x00d57460 203d2070 69766f74 5472616e 73666f72 = pivotTransfor │ │ │ │ - 0x00d57470 6d202a20 76656334 28312e30 2c202d31 m * vec4(1.0, -1 │ │ │ │ - 0x00d57480 2e302c20 302e302c 20312e30 293b200a .0, 0.0, 1.0); . │ │ │ │ - 0x00d57490 20202020 76656334 20706f73 6974696f vec4 positio │ │ │ │ - 0x00d574a0 6e203d20 76656334 28747261 6e73666f n = vec4(transfo │ │ │ │ - 0x00d574b0 726d6564 5069766f 742e7879 202f2074 rmedPivot.xy / t │ │ │ │ - 0x00d574c0 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ - 0x00d574d0 772c206c 6f676963 5a2c2031 2e302920 w, logicZ, 1.0) │ │ │ │ - 0x00d574e0 2b207665 6334286f 66667365 74202f20 + vec4(offset / │ │ │ │ - 0x00d574f0 7363616c 652e7720 2a207363 616c652e scale.w * scale. │ │ │ │ - 0x00d57500 782c2030 2e302c20 302e3029 3b200a20 x, 0.0, 0.0); . │ │ │ │ - 0x00d57510 20236966 64656620 56554c4b 414e200a #ifdef VULKAN . │ │ │ │ - 0x00d57520 20202020 706f7369 74696f6e 2e79203d position.y = │ │ │ │ - 0x00d57530 202d706f 73697469 6f6e2e79 3b200a20 -position.y; . │ │ │ │ - 0x00d57540 20202070 6f736974 696f6e2e 7a203d20 position.z = │ │ │ │ - 0x00d57550 28706f73 6974696f 6e2e7a20 202b2070 (position.z + p │ │ │ │ - 0x00d57560 6f736974 696f6e2e 7729202f 20322e30 osition.w) / 2.0 │ │ │ │ - 0x00d57570 3b200a20 2023656e 64696620 0a202020 ; . #endif . │ │ │ │ - 0x00d57580 20726574 75726e20 706f7369 74696f6e return position │ │ │ │ - 0x00d57590 3b200a20 207d200a 20207665 63322063 ; . } . vec2 c │ │ │ │ - 0x00d575a0 616c634c 696e6554 72616e73 666f726d alcLineTransform │ │ │ │ - 0x00d575b0 65644178 6973506f 73287665 6332206f edAxisPos(vec2 o │ │ │ │ - 0x00d575c0 72696769 6e616c41 78697350 6f732c20 riginalAxisPos, │ │ │ │ - 0x00d575d0 76656332 20736869 66746564 506f732c vec2 shiftedPos, │ │ │ │ - 0x00d575e0 206d6174 34206d6f 64656c56 6965772c mat4 modelView, │ │ │ │ - 0x00d575f0 20666c6f 61742068 616c6657 69647468 float halfWidth │ │ │ │ - 0x00d57600 29200a20 207b200a 20202020 76656332 ) . { . vec2 │ │ │ │ - 0x00d57610 2070203d 20287665 63342873 68696674 p = (vec4(shift │ │ │ │ - 0x00d57620 6564506f 732c2030 2e302c20 312e3029 edPos, 0.0, 1.0) │ │ │ │ - 0x00d57630 202a206d 6f64656c 56696577 292e7879 * modelView).xy │ │ │ │ - 0x00d57640 3b200a20 20202076 65633220 64203d20 ; . vec2 d = │ │ │ │ - 0x00d57650 70202d20 6f726967 696e616c 41786973 p - originalAxis │ │ │ │ - 0x00d57660 506f733b 200a2020 20206966 2028646f Pos; . if (do │ │ │ │ - 0x00d57670 7428642c 20642920 213d2030 2e302920 t(d, d) != 0.0) │ │ │ │ - 0x00d57680 0a202020 20202072 65747572 6e206f72 . return or │ │ │ │ - 0x00d57690 6967696e 616c4178 6973506f 73202b20 iginalAxisPos + │ │ │ │ - 0x00d576a0 6e6f726d 616c697a 65286429 202a2068 normalize(d) * h │ │ │ │ - 0x00d576b0 616c6657 69647468 3b200a20 20202065 alfWidth; . e │ │ │ │ - 0x00d576c0 6c736520 0a202020 20202072 65747572 lse . retur │ │ │ │ - 0x00d576d0 6e206f72 6967696e 616c4178 6973506f n originalAxisPo │ │ │ │ - 0x00d576e0 733b200a 20207d20 0a202076 6f696420 s; . } . void │ │ │ │ - 0x00d576f0 6d61696e 2829200a 20207b20 0a202020 main() . { . │ │ │ │ - 0x00d57700 20766563 32206e6f 726d616c 203d2061 vec2 normal = a │ │ │ │ - 0x00d57710 5f6e6f72 6d616c2e 78793b20 0a202020 _normal.xy; . │ │ │ │ - 0x00d57720 20766563 32207472 616e7366 6f726d65 vec2 transforme │ │ │ │ - 0x00d57730 64417869 73506f73 203d2028 76656334 dAxisPos = (vec4 │ │ │ │ - 0x00d57740 28615f70 6f736974 696f6e2e 78792c20 (a_position.xy, │ │ │ │ - 0x00d57750 302e302c 20312e30 29202a20 755f6d6f 0.0, 1.0) * u_mo │ │ │ │ - 0x00d57760 64656c56 69657729 2e78793b 200a2020 delView).xy; . │ │ │ │ - 0x00d57770 2020696e 7420696e 64657820 3d20696e int index = in │ │ │ │ - 0x00d57780 7428615f 706f7369 74696f6e 2e77293b t(a_position.w); │ │ │ │ - 0x00d57790 200a2020 2020666c 6f617420 6c656674 . float left │ │ │ │ - 0x00d577a0 53697a65 203d2075 5f6c6967 68744172 Size = u_lightAr │ │ │ │ - 0x00d577b0 726f7743 6f6c6f72 5b696e64 65785d3b rowColor[index]; │ │ │ │ - 0x00d577c0 200a2020 2020666c 6f617420 72696768 . float righ │ │ │ │ - 0x00d577d0 7453697a 65203d20 755f6461 726b4172 tSize = u_darkAr │ │ │ │ - 0x00d577e0 726f7743 6f6c6f72 5b696e64 65785d3b rowColor[index]; │ │ │ │ - 0x00d577f0 200a2020 20206966 2028646f 74286e6f . if (dot(no │ │ │ │ - 0x00d57800 726d616c 2c206e6f 726d616c 2920213d rmal, normal) != │ │ │ │ - 0x00d57810 20302e30 29200a20 2020207b 200a2020 0.0) . { . │ │ │ │ - 0x00d57820 20202020 76656332 206e6f72 6d203d20 vec2 norm = │ │ │ │ - 0x00d57830 6e6f726d 616c202a 20302e35 202a2028 normal * 0.5 * ( │ │ │ │ - 0x00d57840 72696768 7453697a 65202d20 6c656674 rightSize - left │ │ │ │ - 0x00d57850 53697a65 293b200a 20202020 20207472 Size); . tr │ │ │ │ - 0x00d57860 616e7366 6f726d65 64417869 73506f73 ansformedAxisPos │ │ │ │ - 0x00d57870 203d2063 616c634c 696e6554 72616e73 = calcLineTrans │ │ │ │ - 0x00d57880 666f726d 65644178 6973506f 73287472 formedAxisPos(tr │ │ │ │ - 0x00d57890 616e7366 6f726d65 64417869 73506f73 ansformedAxisPos │ │ │ │ - 0x00d578a0 2c20615f 706f7369 74696f6e 2e787920 , a_position.xy │ │ │ │ - 0x00d578b0 2b206e6f 726d2c20 0a202020 20202020 + norm, . │ │ │ │ - 0x00d578c0 20202020 20202020 20202020 20202020 │ │ │ │ - 0x00d578d0 20202020 20202020 20202020 20202020 │ │ │ │ - 0x00d578e0 20202020 20202020 20202020 20202075 u │ │ │ │ - 0x00d578f0 5f6d6f64 656c5669 65772c20 6c656e67 _modelView, leng │ │ │ │ - 0x00d57900 7468286e 6f726d29 293b200a 20202020 th(norm)); . │ │ │ │ - 0x00d57910 7d200a20 20202076 5f726164 69757320 } . v_radius │ │ │ │ - 0x00d57920 3d207665 63332861 5f6e6f72 6d616c2e = vec3(a_normal. │ │ │ │ - 0x00d57930 7a772c20 312e3029 202a2030 2e35202a zw, 1.0) * 0.5 * │ │ │ │ - 0x00d57940 20286c65 66745369 7a65202b 20726967 (leftSize + rig │ │ │ │ - 0x00d57950 68745369 7a65293b 200a2020 20207665 htSize); . ve │ │ │ │ - 0x00d57960 63322066 696e616c 506f7320 3d207472 c2 finalPos = tr │ │ │ │ - 0x00d57970 616e7366 6f726d65 64417869 73506f73 ansformedAxisPos │ │ │ │ - 0x00d57980 202b2076 5f726164 6975732e 78793b20 + v_radius.xy; │ │ │ │ - 0x00d57990 0a202020 20765f63 6f6c6f72 54657843 . v_colorTexC │ │ │ │ - 0x00d579a0 6f6f7264 203d2061 5f636f6c 6f725465 oord = a_colorTe │ │ │ │ - 0x00d579b0 78436f6f 72643b20 0a202020 20766563 xCoord; . vec │ │ │ │ - 0x00d579c0 3420706f 73203d20 76656334 2866696e 4 pos = vec4(fin │ │ │ │ - 0x00d579d0 616c506f 732c2061 5f706f73 6974696f alPos, a_positio │ │ │ │ - 0x00d579e0 6e2e7a2c 20312e30 29202a20 755f7072 n.z, 1.0) * u_pr │ │ │ │ - 0x00d579f0 6f6a6563 74696f6e 3b200a20 20202067 ojection; . g │ │ │ │ - 0x00d57a00 6c5f506f 73697469 6f6e203d 20617070 l_Position = app │ │ │ │ - 0x00d57a10 6c795069 766f7454 72616e73 666f726d lyPivotTransform │ │ │ │ - 0x00d57a20 28706f73 2c20755f 7069766f 74547261 (pos, u_pivotTra │ │ │ │ - 0x00d57a30 6e73666f 726d2c20 302e3029 3b200a20 nsform, 0.0); . │ │ │ │ - 0x00d57a40 207d200a 00000000 00000000 00000000 } ............. │ │ │ │ - 0x00d57a50 00000000 00000000 00000000 00000000 ................ │ │ │ │ - 0x00d57a60 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d57a70 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d57a80 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d57a90 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d57aa0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d57ab0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d57ac0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d57ad0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d57ae0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d57af0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d57b00 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d57b10 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d57b20 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d57b30 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d57b40 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d57b50 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d57b60 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d57b70 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d57b80 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d57b90 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d57ba0 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d57bb0 63322076 5f636f6c 6f725465 78436f6f c2 v_colorTexCoo │ │ │ │ - 0x00d57bc0 72643b20 0a20206f 75742076 65633420 rd; . out vec4 │ │ │ │ - 0x00d57bd0 765f4672 6167436f 6c6f723b 200a2020 v_FragColor; . │ │ │ │ - 0x00d57be0 756e6966 6f726d20 6d617434 20755f6d uniform mat4 u_m │ │ │ │ - 0x00d57bf0 6f64656c 56696577 3b200a20 20756e69 odelView; . uni │ │ │ │ - 0x00d57c00 666f726d 206d6174 3420755f 70726f6a form mat4 u_proj │ │ │ │ - 0x00d57c10 65637469 6f6e3b20 0a202075 6e69666f ection; . unifo │ │ │ │ - 0x00d57c20 726d206d 61743420 755f7069 766f7454 rm mat4 u_pivotT │ │ │ │ - 0x00d57c30 72616e73 666f726d 3b200a20 20756e69 ransform; . uni │ │ │ │ - 0x00d57c40 666f726d 20766563 3420755f 74726166 form vec4 u_traf │ │ │ │ - 0x00d57c50 66696350 6172616d 733b200a 2020756e ficParams; . un │ │ │ │ - 0x00d57c60 69666f72 6d207665 63342075 5f6f7574 iform vec4 u_out │ │ │ │ - 0x00d57c70 6c696e65 436f6c6f 723b200a 2020756e lineColor; . un │ │ │ │ - 0x00d57c80 69666f72 6d207665 63342075 5f6c6967 iform vec4 u_lig │ │ │ │ - 0x00d57c90 68744172 726f7743 6f6c6f72 3b200a20 htArrowColor; . │ │ │ │ - 0x00d57ca0 20756e69 666f726d 20766563 3420755f uniform vec4 u_ │ │ │ │ - 0x00d57cb0 6461726b 4172726f 77436f6c 6f723b20 darkArrowColor; │ │ │ │ - 0x00d57cc0 0a202075 6e69666f 726d2066 6c6f6174 . uniform float │ │ │ │ - 0x00d57cd0 20755f6f 75746c69 6e653b20 0a202075 u_outline; . u │ │ │ │ - 0x00d57ce0 6e69666f 726d2066 6c6f6174 20755f6f niform float u_o │ │ │ │ - 0x00d57cf0 70616369 74793b20 0a202075 6e69666f pacity; . unifo │ │ │ │ - 0x00d57d00 726d2073 616d706c 65723244 20755f63 rm sampler2D u_c │ │ │ │ - 0x00d57d10 6f6c6f72 5465783b 200a2020 636f6e73 olorTex; . cons │ │ │ │ - 0x00d57d20 7420666c 6f617420 6b536861 7065436f t float kShapeCo │ │ │ │ - 0x00d57d30 6f726453 63616c61 72203d20 31303030 ordScalar = 1000 │ │ │ │ - 0x00d57d40 2e303b20 0a202076 6f696420 6d61696e .0; . void main │ │ │ │ - 0x00d57d50 2829200a 20207b20 0a202020 20766563 () . { . vec │ │ │ │ - 0x00d57d60 3420636f 6c6f7220 3d207465 78747572 4 color = textur │ │ │ │ - 0x00d57d70 6528755f 636f6c6f 72546578 2c20765f e(u_colorTex, v_ │ │ │ │ - 0x00d57d80 636f6c6f 72546578 436f6f72 64293b20 colorTexCoord); │ │ │ │ - 0x00d57d90 0a202020 20765f46 72616743 6f6c6f72 . v_FragColor │ │ │ │ - 0x00d57da0 203d2076 65633428 636f6c6f 722e7267 = vec4(color.rg │ │ │ │ - 0x00d57db0 622c2075 5f6f7061 63697479 293b200a b, u_opacity); . │ │ │ │ - 0x00d57dc0 20207d20 0a000000 00000000 00000000 } ............ │ │ │ │ - 0x00d57dd0 00000000 00000000 00000000 00000000 ................ │ │ │ │ + 0x00d49920 20202020 20202020 20202020 20202075 u │ │ │ │ + 0x00d49930 5f6d6f64 656c5669 65772c20 68616c66 _modelView, half │ │ │ │ + 0x00d49940 57696474 68293b20 0a202020 207d200a Width); . } . │ │ │ │ + 0x00d49950 20202020 666c6f61 7420754f 66667365 float uOffse │ │ │ │ + 0x00d49960 74203d20 6d696e28 6c656e67 74682876 t = min(length(v │ │ │ │ + 0x00d49970 65633428 6b536861 7065436f 6f726453 ec4(kShapeCoordS │ │ │ │ + 0x00d49980 63616c61 722c2030 2c20302c 20302920 calar, 0, 0, 0) │ │ │ │ + 0x00d49990 2a20755f 6d6f6465 6c566965 7729202a * u_modelView) * │ │ │ │ + 0x00d499a0 20615f6d 61736b54 6578436f 6f72642e a_maskTexCoord. │ │ │ │ + 0x00d499b0 782c2031 2e30293b 200a2020 2020765f x, 1.0); . v_ │ │ │ │ + 0x00d499c0 636f6c6f 72546578 436f6f72 64203d20 colorTexCoord = │ │ │ │ + 0x00d499d0 615f636f 6c6f7254 6578436f 6f72643b a_colorTexCoord; │ │ │ │ + 0x00d499e0 200a2020 2020765f 6d61736b 54657843 . v_maskTexC │ │ │ │ + 0x00d499f0 6f6f7264 203d2076 65633228 615f6d61 oord = vec2(a_ma │ │ │ │ + 0x00d49a00 736b5465 78436f6f 72642e79 202b2075 skTexCoord.y + u │ │ │ │ + 0x00d49a10 4f666673 6574202a 20615f6d 61736b54 Offset * a_maskT │ │ │ │ + 0x00d49a20 6578436f 6f72642e 7a2c2061 5f6d6173 exCoord.z, a_mas │ │ │ │ + 0x00d49a30 6b546578 436f6f72 642e7729 3b200a20 kTexCoord.w); . │ │ │ │ + 0x00d49a40 20202076 65633420 706f7320 3d207665 vec4 pos = ve │ │ │ │ + 0x00d49a50 63342874 72616e73 666f726d 65644178 c4(transformedAx │ │ │ │ + 0x00d49a60 6973506f 732c2061 5f706f73 6974696f isPos, a_positio │ │ │ │ + 0x00d49a70 6e2e7a2c 20312e30 29202a20 755f7072 n.z, 1.0) * u_pr │ │ │ │ + 0x00d49a80 6f6a6563 74696f6e 3b200a20 20202067 ojection; . g │ │ │ │ + 0x00d49a90 6c5f506f 73697469 6f6e203d 20617070 l_Position = app │ │ │ │ + 0x00d49aa0 6c795069 766f7454 72616e73 666f726d lyPivotTransform │ │ │ │ + 0x00d49ab0 28706f73 2c20755f 7069766f 74547261 (pos, u_pivotTra │ │ │ │ + 0x00d49ac0 6e73666f 726d2c20 302e3029 3b200a20 nsform, 0.0); . │ │ │ │ + 0x00d49ad0 207d200a 00000000 00000000 00000000 } ............. │ │ │ │ + 0x00d49ae0 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d49af0 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d49b00 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d49b10 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d49b20 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d49b30 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d49b40 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d49b50 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d49b60 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d49b70 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d49b80 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d49b90 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d49ba0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d49bb0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d49bc0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d49bd0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d49be0 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d49bf0 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d49c00 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d49c10 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d49c20 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d49c30 63322061 5f706f73 6974696f 6e3b200a c2 a_position; . │ │ │ │ + 0x00d49c40 2020696e 20766563 3220615f 636f6c6f in vec2 a_colo │ │ │ │ + 0x00d49c50 72546578 436f6f72 64733b20 0a20206f rTexCoords; . o │ │ │ │ + 0x00d49c60 75742076 65633220 765f636f 6c6f7254 ut vec2 v_colorT │ │ │ │ + 0x00d49c70 6578436f 6f726473 3b200a20 20756e69 exCoords; . uni │ │ │ │ + 0x00d49c80 666f726d 206d6174 3420755f 6d6f6465 form mat4 u_mode │ │ │ │ + 0x00d49c90 6c566965 773b200a 2020756e 69666f72 lView; . unifor │ │ │ │ + 0x00d49ca0 6d206d61 74342075 5f70726f 6a656374 m mat4 u_project │ │ │ │ + 0x00d49cb0 696f6e3b 200a2020 756e6966 6f726d20 ion; . uniform │ │ │ │ + 0x00d49cc0 76656332 20755f63 6f6e7472 61737447 vec2 u_contrastG │ │ │ │ + 0x00d49cd0 616d6d61 3b200a20 20756e69 666f726d amma; . uniform │ │ │ │ + 0x00d49ce0 20766563 3220755f 706f7369 74696f6e vec2 u_position │ │ │ │ + 0x00d49cf0 3b200a20 20756e69 666f726d 20666c6f ; . uniform flo │ │ │ │ + 0x00d49d00 61742075 5f69734f 75746c69 6e655061 at u_isOutlinePa │ │ │ │ + 0x00d49d10 73733b20 0a202075 6e69666f 726d2066 ss; . uniform f │ │ │ │ + 0x00d49d20 6c6f6174 20755f6f 70616369 74793b20 loat u_opacity; │ │ │ │ + 0x00d49d30 0a202075 6e69666f 726d2066 6c6f6174 . uniform float │ │ │ │ + 0x00d49d40 20755f6c 656e6774 683b200a 2020636f u_length; . co │ │ │ │ + 0x00d49d50 6e737420 666c6f61 74206b53 68617065 nst float kShape │ │ │ │ + 0x00d49d60 436f6f72 64536361 6c617220 3d203130 CoordScalar = 10 │ │ │ │ + 0x00d49d70 30302e30 3b200a20 20766563 34206170 00.0; . vec4 ap │ │ │ │ + 0x00d49d80 706c7950 69766f74 5472616e 73666f72 plyPivotTransfor │ │ │ │ + 0x00d49d90 6d287665 63342070 69766f74 2c206d61 m(vec4 pivot, ma │ │ │ │ + 0x00d49da0 74342070 69766f74 5472616e 73666f72 t4 pivotTransfor │ │ │ │ + 0x00d49db0 6d2c2066 6c6f6174 20706976 6f745265 m, float pivotRe │ │ │ │ + 0x00d49dc0 616c5a29 200a2020 7b200a20 20202076 alZ) . { . v │ │ │ │ + 0x00d49dd0 65633420 7472616e 73666f72 6d656450 ec4 transformedP │ │ │ │ + 0x00d49de0 69766f74 203d2070 69766f74 3b200a20 ivot = pivot; . │ │ │ │ + 0x00d49df0 20202066 6c6f6174 2077203d 20747261 float w = tra │ │ │ │ + 0x00d49e00 6e73666f 726d6564 5069766f 742e773b nsformedPivot.w; │ │ │ │ + 0x00d49e10 200a2020 20207472 616e7366 6f726d65 . transforme │ │ │ │ + 0x00d49e20 64506976 6f742e78 7977203d 20287069 dPivot.xyw = (pi │ │ │ │ + 0x00d49e30 766f7454 72616e73 666f726d 202a2076 votTransform * v │ │ │ │ + 0x00d49e40 65633428 7472616e 73666f72 6d656450 ec4(transformedP │ │ │ │ + 0x00d49e50 69766f74 2e78792c 20706976 6f745265 ivot.xy, pivotRe │ │ │ │ + 0x00d49e60 616c5a2c 20772929 2e787977 3b200a20 alZ, w)).xyw; . │ │ │ │ + 0x00d49e70 20202074 72616e73 666f726d 65645069 transformedPi │ │ │ │ + 0x00d49e80 766f742e 7a202a3d 20747261 6e73666f vot.z *= transfo │ │ │ │ + 0x00d49e90 726d6564 5069766f 742e7720 2f20773b rmedPivot.w / w; │ │ │ │ + 0x00d49ea0 200a2020 23696664 65662056 554c4b41 . #ifdef VULKA │ │ │ │ + 0x00d49eb0 4e200a20 20202074 72616e73 666f726d N . transform │ │ │ │ + 0x00d49ec0 65645069 766f742e 79203d20 2d747261 edPivot.y = -tra │ │ │ │ + 0x00d49ed0 6e73666f 726d6564 5069766f 742e793b nsformedPivot.y; │ │ │ │ + 0x00d49ee0 200a2020 20207472 616e7366 6f726d65 . transforme │ │ │ │ + 0x00d49ef0 64506976 6f742e7a 203d2028 7472616e dPivot.z = (tran │ │ │ │ + 0x00d49f00 73666f72 6d656450 69766f74 2e7a2020 sformedPivot.z │ │ │ │ + 0x00d49f10 2b207472 616e7366 6f726d65 64506976 + transformedPiv │ │ │ │ + 0x00d49f20 6f742e77 29202f20 322e303b 200a2020 ot.w) / 2.0; . │ │ │ │ + 0x00d49f30 23656e64 6966200a 20202020 72657475 #endif . retu │ │ │ │ + 0x00d49f40 726e2074 72616e73 666f726d 65645069 rn transformedPi │ │ │ │ + 0x00d49f50 766f743b 200a2020 7d200a20 20766563 vot; . } . vec │ │ │ │ + 0x00d49f60 34206170 706c7942 696c6c62 6f617264 4 applyBillboard │ │ │ │ + 0x00d49f70 5069766f 74547261 6e73666f 726d2876 PivotTransform(v │ │ │ │ + 0x00d49f80 65633420 7069766f 742c206d 61743420 ec4 pivot, mat4 │ │ │ │ + 0x00d49f90 7069766f 74547261 6e73666f 726d2c20 pivotTransform, │ │ │ │ + 0x00d49fa0 666c6f61 74207069 766f7452 65616c5a float pivotRealZ │ │ │ │ + 0x00d49fb0 2c207665 6332206f 66667365 7429200a , vec2 offset) . │ │ │ │ + 0x00d49fc0 20207b20 0a202020 20666c6f 6174206c { . float l │ │ │ │ + 0x00d49fd0 6f676963 5a203d20 7069766f 742e7a20 ogicZ = pivot.z │ │ │ │ + 0x00d49fe0 2f207069 766f742e 773b200a 20202020 / pivot.w; . │ │ │ │ + 0x00d49ff0 76656334 20747261 6e73666f 726d6564 vec4 transformed │ │ │ │ + 0x00d4a000 5069766f 74203d20 7069766f 74547261 Pivot = pivotTra │ │ │ │ + 0x00d4a010 6e73666f 726d202a 20766563 34287069 nsform * vec4(pi │ │ │ │ + 0x00d4a020 766f742e 78792c20 7069766f 74526561 vot.xy, pivotRea │ │ │ │ + 0x00d4a030 6c5a2c20 7069766f 742e7729 3b200a20 lZ, pivot.w); . │ │ │ │ + 0x00d4a040 20202076 65633420 7363616c 65203d20 vec4 scale = │ │ │ │ + 0x00d4a050 7069766f 74547261 6e73666f 726d202a pivotTransform * │ │ │ │ + 0x00d4a060 20766563 3428312e 302c202d 312e302c vec4(1.0, -1.0, │ │ │ │ + 0x00d4a070 20302e30 2c20312e 30293b20 0a202020 0.0, 1.0); . │ │ │ │ + 0x00d4a080 20766563 3420706f 73697469 6f6e203d vec4 position = │ │ │ │ + 0x00d4a090 20766563 34287472 616e7366 6f726d65 vec4(transforme │ │ │ │ + 0x00d4a0a0 64506976 6f742e78 79202f20 7472616e dPivot.xy / tran │ │ │ │ + 0x00d4a0b0 73666f72 6d656450 69766f74 2e772c20 sformedPivot.w, │ │ │ │ + 0x00d4a0c0 6c6f6769 635a2c20 312e3029 202b2076 logicZ, 1.0) + v │ │ │ │ + 0x00d4a0d0 65633428 6f666673 6574202f 20736361 ec4(offset / sca │ │ │ │ + 0x00d4a0e0 6c652e77 202a2073 63616c65 2e782c20 le.w * scale.x, │ │ │ │ + 0x00d4a0f0 302e302c 20302e30 293b200a 20202369 0.0, 0.0); . #i │ │ │ │ + 0x00d4a100 66646566 2056554c 4b414e20 0a202020 fdef VULKAN . │ │ │ │ + 0x00d4a110 20706f73 6974696f 6e2e7920 3d202d70 position.y = -p │ │ │ │ + 0x00d4a120 6f736974 696f6e2e 793b200a 20202020 osition.y; . │ │ │ │ + 0x00d4a130 706f7369 74696f6e 2e7a203d 2028706f position.z = (po │ │ │ │ + 0x00d4a140 73697469 6f6e2e7a 20202b20 706f7369 sition.z + posi │ │ │ │ + 0x00d4a150 74696f6e 2e772920 2f20322e 303b200a tion.w) / 2.0; . │ │ │ │ + 0x00d4a160 20202365 6e646966 200a2020 20207265 #endif . re │ │ │ │ + 0x00d4a170 7475726e 20706f73 6974696f 6e3b200a turn position; . │ │ │ │ + 0x00d4a180 20207d20 0a202076 65633220 63616c63 } . vec2 calc │ │ │ │ + 0x00d4a190 4c696e65 5472616e 73666f72 6d656441 LineTransformedA │ │ │ │ + 0x00d4a1a0 78697350 6f732876 65633220 6f726967 xisPos(vec2 orig │ │ │ │ + 0x00d4a1b0 696e616c 41786973 506f732c 20766563 inalAxisPos, vec │ │ │ │ + 0x00d4a1c0 32207368 69667465 64506f73 2c206d61 2 shiftedPos, ma │ │ │ │ + 0x00d4a1d0 7434206d 6f64656c 56696577 2c20666c t4 modelView, fl │ │ │ │ + 0x00d4a1e0 6f617420 68616c66 57696474 6829200a oat halfWidth) . │ │ │ │ + 0x00d4a1f0 20207b20 0a202020 20766563 32207020 { . vec2 p │ │ │ │ + 0x00d4a200 3d202876 65633428 73686966 74656450 = (vec4(shiftedP │ │ │ │ + 0x00d4a210 6f732c20 302e302c 20312e30 29202a20 os, 0.0, 1.0) * │ │ │ │ + 0x00d4a220 6d6f6465 6c566965 77292e78 793b200a modelView).xy; . │ │ │ │ + 0x00d4a230 20202020 76656332 2064203d 2070202d vec2 d = p - │ │ │ │ + 0x00d4a240 206f7269 67696e61 6c417869 73506f73 originalAxisPos │ │ │ │ + 0x00d4a250 3b200a20 20202069 66202864 6f742864 ; . if (dot(d │ │ │ │ + 0x00d4a260 2c206429 20213d20 302e3029 200a2020 , d) != 0.0) . │ │ │ │ + 0x00d4a270 20202020 72657475 726e206f 72696769 return origi │ │ │ │ + 0x00d4a280 6e616c41 78697350 6f73202b 206e6f72 nalAxisPos + nor │ │ │ │ + 0x00d4a290 6d616c69 7a652864 29202a20 68616c66 malize(d) * half │ │ │ │ + 0x00d4a2a0 57696474 683b200a 20202020 656c7365 Width; . else │ │ │ │ + 0x00d4a2b0 200a2020 20202020 72657475 726e206f . return o │ │ │ │ + 0x00d4a2c0 72696769 6e616c41 78697350 6f733b20 riginalAxisPos; │ │ │ │ + 0x00d4a2d0 0a20207d 200a2020 766f6964 206d6169 . } . void mai │ │ │ │ + 0x00d4a2e0 6e282920 0a20207b 200a2020 2020676c n() . { . gl │ │ │ │ + 0x00d4a2f0 5f506f73 6974696f 6e203d20 76656334 _Position = vec4 │ │ │ │ + 0x00d4a300 28615f70 6f736974 696f6e2c 20302c20 (a_position, 0, │ │ │ │ + 0x00d4a310 3129202a 20755f6d 6f64656c 56696577 1) * u_modelView │ │ │ │ + 0x00d4a320 202a2075 5f70726f 6a656374 696f6e3b * u_projection; │ │ │ │ + 0x00d4a330 200a2020 23696664 65662056 554c4b41 . #ifdef VULKA │ │ │ │ + 0x00d4a340 4e200a20 20202067 6c5f506f 73697469 N . gl_Positi │ │ │ │ + 0x00d4a350 6f6e2e79 203d202d 676c5f50 6f736974 on.y = -gl_Posit │ │ │ │ + 0x00d4a360 696f6e2e 793b200a 20202020 676c5f50 ion.y; . gl_P │ │ │ │ + 0x00d4a370 6f736974 696f6e2e 7a203d20 28676c5f osition.z = (gl_ │ │ │ │ + 0x00d4a380 506f7369 74696f6e 2e7a2020 2b20676c Position.z + gl │ │ │ │ + 0x00d4a390 5f506f73 6974696f 6e2e7729 202a2030 _Position.w) * 0 │ │ │ │ + 0x00d4a3a0 2e353b20 0a202023 656e6469 66200a20 .5; . #endif . │ │ │ │ + 0x00d4a3b0 20202076 5f636f6c 6f725465 78436f6f v_colorTexCoo │ │ │ │ + 0x00d4a3c0 72647320 3d20615f 636f6c6f 72546578 rds = a_colorTex │ │ │ │ + 0x00d4a3d0 436f6f72 64733b20 0a20207d 200a0000 Coords; . } ... │ │ │ │ + 0x00d4a3e0 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d4a3f0 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d4a400 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d4a410 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d4a420 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d4a430 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d4a440 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d4a450 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d4a460 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d4a470 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d4a480 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d4a490 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d4a4a0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d4a4b0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d4a4c0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d4a4d0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d4a4e0 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d4a4f0 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d4a500 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d4a510 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d4a520 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d4a530 63322061 5f636f6c 6f725465 78436f6f c2 a_colorTexCoo │ │ │ │ + 0x00d4a540 72643b20 0a202069 6e207665 63322061 rd; . in vec2 a │ │ │ │ + 0x00d4a550 5f6f7574 6c696e65 436f6c6f 72546578 _outlineColorTex │ │ │ │ + 0x00d4a560 436f6f72 643b200a 2020696e 20766563 Coord; . in vec │ │ │ │ + 0x00d4a570 3220615f 6d61736b 54657843 6f6f7264 2 a_maskTexCoord │ │ │ │ + 0x00d4a580 3b200a20 20696e20 76656334 20615f70 ; . in vec4 a_p │ │ │ │ + 0x00d4a590 6f736974 696f6e3b 200a2020 696e2076 osition; . in v │ │ │ │ + 0x00d4a5a0 65633220 615f6e6f 726d616c 3b200a20 ec2 a_normal; . │ │ │ │ + 0x00d4a5b0 20236966 64656620 454e4142 4c455f56 #ifdef ENABLE_V │ │ │ │ + 0x00d4a5c0 5446200a 20206f75 74204c4f 575f5020 TF . out LOW_P │ │ │ │ + 0x00d4a5d0 76656334 20765f63 6f6c6f72 3b200a20 vec4 v_color; . │ │ │ │ + 0x00d4a5e0 2023656c 7365200a 20206f75 74207665 #else . out ve │ │ │ │ + 0x00d4a5f0 63322076 5f636f6c 6f725465 78436f6f c2 v_colorTexCoo │ │ │ │ + 0x00d4a600 72643b20 0a202023 656e6469 66200a20 rd; . #endif . │ │ │ │ + 0x00d4a610 206f7574 20766563 3220765f 6d61736b out vec2 v_mask │ │ │ │ + 0x00d4a620 54657843 6f6f7264 3b200a20 20756e69 TexCoord; . uni │ │ │ │ + 0x00d4a630 666f726d 206d6174 3420755f 6d6f6465 form mat4 u_mode │ │ │ │ + 0x00d4a640 6c566965 773b200a 2020756e 69666f72 lView; . unifor │ │ │ │ + 0x00d4a650 6d206d61 74342075 5f70726f 6a656374 m mat4 u_project │ │ │ │ + 0x00d4a660 696f6e3b 200a2020 756e6966 6f726d20 ion; . uniform │ │ │ │ + 0x00d4a670 6d617434 20755f70 69766f74 5472616e mat4 u_pivotTran │ │ │ │ + 0x00d4a680 73666f72 6d3b200a 2020756e 69666f72 sform; . unifor │ │ │ │ + 0x00d4a690 6d207665 63322075 5f636f6e 74726173 m vec2 u_contras │ │ │ │ + 0x00d4a6a0 7447616d 6d613b20 0a202075 6e69666f tGamma; . unifo │ │ │ │ + 0x00d4a6b0 726d2066 6c6f6174 20755f6f 70616369 rm float u_opaci │ │ │ │ + 0x00d4a6c0 74793b20 0a202075 6e69666f 726d2066 ty; . uniform f │ │ │ │ + 0x00d4a6d0 6c6f6174 20755f7a 5363616c 653b200a loat u_zScale; . │ │ │ │ + 0x00d4a6e0 2020756e 69666f72 6d20666c 6f617420 uniform float │ │ │ │ + 0x00d4a6f0 755f696e 74657270 6f6c6174 696f6e3b u_interpolation; │ │ │ │ + 0x00d4a700 200a2020 756e6966 6f726d20 666c6f61 . uniform floa │ │ │ │ + 0x00d4a710 7420755f 69734f75 746c696e 65506173 t u_isOutlinePas │ │ │ │ + 0x00d4a720 733b200a 2020756e 69666f72 6d207361 s; . uniform sa │ │ │ │ + 0x00d4a730 6d706c65 72324420 755f636f 6c6f7254 mpler2D u_colorT │ │ │ │ + 0x00d4a740 65783b20 0a202063 6f6e7374 20666c6f ex; . const flo │ │ │ │ + 0x00d4a750 6174206b 42617365 44657074 68536869 at kBaseDepthShi │ │ │ │ + 0x00d4a760 6674203d 202d3130 2e303b20 0a202063 ft = -10.0; . c │ │ │ │ + 0x00d4a770 6f6e7374 20666c6f 6174206b 53686170 onst float kShap │ │ │ │ + 0x00d4a780 65436f6f 72645363 616c6172 203d2031 eCoordScalar = 1 │ │ │ │ + 0x00d4a790 3030302e 303b200a 20207665 63342061 000.0; . vec4 a │ │ │ │ + 0x00d4a7a0 70706c79 5069766f 74547261 6e73666f pplyPivotTransfo │ │ │ │ + 0x00d4a7b0 726d2876 65633420 7069766f 742c206d rm(vec4 pivot, m │ │ │ │ + 0x00d4a7c0 61743420 7069766f 74547261 6e73666f at4 pivotTransfo │ │ │ │ + 0x00d4a7d0 726d2c20 666c6f61 74207069 766f7452 rm, float pivotR │ │ │ │ + 0x00d4a7e0 65616c5a 29200a20 207b200a 20202020 ealZ) . { . │ │ │ │ + 0x00d4a7f0 76656334 20747261 6e73666f 726d6564 vec4 transformed │ │ │ │ + 0x00d4a800 5069766f 74203d20 7069766f 743b200a Pivot = pivot; . │ │ │ │ + 0x00d4a810 20202020 666c6f61 74207720 3d207472 float w = tr │ │ │ │ + 0x00d4a820 616e7366 6f726d65 64506976 6f742e77 ansformedPivot.w │ │ │ │ + 0x00d4a830 3b200a20 20202074 72616e73 666f726d ; . transform │ │ │ │ + 0x00d4a840 65645069 766f742e 78797720 3d202870 edPivot.xyw = (p │ │ │ │ + 0x00d4a850 69766f74 5472616e 73666f72 6d202a20 ivotTransform * │ │ │ │ + 0x00d4a860 76656334 28747261 6e73666f 726d6564 vec4(transformed │ │ │ │ + 0x00d4a870 5069766f 742e7879 2c207069 766f7452 Pivot.xy, pivotR │ │ │ │ + 0x00d4a880 65616c5a 2c207729 292e7879 773b200a ealZ, w)).xyw; . │ │ │ │ + 0x00d4a890 20202020 7472616e 73666f72 6d656450 transformedP │ │ │ │ + 0x00d4a8a0 69766f74 2e7a202a 3d207472 616e7366 ivot.z *= transf │ │ │ │ + 0x00d4a8b0 6f726d65 64506976 6f742e77 202f2077 ormedPivot.w / w │ │ │ │ + 0x00d4a8c0 3b200a20 20236966 64656620 56554c4b ; . #ifdef VULK │ │ │ │ + 0x00d4a8d0 414e200a 20202020 7472616e 73666f72 AN . transfor │ │ │ │ + 0x00d4a8e0 6d656450 69766f74 2e79203d 202d7472 medPivot.y = -tr │ │ │ │ + 0x00d4a8f0 616e7366 6f726d65 64506976 6f742e79 ansformedPivot.y │ │ │ │ + 0x00d4a900 3b200a20 20202074 72616e73 666f726d ; . transform │ │ │ │ + 0x00d4a910 65645069 766f742e 7a203d20 28747261 edPivot.z = (tra │ │ │ │ + 0x00d4a920 6e73666f 726d6564 5069766f 742e7a20 nsformedPivot.z │ │ │ │ + 0x00d4a930 202b2074 72616e73 666f726d 65645069 + transformedPi │ │ │ │ + 0x00d4a940 766f742e 7729202f 20322e30 3b200a20 vot.w) / 2.0; . │ │ │ │ + 0x00d4a950 2023656e 64696620 0a202020 20726574 #endif . ret │ │ │ │ + 0x00d4a960 75726e20 7472616e 73666f72 6d656450 urn transformedP │ │ │ │ + 0x00d4a970 69766f74 3b200a20 207d200a 20207665 ivot; . } . ve │ │ │ │ + 0x00d4a980 63342061 70706c79 42696c6c 626f6172 c4 applyBillboar │ │ │ │ + 0x00d4a990 64506976 6f745472 616e7366 6f726d28 dPivotTransform( │ │ │ │ + 0x00d4a9a0 76656334 20706976 6f742c20 6d617434 vec4 pivot, mat4 │ │ │ │ + 0x00d4a9b0 20706976 6f745472 616e7366 6f726d2c pivotTransform, │ │ │ │ + 0x00d4a9c0 20666c6f 61742070 69766f74 5265616c float pivotReal │ │ │ │ + 0x00d4a9d0 5a2c2076 65633220 6f666673 65742920 Z, vec2 offset) │ │ │ │ + 0x00d4a9e0 0a20207b 200a2020 2020666c 6f617420 . { . float │ │ │ │ + 0x00d4a9f0 6c6f6769 635a203d 20706976 6f742e7a logicZ = pivot.z │ │ │ │ + 0x00d4aa00 202f2070 69766f74 2e773b20 0a202020 / pivot.w; . │ │ │ │ + 0x00d4aa10 20766563 34207472 616e7366 6f726d65 vec4 transforme │ │ │ │ + 0x00d4aa20 64506976 6f74203d 20706976 6f745472 dPivot = pivotTr │ │ │ │ + 0x00d4aa30 616e7366 6f726d20 2a207665 63342870 ansform * vec4(p │ │ │ │ + 0x00d4aa40 69766f74 2e78792c 20706976 6f745265 ivot.xy, pivotRe │ │ │ │ + 0x00d4aa50 616c5a2c 20706976 6f742e77 293b200a alZ, pivot.w); . │ │ │ │ + 0x00d4aa60 20202020 76656334 20736361 6c65203d vec4 scale = │ │ │ │ + 0x00d4aa70 20706976 6f745472 616e7366 6f726d20 pivotTransform │ │ │ │ + 0x00d4aa80 2a207665 63342831 2e302c20 2d312e30 * vec4(1.0, -1.0 │ │ │ │ + 0x00d4aa90 2c20302e 302c2031 2e30293b 200a2020 , 0.0, 1.0); . │ │ │ │ + 0x00d4aaa0 20207665 63342070 6f736974 696f6e20 vec4 position │ │ │ │ + 0x00d4aab0 3d207665 63342874 72616e73 666f726d = vec4(transform │ │ │ │ + 0x00d4aac0 65645069 766f742e 7879202f 20747261 edPivot.xy / tra │ │ │ │ + 0x00d4aad0 6e73666f 726d6564 5069766f 742e772c nsformedPivot.w, │ │ │ │ + 0x00d4aae0 206c6f67 69635a2c 20312e30 29202b20 logicZ, 1.0) + │ │ │ │ + 0x00d4aaf0 76656334 286f6666 73657420 2f207363 vec4(offset / sc │ │ │ │ + 0x00d4ab00 616c652e 77202a20 7363616c 652e782c ale.w * scale.x, │ │ │ │ + 0x00d4ab10 20302e30 2c20302e 30293b20 0a202023 0.0, 0.0); . # │ │ │ │ + 0x00d4ab20 69666465 66205655 4c4b414e 200a2020 ifdef VULKAN . │ │ │ │ + 0x00d4ab30 2020706f 73697469 6f6e2e79 203d202d position.y = - │ │ │ │ + 0x00d4ab40 706f7369 74696f6e 2e793b20 0a202020 position.y; . │ │ │ │ + 0x00d4ab50 20706f73 6974696f 6e2e7a20 3d202870 position.z = (p │ │ │ │ + 0x00d4ab60 6f736974 696f6e2e 7a20202b 20706f73 osition.z + pos │ │ │ │ + 0x00d4ab70 6974696f 6e2e7729 202f2032 2e303b20 ition.w) / 2.0; │ │ │ │ + 0x00d4ab80 0a202023 656e6469 66200a20 20202072 . #endif . r │ │ │ │ + 0x00d4ab90 65747572 6e20706f 73697469 6f6e3b20 eturn position; │ │ │ │ + 0x00d4aba0 0a20207d 200a2020 76656332 2063616c . } . vec2 cal │ │ │ │ + 0x00d4abb0 634c696e 65547261 6e73666f 726d6564 cLineTransformed │ │ │ │ + 0x00d4abc0 41786973 506f7328 76656332 206f7269 AxisPos(vec2 ori │ │ │ │ + 0x00d4abd0 67696e61 6c417869 73506f73 2c207665 ginalAxisPos, ve │ │ │ │ + 0x00d4abe0 63322073 68696674 6564506f 732c206d c2 shiftedPos, m │ │ │ │ + 0x00d4abf0 61743420 6d6f6465 6c566965 772c2066 at4 modelView, f │ │ │ │ + 0x00d4ac00 6c6f6174 2068616c 66576964 74682920 loat halfWidth) │ │ │ │ + 0x00d4ac10 0a20207b 200a2020 20207665 63322070 . { . vec2 p │ │ │ │ + 0x00d4ac20 203d2028 76656334 28736869 66746564 = (vec4(shifted │ │ │ │ + 0x00d4ac30 506f732c 20302e30 2c20312e 3029202a Pos, 0.0, 1.0) * │ │ │ │ + 0x00d4ac40 206d6f64 656c5669 6577292e 78793b20 modelView).xy; │ │ │ │ + 0x00d4ac50 0a202020 20766563 32206420 3d207020 . vec2 d = p │ │ │ │ + 0x00d4ac60 2d206f72 6967696e 616c4178 6973506f - originalAxisPo │ │ │ │ + 0x00d4ac70 733b200a 20202020 69662028 646f7428 s; . if (dot( │ │ │ │ + 0x00d4ac80 642c2064 2920213d 20302e30 29200a20 d, d) != 0.0) . │ │ │ │ + 0x00d4ac90 20202020 20726574 75726e20 6f726967 return orig │ │ │ │ + 0x00d4aca0 696e616c 41786973 506f7320 2b206e6f inalAxisPos + no │ │ │ │ + 0x00d4acb0 726d616c 697a6528 6429202a 2068616c rmalize(d) * hal │ │ │ │ + 0x00d4acc0 66576964 74683b20 0a202020 20656c73 fWidth; . els │ │ │ │ + 0x00d4acd0 65200a20 20202020 20726574 75726e20 e . return │ │ │ │ + 0x00d4ace0 6f726967 696e616c 41786973 506f733b originalAxisPos; │ │ │ │ + 0x00d4acf0 200a2020 7d200a20 20766f69 64206d61 . } . void ma │ │ │ │ + 0x00d4ad00 696e2829 200a2020 7b200a20 20202066 in() . { . f │ │ │ │ + 0x00d4ad10 6c6f6174 2069734f 75746c69 6e65203d loat isOutline = │ │ │ │ + 0x00d4ad20 20737465 7028302e 352c2075 5f69734f step(0.5, u_isO │ │ │ │ + 0x00d4ad30 75746c69 6e655061 7373293b 200a2020 utlinePass); . │ │ │ │ + 0x00d4ad40 2020666c 6f617420 64657074 68536869 float depthShi │ │ │ │ + 0x00d4ad50 6674203d 206b4261 73654465 70746853 ft = kBaseDepthS │ │ │ │ + 0x00d4ad60 68696674 202a2069 734f7574 6c696e65 hift * isOutline │ │ │ │ + 0x00d4ad70 3b200a20 20202076 65633420 7069766f ; . vec4 pivo │ │ │ │ + 0x00d4ad80 74203d20 28766563 3428615f 706f7369 t = (vec4(a_posi │ │ │ │ + 0x00d4ad90 74696f6e 2e78797a 2c20312e 3029202b tion.xyz, 1.0) + │ │ │ │ + 0x00d4ada0 20766563 3428302e 302c2030 2e302c20 vec4(0.0, 0.0, │ │ │ │ + 0x00d4adb0 64657074 68536869 66742c20 302e3029 depthShift, 0.0) │ │ │ │ + 0x00d4adc0 29202a20 755f6d6f 64656c56 6965773b ) * u_modelView; │ │ │ │ + 0x00d4add0 200a2020 20207665 6334206f 66667365 . vec4 offse │ │ │ │ + 0x00d4ade0 74203d20 76656334 28615f6e 6f726d61 t = vec4(a_norma │ │ │ │ + 0x00d4adf0 6c2c2030 2e302c20 302e3029 202a2075 l, 0.0, 0.0) * u │ │ │ │ + 0x00d4ae00 5f70726f 6a656374 696f6e3b 200a2020 _projection; . │ │ │ │ + 0x00d4ae10 2020676c 5f506f73 6974696f 6e203d20 gl_Position = │ │ │ │ + 0x00d4ae20 6170706c 7942696c 6c626f61 72645069 applyBillboardPi │ │ │ │ + 0x00d4ae30 766f7454 72616e73 666f726d 28706976 votTransform(piv │ │ │ │ + 0x00d4ae40 6f74202a 20755f70 726f6a65 6374696f ot * u_projectio │ │ │ │ + 0x00d4ae50 6e2c2075 5f706976 6f745472 616e7366 n, u_pivotTransf │ │ │ │ + 0x00d4ae60 6f726d2c 200a2020 20202020 20202020 orm, . │ │ │ │ + 0x00d4ae70 20202020 20202020 20202020 20202020 │ │ │ │ + 0x00d4ae80 20202020 20202020 20202020 20202020 │ │ │ │ + 0x00d4ae90 20202020 20615f70 6f736974 696f6e2e a_position. │ │ │ │ + 0x00d4aea0 77202a20 755f7a53 63616c65 2c206f66 w * u_zScale, of │ │ │ │ + 0x00d4aeb0 66736574 2e787929 3b200a20 20202076 fset.xy); . v │ │ │ │ + 0x00d4aec0 65633220 636f6c6f 72546578 436f6f72 ec2 colorTexCoor │ │ │ │ + 0x00d4aed0 64203d20 6d697828 615f636f 6c6f7254 d = mix(a_colorT │ │ │ │ + 0x00d4aee0 6578436f 6f72642c 20615f6f 75746c69 exCoord, a_outli │ │ │ │ + 0x00d4aef0 6e65436f 6c6f7254 6578436f 6f72642c neColorTexCoord, │ │ │ │ + 0x00d4af00 2069734f 75746c69 6e65293b 200a2020 isOutline); . │ │ │ │ + 0x00d4af10 23696664 65662045 4e41424c 455f5654 #ifdef ENABLE_VT │ │ │ │ + 0x00d4af20 46200a20 20202076 5f636f6c 6f72203d F . v_color = │ │ │ │ + 0x00d4af30 20746578 74757265 28755f63 6f6c6f72 texture(u_color │ │ │ │ + 0x00d4af40 5465782c 20636f6c 6f725465 78436f6f Tex, colorTexCoo │ │ │ │ + 0x00d4af50 7264293b 200a2020 23656c73 65200a20 rd); . #else . │ │ │ │ + 0x00d4af60 20202076 5f636f6c 6f725465 78436f6f v_colorTexCoo │ │ │ │ + 0x00d4af70 7264203d 20636f6c 6f725465 78436f6f rd = colorTexCoo │ │ │ │ + 0x00d4af80 72643b20 0a202023 656e6469 66200a20 rd; . #endif . │ │ │ │ + 0x00d4af90 20202076 5f6d6173 6b546578 436f6f72 v_maskTexCoor │ │ │ │ + 0x00d4afa0 64203d20 615f6d61 736b5465 78436f6f d = a_maskTexCoo │ │ │ │ + 0x00d4afb0 72643b20 0a20207d 200a0000 00000000 rd; . } ....... │ │ │ │ + 0x00d4afc0 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d4afd0 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d4afe0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d4aff0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d4b000 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d4b010 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d4b020 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d4b030 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d4b040 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d4b050 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d4b060 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d4b070 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d4b080 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d4b090 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d4b0a0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d4b0b0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d4b0c0 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d4b0d0 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d4b0e0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d4b0f0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d4b100 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d4b110 63332061 5f706f73 3b200a20 20696e20 c3 a_pos; . in │ │ │ │ + 0x00d4b120 76656333 20615f6e 6f726d61 6c3b200a vec3 a_normal; . │ │ │ │ + 0x00d4b130 20206f75 74207665 63332076 5f6e6f72 out vec3 v_nor │ │ │ │ + 0x00d4b140 6d616c3b 200a2020 756e6966 6f726d20 mal; . uniform │ │ │ │ + 0x00d4b150 6d617434 20755f74 72616e73 666f726d mat4 u_transform │ │ │ │ + 0x00d4b160 3b200a20 20756e69 666f726d 206d6174 ; . uniform mat │ │ │ │ + 0x00d4b170 3420755f 6e6f726d 616c5472 616e7366 4 u_normalTransf │ │ │ │ + 0x00d4b180 6f726d3b 200a2020 756e6966 6f726d20 orm; . uniform │ │ │ │ + 0x00d4b190 76656334 20755f63 6f6c6f72 3b200a20 vec4 u_color; . │ │ │ │ + 0x00d4b1a0 20756e69 666f726d 20766563 3220755f uniform vec2 u_ │ │ │ │ + 0x00d4b1b0 74657843 6f6f7264 466c6970 70696e67 texCoordFlipping │ │ │ │ + 0x00d4b1c0 3b200a20 20636f6e 73742066 6c6f6174 ; . const float │ │ │ │ + 0x00d4b1d0 206b5368 61706543 6f6f7264 5363616c kShapeCoordScal │ │ │ │ + 0x00d4b1e0 6172203d 20313030 302e303b 200a2020 ar = 1000.0; . │ │ │ │ + 0x00d4b1f0 76656334 20617070 6c795069 766f7454 vec4 applyPivotT │ │ │ │ + 0x00d4b200 72616e73 666f726d 28766563 34207069 ransform(vec4 pi │ │ │ │ + 0x00d4b210 766f742c 206d6174 34207069 766f7454 vot, mat4 pivotT │ │ │ │ + 0x00d4b220 72616e73 666f726d 2c20666c 6f617420 ransform, float │ │ │ │ + 0x00d4b230 7069766f 74526561 6c5a2920 0a20207b pivotRealZ) . { │ │ │ │ + 0x00d4b240 200a2020 20207665 63342074 72616e73 . vec4 trans │ │ │ │ + 0x00d4b250 666f726d 65645069 766f7420 3d207069 formedPivot = pi │ │ │ │ + 0x00d4b260 766f743b 200a2020 2020666c 6f617420 vot; . float │ │ │ │ + 0x00d4b270 77203d20 7472616e 73666f72 6d656450 w = transformedP │ │ │ │ + 0x00d4b280 69766f74 2e773b20 0a202020 20747261 ivot.w; . tra │ │ │ │ + 0x00d4b290 6e73666f 726d6564 5069766f 742e7879 nsformedPivot.xy │ │ │ │ + 0x00d4b2a0 77203d20 28706976 6f745472 616e7366 w = (pivotTransf │ │ │ │ + 0x00d4b2b0 6f726d20 2a207665 63342874 72616e73 orm * vec4(trans │ │ │ │ + 0x00d4b2c0 666f726d 65645069 766f742e 78792c20 formedPivot.xy, │ │ │ │ + 0x00d4b2d0 7069766f 74526561 6c5a2c20 7729292e pivotRealZ, w)). │ │ │ │ + 0x00d4b2e0 7879773b 200a2020 20207472 616e7366 xyw; . transf │ │ │ │ + 0x00d4b2f0 6f726d65 64506976 6f742e7a 202a3d20 ormedPivot.z *= │ │ │ │ + 0x00d4b300 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ + 0x00d4b310 2e77202f 20773b20 0a202023 69666465 .w / w; . #ifde │ │ │ │ + 0x00d4b320 66205655 4c4b414e 200a2020 20207472 f VULKAN . tr │ │ │ │ + 0x00d4b330 616e7366 6f726d65 64506976 6f742e79 ansformedPivot.y │ │ │ │ + 0x00d4b340 203d202d 7472616e 73666f72 6d656450 = -transformedP │ │ │ │ + 0x00d4b350 69766f74 2e793b20 0a202020 20747261 ivot.y; . tra │ │ │ │ + 0x00d4b360 6e73666f 726d6564 5069766f 742e7a20 nsformedPivot.z │ │ │ │ + 0x00d4b370 3d202874 72616e73 666f726d 65645069 = (transformedPi │ │ │ │ + 0x00d4b380 766f742e 7a20202b 20747261 6e73666f vot.z + transfo │ │ │ │ + 0x00d4b390 726d6564 5069766f 742e7729 202f2032 rmedPivot.w) / 2 │ │ │ │ + 0x00d4b3a0 2e303b20 0a202023 656e6469 66200a20 .0; . #endif . │ │ │ │ + 0x00d4b3b0 20202072 65747572 6e207472 616e7366 return transf │ │ │ │ + 0x00d4b3c0 6f726d65 64506976 6f743b20 0a20207d ormedPivot; . } │ │ │ │ + 0x00d4b3d0 200a2020 76656334 20617070 6c794269 . vec4 applyBi │ │ │ │ + 0x00d4b3e0 6c6c626f 61726450 69766f74 5472616e llboardPivotTran │ │ │ │ + 0x00d4b3f0 73666f72 6d287665 63342070 69766f74 sform(vec4 pivot │ │ │ │ + 0x00d4b400 2c206d61 74342070 69766f74 5472616e , mat4 pivotTran │ │ │ │ + 0x00d4b410 73666f72 6d2c2066 6c6f6174 20706976 sform, float piv │ │ │ │ + 0x00d4b420 6f745265 616c5a2c 20766563 32206f66 otRealZ, vec2 of │ │ │ │ + 0x00d4b430 66736574 29200a20 207b200a 20202020 fset) . { . │ │ │ │ + 0x00d4b440 666c6f61 74206c6f 6769635a 203d2070 float logicZ = p │ │ │ │ + 0x00d4b450 69766f74 2e7a202f 20706976 6f742e77 ivot.z / pivot.w │ │ │ │ + 0x00d4b460 3b200a20 20202076 65633420 7472616e ; . vec4 tran │ │ │ │ + 0x00d4b470 73666f72 6d656450 69766f74 203d2070 sformedPivot = p │ │ │ │ + 0x00d4b480 69766f74 5472616e 73666f72 6d202a20 ivotTransform * │ │ │ │ + 0x00d4b490 76656334 28706976 6f742e78 792c2070 vec4(pivot.xy, p │ │ │ │ + 0x00d4b4a0 69766f74 5265616c 5a2c2070 69766f74 ivotRealZ, pivot │ │ │ │ + 0x00d4b4b0 2e77293b 200a2020 20207665 63342073 .w); . vec4 s │ │ │ │ + 0x00d4b4c0 63616c65 203d2070 69766f74 5472616e cale = pivotTran │ │ │ │ + 0x00d4b4d0 73666f72 6d202a20 76656334 28312e30 sform * vec4(1.0 │ │ │ │ + 0x00d4b4e0 2c202d31 2e302c20 302e302c 20312e30 , -1.0, 0.0, 1.0 │ │ │ │ + 0x00d4b4f0 293b200a 20202020 76656334 20706f73 ); . vec4 pos │ │ │ │ + 0x00d4b500 6974696f 6e203d20 76656334 28747261 ition = vec4(tra │ │ │ │ + 0x00d4b510 6e73666f 726d6564 5069766f 742e7879 nsformedPivot.xy │ │ │ │ + 0x00d4b520 202f2074 72616e73 666f726d 65645069 / transformedPi │ │ │ │ + 0x00d4b530 766f742e 772c206c 6f676963 5a2c2031 vot.w, logicZ, 1 │ │ │ │ + 0x00d4b540 2e302920 2b207665 6334286f 66667365 .0) + vec4(offse │ │ │ │ + 0x00d4b550 74202f20 7363616c 652e7720 2a207363 t / scale.w * sc │ │ │ │ + 0x00d4b560 616c652e 782c2030 2e302c20 302e3029 ale.x, 0.0, 0.0) │ │ │ │ + 0x00d4b570 3b200a20 20236966 64656620 56554c4b ; . #ifdef VULK │ │ │ │ + 0x00d4b580 414e200a 20202020 706f7369 74696f6e AN . position │ │ │ │ + 0x00d4b590 2e79203d 202d706f 73697469 6f6e2e79 .y = -position.y │ │ │ │ + 0x00d4b5a0 3b200a20 20202070 6f736974 696f6e2e ; . position. │ │ │ │ + 0x00d4b5b0 7a203d20 28706f73 6974696f 6e2e7a20 z = (position.z │ │ │ │ + 0x00d4b5c0 202b2070 6f736974 696f6e2e 7729202f + position.w) / │ │ │ │ + 0x00d4b5d0 20322e30 3b200a20 2023656e 64696620 2.0; . #endif │ │ │ │ + 0x00d4b5e0 0a202020 20726574 75726e20 706f7369 . return posi │ │ │ │ + 0x00d4b5f0 74696f6e 3b200a20 207d200a 20207665 tion; . } . ve │ │ │ │ + 0x00d4b600 63322063 616c634c 696e6554 72616e73 c2 calcLineTrans │ │ │ │ + 0x00d4b610 666f726d 65644178 6973506f 73287665 formedAxisPos(ve │ │ │ │ + 0x00d4b620 6332206f 72696769 6e616c41 78697350 c2 originalAxisP │ │ │ │ + 0x00d4b630 6f732c20 76656332 20736869 66746564 os, vec2 shifted │ │ │ │ + 0x00d4b640 506f732c 206d6174 34206d6f 64656c56 Pos, mat4 modelV │ │ │ │ + 0x00d4b650 6965772c 20666c6f 61742068 616c6657 iew, float halfW │ │ │ │ + 0x00d4b660 69647468 29200a20 207b200a 20202020 idth) . { . │ │ │ │ + 0x00d4b670 76656332 2070203d 20287665 63342873 vec2 p = (vec4(s │ │ │ │ + 0x00d4b680 68696674 6564506f 732c2030 2e302c20 hiftedPos, 0.0, │ │ │ │ + 0x00d4b690 312e3029 202a206d 6f64656c 56696577 1.0) * modelView │ │ │ │ + 0x00d4b6a0 292e7879 3b200a20 20202076 65633220 ).xy; . vec2 │ │ │ │ + 0x00d4b6b0 64203d20 70202d20 6f726967 696e616c d = p - original │ │ │ │ + 0x00d4b6c0 41786973 506f733b 200a2020 20206966 AxisPos; . if │ │ │ │ + 0x00d4b6d0 2028646f 7428642c 20642920 213d2030 (dot(d, d) != 0 │ │ │ │ + 0x00d4b6e0 2e302920 0a202020 20202072 65747572 .0) . retur │ │ │ │ + 0x00d4b6f0 6e206f72 6967696e 616c4178 6973506f n originalAxisPo │ │ │ │ + 0x00d4b700 73202b20 6e6f726d 616c697a 65286429 s + normalize(d) │ │ │ │ + 0x00d4b710 202a2068 616c6657 69647468 3b200a20 * halfWidth; . │ │ │ │ + 0x00d4b720 20202065 6c736520 0a202020 20202072 else . r │ │ │ │ + 0x00d4b730 65747572 6e206f72 6967696e 616c4178 eturn originalAx │ │ │ │ + 0x00d4b740 6973506f 733b200a 20207d20 0a202076 isPos; . } . v │ │ │ │ + 0x00d4b750 6f696420 6d61696e 2829200a 20207b20 oid main() . { │ │ │ │ + 0x00d4b760 0a202020 20766563 3420706f 73697469 . vec4 positi │ │ │ │ + 0x00d4b770 6f6e203d 20755f74 72616e73 666f726d on = u_transform │ │ │ │ + 0x00d4b780 202a2076 65633428 615f706f 732c2031 * vec4(a_pos, 1 │ │ │ │ + 0x00d4b790 2e30293b 200a2020 2020765f 6e6f726d .0); . v_norm │ │ │ │ + 0x00d4b7a0 616c203d 206e6f72 6d616c69 7a652828 al = normalize(( │ │ │ │ + 0x00d4b7b0 755f6e6f 726d616c 5472616e 73666f72 u_normalTransfor │ │ │ │ + 0x00d4b7c0 6d202a20 76656334 28615f6e 6f726d61 m * vec4(a_norma │ │ │ │ + 0x00d4b7d0 6c2c2030 2e302929 2e78797a 293b200a l, 0.0)).xyz); . │ │ │ │ + 0x00d4b7e0 20202020 676c5f50 6f736974 696f6e20 gl_Position │ │ │ │ + 0x00d4b7f0 3d20706f 73697469 6f6e3b20 0a202023 = position; . # │ │ │ │ + 0x00d4b800 69666465 66205655 4c4b414e 200a2020 ifdef VULKAN . │ │ │ │ + 0x00d4b810 2020676c 5f506f73 6974696f 6e2e7920 gl_Position.y │ │ │ │ + 0x00d4b820 3d202d67 6c5f506f 73697469 6f6e2e79 = -gl_Position.y │ │ │ │ + 0x00d4b830 3b200a20 20202067 6c5f506f 73697469 ; . gl_Positi │ │ │ │ + 0x00d4b840 6f6e2e7a 203d2028 676c5f50 6f736974 on.z = (gl_Posit │ │ │ │ + 0x00d4b850 696f6e2e 7a202b20 676c5f50 6f736974 ion.z + gl_Posit │ │ │ │ + 0x00d4b860 696f6e2e 7729202a 20302e35 3b200a20 ion.w) * 0.5; . │ │ │ │ + 0x00d4b870 2023656e 64696620 0a20207d 200a0000 #endif . } ... │ │ │ │ + 0x00d4b880 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d4b890 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d4b8a0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d4b8b0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d4b8c0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d4b8d0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d4b8e0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d4b8f0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d4b900 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d4b910 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d4b920 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d4b930 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d4b940 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d4b950 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d4b960 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d4b970 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d4b980 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d4b990 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d4b9a0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d4b9b0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d4b9c0 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d4b9d0 63322061 5f636f6c 6f725465 78436f6f c2 a_colorTexCoo │ │ │ │ + 0x00d4b9e0 72643b20 0a202069 6e207665 63322061 rd; . in vec2 a │ │ │ │ + 0x00d4b9f0 5f6d6173 6b546578 436f6f72 643b200a _maskTexCoord; . │ │ │ │ + 0x00d4ba00 2020696e 20766563 3420615f 706f7369 in vec4 a_posi │ │ │ │ + 0x00d4ba10 74696f6e 3b200a20 20696e20 76656332 tion; . in vec2 │ │ │ │ + 0x00d4ba20 20615f6e 6f726d61 6c3b200a 20202369 a_normal; . #i │ │ │ │ + 0x00d4ba30 66646566 20454e41 424c455f 56544620 fdef ENABLE_VTF │ │ │ │ + 0x00d4ba40 0a20206f 7574204c 4f575f50 20766563 . out LOW_P vec │ │ │ │ + 0x00d4ba50 3420765f 636f6c6f 723b200a 20202365 4 v_color; . #e │ │ │ │ + 0x00d4ba60 6c736520 0a20206f 75742076 65633220 lse . out vec2 │ │ │ │ + 0x00d4ba70 765f636f 6c6f7254 6578436f 6f72643b v_colorTexCoord; │ │ │ │ + 0x00d4ba80 200a2020 23656e64 6966200a 20206f75 . #endif . ou │ │ │ │ + 0x00d4ba90 74207665 63322076 5f6d6173 6b546578 t vec2 v_maskTex │ │ │ │ + 0x00d4baa0 436f6f72 643b200a 2020756e 69666f72 Coord; . unifor │ │ │ │ + 0x00d4bab0 6d206d61 74342075 5f6d6f64 656c5669 m mat4 u_modelVi │ │ │ │ + 0x00d4bac0 65773b20 0a202075 6e69666f 726d206d ew; . uniform m │ │ │ │ + 0x00d4bad0 61743420 755f7072 6f6a6563 74696f6e at4 u_projection │ │ │ │ + 0x00d4bae0 3b200a20 20756e69 666f726d 206d6174 ; . uniform mat │ │ │ │ + 0x00d4baf0 3420755f 7069766f 74547261 6e73666f 4 u_pivotTransfo │ │ │ │ + 0x00d4bb00 726d3b20 0a202075 6e69666f 726d2076 rm; . uniform v │ │ │ │ + 0x00d4bb10 65633220 755f636f 6e747261 73744761 ec2 u_contrastGa │ │ │ │ + 0x00d4bb20 6d6d613b 200a2020 756e6966 6f726d20 mma; . uniform │ │ │ │ + 0x00d4bb30 666c6f61 7420755f 6f706163 6974793b float u_opacity; │ │ │ │ + 0x00d4bb40 200a2020 756e6966 6f726d20 666c6f61 . uniform floa │ │ │ │ + 0x00d4bb50 7420755f 7a536361 6c653b20 0a202075 t u_zScale; . u │ │ │ │ + 0x00d4bb60 6e69666f 726d2066 6c6f6174 20755f69 niform float u_i │ │ │ │ + 0x00d4bb70 6e746572 706f6c61 74696f6e 3b200a20 nterpolation; . │ │ │ │ + 0x00d4bb80 20756e69 666f726d 20666c6f 61742075 uniform float u │ │ │ │ + 0x00d4bb90 5f69734f 75746c69 6e655061 73733b20 _isOutlinePass; │ │ │ │ + 0x00d4bba0 0a202075 6e69666f 726d2073 616d706c . uniform sampl │ │ │ │ + 0x00d4bbb0 65723244 20755f63 6f6c6f72 5465783b er2D u_colorTex; │ │ │ │ + 0x00d4bbc0 200a2020 636f6e73 7420666c 6f617420 . const float │ │ │ │ + 0x00d4bbd0 6b536861 7065436f 6f726453 63616c61 kShapeCoordScala │ │ │ │ + 0x00d4bbe0 72203d20 31303030 2e303b20 0a202076 r = 1000.0; . v │ │ │ │ + 0x00d4bbf0 65633420 6170706c 79506976 6f745472 ec4 applyPivotTr │ │ │ │ + 0x00d4bc00 616e7366 6f726d28 76656334 20706976 ansform(vec4 piv │ │ │ │ + 0x00d4bc10 6f742c20 6d617434 20706976 6f745472 ot, mat4 pivotTr │ │ │ │ + 0x00d4bc20 616e7366 6f726d2c 20666c6f 61742070 ansform, float p │ │ │ │ + 0x00d4bc30 69766f74 5265616c 5a29200a 20207b20 ivotRealZ) . { │ │ │ │ + 0x00d4bc40 0a202020 20766563 34207472 616e7366 . vec4 transf │ │ │ │ + 0x00d4bc50 6f726d65 64506976 6f74203d 20706976 ormedPivot = piv │ │ │ │ + 0x00d4bc60 6f743b20 0a202020 20666c6f 61742077 ot; . float w │ │ │ │ + 0x00d4bc70 203d2074 72616e73 666f726d 65645069 = transformedPi │ │ │ │ + 0x00d4bc80 766f742e 773b200a 20202020 7472616e vot.w; . tran │ │ │ │ + 0x00d4bc90 73666f72 6d656450 69766f74 2e787977 sformedPivot.xyw │ │ │ │ + 0x00d4bca0 203d2028 7069766f 74547261 6e73666f = (pivotTransfo │ │ │ │ + 0x00d4bcb0 726d202a 20766563 34287472 616e7366 rm * vec4(transf │ │ │ │ + 0x00d4bcc0 6f726d65 64506976 6f742e78 792c2070 ormedPivot.xy, p │ │ │ │ + 0x00d4bcd0 69766f74 5265616c 5a2c2077 29292e78 ivotRealZ, w)).x │ │ │ │ + 0x00d4bce0 79773b20 0a202020 20747261 6e73666f yw; . transfo │ │ │ │ + 0x00d4bcf0 726d6564 5069766f 742e7a20 2a3d2074 rmedPivot.z *= t │ │ │ │ + 0x00d4bd00 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ + 0x00d4bd10 77202f20 773b200a 20202369 66646566 w / w; . #ifdef │ │ │ │ + 0x00d4bd20 2056554c 4b414e20 0a202020 20747261 VULKAN . tra │ │ │ │ + 0x00d4bd30 6e73666f 726d6564 5069766f 742e7920 nsformedPivot.y │ │ │ │ + 0x00d4bd40 3d202d74 72616e73 666f726d 65645069 = -transformedPi │ │ │ │ + 0x00d4bd50 766f742e 793b200a 20202020 7472616e vot.y; . tran │ │ │ │ + 0x00d4bd60 73666f72 6d656450 69766f74 2e7a203d sformedPivot.z = │ │ │ │ + 0x00d4bd70 20287472 616e7366 6f726d65 64506976 (transformedPiv │ │ │ │ + 0x00d4bd80 6f742e7a 20202b20 7472616e 73666f72 ot.z + transfor │ │ │ │ + 0x00d4bd90 6d656450 69766f74 2e772920 2f20322e medPivot.w) / 2. │ │ │ │ + 0x00d4bda0 303b200a 20202365 6e646966 200a2020 0; . #endif . │ │ │ │ + 0x00d4bdb0 20207265 7475726e 20747261 6e73666f return transfo │ │ │ │ + 0x00d4bdc0 726d6564 5069766f 743b200a 20207d20 rmedPivot; . } │ │ │ │ + 0x00d4bdd0 0a202076 65633420 6170706c 7942696c . vec4 applyBil │ │ │ │ + 0x00d4bde0 6c626f61 72645069 766f7454 72616e73 lboardPivotTrans │ │ │ │ + 0x00d4bdf0 666f726d 28766563 34207069 766f742c form(vec4 pivot, │ │ │ │ + 0x00d4be00 206d6174 34207069 766f7454 72616e73 mat4 pivotTrans │ │ │ │ + 0x00d4be10 666f726d 2c20666c 6f617420 7069766f form, float pivo │ │ │ │ + 0x00d4be20 74526561 6c5a2c20 76656332 206f6666 tRealZ, vec2 off │ │ │ │ + 0x00d4be30 73657429 200a2020 7b200a20 20202066 set) . { . f │ │ │ │ + 0x00d4be40 6c6f6174 206c6f67 69635a20 3d207069 loat logicZ = pi │ │ │ │ + 0x00d4be50 766f742e 7a202f20 7069766f 742e773b vot.z / pivot.w; │ │ │ │ + 0x00d4be60 200a2020 20207665 63342074 72616e73 . vec4 trans │ │ │ │ + 0x00d4be70 666f726d 65645069 766f7420 3d207069 formedPivot = pi │ │ │ │ + 0x00d4be80 766f7454 72616e73 666f726d 202a2076 votTransform * v │ │ │ │ + 0x00d4be90 65633428 7069766f 742e7879 2c207069 ec4(pivot.xy, pi │ │ │ │ + 0x00d4bea0 766f7452 65616c5a 2c207069 766f742e votRealZ, pivot. │ │ │ │ + 0x00d4beb0 77293b20 0a202020 20766563 34207363 w); . vec4 sc │ │ │ │ + 0x00d4bec0 616c6520 3d207069 766f7454 72616e73 ale = pivotTrans │ │ │ │ + 0x00d4bed0 666f726d 202a2076 65633428 312e302c form * vec4(1.0, │ │ │ │ + 0x00d4bee0 202d312e 302c2030 2e302c20 312e3029 -1.0, 0.0, 1.0) │ │ │ │ + 0x00d4bef0 3b200a20 20202076 65633420 706f7369 ; . vec4 posi │ │ │ │ + 0x00d4bf00 74696f6e 203d2076 65633428 7472616e tion = vec4(tran │ │ │ │ + 0x00d4bf10 73666f72 6d656450 69766f74 2e787920 sformedPivot.xy │ │ │ │ + 0x00d4bf20 2f207472 616e7366 6f726d65 64506976 / transformedPiv │ │ │ │ + 0x00d4bf30 6f742e77 2c206c6f 6769635a 2c20312e ot.w, logicZ, 1. │ │ │ │ + 0x00d4bf40 3029202b 20766563 34286f66 66736574 0) + vec4(offset │ │ │ │ + 0x00d4bf50 202f2073 63616c65 2e77202a 20736361 / scale.w * sca │ │ │ │ + 0x00d4bf60 6c652e78 2c20302e 302c2030 2e30293b le.x, 0.0, 0.0); │ │ │ │ + 0x00d4bf70 200a2020 23696664 65662056 554c4b41 . #ifdef VULKA │ │ │ │ + 0x00d4bf80 4e200a20 20202070 6f736974 696f6e2e N . position. │ │ │ │ + 0x00d4bf90 79203d20 2d706f73 6974696f 6e2e793b y = -position.y; │ │ │ │ + 0x00d4bfa0 200a2020 2020706f 73697469 6f6e2e7a . position.z │ │ │ │ + 0x00d4bfb0 203d2028 706f7369 74696f6e 2e7a2020 = (position.z │ │ │ │ + 0x00d4bfc0 2b20706f 73697469 6f6e2e77 29202f20 + position.w) / │ │ │ │ + 0x00d4bfd0 322e303b 200a2020 23656e64 6966200a 2.0; . #endif . │ │ │ │ + 0x00d4bfe0 20202020 72657475 726e2070 6f736974 return posit │ │ │ │ + 0x00d4bff0 696f6e3b 200a2020 7d200a20 20766563 ion; . } . vec │ │ │ │ + 0x00d4c000 32206361 6c634c69 6e655472 616e7366 2 calcLineTransf │ │ │ │ + 0x00d4c010 6f726d65 64417869 73506f73 28766563 ormedAxisPos(vec │ │ │ │ + 0x00d4c020 32206f72 6967696e 616c4178 6973506f 2 originalAxisPo │ │ │ │ + 0x00d4c030 732c2076 65633220 73686966 74656450 s, vec2 shiftedP │ │ │ │ + 0x00d4c040 6f732c20 6d617434 206d6f64 656c5669 os, mat4 modelVi │ │ │ │ + 0x00d4c050 65772c20 666c6f61 74206861 6c665769 ew, float halfWi │ │ │ │ + 0x00d4c060 64746829 200a2020 7b200a20 20202076 dth) . { . v │ │ │ │ + 0x00d4c070 65633220 70203d20 28766563 34287368 ec2 p = (vec4(sh │ │ │ │ + 0x00d4c080 69667465 64506f73 2c20302e 302c2031 iftedPos, 0.0, 1 │ │ │ │ + 0x00d4c090 2e302920 2a206d6f 64656c56 69657729 .0) * modelView) │ │ │ │ + 0x00d4c0a0 2e78793b 200a2020 20207665 63322064 .xy; . vec2 d │ │ │ │ + 0x00d4c0b0 203d2070 202d206f 72696769 6e616c41 = p - originalA │ │ │ │ + 0x00d4c0c0 78697350 6f733b20 0a202020 20696620 xisPos; . if │ │ │ │ + 0x00d4c0d0 28646f74 28642c20 64292021 3d20302e (dot(d, d) != 0. │ │ │ │ + 0x00d4c0e0 3029200a 20202020 20207265 7475726e 0) . return │ │ │ │ + 0x00d4c0f0 206f7269 67696e61 6c417869 73506f73 originalAxisPos │ │ │ │ + 0x00d4c100 202b206e 6f726d61 6c697a65 28642920 + normalize(d) │ │ │ │ + 0x00d4c110 2a206861 6c665769 6474683b 200a2020 * halfWidth; . │ │ │ │ + 0x00d4c120 2020656c 7365200a 20202020 20207265 else . re │ │ │ │ + 0x00d4c130 7475726e 206f7269 67696e61 6c417869 turn originalAxi │ │ │ │ + 0x00d4c140 73506f73 3b200a20 207d200a 2020766f sPos; . } . vo │ │ │ │ + 0x00d4c150 6964206d 61696e28 29200a20 207b200a id main() . { . │ │ │ │ + 0x00d4c160 20202020 76656334 20706976 6f74203d vec4 pivot = │ │ │ │ + 0x00d4c170 20766563 3428615f 706f7369 74696f6e vec4(a_position │ │ │ │ + 0x00d4c180 2e78797a 2c20312e 3029202a 20755f6d .xyz, 1.0) * u_m │ │ │ │ + 0x00d4c190 6f64656c 56696577 3b200a20 20202076 odelView; . v │ │ │ │ + 0x00d4c1a0 65633420 6f666673 6574203d 20766563 ec4 offset = vec │ │ │ │ + 0x00d4c1b0 3428615f 6e6f726d 616c2c20 302e302c 4(a_normal, 0.0, │ │ │ │ + 0x00d4c1c0 20302e30 29202a20 755f7072 6f6a6563 0.0) * u_projec │ │ │ │ + 0x00d4c1d0 74696f6e 3b200a20 20202067 6c5f506f tion; . gl_Po │ │ │ │ + 0x00d4c1e0 73697469 6f6e203d 20617070 6c794269 sition = applyBi │ │ │ │ + 0x00d4c1f0 6c6c626f 61726450 69766f74 5472616e llboardPivotTran │ │ │ │ + 0x00d4c200 73666f72 6d287069 766f7420 2a20755f sform(pivot * u_ │ │ │ │ + 0x00d4c210 70726f6a 65637469 6f6e2c20 755f7069 projection, u_pi │ │ │ │ + 0x00d4c220 766f7454 72616e73 666f726d 2c200a20 votTransform, . │ │ │ │ + 0x00d4c230 20202020 20202020 20202020 20202020 │ │ │ │ + 0x00d4c240 20202020 20202020 20202020 20202020 │ │ │ │ + 0x00d4c250 20202020 20202020 20202020 2020615f a_ │ │ │ │ + 0x00d4c260 706f7369 74696f6e 2e77202a 20755f7a position.w * u_z │ │ │ │ + 0x00d4c270 5363616c 652c206f 66667365 742e7879 Scale, offset.xy │ │ │ │ + 0x00d4c280 293b200a 20202369 66646566 20454e41 ); . #ifdef ENA │ │ │ │ + 0x00d4c290 424c455f 56544620 0a202020 20765f63 BLE_VTF . v_c │ │ │ │ + 0x00d4c2a0 6f6c6f72 203d2074 65787475 72652875 olor = texture(u │ │ │ │ + 0x00d4c2b0 5f636f6c 6f725465 782c2061 5f636f6c _colorTex, a_col │ │ │ │ + 0x00d4c2c0 6f725465 78436f6f 7264293b 200a2020 orTexCoord); . │ │ │ │ + 0x00d4c2d0 23656c73 65200a20 20202076 5f636f6c #else . v_col │ │ │ │ + 0x00d4c2e0 6f725465 78436f6f 7264203d 20615f63 orTexCoord = a_c │ │ │ │ + 0x00d4c2f0 6f6c6f72 54657843 6f6f7264 3b200a20 olorTexCoord; . │ │ │ │ + 0x00d4c300 2023656e 64696620 0a202020 20765f6d #endif . v_m │ │ │ │ + 0x00d4c310 61736b54 6578436f 6f726420 3d20615f askTexCoord = a_ │ │ │ │ + 0x00d4c320 6d61736b 54657843 6f6f7264 3b200a20 maskTexCoord; . │ │ │ │ + 0x00d4c330 207d200a 00000000 00000000 00000000 } ............. │ │ │ │ + 0x00d4c340 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d4c350 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d4c360 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d4c370 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d4c380 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d4c390 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d4c3a0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d4c3b0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d4c3c0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d4c3d0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d4c3e0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d4c3f0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d4c400 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d4c410 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d4c420 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d4c430 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d4c440 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d4c450 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d4c460 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d4c470 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d4c480 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d4c490 63322061 5f636f6c 6f725465 78436f6f c2 a_colorTexCoo │ │ │ │ + 0x00d4c4a0 72643b20 0a202069 6e207665 63322061 rd; . in vec2 a │ │ │ │ + 0x00d4c4b0 5f6f7574 6c696e65 436f6c6f 72546578 _outlineColorTex │ │ │ │ + 0x00d4c4c0 436f6f72 643b200a 2020696e 20766563 Coord; . in vec │ │ │ │ + 0x00d4c4d0 3220615f 6d61736b 54657843 6f6f7264 2 a_maskTexCoord │ │ │ │ + 0x00d4c4e0 3b200a20 20696e20 76656334 20615f70 ; . in vec4 a_p │ │ │ │ + 0x00d4c4f0 6f736974 696f6e3b 200a2020 696e2076 osition; . in v │ │ │ │ + 0x00d4c500 65633220 615f6e6f 726d616c 3b200a20 ec2 a_normal; . │ │ │ │ + 0x00d4c510 20236966 64656620 454e4142 4c455f56 #ifdef ENABLE_V │ │ │ │ + 0x00d4c520 5446200a 20206f75 74204c4f 575f5020 TF . out LOW_P │ │ │ │ + 0x00d4c530 76656334 20765f63 6f6c6f72 3b200a20 vec4 v_color; . │ │ │ │ + 0x00d4c540 2023656c 7365200a 20206f75 74207665 #else . out ve │ │ │ │ + 0x00d4c550 63322076 5f636f6c 6f725465 78436f6f c2 v_colorTexCoo │ │ │ │ + 0x00d4c560 72643b20 0a202023 656e6469 66200a20 rd; . #endif . │ │ │ │ + 0x00d4c570 206f7574 20766563 3220765f 6d61736b out vec2 v_mask │ │ │ │ + 0x00d4c580 54657843 6f6f7264 3b200a20 20756e69 TexCoord; . uni │ │ │ │ + 0x00d4c590 666f726d 206d6174 3420755f 6d6f6465 form mat4 u_mode │ │ │ │ + 0x00d4c5a0 6c566965 773b200a 2020756e 69666f72 lView; . unifor │ │ │ │ + 0x00d4c5b0 6d206d61 74342075 5f70726f 6a656374 m mat4 u_project │ │ │ │ + 0x00d4c5c0 696f6e3b 200a2020 756e6966 6f726d20 ion; . uniform │ │ │ │ + 0x00d4c5d0 6d617434 20755f70 69766f74 5472616e mat4 u_pivotTran │ │ │ │ + 0x00d4c5e0 73666f72 6d3b200a 2020756e 69666f72 sform; . unifor │ │ │ │ + 0x00d4c5f0 6d207665 63322075 5f636f6e 74726173 m vec2 u_contras │ │ │ │ + 0x00d4c600 7447616d 6d613b20 0a202075 6e69666f tGamma; . unifo │ │ │ │ + 0x00d4c610 726d2066 6c6f6174 20755f6f 70616369 rm float u_opaci │ │ │ │ + 0x00d4c620 74793b20 0a202075 6e69666f 726d2066 ty; . uniform f │ │ │ │ + 0x00d4c630 6c6f6174 20755f7a 5363616c 653b200a loat u_zScale; . │ │ │ │ + 0x00d4c640 2020756e 69666f72 6d20666c 6f617420 uniform float │ │ │ │ + 0x00d4c650 755f696e 74657270 6f6c6174 696f6e3b u_interpolation; │ │ │ │ + 0x00d4c660 200a2020 756e6966 6f726d20 666c6f61 . uniform floa │ │ │ │ + 0x00d4c670 7420755f 69734f75 746c696e 65506173 t u_isOutlinePas │ │ │ │ + 0x00d4c680 733b200a 20202369 66646566 20454e41 s; . #ifdef ENA │ │ │ │ + 0x00d4c690 424c455f 56544620 0a202075 6e69666f BLE_VTF . unifo │ │ │ │ + 0x00d4c6a0 726d2073 616d706c 65723244 20755f63 rm sampler2D u_c │ │ │ │ + 0x00d4c6b0 6f6c6f72 5465783b 200a2020 23656e64 olorTex; . #end │ │ │ │ + 0x00d4c6c0 6966200a 2020636f 6e737420 666c6f61 if . const floa │ │ │ │ + 0x00d4c6d0 74204261 73654465 70746853 68696674 t BaseDepthShift │ │ │ │ + 0x00d4c6e0 203d202d 31302e30 3b200a20 20636f6e = -10.0; . con │ │ │ │ + 0x00d4c6f0 73742066 6c6f6174 206b5368 61706543 st float kShapeC │ │ │ │ + 0x00d4c700 6f6f7264 5363616c 6172203d 20313030 oordScalar = 100 │ │ │ │ + 0x00d4c710 302e303b 200a2020 76656334 20617070 0.0; . vec4 app │ │ │ │ + 0x00d4c720 6c795069 766f7454 72616e73 666f726d lyPivotTransform │ │ │ │ + 0x00d4c730 28766563 34207069 766f742c 206d6174 (vec4 pivot, mat │ │ │ │ + 0x00d4c740 34207069 766f7454 72616e73 666f726d 4 pivotTransform │ │ │ │ + 0x00d4c750 2c20666c 6f617420 7069766f 74526561 , float pivotRea │ │ │ │ + 0x00d4c760 6c5a2920 0a20207b 200a2020 20207665 lZ) . { . ve │ │ │ │ + 0x00d4c770 63342074 72616e73 666f726d 65645069 c4 transformedPi │ │ │ │ + 0x00d4c780 766f7420 3d207069 766f743b 200a2020 vot = pivot; . │ │ │ │ + 0x00d4c790 2020666c 6f617420 77203d20 7472616e float w = tran │ │ │ │ + 0x00d4c7a0 73666f72 6d656450 69766f74 2e773b20 sformedPivot.w; │ │ │ │ + 0x00d4c7b0 0a202020 20747261 6e73666f 726d6564 . transformed │ │ │ │ + 0x00d4c7c0 5069766f 742e7879 77203d20 28706976 Pivot.xyw = (piv │ │ │ │ + 0x00d4c7d0 6f745472 616e7366 6f726d20 2a207665 otTransform * ve │ │ │ │ + 0x00d4c7e0 63342874 72616e73 666f726d 65645069 c4(transformedPi │ │ │ │ + 0x00d4c7f0 766f742e 78792c20 7069766f 74526561 vot.xy, pivotRea │ │ │ │ + 0x00d4c800 6c5a2c20 7729292e 7879773b 200a2020 lZ, w)).xyw; . │ │ │ │ + 0x00d4c810 20207472 616e7366 6f726d65 64506976 transformedPiv │ │ │ │ + 0x00d4c820 6f742e7a 202a3d20 7472616e 73666f72 ot.z *= transfor │ │ │ │ + 0x00d4c830 6d656450 69766f74 2e77202f 20773b20 medPivot.w / w; │ │ │ │ + 0x00d4c840 0a202023 69666465 66205655 4c4b414e . #ifdef VULKAN │ │ │ │ + 0x00d4c850 200a2020 20207472 616e7366 6f726d65 . transforme │ │ │ │ + 0x00d4c860 64506976 6f742e79 203d202d 7472616e dPivot.y = -tran │ │ │ │ + 0x00d4c870 73666f72 6d656450 69766f74 2e793b20 sformedPivot.y; │ │ │ │ + 0x00d4c880 0a202020 20747261 6e73666f 726d6564 . transformed │ │ │ │ + 0x00d4c890 5069766f 742e7a20 3d202874 72616e73 Pivot.z = (trans │ │ │ │ + 0x00d4c8a0 666f726d 65645069 766f742e 7a20202b formedPivot.z + │ │ │ │ + 0x00d4c8b0 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ + 0x00d4c8c0 742e7729 202f2032 2e303b20 0a202023 t.w) / 2.0; . # │ │ │ │ + 0x00d4c8d0 656e6469 66200a20 20202072 65747572 endif . retur │ │ │ │ + 0x00d4c8e0 6e207472 616e7366 6f726d65 64506976 n transformedPiv │ │ │ │ + 0x00d4c8f0 6f743b20 0a20207d 200a2020 76656334 ot; . } . vec4 │ │ │ │ + 0x00d4c900 20617070 6c794269 6c6c626f 61726450 applyBillboardP │ │ │ │ + 0x00d4c910 69766f74 5472616e 73666f72 6d287665 ivotTransform(ve │ │ │ │ + 0x00d4c920 63342070 69766f74 2c206d61 74342070 c4 pivot, mat4 p │ │ │ │ + 0x00d4c930 69766f74 5472616e 73666f72 6d2c2066 ivotTransform, f │ │ │ │ + 0x00d4c940 6c6f6174 20706976 6f745265 616c5a2c loat pivotRealZ, │ │ │ │ + 0x00d4c950 20766563 32206f66 66736574 29200a20 vec2 offset) . │ │ │ │ + 0x00d4c960 207b200a 20202020 666c6f61 74206c6f { . float lo │ │ │ │ + 0x00d4c970 6769635a 203d2070 69766f74 2e7a202f gicZ = pivot.z / │ │ │ │ + 0x00d4c980 20706976 6f742e77 3b200a20 20202076 pivot.w; . v │ │ │ │ + 0x00d4c990 65633420 7472616e 73666f72 6d656450 ec4 transformedP │ │ │ │ + 0x00d4c9a0 69766f74 203d2070 69766f74 5472616e ivot = pivotTran │ │ │ │ + 0x00d4c9b0 73666f72 6d202a20 76656334 28706976 sform * vec4(piv │ │ │ │ + 0x00d4c9c0 6f742e78 792c2070 69766f74 5265616c ot.xy, pivotReal │ │ │ │ + 0x00d4c9d0 5a2c2070 69766f74 2e77293b 200a2020 Z, pivot.w); . │ │ │ │ + 0x00d4c9e0 20207665 63342073 63616c65 203d2070 vec4 scale = p │ │ │ │ + 0x00d4c9f0 69766f74 5472616e 73666f72 6d202a20 ivotTransform * │ │ │ │ + 0x00d4ca00 76656334 28312e30 2c202d31 2e302c20 vec4(1.0, -1.0, │ │ │ │ + 0x00d4ca10 302e302c 20312e30 293b200a 20202020 0.0, 1.0); . │ │ │ │ + 0x00d4ca20 76656334 20706f73 6974696f 6e203d20 vec4 position = │ │ │ │ + 0x00d4ca30 76656334 28747261 6e73666f 726d6564 vec4(transformed │ │ │ │ + 0x00d4ca40 5069766f 742e7879 202f2074 72616e73 Pivot.xy / trans │ │ │ │ + 0x00d4ca50 666f726d 65645069 766f742e 772c206c formedPivot.w, l │ │ │ │ + 0x00d4ca60 6f676963 5a2c2031 2e302920 2b207665 ogicZ, 1.0) + ve │ │ │ │ + 0x00d4ca70 6334286f 66667365 74202f20 7363616c c4(offset / scal │ │ │ │ + 0x00d4ca80 652e7720 2a207363 616c652e 782c2030 e.w * scale.x, 0 │ │ │ │ + 0x00d4ca90 2e302c20 302e3029 3b200a20 20236966 .0, 0.0); . #if │ │ │ │ + 0x00d4caa0 64656620 56554c4b 414e200a 20202020 def VULKAN . │ │ │ │ + 0x00d4cab0 706f7369 74696f6e 2e79203d 202d706f position.y = -po │ │ │ │ + 0x00d4cac0 73697469 6f6e2e79 3b200a20 20202070 sition.y; . p │ │ │ │ + 0x00d4cad0 6f736974 696f6e2e 7a203d20 28706f73 osition.z = (pos │ │ │ │ + 0x00d4cae0 6974696f 6e2e7a20 202b2070 6f736974 ition.z + posit │ │ │ │ + 0x00d4caf0 696f6e2e 7729202f 20322e30 3b200a20 ion.w) / 2.0; . │ │ │ │ + 0x00d4cb00 2023656e 64696620 0a202020 20726574 #endif . ret │ │ │ │ + 0x00d4cb10 75726e20 706f7369 74696f6e 3b200a20 urn position; . │ │ │ │ + 0x00d4cb20 207d200a 20207665 63322063 616c634c } . vec2 calcL │ │ │ │ + 0x00d4cb30 696e6554 72616e73 666f726d 65644178 ineTransformedAx │ │ │ │ + 0x00d4cb40 6973506f 73287665 6332206f 72696769 isPos(vec2 origi │ │ │ │ + 0x00d4cb50 6e616c41 78697350 6f732c20 76656332 nalAxisPos, vec2 │ │ │ │ + 0x00d4cb60 20736869 66746564 506f732c 206d6174 shiftedPos, mat │ │ │ │ + 0x00d4cb70 34206d6f 64656c56 6965772c 20666c6f 4 modelView, flo │ │ │ │ + 0x00d4cb80 61742068 616c6657 69647468 29200a20 at halfWidth) . │ │ │ │ + 0x00d4cb90 207b200a 20202020 76656332 2070203d { . vec2 p = │ │ │ │ + 0x00d4cba0 20287665 63342873 68696674 6564506f (vec4(shiftedPo │ │ │ │ + 0x00d4cbb0 732c2030 2e302c20 312e3029 202a206d s, 0.0, 1.0) * m │ │ │ │ + 0x00d4cbc0 6f64656c 56696577 292e7879 3b200a20 odelView).xy; . │ │ │ │ + 0x00d4cbd0 20202076 65633220 64203d20 70202d20 vec2 d = p - │ │ │ │ + 0x00d4cbe0 6f726967 696e616c 41786973 506f733b originalAxisPos; │ │ │ │ + 0x00d4cbf0 200a2020 20206966 2028646f 7428642c . if (dot(d, │ │ │ │ + 0x00d4cc00 20642920 213d2030 2e302920 0a202020 d) != 0.0) . │ │ │ │ + 0x00d4cc10 20202072 65747572 6e206f72 6967696e return origin │ │ │ │ + 0x00d4cc20 616c4178 6973506f 73202b20 6e6f726d alAxisPos + norm │ │ │ │ + 0x00d4cc30 616c697a 65286429 202a2068 616c6657 alize(d) * halfW │ │ │ │ + 0x00d4cc40 69647468 3b200a20 20202065 6c736520 idth; . else │ │ │ │ + 0x00d4cc50 0a202020 20202072 65747572 6e206f72 . return or │ │ │ │ + 0x00d4cc60 6967696e 616c4178 6973506f 733b200a iginalAxisPos; . │ │ │ │ + 0x00d4cc70 20207d20 0a202076 6f696420 6d61696e } . void main │ │ │ │ + 0x00d4cc80 2829200a 20207b20 0a202020 20666c6f () . { . flo │ │ │ │ + 0x00d4cc90 61742069 734f7574 6c696e65 203d2073 at isOutline = s │ │ │ │ + 0x00d4cca0 74657028 302e352c 20755f69 734f7574 tep(0.5, u_isOut │ │ │ │ + 0x00d4ccb0 6c696e65 50617373 293b200a 20202020 linePass); . │ │ │ │ + 0x00d4ccc0 666c6f61 74206e6f 744f7574 6c696e65 float notOutline │ │ │ │ + 0x00d4ccd0 203d2031 2e30202d 2069734f 75746c69 = 1.0 - isOutli │ │ │ │ + 0x00d4cce0 6e653b20 0a202020 20666c6f 61742064 ne; . float d │ │ │ │ + 0x00d4ccf0 65707468 53686966 74203d20 42617365 epthShift = Base │ │ │ │ + 0x00d4cd00 44657074 68536869 6674202a 2069734f DepthShift * isO │ │ │ │ + 0x00d4cd10 75746c69 6e653b20 0a202020 20766563 utline; . vec │ │ │ │ + 0x00d4cd20 3420706f 73203d20 28766563 3428615f 4 pos = (vec4(a_ │ │ │ │ + 0x00d4cd30 706f7369 74696f6e 2e78797a 2c203129 position.xyz, 1) │ │ │ │ + 0x00d4cd40 202b2076 65633428 302e302c 20302e30 + vec4(0.0, 0.0 │ │ │ │ + 0x00d4cd50 2c206465 70746853 68696674 2c20302e , depthShift, 0. │ │ │ │ + 0x00d4cd60 30292920 2a20755f 6d6f6465 6c566965 0)) * u_modelVie │ │ │ │ + 0x00d4cd70 773b200a 20202020 76656334 20736869 w; . vec4 shi │ │ │ │ + 0x00d4cd80 66746564 506f7320 3d207665 63342861 ftedPos = vec4(a │ │ │ │ + 0x00d4cd90 5f6e6f72 6d616c2c 20302e30 2c20302e _normal, 0.0, 0. │ │ │ │ + 0x00d4cda0 3029202b 20706f73 3b200a20 20202067 0) + pos; . g │ │ │ │ + 0x00d4cdb0 6c5f506f 73697469 6f6e203d 20617070 l_Position = app │ │ │ │ + 0x00d4cdc0 6c795069 766f7454 72616e73 666f726d lyPivotTransform │ │ │ │ + 0x00d4cdd0 28736869 66746564 506f7320 2a20755f (shiftedPos * u_ │ │ │ │ + 0x00d4cde0 70726f6a 65637469 6f6e2c20 755f7069 projection, u_pi │ │ │ │ + 0x00d4cdf0 766f7454 72616e73 666f726d 2c20302e votTransform, 0. │ │ │ │ + 0x00d4ce00 30293b20 0a202020 20766563 3220636f 0); . vec2 co │ │ │ │ + 0x00d4ce10 6c6f7254 6578436f 6f726420 3d20615f lorTexCoord = a_ │ │ │ │ + 0x00d4ce20 636f6c6f 72546578 436f6f72 64202a20 colorTexCoord * │ │ │ │ + 0x00d4ce30 6e6f744f 75746c69 6e65202b 20615f6f notOutline + a_o │ │ │ │ + 0x00d4ce40 75746c69 6e65436f 6c6f7254 6578436f utlineColorTexCo │ │ │ │ + 0x00d4ce50 6f726420 2a206973 4f75746c 696e653b ord * isOutline; │ │ │ │ + 0x00d4ce60 200a2020 23696664 65662045 4e41424c . #ifdef ENABL │ │ │ │ + 0x00d4ce70 455f5654 46200a20 20202076 5f636f6c E_VTF . v_col │ │ │ │ + 0x00d4ce80 6f72203d 20746578 74757265 28755f63 or = texture(u_c │ │ │ │ + 0x00d4ce90 6f6c6f72 5465782c 20636f6c 6f725465 olorTex, colorTe │ │ │ │ + 0x00d4cea0 78436f6f 7264293b 200a2020 23656c73 xCoord); . #els │ │ │ │ + 0x00d4ceb0 65200a20 20202076 5f636f6c 6f725465 e . v_colorTe │ │ │ │ + 0x00d4cec0 78436f6f 7264203d 20636f6c 6f725465 xCoord = colorTe │ │ │ │ + 0x00d4ced0 78436f6f 72643b20 0a202023 656e6469 xCoord; . #endi │ │ │ │ + 0x00d4cee0 66200a20 20202076 5f6d6173 6b546578 f . v_maskTex │ │ │ │ + 0x00d4cef0 436f6f72 64203d20 615f6d61 736b5465 Coord = a_maskTe │ │ │ │ + 0x00d4cf00 78436f6f 72643b20 0a20207d 200a0000 xCoord; . } ... │ │ │ │ + 0x00d4cf10 00000000 00000000 00000000 00000000 ................ │ │ │ │ + 0x00d4cf20 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d4cf30 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d4cf40 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d4cf50 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d4cf60 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d4cf70 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d4cf80 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d4cf90 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d4cfa0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d4cfb0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d4cfc0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d4cfd0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d4cfe0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d4cff0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d4d000 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d4d010 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d4d020 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d4d030 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d4d040 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d4d050 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d4d060 2023656e 64696620 0a202023 69666465 #endif . #ifde │ │ │ │ + 0x00d4d070 6620454e 41424c45 5f565446 200a2020 f ENABLE_VTF . │ │ │ │ + 0x00d4d080 696e204c 4f575f50 20766563 3420765f in LOW_P vec4 v_ │ │ │ │ + 0x00d4d090 636f6c6f 723b200a 20202365 6c736520 color; . #else │ │ │ │ + 0x00d4d0a0 0a202069 6e207665 63322076 5f636f6c . in vec2 v_col │ │ │ │ + 0x00d4d0b0 6f725465 78436f6f 72643b20 0a202075 orTexCoord; . u │ │ │ │ + 0x00d4d0c0 6e69666f 726d2073 616d706c 65723244 niform sampler2D │ │ │ │ + 0x00d4d0d0 20755f63 6f6c6f72 5465783b 200a2020 u_colorTex; . │ │ │ │ + 0x00d4d0e0 23656e64 6966200a 2020696e 20666c6f #endif . in flo │ │ │ │ + 0x00d4d0f0 61742076 5f6c656e 67746859 3b200a20 at v_lengthY; . │ │ │ │ + 0x00d4d100 206f7574 20766563 3420765f 46726167 out vec4 v_Frag │ │ │ │ + 0x00d4d110 436f6c6f 723b200a 2020756e 69666f72 Color; . unifor │ │ │ │ + 0x00d4d120 6d206d61 74342075 5f6d6f64 656c5669 m mat4 u_modelVi │ │ │ │ + 0x00d4d130 65773b20 0a202075 6e69666f 726d206d ew; . uniform m │ │ │ │ + 0x00d4d140 61743420 755f7072 6f6a6563 74696f6e at4 u_projection │ │ │ │ + 0x00d4d150 3b200a20 20756e69 666f726d 206d6174 ; . uniform mat │ │ │ │ + 0x00d4d160 3420755f 7069766f 74547261 6e73666f 4 u_pivotTransfo │ │ │ │ + 0x00d4d170 726d3b20 0a202075 6e69666f 726d2076 rm; . uniform v │ │ │ │ + 0x00d4d180 65633420 755f706f 73697469 6f6e3b20 ec4 u_position; │ │ │ │ + 0x00d4d190 0a202075 6e69666f 726d2076 65633220 . uniform vec2 │ │ │ │ + 0x00d4d1a0 755f6c69 6e655061 72616d73 3b200a20 u_lineParams; . │ │ │ │ + 0x00d4d1b0 20756e69 666f726d 20666c6f 61742075 uniform float u │ │ │ │ + 0x00d4d1c0 5f616363 75726163 793b200a 2020756e _accuracy; . un │ │ │ │ + 0x00d4d1d0 69666f72 6d20666c 6f617420 755f7a53 iform float u_zS │ │ │ │ + 0x00d4d1e0 63616c65 3b200a20 20756e69 666f726d cale; . uniform │ │ │ │ + 0x00d4d1f0 20666c6f 61742075 5f6f7061 63697479 float u_opacity │ │ │ │ + 0x00d4d200 3b200a20 20756e69 666f726d 20666c6f ; . uniform flo │ │ │ │ + 0x00d4d210 61742075 5f617a69 6d75743b 200a2020 at u_azimut; . │ │ │ │ + 0x00d4d220 636f6e73 7420666c 6f617420 6b416e74 const float kAnt │ │ │ │ + 0x00d4d230 69616c69 6173696e 67546872 6573686f ialiasingThresho │ │ │ │ + 0x00d4d240 6c64203d 20302e39 323b200a 2020636f ld = 0.92; . co │ │ │ │ + 0x00d4d250 6e737420 666c6f61 74206b53 68617065 nst float kShape │ │ │ │ + 0x00d4d260 436f6f72 64536361 6c617220 3d203130 CoordScalar = 10 │ │ │ │ + 0x00d4d270 30302e30 3b200a20 20766f69 64206d61 00.0; . void ma │ │ │ │ + 0x00d4d280 696e2829 200a2020 7b200a20 20236966 in() . { . #if │ │ │ │ + 0x00d4d290 64656620 454e4142 4c455f56 5446200a def ENABLE_VTF . │ │ │ │ + 0x00d4d2a0 20202020 4c4f575f 50207665 63342063 LOW_P vec4 c │ │ │ │ + 0x00d4d2b0 6f6c6f72 203d2076 5f636f6c 6f723b20 olor = v_color; │ │ │ │ + 0x00d4d2c0 0a202023 656c7365 200a2020 20204c4f . #else . LO │ │ │ │ + 0x00d4d2d0 575f5020 76656334 20636f6c 6f72203d W_P vec4 color = │ │ │ │ + 0x00d4d2e0 20746578 74757265 28755f63 6f6c6f72 texture(u_color │ │ │ │ + 0x00d4d2f0 5465782c 20765f63 6f6c6f72 54657843 Tex, v_colorTexC │ │ │ │ + 0x00d4d300 6f6f7264 293b200a 20202365 6e646966 oord); . #endif │ │ │ │ + 0x00d4d310 200a2020 2020636f 6c6f722e 61202a3d . color.a *= │ │ │ │ + 0x00d4d320 20755f6f 70616369 74793b20 0a202020 u_opacity; . │ │ │ │ + 0x00d4d330 20636f6c 6f722e61 202a3d20 28312e30 color.a *= (1.0 │ │ │ │ + 0x00d4d340 202d2073 6d6f6f74 68737465 70286b41 - smoothstep(kA │ │ │ │ + 0x00d4d350 6e746961 6c696173 696e6754 68726573 ntialiasingThres │ │ │ │ + 0x00d4d360 686f6c64 2c20312e 302c2061 62732876 hold, 1.0, abs(v │ │ │ │ + 0x00d4d370 5f6c656e 67746859 2929293b 200a2020 _lengthY))); . │ │ │ │ + 0x00d4d380 2020765f 46726167 436f6c6f 72203d20 v_FragColor = │ │ │ │ + 0x00d4d390 636f6c6f 723b200a 20207d20 0a000000 color; . } .... │ │ │ │ + 0x00d4d3a0 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d4d3b0 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d4d3c0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d4d3d0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d4d3e0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d4d3f0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d4d400 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d4d410 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d4d420 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d4d430 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d4d440 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d4d450 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d4d460 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d4d470 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d4d480 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d4d490 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d4d4a0 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d4d4b0 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d4d4c0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d4d4d0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d4d4e0 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d4d4f0 63332061 5f706f73 6974696f 6e3b200a c3 a_position; . │ │ │ │ + 0x00d4d500 2020696e 20766563 3420615f 6e6f726d in vec4 a_norm │ │ │ │ + 0x00d4d510 616c3b20 0a202069 6e207665 63342061 al; . in vec4 a │ │ │ │ + 0x00d4d520 5f636f6c 6f723b20 0a20206f 75742076 _color; . out v │ │ │ │ + 0x00d4d530 65633320 765f7261 64697573 3b200a20 ec3 v_radius; . │ │ │ │ + 0x00d4d540 206f7574 20766563 3420765f 636f6c6f out vec4 v_colo │ │ │ │ + 0x00d4d550 723b200a 2020756e 69666f72 6d206d61 r; . uniform ma │ │ │ │ + 0x00d4d560 74342075 5f6d6f64 656c5669 65773b20 t4 u_modelView; │ │ │ │ + 0x00d4d570 0a202075 6e69666f 726d206d 61743420 . uniform mat4 │ │ │ │ + 0x00d4d580 755f7072 6f6a6563 74696f6e 3b200a20 u_projection; . │ │ │ │ + 0x00d4d590 20756e69 666f726d 206d6174 3420755f uniform mat4 u_ │ │ │ │ + 0x00d4d5a0 7069766f 74547261 6e73666f 726d3b20 pivotTransform; │ │ │ │ + 0x00d4d5b0 0a202075 6e69666f 726d2076 65633420 . uniform vec4 │ │ │ │ + 0x00d4d5c0 755f7061 72616d73 3b200a20 20756e69 u_params; . uni │ │ │ │ + 0x00d4d5d0 666f726d 20666c6f 61742075 5f6c696e form float u_lin │ │ │ │ + 0x00d4d5e0 6548616c 66576964 74683b20 0a202075 eHalfWidth; . u │ │ │ │ + 0x00d4d5f0 6e69666f 726d2066 6c6f6174 20755f6d niform float u_m │ │ │ │ + 0x00d4d600 61785261 64697573 3b200a20 20636f6e axRadius; . con │ │ │ │ + 0x00d4d610 73742066 6c6f6174 206b5368 61706543 st float kShapeC │ │ │ │ + 0x00d4d620 6f6f7264 5363616c 6172203d 20313030 oordScalar = 100 │ │ │ │ + 0x00d4d630 302e303b 200a2020 76656334 20617070 0.0; . vec4 app │ │ │ │ + 0x00d4d640 6c795069 766f7454 72616e73 666f726d lyPivotTransform │ │ │ │ + 0x00d4d650 28766563 34207069 766f742c 206d6174 (vec4 pivot, mat │ │ │ │ + 0x00d4d660 34207069 766f7454 72616e73 666f726d 4 pivotTransform │ │ │ │ + 0x00d4d670 2c20666c 6f617420 7069766f 74526561 , float pivotRea │ │ │ │ + 0x00d4d680 6c5a2920 0a20207b 200a2020 20207665 lZ) . { . ve │ │ │ │ + 0x00d4d690 63342074 72616e73 666f726d 65645069 c4 transformedPi │ │ │ │ + 0x00d4d6a0 766f7420 3d207069 766f743b 200a2020 vot = pivot; . │ │ │ │ + 0x00d4d6b0 2020666c 6f617420 77203d20 7472616e float w = tran │ │ │ │ + 0x00d4d6c0 73666f72 6d656450 69766f74 2e773b20 sformedPivot.w; │ │ │ │ + 0x00d4d6d0 0a202020 20747261 6e73666f 726d6564 . transformed │ │ │ │ + 0x00d4d6e0 5069766f 742e7879 77203d20 28706976 Pivot.xyw = (piv │ │ │ │ + 0x00d4d6f0 6f745472 616e7366 6f726d20 2a207665 otTransform * ve │ │ │ │ + 0x00d4d700 63342874 72616e73 666f726d 65645069 c4(transformedPi │ │ │ │ + 0x00d4d710 766f742e 78792c20 7069766f 74526561 vot.xy, pivotRea │ │ │ │ + 0x00d4d720 6c5a2c20 7729292e 7879773b 200a2020 lZ, w)).xyw; . │ │ │ │ + 0x00d4d730 20207472 616e7366 6f726d65 64506976 transformedPiv │ │ │ │ + 0x00d4d740 6f742e7a 202a3d20 7472616e 73666f72 ot.z *= transfor │ │ │ │ + 0x00d4d750 6d656450 69766f74 2e77202f 20773b20 medPivot.w / w; │ │ │ │ + 0x00d4d760 0a202023 69666465 66205655 4c4b414e . #ifdef VULKAN │ │ │ │ + 0x00d4d770 200a2020 20207472 616e7366 6f726d65 . transforme │ │ │ │ + 0x00d4d780 64506976 6f742e79 203d202d 7472616e dPivot.y = -tran │ │ │ │ + 0x00d4d790 73666f72 6d656450 69766f74 2e793b20 sformedPivot.y; │ │ │ │ + 0x00d4d7a0 0a202020 20747261 6e73666f 726d6564 . transformed │ │ │ │ + 0x00d4d7b0 5069766f 742e7a20 3d202874 72616e73 Pivot.z = (trans │ │ │ │ + 0x00d4d7c0 666f726d 65645069 766f742e 7a20202b formedPivot.z + │ │ │ │ + 0x00d4d7d0 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ + 0x00d4d7e0 742e7729 202f2032 2e303b20 0a202023 t.w) / 2.0; . # │ │ │ │ + 0x00d4d7f0 656e6469 66200a20 20202072 65747572 endif . retur │ │ │ │ + 0x00d4d800 6e207472 616e7366 6f726d65 64506976 n transformedPiv │ │ │ │ + 0x00d4d810 6f743b20 0a20207d 200a2020 76656334 ot; . } . vec4 │ │ │ │ + 0x00d4d820 20617070 6c794269 6c6c626f 61726450 applyBillboardP │ │ │ │ + 0x00d4d830 69766f74 5472616e 73666f72 6d287665 ivotTransform(ve │ │ │ │ + 0x00d4d840 63342070 69766f74 2c206d61 74342070 c4 pivot, mat4 p │ │ │ │ + 0x00d4d850 69766f74 5472616e 73666f72 6d2c2066 ivotTransform, f │ │ │ │ + 0x00d4d860 6c6f6174 20706976 6f745265 616c5a2c loat pivotRealZ, │ │ │ │ + 0x00d4d870 20766563 32206f66 66736574 29200a20 vec2 offset) . │ │ │ │ + 0x00d4d880 207b200a 20202020 666c6f61 74206c6f { . float lo │ │ │ │ + 0x00d4d890 6769635a 203d2070 69766f74 2e7a202f gicZ = pivot.z / │ │ │ │ + 0x00d4d8a0 20706976 6f742e77 3b200a20 20202076 pivot.w; . v │ │ │ │ + 0x00d4d8b0 65633420 7472616e 73666f72 6d656450 ec4 transformedP │ │ │ │ + 0x00d4d8c0 69766f74 203d2070 69766f74 5472616e ivot = pivotTran │ │ │ │ + 0x00d4d8d0 73666f72 6d202a20 76656334 28706976 sform * vec4(piv │ │ │ │ + 0x00d4d8e0 6f742e78 792c2070 69766f74 5265616c ot.xy, pivotReal │ │ │ │ + 0x00d4d8f0 5a2c2070 69766f74 2e77293b 200a2020 Z, pivot.w); . │ │ │ │ + 0x00d4d900 20207665 63342073 63616c65 203d2070 vec4 scale = p │ │ │ │ + 0x00d4d910 69766f74 5472616e 73666f72 6d202a20 ivotTransform * │ │ │ │ + 0x00d4d920 76656334 28312e30 2c202d31 2e302c20 vec4(1.0, -1.0, │ │ │ │ + 0x00d4d930 302e302c 20312e30 293b200a 20202020 0.0, 1.0); . │ │ │ │ + 0x00d4d940 76656334 20706f73 6974696f 6e203d20 vec4 position = │ │ │ │ + 0x00d4d950 76656334 28747261 6e73666f 726d6564 vec4(transformed │ │ │ │ + 0x00d4d960 5069766f 742e7879 202f2074 72616e73 Pivot.xy / trans │ │ │ │ + 0x00d4d970 666f726d 65645069 766f742e 772c206c formedPivot.w, l │ │ │ │ + 0x00d4d980 6f676963 5a2c2031 2e302920 2b207665 ogicZ, 1.0) + ve │ │ │ │ + 0x00d4d990 6334286f 66667365 74202f20 7363616c c4(offset / scal │ │ │ │ + 0x00d4d9a0 652e7720 2a207363 616c652e 782c2030 e.w * scale.x, 0 │ │ │ │ + 0x00d4d9b0 2e302c20 302e3029 3b200a20 20236966 .0, 0.0); . #if │ │ │ │ + 0x00d4d9c0 64656620 56554c4b 414e200a 20202020 def VULKAN . │ │ │ │ + 0x00d4d9d0 706f7369 74696f6e 2e79203d 202d706f position.y = -po │ │ │ │ + 0x00d4d9e0 73697469 6f6e2e79 3b200a20 20202070 sition.y; . p │ │ │ │ + 0x00d4d9f0 6f736974 696f6e2e 7a203d20 28706f73 osition.z = (pos │ │ │ │ + 0x00d4da00 6974696f 6e2e7a20 202b2070 6f736974 ition.z + posit │ │ │ │ + 0x00d4da10 696f6e2e 7729202f 20322e30 3b200a20 ion.w) / 2.0; . │ │ │ │ + 0x00d4da20 2023656e 64696620 0a202020 20726574 #endif . ret │ │ │ │ + 0x00d4da30 75726e20 706f7369 74696f6e 3b200a20 urn position; . │ │ │ │ + 0x00d4da40 207d200a 20207665 63322063 616c634c } . vec2 calcL │ │ │ │ + 0x00d4da50 696e6554 72616e73 666f726d 65644178 ineTransformedAx │ │ │ │ + 0x00d4da60 6973506f 73287665 6332206f 72696769 isPos(vec2 origi │ │ │ │ + 0x00d4da70 6e616c41 78697350 6f732c20 76656332 nalAxisPos, vec2 │ │ │ │ + 0x00d4da80 20736869 66746564 506f732c 206d6174 shiftedPos, mat │ │ │ │ + 0x00d4da90 34206d6f 64656c56 6965772c 20666c6f 4 modelView, flo │ │ │ │ + 0x00d4daa0 61742068 616c6657 69647468 29200a20 at halfWidth) . │ │ │ │ + 0x00d4dab0 207b200a 20202020 76656332 2070203d { . vec2 p = │ │ │ │ + 0x00d4dac0 20287665 63342873 68696674 6564506f (vec4(shiftedPo │ │ │ │ + 0x00d4dad0 732c2030 2e302c20 312e3029 202a206d s, 0.0, 1.0) * m │ │ │ │ + 0x00d4dae0 6f64656c 56696577 292e7879 3b200a20 odelView).xy; . │ │ │ │ + 0x00d4daf0 20202076 65633220 64203d20 70202d20 vec2 d = p - │ │ │ │ + 0x00d4db00 6f726967 696e616c 41786973 506f733b originalAxisPos; │ │ │ │ + 0x00d4db10 200a2020 20206966 2028646f 7428642c . if (dot(d, │ │ │ │ + 0x00d4db20 20642920 213d2030 2e302920 0a202020 d) != 0.0) . │ │ │ │ + 0x00d4db30 20202072 65747572 6e206f72 6967696e return origin │ │ │ │ + 0x00d4db40 616c4178 6973506f 73202b20 6e6f726d alAxisPos + norm │ │ │ │ + 0x00d4db50 616c697a 65286429 202a2068 616c6657 alize(d) * halfW │ │ │ │ + 0x00d4db60 69647468 3b200a20 20202065 6c736520 idth; . else │ │ │ │ + 0x00d4db70 0a202020 20202072 65747572 6e206f72 . return or │ │ │ │ + 0x00d4db80 6967696e 616c4178 6973506f 733b200a iginalAxisPos; . │ │ │ │ + 0x00d4db90 20207d20 0a202076 6f696420 6d61696e } . void main │ │ │ │ + 0x00d4dba0 2829200a 20207b20 0a202020 20766563 () . { . vec │ │ │ │ + 0x00d4dbb0 32206e6f 726d616c 203d2061 5f6e6f72 2 normal = a_nor │ │ │ │ + 0x00d4dbc0 6d616c2e 78793b20 0a202020 20766563 mal.xy; . vec │ │ │ │ + 0x00d4dbd0 32207472 616e7366 6f726d65 64417869 2 transformedAxi │ │ │ │ + 0x00d4dbe0 73506f73 203d2028 76656334 28615f70 sPos = (vec4(a_p │ │ │ │ + 0x00d4dbf0 6f736974 696f6e2e 78792c20 302e302c osition.xy, 0.0, │ │ │ │ + 0x00d4dc00 20312e30 29202a20 755f6d6f 64656c56 1.0) * u_modelV │ │ │ │ + 0x00d4dc10 69657729 2e78793b 200a2020 20206966 iew).xy; . if │ │ │ │ + 0x00d4dc20 2028646f 74286e6f 726d616c 2c206e6f (dot(normal, no │ │ │ │ + 0x00d4dc30 726d616c 2920213d 20302e30 29200a20 rmal) != 0.0) . │ │ │ │ + 0x00d4dc40 2020207b 200a2020 20202020 76656332 { . vec2 │ │ │ │ + 0x00d4dc50 206e6f72 6d203d20 6e6f726d 616c202a norm = normal * │ │ │ │ + 0x00d4dc60 20755f6c 696e6548 616c6657 69647468 u_lineHalfWidth │ │ │ │ + 0x00d4dc70 3b200a20 20202020 20747261 6e73666f ; . transfo │ │ │ │ + 0x00d4dc80 726d6564 41786973 506f7320 3d206361 rmedAxisPos = ca │ │ │ │ + 0x00d4dc90 6c634c69 6e655472 616e7366 6f726d65 lcLineTransforme │ │ │ │ + 0x00d4dca0 64417869 73506f73 28747261 6e73666f dAxisPos(transfo │ │ │ │ + 0x00d4dcb0 726d6564 41786973 506f732c 20615f70 rmedAxisPos, a_p │ │ │ │ + 0x00d4dcc0 6f736974 696f6e2e 7879202b 206e6f72 osition.xy + nor │ │ │ │ + 0x00d4dcd0 6d2c200a 20202020 20202020 20202020 m, . │ │ │ │ + 0x00d4dce0 20202020 20202020 20202020 20202020 │ │ │ │ + 0x00d4dcf0 20202020 20202020 20202020 20202020 │ │ │ │ + 0x00d4dd00 20202020 20202020 2020755f 6d6f6465 u_mode │ │ │ │ + 0x00d4dd10 6c566965 772c206c 656e6774 68286e6f lView, length(no │ │ │ │ + 0x00d4dd20 726d2929 3b200a20 2020207d 200a2020 rm)); . } . │ │ │ │ + 0x00d4dd30 20207472 616e7366 6f726d65 64417869 transformedAxi │ │ │ │ + 0x00d4dd40 73506f73 202b3d20 615f6e6f 726d616c sPos += a_normal │ │ │ │ + 0x00d4dd50 2e7a7720 2a20755f 6c696e65 48616c66 .zw * u_lineHalf │ │ │ │ + 0x00d4dd60 57696474 683b200a 20202020 76656334 Width; . vec4 │ │ │ │ + 0x00d4dd70 20706f73 203d2076 65633428 7472616e pos = vec4(tran │ │ │ │ + 0x00d4dd80 73666f72 6d656441 78697350 6f732c20 sformedAxisPos, │ │ │ │ + 0x00d4dd90 615f706f 73697469 6f6e2e7a 2c20312e a_position.z, 1. │ │ │ │ + 0x00d4dda0 3029202a 20755f70 726f6a65 6374696f 0) * u_projectio │ │ │ │ + 0x00d4ddb0 6e3b200a 20202020 676c5f50 6f736974 n; . gl_Posit │ │ │ │ + 0x00d4ddc0 696f6e20 3d206170 706c7950 69766f74 ion = applyPivot │ │ │ │ + 0x00d4ddd0 5472616e 73666f72 6d28706f 732c2075 Transform(pos, u │ │ │ │ + 0x00d4dde0 5f706976 6f745472 616e7366 6f726d2c _pivotTransform, │ │ │ │ + 0x00d4ddf0 20302e30 293b200a 20202020 765f636f 0.0); . v_co │ │ │ │ + 0x00d4de00 6c6f7220 3d20615f 636f6c6f 723b200a lor = a_color; . │ │ │ │ + 0x00d4de10 20202020 765f7261 64697573 203d2076 v_radius = v │ │ │ │ + 0x00d4de20 65633328 615f6e6f 726d616c 2e7a772c ec3(a_normal.zw, │ │ │ │ + 0x00d4de30 20755f6d 61785261 64697573 29202a20 u_maxRadius) * │ │ │ │ + 0x00d4de40 755f6c69 6e654861 6c665769 6474683b u_lineHalfWidth; │ │ │ │ + 0x00d4de50 200a2020 7d200a00 00000000 00000000 . } .......... │ │ │ │ + 0x00d4de60 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d4de70 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d4de80 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d4de90 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d4dea0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d4deb0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d4dec0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d4ded0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d4dee0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d4def0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d4df00 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d4df10 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d4df20 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d4df30 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d4df40 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d4df50 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d4df60 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d4df70 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d4df80 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d4df90 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d4dfa0 2023656e 64696620 0a202075 6e69666f #endif . unifo │ │ │ │ + 0x00d4dfb0 726d204d 45444955 4d5f5020 73616d70 rm MEDIUM_P samp │ │ │ │ + 0x00d4dfc0 6c657232 44417272 61792075 5f636f6c ler2DArray u_col │ │ │ │ + 0x00d4dfd0 6f725465 783b200a 2020696e 20766563 orTex; . in vec │ │ │ │ + 0x00d4dfe0 3320765f 74657843 6f6f7264 733b200a 3 v_texCoords; . │ │ │ │ + 0x00d4dff0 20206f75 74207665 63342076 5f467261 out vec4 v_Fra │ │ │ │ + 0x00d4e000 67436f6c 6f723b20 0a202063 6f6e7374 gColor; . const │ │ │ │ + 0x00d4e010 20666c6f 6174206b 53686170 65436f6f float kShapeCoo │ │ │ │ + 0x00d4e020 72645363 616c6172 203d2031 3030302e rdScalar = 1000. │ │ │ │ + 0x00d4e030 303b200a 2020766f 6964206d 61696e28 0; . void main( │ │ │ │ + 0x00d4e040 29200a20 207b200a 20202020 765f4672 ) . { . v_Fr │ │ │ │ + 0x00d4e050 6167436f 6c6f7220 3d207465 78747572 agColor = textur │ │ │ │ + 0x00d4e060 6528755f 636f6c6f 72546578 2c20765f e(u_colorTex, v_ │ │ │ │ + 0x00d4e070 74657843 6f6f7264 73293b20 0a20207d texCoords); . } │ │ │ │ + 0x00d4e080 200a0000 00000000 00000000 00000000 ............... │ │ │ │ + 0x00d4e090 00000000 00000000 00000000 00000000 ................ │ │ │ │ + 0x00d4e0a0 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d4e0b0 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d4e0c0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d4e0d0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d4e0e0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d4e0f0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d4e100 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d4e110 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d4e120 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d4e130 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d4e140 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d4e150 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d4e160 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d4e170 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d4e180 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d4e190 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d4e1a0 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d4e1b0 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d4e1c0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d4e1d0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d4e1e0 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d4e1f0 63332061 5f6e6f72 6d616c3b 200a2020 c3 a_normal; . │ │ │ │ + 0x00d4e200 696e2076 65633320 615f706f 73697469 in vec3 a_positi │ │ │ │ + 0x00d4e210 6f6e3b20 0a202069 6e207665 63342061 on; . in vec4 a │ │ │ │ + 0x00d4e220 5f636f6c 6f723b20 0a20206f 75742076 _color; . out v │ │ │ │ + 0x00d4e230 65633320 765f7261 64697573 3b200a20 ec3 v_radius; . │ │ │ │ + 0x00d4e240 206f7574 20766563 3420765f 636f6c6f out vec4 v_colo │ │ │ │ + 0x00d4e250 723b200a 2020756e 69666f72 6d206d61 r; . uniform ma │ │ │ │ + 0x00d4e260 74342075 5f6d6f64 656c5669 65773b20 t4 u_modelView; │ │ │ │ + 0x00d4e270 0a202075 6e69666f 726d206d 61743420 . uniform mat4 │ │ │ │ + 0x00d4e280 755f7072 6f6a6563 74696f6e 3b200a20 u_projection; . │ │ │ │ + 0x00d4e290 20756e69 666f726d 206d6174 3420755f uniform mat4 u_ │ │ │ │ + 0x00d4e2a0 7069766f 74547261 6e73666f 726d3b20 pivotTransform; │ │ │ │ + 0x00d4e2b0 0a202075 6e69666f 726d2076 65633220 . uniform vec2 │ │ │ │ + 0x00d4e2c0 755f636f 6e747261 73744761 6d6d613b u_contrastGamma; │ │ │ │ + 0x00d4e2d0 200a2020 756e6966 6f726d20 666c6f61 . uniform floa │ │ │ │ + 0x00d4e2e0 7420755f 6f706163 6974793b 200a2020 t u_opacity; . │ │ │ │ + 0x00d4e2f0 756e6966 6f726d20 666c6f61 7420755f uniform float u_ │ │ │ │ + 0x00d4e300 7a536361 6c653b20 0a202075 6e69666f zScale; . unifo │ │ │ │ + 0x00d4e310 726d2066 6c6f6174 20755f69 6e746572 rm float u_inter │ │ │ │ + 0x00d4e320 706f6c61 74696f6e 3b200a20 20756e69 polation; . uni │ │ │ │ + 0x00d4e330 666f726d 20666c6f 61742075 5f69734f form float u_isO │ │ │ │ + 0x00d4e340 75746c69 6e655061 73733b20 0a202063 utlinePass; . c │ │ │ │ + 0x00d4e350 6f6e7374 20666c6f 6174206b 53686170 onst float kShap │ │ │ │ + 0x00d4e360 65436f6f 72645363 616c6172 203d2031 eCoordScalar = 1 │ │ │ │ + 0x00d4e370 3030302e 303b200a 20207665 63342061 000.0; . vec4 a │ │ │ │ + 0x00d4e380 70706c79 5069766f 74547261 6e73666f pplyPivotTransfo │ │ │ │ + 0x00d4e390 726d2876 65633420 7069766f 742c206d rm(vec4 pivot, m │ │ │ │ + 0x00d4e3a0 61743420 7069766f 74547261 6e73666f at4 pivotTransfo │ │ │ │ + 0x00d4e3b0 726d2c20 666c6f61 74207069 766f7452 rm, float pivotR │ │ │ │ + 0x00d4e3c0 65616c5a 29200a20 207b200a 20202020 ealZ) . { . │ │ │ │ + 0x00d4e3d0 76656334 20747261 6e73666f 726d6564 vec4 transformed │ │ │ │ + 0x00d4e3e0 5069766f 74203d20 7069766f 743b200a Pivot = pivot; . │ │ │ │ + 0x00d4e3f0 20202020 666c6f61 74207720 3d207472 float w = tr │ │ │ │ + 0x00d4e400 616e7366 6f726d65 64506976 6f742e77 ansformedPivot.w │ │ │ │ + 0x00d4e410 3b200a20 20202074 72616e73 666f726d ; . transform │ │ │ │ + 0x00d4e420 65645069 766f742e 78797720 3d202870 edPivot.xyw = (p │ │ │ │ + 0x00d4e430 69766f74 5472616e 73666f72 6d202a20 ivotTransform * │ │ │ │ + 0x00d4e440 76656334 28747261 6e73666f 726d6564 vec4(transformed │ │ │ │ + 0x00d4e450 5069766f 742e7879 2c207069 766f7452 Pivot.xy, pivotR │ │ │ │ + 0x00d4e460 65616c5a 2c207729 292e7879 773b200a ealZ, w)).xyw; . │ │ │ │ + 0x00d4e470 20202020 7472616e 73666f72 6d656450 transformedP │ │ │ │ + 0x00d4e480 69766f74 2e7a202a 3d207472 616e7366 ivot.z *= transf │ │ │ │ + 0x00d4e490 6f726d65 64506976 6f742e77 202f2077 ormedPivot.w / w │ │ │ │ + 0x00d4e4a0 3b200a20 20236966 64656620 56554c4b ; . #ifdef VULK │ │ │ │ + 0x00d4e4b0 414e200a 20202020 7472616e 73666f72 AN . transfor │ │ │ │ + 0x00d4e4c0 6d656450 69766f74 2e79203d 202d7472 medPivot.y = -tr │ │ │ │ + 0x00d4e4d0 616e7366 6f726d65 64506976 6f742e79 ansformedPivot.y │ │ │ │ + 0x00d4e4e0 3b200a20 20202074 72616e73 666f726d ; . transform │ │ │ │ + 0x00d4e4f0 65645069 766f742e 7a203d20 28747261 edPivot.z = (tra │ │ │ │ + 0x00d4e500 6e73666f 726d6564 5069766f 742e7a20 nsformedPivot.z │ │ │ │ + 0x00d4e510 202b2074 72616e73 666f726d 65645069 + transformedPi │ │ │ │ + 0x00d4e520 766f742e 7729202f 20322e30 3b200a20 vot.w) / 2.0; . │ │ │ │ + 0x00d4e530 2023656e 64696620 0a202020 20726574 #endif . ret │ │ │ │ + 0x00d4e540 75726e20 7472616e 73666f72 6d656450 urn transformedP │ │ │ │ + 0x00d4e550 69766f74 3b200a20 207d200a 20207665 ivot; . } . ve │ │ │ │ + 0x00d4e560 63342061 70706c79 42696c6c 626f6172 c4 applyBillboar │ │ │ │ + 0x00d4e570 64506976 6f745472 616e7366 6f726d28 dPivotTransform( │ │ │ │ + 0x00d4e580 76656334 20706976 6f742c20 6d617434 vec4 pivot, mat4 │ │ │ │ + 0x00d4e590 20706976 6f745472 616e7366 6f726d2c pivotTransform, │ │ │ │ + 0x00d4e5a0 20666c6f 61742070 69766f74 5265616c float pivotReal │ │ │ │ + 0x00d4e5b0 5a2c2076 65633220 6f666673 65742920 Z, vec2 offset) │ │ │ │ + 0x00d4e5c0 0a20207b 200a2020 2020666c 6f617420 . { . float │ │ │ │ + 0x00d4e5d0 6c6f6769 635a203d 20706976 6f742e7a logicZ = pivot.z │ │ │ │ + 0x00d4e5e0 202f2070 69766f74 2e773b20 0a202020 / pivot.w; . │ │ │ │ + 0x00d4e5f0 20766563 34207472 616e7366 6f726d65 vec4 transforme │ │ │ │ + 0x00d4e600 64506976 6f74203d 20706976 6f745472 dPivot = pivotTr │ │ │ │ + 0x00d4e610 616e7366 6f726d20 2a207665 63342870 ansform * vec4(p │ │ │ │ + 0x00d4e620 69766f74 2e78792c 20706976 6f745265 ivot.xy, pivotRe │ │ │ │ + 0x00d4e630 616c5a2c 20706976 6f742e77 293b200a alZ, pivot.w); . │ │ │ │ + 0x00d4e640 20202020 76656334 20736361 6c65203d vec4 scale = │ │ │ │ + 0x00d4e650 20706976 6f745472 616e7366 6f726d20 pivotTransform │ │ │ │ + 0x00d4e660 2a207665 63342831 2e302c20 2d312e30 * vec4(1.0, -1.0 │ │ │ │ + 0x00d4e670 2c20302e 302c2031 2e30293b 200a2020 , 0.0, 1.0); . │ │ │ │ + 0x00d4e680 20207665 63342070 6f736974 696f6e20 vec4 position │ │ │ │ + 0x00d4e690 3d207665 63342874 72616e73 666f726d = vec4(transform │ │ │ │ + 0x00d4e6a0 65645069 766f742e 7879202f 20747261 edPivot.xy / tra │ │ │ │ + 0x00d4e6b0 6e73666f 726d6564 5069766f 742e772c nsformedPivot.w, │ │ │ │ + 0x00d4e6c0 206c6f67 69635a2c 20312e30 29202b20 logicZ, 1.0) + │ │ │ │ + 0x00d4e6d0 76656334 286f6666 73657420 2f207363 vec4(offset / sc │ │ │ │ + 0x00d4e6e0 616c652e 77202a20 7363616c 652e782c ale.w * scale.x, │ │ │ │ + 0x00d4e6f0 20302e30 2c20302e 30293b20 0a202023 0.0, 0.0); . # │ │ │ │ + 0x00d4e700 69666465 66205655 4c4b414e 200a2020 ifdef VULKAN . │ │ │ │ + 0x00d4e710 2020706f 73697469 6f6e2e79 203d202d position.y = - │ │ │ │ + 0x00d4e720 706f7369 74696f6e 2e793b20 0a202020 position.y; . │ │ │ │ + 0x00d4e730 20706f73 6974696f 6e2e7a20 3d202870 position.z = (p │ │ │ │ + 0x00d4e740 6f736974 696f6e2e 7a20202b 20706f73 osition.z + pos │ │ │ │ + 0x00d4e750 6974696f 6e2e7729 202f2032 2e303b20 ition.w) / 2.0; │ │ │ │ + 0x00d4e760 0a202023 656e6469 66200a20 20202072 . #endif . r │ │ │ │ + 0x00d4e770 65747572 6e20706f 73697469 6f6e3b20 eturn position; │ │ │ │ + 0x00d4e780 0a20207d 200a2020 76656332 2063616c . } . vec2 cal │ │ │ │ + 0x00d4e790 634c696e 65547261 6e73666f 726d6564 cLineTransformed │ │ │ │ + 0x00d4e7a0 41786973 506f7328 76656332 206f7269 AxisPos(vec2 ori │ │ │ │ + 0x00d4e7b0 67696e61 6c417869 73506f73 2c207665 ginalAxisPos, ve │ │ │ │ + 0x00d4e7c0 63322073 68696674 6564506f 732c206d c2 shiftedPos, m │ │ │ │ + 0x00d4e7d0 61743420 6d6f6465 6c566965 772c2066 at4 modelView, f │ │ │ │ + 0x00d4e7e0 6c6f6174 2068616c 66576964 74682920 loat halfWidth) │ │ │ │ + 0x00d4e7f0 0a20207b 200a2020 20207665 63322070 . { . vec2 p │ │ │ │ + 0x00d4e800 203d2028 76656334 28736869 66746564 = (vec4(shifted │ │ │ │ + 0x00d4e810 506f732c 20302e30 2c20312e 3029202a Pos, 0.0, 1.0) * │ │ │ │ + 0x00d4e820 206d6f64 656c5669 6577292e 78793b20 modelView).xy; │ │ │ │ + 0x00d4e830 0a202020 20766563 32206420 3d207020 . vec2 d = p │ │ │ │ + 0x00d4e840 2d206f72 6967696e 616c4178 6973506f - originalAxisPo │ │ │ │ + 0x00d4e850 733b200a 20202020 69662028 646f7428 s; . if (dot( │ │ │ │ + 0x00d4e860 642c2064 2920213d 20302e30 29200a20 d, d) != 0.0) . │ │ │ │ + 0x00d4e870 20202020 20726574 75726e20 6f726967 return orig │ │ │ │ + 0x00d4e880 696e616c 41786973 506f7320 2b206e6f inalAxisPos + no │ │ │ │ + 0x00d4e890 726d616c 697a6528 6429202a 2068616c rmalize(d) * hal │ │ │ │ + 0x00d4e8a0 66576964 74683b20 0a202020 20656c73 fWidth; . els │ │ │ │ + 0x00d4e8b0 65200a20 20202020 20726574 75726e20 e . return │ │ │ │ + 0x00d4e8c0 6f726967 696e616c 41786973 506f733b originalAxisPos; │ │ │ │ + 0x00d4e8d0 200a2020 7d200a20 20766f69 64206d61 . } . void ma │ │ │ │ + 0x00d4e8e0 696e2829 200a2020 7b200a20 20202076 in() . { . v │ │ │ │ + 0x00d4e8f0 65633320 72616469 7573203d 20615f6e ec3 radius = a_n │ │ │ │ + 0x00d4e900 6f726d61 6c202a20 615f706f 73697469 ormal * a_positi │ │ │ │ + 0x00d4e910 6f6e2e7a 3b200a20 20202076 65633420 on.z; . vec4 │ │ │ │ + 0x00d4e920 706f7320 3d207665 63342861 5f706f73 pos = vec4(a_pos │ │ │ │ + 0x00d4e930 6974696f 6e2e7879 2c20302c 20312920 ition.xy, 0, 1) │ │ │ │ + 0x00d4e940 2a20755f 6d6f6465 6c566965 773b200a * u_modelView; . │ │ │ │ + 0x00d4e950 20202020 76656334 20736869 66746564 vec4 shifted │ │ │ │ + 0x00d4e960 506f7320 3d207665 63342872 61646975 Pos = vec4(radiu │ │ │ │ + 0x00d4e970 732e7879 2c20302c 20302920 2b20706f s.xy, 0, 0) + po │ │ │ │ + 0x00d4e980 733b200a 20202020 676c5f50 6f736974 s; . gl_Posit │ │ │ │ + 0x00d4e990 696f6e20 3d206170 706c7950 69766f74 ion = applyPivot │ │ │ │ + 0x00d4e9a0 5472616e 73666f72 6d287368 69667465 Transform(shifte │ │ │ │ + 0x00d4e9b0 64506f73 202a2075 5f70726f 6a656374 dPos * u_project │ │ │ │ + 0x00d4e9c0 696f6e2c 20755f70 69766f74 5472616e ion, u_pivotTran │ │ │ │ + 0x00d4e9d0 73666f72 6d2c2030 2e30293b 200a2020 sform, 0.0); . │ │ │ │ + 0x00d4e9e0 2020765f 72616469 7573203d 20726164 v_radius = rad │ │ │ │ + 0x00d4e9f0 6975733b 200a2020 2020765f 636f6c6f ius; . v_colo │ │ │ │ + 0x00d4ea00 72203d20 615f636f 6c6f723b 200a2020 r = a_color; . │ │ │ │ + 0x00d4ea10 7d200a00 00000000 00000000 00000000 } .............. │ │ │ │ + 0x00d4ea20 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d4ea30 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d4ea40 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d4ea50 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d4ea60 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d4ea70 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d4ea80 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d4ea90 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d4eaa0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d4eab0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d4eac0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d4ead0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d4eae0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d4eaf0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d4eb00 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d4eb10 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d4eb20 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d4eb30 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d4eb40 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d4eb50 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d4eb60 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d4eb70 63332061 5f706f73 6974696f 6e3b200a c3 a_position; . │ │ │ │ + 0x00d4eb80 2020696e 20766563 3320615f 6e6f726d in vec3 a_norm │ │ │ │ + 0x00d4eb90 616c416e 64416e69 6d617465 4f725a3b alAndAnimateOrZ; │ │ │ │ + 0x00d4eba0 200a2020 696e2076 65633420 615f7465 . in vec4 a_te │ │ │ │ + 0x00d4ebb0 78436f6f 7264733b 200a2020 696e2076 xCoords; . in v │ │ │ │ + 0x00d4ebc0 65633420 615f636f 6c6f723b 200a2020 ec4 a_color; . │ │ │ │ + 0x00d4ebd0 6f757420 76656334 20765f74 6578436f out vec4 v_texCo │ │ │ │ + 0x00d4ebe0 6f726473 3b200a20 206f7574 20766563 ords; . out vec │ │ │ │ + 0x00d4ebf0 3420765f 6d61736b 436f6c6f 723b200a 4 v_maskColor; . │ │ │ │ + 0x00d4ec00 2020756e 69666f72 6d206d61 74342075 uniform mat4 u │ │ │ │ + 0x00d4ec10 5f6d6f64 656c5669 65773b20 0a202075 _modelView; . u │ │ │ │ + 0x00d4ec20 6e69666f 726d206d 61743420 755f7072 niform mat4 u_pr │ │ │ │ + 0x00d4ec30 6f6a6563 74696f6e 3b200a20 20756e69 ojection; . uni │ │ │ │ + 0x00d4ec40 666f726d 206d6174 3420755f 7069766f form mat4 u_pivo │ │ │ │ + 0x00d4ec50 74547261 6e73666f 726d3b20 0a202075 tTransform; . u │ │ │ │ + 0x00d4ec60 6e69666f 726d2076 65633220 755f636f niform vec2 u_co │ │ │ │ + 0x00d4ec70 6e747261 73744761 6d6d613b 200a2020 ntrastGamma; . │ │ │ │ + 0x00d4ec80 756e6966 6f726d20 666c6f61 7420755f uniform float u_ │ │ │ │ + 0x00d4ec90 6f706163 6974793b 200a2020 756e6966 opacity; . unif │ │ │ │ + 0x00d4eca0 6f726d20 666c6f61 7420755f 7a536361 orm float u_zSca │ │ │ │ + 0x00d4ecb0 6c653b20 0a202075 6e69666f 726d2066 le; . uniform f │ │ │ │ + 0x00d4ecc0 6c6f6174 20755f69 6e746572 706f6c61 loat u_interpola │ │ │ │ + 0x00d4ecd0 74696f6e 3b200a20 20756e69 666f726d tion; . uniform │ │ │ │ + 0x00d4ece0 20666c6f 61742075 5f69734f 75746c69 float u_isOutli │ │ │ │ + 0x00d4ecf0 6e655061 73733b20 0a202063 6f6e7374 nePass; . const │ │ │ │ + 0x00d4ed00 20666c6f 6174206b 53686170 65436f6f float kShapeCoo │ │ │ │ + 0x00d4ed10 72645363 616c6172 203d2031 3030302e rdScalar = 1000. │ │ │ │ + 0x00d4ed20 303b200a 20207665 63342061 70706c79 0; . vec4 apply │ │ │ │ + 0x00d4ed30 5069766f 74547261 6e73666f 726d2876 PivotTransform(v │ │ │ │ + 0x00d4ed40 65633420 7069766f 742c206d 61743420 ec4 pivot, mat4 │ │ │ │ + 0x00d4ed50 7069766f 74547261 6e73666f 726d2c20 pivotTransform, │ │ │ │ + 0x00d4ed60 666c6f61 74207069 766f7452 65616c5a float pivotRealZ │ │ │ │ + 0x00d4ed70 29200a20 207b200a 20202020 76656334 ) . { . vec4 │ │ │ │ + 0x00d4ed80 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ + 0x00d4ed90 74203d20 7069766f 743b200a 20202020 t = pivot; . │ │ │ │ + 0x00d4eda0 666c6f61 74207720 3d207472 616e7366 float w = transf │ │ │ │ + 0x00d4edb0 6f726d65 64506976 6f742e77 3b200a20 ormedPivot.w; . │ │ │ │ + 0x00d4edc0 20202074 72616e73 666f726d 65645069 transformedPi │ │ │ │ + 0x00d4edd0 766f742e 78797720 3d202870 69766f74 vot.xyw = (pivot │ │ │ │ + 0x00d4ede0 5472616e 73666f72 6d202a20 76656334 Transform * vec4 │ │ │ │ + 0x00d4edf0 28747261 6e73666f 726d6564 5069766f (transformedPivo │ │ │ │ + 0x00d4ee00 742e7879 2c207069 766f7452 65616c5a t.xy, pivotRealZ │ │ │ │ + 0x00d4ee10 2c207729 292e7879 773b200a 20202020 , w)).xyw; . │ │ │ │ + 0x00d4ee20 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ + 0x00d4ee30 2e7a202a 3d207472 616e7366 6f726d65 .z *= transforme │ │ │ │ + 0x00d4ee40 64506976 6f742e77 202f2077 3b200a20 dPivot.w / w; . │ │ │ │ + 0x00d4ee50 20236966 64656620 56554c4b 414e200a #ifdef VULKAN . │ │ │ │ + 0x00d4ee60 20202020 7472616e 73666f72 6d656450 transformedP │ │ │ │ + 0x00d4ee70 69766f74 2e79203d 202d7472 616e7366 ivot.y = -transf │ │ │ │ + 0x00d4ee80 6f726d65 64506976 6f742e79 3b200a20 ormedPivot.y; . │ │ │ │ + 0x00d4ee90 20202074 72616e73 666f726d 65645069 transformedPi │ │ │ │ + 0x00d4eea0 766f742e 7a203d20 28747261 6e73666f vot.z = (transfo │ │ │ │ + 0x00d4eeb0 726d6564 5069766f 742e7a20 202b2074 rmedPivot.z + t │ │ │ │ + 0x00d4eec0 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ + 0x00d4eed0 7729202f 20322e30 3b200a20 2023656e w) / 2.0; . #en │ │ │ │ + 0x00d4eee0 64696620 0a202020 20726574 75726e20 dif . return │ │ │ │ + 0x00d4eef0 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ + 0x00d4ef00 3b200a20 207d200a 20207665 63342061 ; . } . vec4 a │ │ │ │ + 0x00d4ef10 70706c79 42696c6c 626f6172 64506976 pplyBillboardPiv │ │ │ │ + 0x00d4ef20 6f745472 616e7366 6f726d28 76656334 otTransform(vec4 │ │ │ │ + 0x00d4ef30 20706976 6f742c20 6d617434 20706976 pivot, mat4 piv │ │ │ │ + 0x00d4ef40 6f745472 616e7366 6f726d2c 20666c6f otTransform, flo │ │ │ │ + 0x00d4ef50 61742070 69766f74 5265616c 5a2c2076 at pivotRealZ, v │ │ │ │ + 0x00d4ef60 65633220 6f666673 65742920 0a20207b ec2 offset) . { │ │ │ │ + 0x00d4ef70 200a2020 2020666c 6f617420 6c6f6769 . float logi │ │ │ │ + 0x00d4ef80 635a203d 20706976 6f742e7a 202f2070 cZ = pivot.z / p │ │ │ │ + 0x00d4ef90 69766f74 2e773b20 0a202020 20766563 ivot.w; . vec │ │ │ │ + 0x00d4efa0 34207472 616e7366 6f726d65 64506976 4 transformedPiv │ │ │ │ + 0x00d4efb0 6f74203d 20706976 6f745472 616e7366 ot = pivotTransf │ │ │ │ + 0x00d4efc0 6f726d20 2a207665 63342870 69766f74 orm * vec4(pivot │ │ │ │ + 0x00d4efd0 2e78792c 20706976 6f745265 616c5a2c .xy, pivotRealZ, │ │ │ │ + 0x00d4efe0 20706976 6f742e77 293b200a 20202020 pivot.w); . │ │ │ │ + 0x00d4eff0 76656334 20736361 6c65203d 20706976 vec4 scale = piv │ │ │ │ + 0x00d4f000 6f745472 616e7366 6f726d20 2a207665 otTransform * ve │ │ │ │ + 0x00d4f010 63342831 2e302c20 2d312e30 2c20302e c4(1.0, -1.0, 0. │ │ │ │ + 0x00d4f020 302c2031 2e30293b 200a2020 20207665 0, 1.0); . ve │ │ │ │ + 0x00d4f030 63342070 6f736974 696f6e20 3d207665 c4 position = ve │ │ │ │ + 0x00d4f040 63342874 72616e73 666f726d 65645069 c4(transformedPi │ │ │ │ + 0x00d4f050 766f742e 7879202f 20747261 6e73666f vot.xy / transfo │ │ │ │ + 0x00d4f060 726d6564 5069766f 742e772c 206c6f67 rmedPivot.w, log │ │ │ │ + 0x00d4f070 69635a2c 20312e30 29202b20 76656334 icZ, 1.0) + vec4 │ │ │ │ + 0x00d4f080 286f6666 73657420 2f207363 616c652e (offset / scale. │ │ │ │ + 0x00d4f090 77202a20 7363616c 652e782c 20302e30 w * scale.x, 0.0 │ │ │ │ + 0x00d4f0a0 2c20302e 30293b20 0a202023 69666465 , 0.0); . #ifde │ │ │ │ + 0x00d4f0b0 66205655 4c4b414e 200a2020 2020706f f VULKAN . po │ │ │ │ + 0x00d4f0c0 73697469 6f6e2e79 203d202d 706f7369 sition.y = -posi │ │ │ │ + 0x00d4f0d0 74696f6e 2e793b20 0a202020 20706f73 tion.y; . pos │ │ │ │ + 0x00d4f0e0 6974696f 6e2e7a20 3d202870 6f736974 ition.z = (posit │ │ │ │ + 0x00d4f0f0 696f6e2e 7a20202b 20706f73 6974696f ion.z + positio │ │ │ │ + 0x00d4f100 6e2e7729 202f2032 2e303b20 0a202023 n.w) / 2.0; . # │ │ │ │ + 0x00d4f110 656e6469 66200a20 20202072 65747572 endif . retur │ │ │ │ + 0x00d4f120 6e20706f 73697469 6f6e3b20 0a20207d n position; . } │ │ │ │ + 0x00d4f130 200a2020 76656332 2063616c 634c696e . vec2 calcLin │ │ │ │ + 0x00d4f140 65547261 6e73666f 726d6564 41786973 eTransformedAxis │ │ │ │ + 0x00d4f150 506f7328 76656332 206f7269 67696e61 Pos(vec2 origina │ │ │ │ + 0x00d4f160 6c417869 73506f73 2c207665 63322073 lAxisPos, vec2 s │ │ │ │ + 0x00d4f170 68696674 6564506f 732c206d 61743420 hiftedPos, mat4 │ │ │ │ + 0x00d4f180 6d6f6465 6c566965 772c2066 6c6f6174 modelView, float │ │ │ │ + 0x00d4f190 2068616c 66576964 74682920 0a20207b halfWidth) . { │ │ │ │ + 0x00d4f1a0 200a2020 20207665 63322070 203d2028 . vec2 p = ( │ │ │ │ + 0x00d4f1b0 76656334 28736869 66746564 506f732c vec4(shiftedPos, │ │ │ │ + 0x00d4f1c0 20302e30 2c20312e 3029202a 206d6f64 0.0, 1.0) * mod │ │ │ │ + 0x00d4f1d0 656c5669 6577292e 78793b20 0a202020 elView).xy; . │ │ │ │ + 0x00d4f1e0 20766563 32206420 3d207020 2d206f72 vec2 d = p - or │ │ │ │ + 0x00d4f1f0 6967696e 616c4178 6973506f 733b200a iginalAxisPos; . │ │ │ │ + 0x00d4f200 20202020 69662028 646f7428 642c2064 if (dot(d, d │ │ │ │ + 0x00d4f210 2920213d 20302e30 29200a20 20202020 ) != 0.0) . │ │ │ │ + 0x00d4f220 20726574 75726e20 6f726967 696e616c return original │ │ │ │ + 0x00d4f230 41786973 506f7320 2b206e6f 726d616c AxisPos + normal │ │ │ │ + 0x00d4f240 697a6528 6429202a 2068616c 66576964 ize(d) * halfWid │ │ │ │ + 0x00d4f250 74683b20 0a202020 20656c73 65200a20 th; . else . │ │ │ │ + 0x00d4f260 20202020 20726574 75726e20 6f726967 return orig │ │ │ │ + 0x00d4f270 696e616c 41786973 506f733b 200a2020 inalAxisPos; . │ │ │ │ + 0x00d4f280 7d200a20 20766f69 64206d61 696e2829 } . void main() │ │ │ │ + 0x00d4f290 200a2020 7b200a20 20202076 65633220 . { . vec2 │ │ │ │ + 0x00d4f2a0 6e6f726d 616c203d 20615f6e 6f726d61 normal = a_norma │ │ │ │ + 0x00d4f2b0 6c416e64 416e696d 6174654f 725a2e78 lAndAnimateOrZ.x │ │ │ │ + 0x00d4f2c0 793b200a 20202020 69662028 615f6e6f y; . if (a_no │ │ │ │ + 0x00d4f2d0 726d616c 416e6441 6e696d61 74654f72 rmalAndAnimateOr │ │ │ │ + 0x00d4f2e0 5a2e7a20 3e20302e 3029200a 20202020 Z.z > 0.0) . │ │ │ │ + 0x00d4f2f0 20206e6f 726d616c 203d2075 5f696e74 normal = u_int │ │ │ │ + 0x00d4f300 6572706f 6c617469 6f6e202a 206e6f72 erpolation * nor │ │ │ │ + 0x00d4f310 6d616c3b 200a2020 20207665 63342070 mal; . vec4 p │ │ │ │ + 0x00d4f320 69766f74 203d2076 65633428 615f706f ivot = vec4(a_po │ │ │ │ + 0x00d4f330 73697469 6f6e2c20 312e3029 202a2075 sition, 1.0) * u │ │ │ │ + 0x00d4f340 5f6d6f64 656c5669 65773b20 0a202020 _modelView; . │ │ │ │ + 0x00d4f350 20766563 34206f66 66736574 203d2076 vec4 offset = v │ │ │ │ + 0x00d4f360 65633428 6e6f726d 616c2c20 302e302c ec4(normal, 0.0, │ │ │ │ + 0x00d4f370 20302e30 29202a20 755f7072 6f6a6563 0.0) * u_projec │ │ │ │ + 0x00d4f380 74696f6e 3b200a20 20202076 65633420 tion; . vec4 │ │ │ │ + 0x00d4f390 70726f6a 65637465 64506976 6f74203d projectedPivot = │ │ │ │ + 0x00d4f3a0 20706976 6f74202a 20755f70 726f6a65 pivot * u_proje │ │ │ │ + 0x00d4f3b0 6374696f 6e3b200a 20202020 676c5f50 ction; . gl_P │ │ │ │ + 0x00d4f3c0 6f736974 696f6e20 3d206170 706c7942 osition = applyB │ │ │ │ + 0x00d4f3d0 696c6c62 6f617264 5069766f 74547261 illboardPivotTra │ │ │ │ + 0x00d4f3e0 6e73666f 726d2870 726f6a65 63746564 nsform(projected │ │ │ │ + 0x00d4f3f0 5069766f 742c2075 5f706976 6f745472 Pivot, u_pivotTr │ │ │ │ + 0x00d4f400 616e7366 6f726d2c 20302e30 2c206f66 ansform, 0.0, of │ │ │ │ + 0x00d4f410 66736574 2e787929 3b200a20 20202066 fset.xy); . f │ │ │ │ + 0x00d4f420 6c6f6174 206e6577 5a203d20 70726f6a loat newZ = proj │ │ │ │ + 0x00d4f430 65637465 64506976 6f742e79 202f2070 ectedPivot.y / p │ │ │ │ + 0x00d4f440 726f6a65 63746564 5069766f 742e7720 rojectedPivot.w │ │ │ │ + 0x00d4f450 2a20302e 35202b20 302e353b 200a2020 * 0.5 + 0.5; . │ │ │ │ + 0x00d4f460 2020676c 5f506f73 6974696f 6e2e7a20 gl_Position.z │ │ │ │ + 0x00d4f470 3d206162 7328615f 6e6f726d 616c416e = abs(a_normalAn │ │ │ │ + 0x00d4f480 64416e69 6d617465 4f725a2e 7a29202a dAnimateOrZ.z) * │ │ │ │ + 0x00d4f490 206e6577 5a20202b 2028312e 30202d20 newZ + (1.0 - │ │ │ │ + 0x00d4f4a0 61627328 615f6e6f 726d616c 416e6441 abs(a_normalAndA │ │ │ │ + 0x00d4f4b0 6e696d61 74654f72 5a2e7a29 29202a20 nimateOrZ.z)) * │ │ │ │ + 0x00d4f4c0 676c5f50 6f736974 696f6e2e 7a3b200a gl_Position.z; . │ │ │ │ + 0x00d4f4d0 20202020 765f7465 78436f6f 72647320 v_texCoords │ │ │ │ + 0x00d4f4e0 3d20615f 74657843 6f6f7264 733b200a = a_texCoords; . │ │ │ │ + 0x00d4f4f0 20202020 765f6d61 736b436f 6c6f7220 v_maskColor │ │ │ │ + 0x00d4f500 3d20615f 636f6c6f 723b200a 20207d20 = a_color; . } │ │ │ │ + 0x00d4f510 0a000000 00000000 00000000 00000000 ................ │ │ │ │ + 0x00d4f520 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d4f530 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d4f540 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d4f550 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d4f560 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d4f570 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d4f580 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d4f590 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d4f5a0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d4f5b0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d4f5c0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d4f5d0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d4f5e0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d4f5f0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d4f600 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d4f610 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d4f620 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d4f630 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d4f640 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d4f650 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d4f660 2023656e 64696620 0a202023 69666465 #endif . #ifde │ │ │ │ + 0x00d4f670 6620454e 41424c45 5f565446 200a2020 f ENABLE_VTF . │ │ │ │ + 0x00d4f680 696e204c 4f575f50 20766563 3420765f in LOW_P vec4 v_ │ │ │ │ + 0x00d4f690 636f6c6f 723b200a 20202365 6c736520 color; . #else │ │ │ │ + 0x00d4f6a0 0a202069 6e207665 63322076 5f636f6c . in vec2 v_col │ │ │ │ + 0x00d4f6b0 6f725465 78436f6f 7264733b 200a2020 orTexCoords; . │ │ │ │ + 0x00d4f6c0 756e6966 6f726d20 73616d70 6c657232 uniform sampler2 │ │ │ │ + 0x00d4f6d0 4420755f 636f6c6f 72546578 3b200a20 D u_colorTex; . │ │ │ │ + 0x00d4f6e0 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d4f6f0 63322076 5f6d6173 6b546578 436f6f72 c2 v_maskTexCoor │ │ │ │ + 0x00d4f700 64733b20 0a20206f 75742076 65633420 ds; . out vec4 │ │ │ │ + 0x00d4f710 765f4672 6167436f 6c6f723b 200a2020 v_FragColor; . │ │ │ │ + 0x00d4f720 756e6966 6f726d20 6d617434 20755f6d uniform mat4 u_m │ │ │ │ + 0x00d4f730 6f64656c 56696577 3b200a20 20756e69 odelView; . uni │ │ │ │ + 0x00d4f740 666f726d 206d6174 3420755f 70726f6a form mat4 u_proj │ │ │ │ + 0x00d4f750 65637469 6f6e3b20 0a202075 6e69666f ection; . unifo │ │ │ │ + 0x00d4f760 726d206d 61743420 755f7069 766f7454 rm mat4 u_pivotT │ │ │ │ + 0x00d4f770 72616e73 666f726d 3b200a20 20756e69 ransform; . uni │ │ │ │ + 0x00d4f780 666f726d 20766563 3220755f 636f6e74 form vec2 u_cont │ │ │ │ + 0x00d4f790 72617374 47616d6d 613b200a 2020756e rastGamma; . un │ │ │ │ + 0x00d4f7a0 69666f72 6d20666c 6f617420 755f6f70 iform float u_op │ │ │ │ + 0x00d4f7b0 61636974 793b200a 2020756e 69666f72 acity; . unifor │ │ │ │ + 0x00d4f7c0 6d20666c 6f617420 755f7a53 63616c65 m float u_zScale │ │ │ │ + 0x00d4f7d0 3b200a20 20756e69 666f726d 20666c6f ; . uniform flo │ │ │ │ + 0x00d4f7e0 61742075 5f696e74 6572706f 6c617469 at u_interpolati │ │ │ │ + 0x00d4f7f0 6f6e3b20 0a202075 6e69666f 726d2066 on; . uniform f │ │ │ │ + 0x00d4f800 6c6f6174 20755f69 734f7574 6c696e65 loat u_isOutline │ │ │ │ + 0x00d4f810 50617373 3b200a20 20756e69 666f726d Pass; . uniform │ │ │ │ + 0x00d4f820 2073616d 706c6572 32442075 5f6d6173 sampler2D u_mas │ │ │ │ + 0x00d4f830 6b546578 3b200a20 20636f6e 73742066 kTex; . const f │ │ │ │ + 0x00d4f840 6c6f6174 206b5368 61706543 6f6f7264 loat kShapeCoord │ │ │ │ + 0x00d4f850 5363616c 6172203d 20313030 302e303b Scalar = 1000.0; │ │ │ │ + 0x00d4f860 200a2020 766f6964 206d6169 6e282920 . void main() │ │ │ │ + 0x00d4f870 0a20207b 200a2020 23696664 65662045 . { . #ifdef E │ │ │ │ + 0x00d4f880 4e41424c 455f5654 46200a20 2020204c NABLE_VTF . L │ │ │ │ + 0x00d4f890 4f575f50 20766563 3420636f 6c6f7220 OW_P vec4 color │ │ │ │ + 0x00d4f8a0 3d20765f 636f6c6f 723b200a 20202365 = v_color; . #e │ │ │ │ + 0x00d4f8b0 6c736520 0a202020 204c4f57 5f502076 lse . LOW_P v │ │ │ │ + 0x00d4f8c0 65633420 636f6c6f 72203d20 74657874 ec4 color = text │ │ │ │ + 0x00d4f8d0 75726528 755f636f 6c6f7254 65782c20 ure(u_colorTex, │ │ │ │ + 0x00d4f8e0 765f636f 6c6f7254 6578436f 6f726473 v_colorTexCoords │ │ │ │ + 0x00d4f8f0 293b200a 20202365 6e646966 200a2020 ); . #endif . │ │ │ │ + 0x00d4f900 2020636f 6c6f7220 2a3d2074 65787475 color *= textu │ │ │ │ + 0x00d4f910 72652875 5f6d6173 6b546578 2c20765f re(u_maskTex, v_ │ │ │ │ + 0x00d4f920 6d61736b 54657843 6f6f7264 73293b20 maskTexCoords); │ │ │ │ + 0x00d4f930 0a202020 20636f6c 6f722e61 202a3d20 . color.a *= │ │ │ │ + 0x00d4f940 755f6f70 61636974 793b200a 20202020 u_opacity; . │ │ │ │ + 0x00d4f950 765f4672 6167436f 6c6f7220 3d20636f v_FragColor = co │ │ │ │ + 0x00d4f960 6c6f723b 200a2020 7d200a00 00000000 lor; . } ...... │ │ │ │ + 0x00d4f970 00000000 00000000 00000000 00000000 ................ │ │ │ │ + 0x00d4f980 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d4f990 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d4f9a0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d4f9b0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d4f9c0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d4f9d0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d4f9e0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d4f9f0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d4fa00 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d4fa10 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d4fa20 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d4fa30 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d4fa40 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d4fa50 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d4fa60 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d4fa70 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d4fa80 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d4fa90 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d4faa0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d4fab0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d4fac0 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d4fad0 63342061 5f706f73 6974696f 6e3b200a c4 a_position; . │ │ │ │ + 0x00d4fae0 2020696e 20766563 3220615f 6e6f726d in vec2 a_norm │ │ │ │ + 0x00d4faf0 616c3b20 0a202069 6e207665 63322061 al; . in vec2 a │ │ │ │ + 0x00d4fb00 5f636f6c 6f725465 78436f6f 7264733b _colorTexCoords; │ │ │ │ + 0x00d4fb10 200a2020 6f757420 76656332 20765f63 . out vec2 v_c │ │ │ │ + 0x00d4fb20 6f6c6f72 54657843 6f6f7264 733b200a olorTexCoords; . │ │ │ │ + 0x00d4fb30 2020756e 69666f72 6d206d61 74342075 uniform mat4 u │ │ │ │ + 0x00d4fb40 5f6d6f64 656c5669 65773b20 0a202075 _modelView; . u │ │ │ │ + 0x00d4fb50 6e69666f 726d206d 61743420 755f7072 niform mat4 u_pr │ │ │ │ + 0x00d4fb60 6f6a6563 74696f6e 3b200a20 20756e69 ojection; . uni │ │ │ │ + 0x00d4fb70 666f726d 206d6174 3420755f 7069766f form mat4 u_pivo │ │ │ │ + 0x00d4fb80 74547261 6e73666f 726d3b20 0a202075 tTransform; . u │ │ │ │ + 0x00d4fb90 6e69666f 726d2076 65633220 755f636f niform vec2 u_co │ │ │ │ + 0x00d4fba0 6e747261 73744761 6d6d613b 200a2020 ntrastGamma; . │ │ │ │ + 0x00d4fbb0 756e6966 6f726d20 666c6f61 7420755f uniform float u_ │ │ │ │ + 0x00d4fbc0 6f706163 6974793b 200a2020 756e6966 opacity; . unif │ │ │ │ + 0x00d4fbd0 6f726d20 666c6f61 7420755f 7a536361 orm float u_zSca │ │ │ │ + 0x00d4fbe0 6c653b20 0a202075 6e69666f 726d2066 le; . uniform f │ │ │ │ + 0x00d4fbf0 6c6f6174 20755f69 6e746572 706f6c61 loat u_interpola │ │ │ │ + 0x00d4fc00 74696f6e 3b200a20 20756e69 666f726d tion; . uniform │ │ │ │ + 0x00d4fc10 20666c6f 61742075 5f69734f 75746c69 float u_isOutli │ │ │ │ + 0x00d4fc20 6e655061 73733b20 0a202063 6f6e7374 nePass; . const │ │ │ │ + 0x00d4fc30 20666c6f 6174206b 53686170 65436f6f float kShapeCoo │ │ │ │ + 0x00d4fc40 72645363 616c6172 203d2031 3030302e rdScalar = 1000. │ │ │ │ + 0x00d4fc50 303b200a 20207665 63342061 70706c79 0; . vec4 apply │ │ │ │ + 0x00d4fc60 5069766f 74547261 6e73666f 726d2876 PivotTransform(v │ │ │ │ + 0x00d4fc70 65633420 7069766f 742c206d 61743420 ec4 pivot, mat4 │ │ │ │ + 0x00d4fc80 7069766f 74547261 6e73666f 726d2c20 pivotTransform, │ │ │ │ + 0x00d4fc90 666c6f61 74207069 766f7452 65616c5a float pivotRealZ │ │ │ │ + 0x00d4fca0 29200a20 207b200a 20202020 76656334 ) . { . vec4 │ │ │ │ + 0x00d4fcb0 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ + 0x00d4fcc0 74203d20 7069766f 743b200a 20202020 t = pivot; . │ │ │ │ + 0x00d4fcd0 666c6f61 74207720 3d207472 616e7366 float w = transf │ │ │ │ + 0x00d4fce0 6f726d65 64506976 6f742e77 3b200a20 ormedPivot.w; . │ │ │ │ + 0x00d4fcf0 20202074 72616e73 666f726d 65645069 transformedPi │ │ │ │ + 0x00d4fd00 766f742e 78797720 3d202870 69766f74 vot.xyw = (pivot │ │ │ │ + 0x00d4fd10 5472616e 73666f72 6d202a20 76656334 Transform * vec4 │ │ │ │ + 0x00d4fd20 28747261 6e73666f 726d6564 5069766f (transformedPivo │ │ │ │ + 0x00d4fd30 742e7879 2c207069 766f7452 65616c5a t.xy, pivotRealZ │ │ │ │ + 0x00d4fd40 2c207729 292e7879 773b200a 20202020 , w)).xyw; . │ │ │ │ + 0x00d4fd50 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ + 0x00d4fd60 2e7a202a 3d207472 616e7366 6f726d65 .z *= transforme │ │ │ │ + 0x00d4fd70 64506976 6f742e77 202f2077 3b200a20 dPivot.w / w; . │ │ │ │ + 0x00d4fd80 20236966 64656620 56554c4b 414e200a #ifdef VULKAN . │ │ │ │ + 0x00d4fd90 20202020 7472616e 73666f72 6d656450 transformedP │ │ │ │ + 0x00d4fda0 69766f74 2e79203d 202d7472 616e7366 ivot.y = -transf │ │ │ │ + 0x00d4fdb0 6f726d65 64506976 6f742e79 3b200a20 ormedPivot.y; . │ │ │ │ + 0x00d4fdc0 20202074 72616e73 666f726d 65645069 transformedPi │ │ │ │ + 0x00d4fdd0 766f742e 7a203d20 28747261 6e73666f vot.z = (transfo │ │ │ │ + 0x00d4fde0 726d6564 5069766f 742e7a20 202b2074 rmedPivot.z + t │ │ │ │ + 0x00d4fdf0 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ + 0x00d4fe00 7729202f 20322e30 3b200a20 2023656e w) / 2.0; . #en │ │ │ │ + 0x00d4fe10 64696620 0a202020 20726574 75726e20 dif . return │ │ │ │ + 0x00d4fe20 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ + 0x00d4fe30 3b200a20 207d200a 20207665 63342061 ; . } . vec4 a │ │ │ │ + 0x00d4fe40 70706c79 42696c6c 626f6172 64506976 pplyBillboardPiv │ │ │ │ + 0x00d4fe50 6f745472 616e7366 6f726d28 76656334 otTransform(vec4 │ │ │ │ + 0x00d4fe60 20706976 6f742c20 6d617434 20706976 pivot, mat4 piv │ │ │ │ + 0x00d4fe70 6f745472 616e7366 6f726d2c 20666c6f otTransform, flo │ │ │ │ + 0x00d4fe80 61742070 69766f74 5265616c 5a2c2076 at pivotRealZ, v │ │ │ │ + 0x00d4fe90 65633220 6f666673 65742920 0a20207b ec2 offset) . { │ │ │ │ + 0x00d4fea0 200a2020 2020666c 6f617420 6c6f6769 . float logi │ │ │ │ + 0x00d4feb0 635a203d 20706976 6f742e7a 202f2070 cZ = pivot.z / p │ │ │ │ + 0x00d4fec0 69766f74 2e773b20 0a202020 20766563 ivot.w; . vec │ │ │ │ + 0x00d4fed0 34207472 616e7366 6f726d65 64506976 4 transformedPiv │ │ │ │ + 0x00d4fee0 6f74203d 20706976 6f745472 616e7366 ot = pivotTransf │ │ │ │ + 0x00d4fef0 6f726d20 2a207665 63342870 69766f74 orm * vec4(pivot │ │ │ │ + 0x00d4ff00 2e78792c 20706976 6f745265 616c5a2c .xy, pivotRealZ, │ │ │ │ + 0x00d4ff10 20706976 6f742e77 293b200a 20202020 pivot.w); . │ │ │ │ + 0x00d4ff20 76656334 20736361 6c65203d 20706976 vec4 scale = piv │ │ │ │ + 0x00d4ff30 6f745472 616e7366 6f726d20 2a207665 otTransform * ve │ │ │ │ + 0x00d4ff40 63342831 2e302c20 2d312e30 2c20302e c4(1.0, -1.0, 0. │ │ │ │ + 0x00d4ff50 302c2031 2e30293b 200a2020 20207665 0, 1.0); . ve │ │ │ │ + 0x00d4ff60 63342070 6f736974 696f6e20 3d207665 c4 position = ve │ │ │ │ + 0x00d4ff70 63342874 72616e73 666f726d 65645069 c4(transformedPi │ │ │ │ + 0x00d4ff80 766f742e 7879202f 20747261 6e73666f vot.xy / transfo │ │ │ │ + 0x00d4ff90 726d6564 5069766f 742e772c 206c6f67 rmedPivot.w, log │ │ │ │ + 0x00d4ffa0 69635a2c 20312e30 29202b20 76656334 icZ, 1.0) + vec4 │ │ │ │ + 0x00d4ffb0 286f6666 73657420 2f207363 616c652e (offset / scale. │ │ │ │ + 0x00d4ffc0 77202a20 7363616c 652e782c 20302e30 w * scale.x, 0.0 │ │ │ │ + 0x00d4ffd0 2c20302e 30293b20 0a202023 69666465 , 0.0); . #ifde │ │ │ │ + 0x00d4ffe0 66205655 4c4b414e 200a2020 2020706f f VULKAN . po │ │ │ │ + 0x00d4fff0 73697469 6f6e2e79 203d202d 706f7369 sition.y = -posi │ │ │ │ + 0x00d50000 74696f6e 2e793b20 0a202020 20706f73 tion.y; . pos │ │ │ │ + 0x00d50010 6974696f 6e2e7a20 3d202870 6f736974 ition.z = (posit │ │ │ │ + 0x00d50020 696f6e2e 7a20202b 20706f73 6974696f ion.z + positio │ │ │ │ + 0x00d50030 6e2e7729 202f2032 2e303b20 0a202023 n.w) / 2.0; . # │ │ │ │ + 0x00d50040 656e6469 66200a20 20202072 65747572 endif . retur │ │ │ │ + 0x00d50050 6e20706f 73697469 6f6e3b20 0a20207d n position; . } │ │ │ │ + 0x00d50060 200a2020 76656332 2063616c 634c696e . vec2 calcLin │ │ │ │ + 0x00d50070 65547261 6e73666f 726d6564 41786973 eTransformedAxis │ │ │ │ + 0x00d50080 506f7328 76656332 206f7269 67696e61 Pos(vec2 origina │ │ │ │ + 0x00d50090 6c417869 73506f73 2c207665 63322073 lAxisPos, vec2 s │ │ │ │ + 0x00d500a0 68696674 6564506f 732c206d 61743420 hiftedPos, mat4 │ │ │ │ + 0x00d500b0 6d6f6465 6c566965 772c2066 6c6f6174 modelView, float │ │ │ │ + 0x00d500c0 2068616c 66576964 74682920 0a20207b halfWidth) . { │ │ │ │ + 0x00d500d0 200a2020 20207665 63322070 203d2028 . vec2 p = ( │ │ │ │ + 0x00d500e0 76656334 28736869 66746564 506f732c vec4(shiftedPos, │ │ │ │ + 0x00d500f0 20302e30 2c20312e 3029202a 206d6f64 0.0, 1.0) * mod │ │ │ │ + 0x00d50100 656c5669 6577292e 78793b20 0a202020 elView).xy; . │ │ │ │ + 0x00d50110 20766563 32206420 3d207020 2d206f72 vec2 d = p - or │ │ │ │ + 0x00d50120 6967696e 616c4178 6973506f 733b200a iginalAxisPos; . │ │ │ │ + 0x00d50130 20202020 69662028 646f7428 642c2064 if (dot(d, d │ │ │ │ + 0x00d50140 2920213d 20302e30 29200a20 20202020 ) != 0.0) . │ │ │ │ + 0x00d50150 20726574 75726e20 6f726967 696e616c return original │ │ │ │ + 0x00d50160 41786973 506f7320 2b206e6f 726d616c AxisPos + normal │ │ │ │ + 0x00d50170 697a6528 6429202a 2068616c 66576964 ize(d) * halfWid │ │ │ │ + 0x00d50180 74683b20 0a202020 20656c73 65200a20 th; . else . │ │ │ │ + 0x00d50190 20202020 20726574 75726e20 6f726967 return orig │ │ │ │ + 0x00d501a0 696e616c 41786973 506f733b 200a2020 inalAxisPos; . │ │ │ │ + 0x00d501b0 7d200a20 20766f69 64206d61 696e2829 } . void main() │ │ │ │ + 0x00d501c0 200a2020 7b200a20 20202076 65633420 . { . vec4 │ │ │ │ + 0x00d501d0 7069766f 74203d20 76656334 28615f70 pivot = vec4(a_p │ │ │ │ + 0x00d501e0 6f736974 696f6e2e 78797a2c 20312e30 osition.xyz, 1.0 │ │ │ │ + 0x00d501f0 29202a20 755f6d6f 64656c56 6965773b ) * u_modelView; │ │ │ │ + 0x00d50200 200a2020 20207665 6334206f 66667365 . vec4 offse │ │ │ │ + 0x00d50210 74203d20 76656334 28615f6e 6f726d61 t = vec4(a_norma │ │ │ │ + 0x00d50220 6c2c2030 2e302c20 302e3029 202a2075 l, 0.0, 0.0) * u │ │ │ │ + 0x00d50230 5f70726f 6a656374 696f6e3b 200a2020 _projection; . │ │ │ │ + 0x00d50240 2020676c 5f506f73 6974696f 6e203d20 gl_Position = │ │ │ │ + 0x00d50250 6170706c 7942696c 6c626f61 72645069 applyBillboardPi │ │ │ │ + 0x00d50260 766f7454 72616e73 666f726d 28706976 votTransform(piv │ │ │ │ + 0x00d50270 6f74202a 20755f70 726f6a65 6374696f ot * u_projectio │ │ │ │ + 0x00d50280 6e2c2075 5f706976 6f745472 616e7366 n, u_pivotTransf │ │ │ │ + 0x00d50290 6f726d2c 200a2020 20202020 20202020 orm, . │ │ │ │ + 0x00d502a0 20202020 20202020 20202020 20202020 │ │ │ │ + 0x00d502b0 20202020 20202020 20202020 20202020 │ │ │ │ + 0x00d502c0 20202020 20615f70 6f736974 696f6e2e a_position. │ │ │ │ + 0x00d502d0 77202a20 755f7a53 63616c65 2c206f66 w * u_zScale, of │ │ │ │ + 0x00d502e0 66736574 2e787929 3b200a20 20202076 fset.xy); . v │ │ │ │ + 0x00d502f0 5f636f6c 6f725465 78436f6f 72647320 _colorTexCoords │ │ │ │ + 0x00d50300 3d20615f 636f6c6f 72546578 436f6f72 = a_colorTexCoor │ │ │ │ + 0x00d50310 64733b20 0a20207d 200a0000 00000000 ds; . } ....... │ │ │ │ + 0x00d50320 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d50330 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d50340 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d50350 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d50360 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d50370 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d50380 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d50390 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d503a0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d503b0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d503c0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d503d0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d503e0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d503f0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d50400 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d50410 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d50420 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d50430 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d50440 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d50450 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d50460 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d50470 63322076 5f636f6c 6f725465 78436f6f c2 v_colorTexCoo │ │ │ │ + 0x00d50480 7264733b 200a2020 6f757420 76656334 rds; . out vec4 │ │ │ │ + 0x00d50490 20765f46 72616743 6f6c6f72 3b200a20 v_FragColor; . │ │ │ │ + 0x00d504a0 20756e69 666f726d 206d6174 3420755f uniform mat4 u_ │ │ │ │ + 0x00d504b0 6d6f6465 6c566965 773b200a 2020756e modelView; . un │ │ │ │ + 0x00d504c0 69666f72 6d206d61 74342075 5f70726f iform mat4 u_pro │ │ │ │ + 0x00d504d0 6a656374 696f6e3b 200a2020 756e6966 jection; . unif │ │ │ │ + 0x00d504e0 6f726d20 6d617434 20755f70 69766f74 orm mat4 u_pivot │ │ │ │ + 0x00d504f0 5472616e 73666f72 6d3b200a 2020756e Transform; . un │ │ │ │ + 0x00d50500 69666f72 6d207665 63322075 5f636f6e iform vec2 u_con │ │ │ │ + 0x00d50510 74726173 7447616d 6d613b20 0a202075 trastGamma; . u │ │ │ │ + 0x00d50520 6e69666f 726d2066 6c6f6174 20755f6f niform float u_o │ │ │ │ + 0x00d50530 70616369 74793b20 0a202075 6e69666f pacity; . unifo │ │ │ │ + 0x00d50540 726d2066 6c6f6174 20755f7a 5363616c rm float u_zScal │ │ │ │ + 0x00d50550 653b200a 2020756e 69666f72 6d20666c e; . uniform fl │ │ │ │ + 0x00d50560 6f617420 755f696e 74657270 6f6c6174 oat u_interpolat │ │ │ │ + 0x00d50570 696f6e3b 200a2020 756e6966 6f726d20 ion; . uniform │ │ │ │ + 0x00d50580 666c6f61 7420755f 69734f75 746c696e float u_isOutlin │ │ │ │ + 0x00d50590 65506173 733b200a 2020756e 69666f72 ePass; . unifor │ │ │ │ + 0x00d505a0 6d207361 6d706c65 72324420 755f636f m sampler2D u_co │ │ │ │ + 0x00d505b0 6c6f7254 65783b20 0a202063 6f6e7374 lorTex; . const │ │ │ │ + 0x00d505c0 20666c6f 6174206b 53686170 65436f6f float kShapeCoo │ │ │ │ + 0x00d505d0 72645363 616c6172 203d2031 3030302e rdScalar = 1000. │ │ │ │ + 0x00d505e0 303b200a 2020766f 6964206d 61696e28 0; . void main( │ │ │ │ + 0x00d505f0 29200a20 207b200a 20202020 76656334 ) . { . vec4 │ │ │ │ + 0x00d50600 2066696e 616c436f 6c6f7220 3d207465 finalColor = te │ │ │ │ + 0x00d50610 78747572 6528755f 636f6c6f 72546578 xture(u_colorTex │ │ │ │ + 0x00d50620 2c20765f 636f6c6f 72546578 436f6f72 , v_colorTexCoor │ │ │ │ + 0x00d50630 6473293b 200a2020 20206669 6e616c43 ds); . finalC │ │ │ │ + 0x00d50640 6f6c6f72 2e61202a 3d20755f 6f706163 olor.a *= u_opac │ │ │ │ + 0x00d50650 6974793b 200a2020 2020765f 46726167 ity; . v_Frag │ │ │ │ + 0x00d50660 436f6c6f 72203d20 66696e61 6c436f6c Color = finalCol │ │ │ │ + 0x00d50670 6f723b20 0a20207d 200a0000 00000000 or; . } ....... │ │ │ │ + 0x00d50680 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d50690 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d506a0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d506b0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d506c0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d506d0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d506e0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d506f0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d50700 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d50710 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d50720 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d50730 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d50740 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d50750 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d50760 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d50770 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d50780 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d50790 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d507a0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d507b0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d507c0 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d507d0 63322076 5f636f6c 6f725465 78436f6f c2 v_colorTexCoo │ │ │ │ + 0x00d507e0 72643b20 0a202069 6e207665 63332076 rd; . in vec3 v │ │ │ │ + 0x00d507f0 5f726164 6975733b 200a2020 6f757420 _radius; . out │ │ │ │ + 0x00d50800 76656334 20765f46 72616743 6f6c6f72 vec4 v_FragColor │ │ │ │ + 0x00d50810 3b200a20 20756e69 666f726d 206d6174 ; . uniform mat │ │ │ │ + 0x00d50820 3420755f 6d6f6465 6c566965 773b200a 4 u_modelView; . │ │ │ │ + 0x00d50830 2020756e 69666f72 6d206d61 74342075 uniform mat4 u │ │ │ │ + 0x00d50840 5f70726f 6a656374 696f6e3b 200a2020 _projection; . │ │ │ │ + 0x00d50850 756e6966 6f726d20 6d617434 20755f70 uniform mat4 u_p │ │ │ │ + 0x00d50860 69766f74 5472616e 73666f72 6d3b200a ivotTransform; . │ │ │ │ + 0x00d50870 2020756e 69666f72 6d207665 63342075 uniform vec4 u │ │ │ │ + 0x00d50880 5f747261 66666963 50617261 6d733b20 _trafficParams; │ │ │ │ + 0x00d50890 0a202075 6e69666f 726d2076 65633420 . uniform vec4 │ │ │ │ + 0x00d508a0 755f6f75 746c696e 65436f6c 6f723b20 u_outlineColor; │ │ │ │ + 0x00d508b0 0a202075 6e69666f 726d2076 65633420 . uniform vec4 │ │ │ │ + 0x00d508c0 755f6c69 67687441 72726f77 436f6c6f u_lightArrowColo │ │ │ │ + 0x00d508d0 723b200a 2020756e 69666f72 6d207665 r; . uniform ve │ │ │ │ + 0x00d508e0 63342075 5f646172 6b417272 6f77436f c4 u_darkArrowCo │ │ │ │ + 0x00d508f0 6c6f723b 200a2020 756e6966 6f726d20 lor; . uniform │ │ │ │ + 0x00d50900 666c6f61 7420755f 6f75746c 696e653b float u_outline; │ │ │ │ + 0x00d50910 200a2020 756e6966 6f726d20 666c6f61 . uniform floa │ │ │ │ + 0x00d50920 7420755f 6f706163 6974793b 200a2020 t u_opacity; . │ │ │ │ + 0x00d50930 756e6966 6f726d20 73616d70 6c657232 uniform sampler2 │ │ │ │ + 0x00d50940 4420755f 636f6c6f 72546578 3b200a20 D u_colorTex; . │ │ │ │ + 0x00d50950 20636f6e 73742066 6c6f6174 206b416e const float kAn │ │ │ │ + 0x00d50960 7469616c 69617369 6e675468 72657368 tialiasingThresh │ │ │ │ + 0x00d50970 6f6c6420 3d20302e 39323b20 0a202063 old = 0.92; . c │ │ │ │ + 0x00d50980 6f6e7374 20666c6f 6174206b 53686170 onst float kShap │ │ │ │ + 0x00d50990 65436f6f 72645363 616c6172 203d2031 eCoordScalar = 1 │ │ │ │ + 0x00d509a0 3030302e 303b200a 2020766f 6964206d 000.0; . void m │ │ │ │ + 0x00d509b0 61696e28 29200a20 207b200a 20202020 ain() . { . │ │ │ │ + 0x00d509c0 76656334 20636f6c 6f72203d 20746578 vec4 color = tex │ │ │ │ + 0x00d509d0 74757265 28755f63 6f6c6f72 5465782c ture(u_colorTex, │ │ │ │ + 0x00d509e0 20765f63 6f6c6f72 54657843 6f6f7264 v_colorTexCoord │ │ │ │ + 0x00d509f0 293b200a 20202020 666c6f61 7420736d ); . float sm │ │ │ │ + 0x00d50a00 616c6c52 61646975 73203d20 765f7261 allRadius = v_ra │ │ │ │ + 0x00d50a10 64697573 2e7a202a 206b416e 7469616c dius.z * kAntial │ │ │ │ + 0x00d50a20 69617369 6e675468 72657368 6f6c643b iasingThreshold; │ │ │ │ + 0x00d50a30 200a2020 2020666c 6f617420 73746570 . float step │ │ │ │ + 0x00d50a40 56616c75 65203d20 736d6f6f 74687374 Value = smoothst │ │ │ │ + 0x00d50a50 65702873 6d616c6c 52616469 7573202a ep(smallRadius * │ │ │ │ + 0x00d50a60 20736d61 6c6c5261 64697573 2c20765f smallRadius, v_ │ │ │ │ + 0x00d50a70 72616469 75732e7a 202a2076 5f726164 radius.z * v_rad │ │ │ │ + 0x00d50a80 6975732e 7a2c200a 20202020 20202020 ius.z, . │ │ │ │ + 0x00d50a90 20202020 20202020 20202020 20202020 │ │ │ │ + 0x00d50aa0 20202020 20202020 20765f72 61646975 v_radiu │ │ │ │ + 0x00d50ab0 732e7820 2a20765f 72616469 75732e78 s.x * v_radius.x │ │ │ │ + 0x00d50ac0 202b2076 5f726164 6975732e 79202a20 + v_radius.y * │ │ │ │ + 0x00d50ad0 765f7261 64697573 2e79293b 200a2020 v_radius.y); . │ │ │ │ + 0x00d50ae0 2020636f 6c6f722e 61203d20 755f6f70 color.a = u_op │ │ │ │ + 0x00d50af0 61636974 79202a20 28312e30 202d2073 acity * (1.0 - s │ │ │ │ + 0x00d50b00 74657056 616c7565 293b200a 20202020 tepValue); . │ │ │ │ + 0x00d50b10 69662028 636f6c6f 722e6120 3c20302e if (color.a < 0. │ │ │ │ + 0x00d50b20 30312920 0a202020 20202064 69736361 01) . disca │ │ │ │ + 0x00d50b30 72643b20 0a202020 20765f46 72616743 rd; . v_FragC │ │ │ │ + 0x00d50b40 6f6c6f72 203d2063 6f6c6f72 3b200a20 olor = color; . │ │ │ │ + 0x00d50b50 207d200a 00000000 00000000 00000000 } ............. │ │ │ │ + 0x00d50b60 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d50b70 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d50b80 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d50b90 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d50ba0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d50bb0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d50bc0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d50bd0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d50be0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d50bf0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d50c00 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d50c10 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d50c20 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d50c30 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d50c40 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d50c50 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d50c60 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d50c70 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d50c80 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d50c90 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d50ca0 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d50cb0 63332076 5f6c656e 6774683b 200a2020 c3 v_length; . │ │ │ │ + 0x00d50cc0 696e2076 65633420 765f636f 6c6f723b in vec4 v_color; │ │ │ │ + 0x00d50cd0 200a2020 6f757420 76656334 20765f46 . out vec4 v_F │ │ │ │ + 0x00d50ce0 72616743 6f6c6f72 3b200a20 20756e69 ragColor; . uni │ │ │ │ + 0x00d50cf0 666f726d 206d6174 3420755f 6d6f6465 form mat4 u_mode │ │ │ │ + 0x00d50d00 6c566965 773b200a 2020756e 69666f72 lView; . unifor │ │ │ │ + 0x00d50d10 6d206d61 74342075 5f70726f 6a656374 m mat4 u_project │ │ │ │ + 0x00d50d20 696f6e3b 200a2020 756e6966 6f726d20 ion; . uniform │ │ │ │ + 0x00d50d30 6d617434 20755f70 69766f74 5472616e mat4 u_pivotTran │ │ │ │ + 0x00d50d40 73666f72 6d3b200a 2020756e 69666f72 sform; . unifor │ │ │ │ + 0x00d50d50 6d207665 63342075 5f726f75 74655061 m vec4 u_routePa │ │ │ │ + 0x00d50d60 72616d73 3b200a20 20756e69 666f726d rams; . uniform │ │ │ │ + 0x00d50d70 20766563 3420755f 636f6c6f 723b200a vec4 u_color; . │ │ │ │ + 0x00d50d80 2020756e 69666f72 6d207665 63342075 uniform vec4 u │ │ │ │ + 0x00d50d90 5f6d6173 6b436f6c 6f723b20 0a202075 _maskColor; . u │ │ │ │ + 0x00d50da0 6e69666f 726d2076 65633420 755f6f75 niform vec4 u_ou │ │ │ │ + 0x00d50db0 746c696e 65436f6c 6f723b20 0a202075 tlineColor; . u │ │ │ │ + 0x00d50dc0 6e69666f 726d2076 65633420 755f6661 niform vec4 u_fa │ │ │ │ + 0x00d50dd0 6b65436f 6c6f723b 200a2020 756e6966 keColor; . unif │ │ │ │ + 0x00d50de0 6f726d20 76656334 20755f66 616b654f orm vec4 u_fakeO │ │ │ │ + 0x00d50df0 75746c69 6e65436f 6c6f723b 200a2020 utlineColor; . │ │ │ │ + 0x00d50e00 756e6966 6f726d20 76656332 20755f66 uniform vec2 u_f │ │ │ │ + 0x00d50e10 616b6542 6f726465 72733b20 0a202075 akeBorders; . u │ │ │ │ + 0x00d50e20 6e69666f 726d2076 65633220 755f7061 niform vec2 u_pa │ │ │ │ + 0x00d50e30 74746572 6e3b200a 2020756e 69666f72 ttern; . unifor │ │ │ │ + 0x00d50e40 6d207665 63322075 5f616e67 6c65436f m vec2 u_angleCo │ │ │ │ + 0x00d50e50 7353696e 3b200a20 20756e69 666f726d sSin; . uniform │ │ │ │ + 0x00d50e60 20666c6f 61742075 5f617272 6f774861 float u_arrowHa │ │ │ │ + 0x00d50e70 6c665769 6474683b 200a2020 756e6966 lfWidth; . unif │ │ │ │ + 0x00d50e80 6f726d20 666c6f61 7420755f 6f706163 orm float u_opac │ │ │ │ + 0x00d50e90 6974793b 200a2020 636f6e73 7420666c ity; . const fl │ │ │ │ + 0x00d50ea0 6f617420 6b416e74 69616c69 6173696e oat kAntialiasin │ │ │ │ + 0x00d50eb0 67546872 6573686f 6c64203d 20302e39 gThreshold = 0.9 │ │ │ │ + 0x00d50ec0 323b200a 2020666c 6f617420 616c7068 2; . float alph │ │ │ │ + 0x00d50ed0 6146726f 6d506174 7465726e 28666c6f aFromPattern(flo │ │ │ │ + 0x00d50ee0 61742063 75724c65 6e2c2066 6c6f6174 at curLen, float │ │ │ │ + 0x00d50ef0 20646173 684c656e 2c20666c 6f617420 dashLen, float │ │ │ │ + 0x00d50f00 6761704c 656e2920 0a20207b 200a2020 gapLen) . { . │ │ │ │ + 0x00d50f10 2020666c 6f617420 6c656e20 3d206461 float len = da │ │ │ │ + 0x00d50f20 73684c65 6e202b20 6761704c 656e3b20 shLen + gapLen; │ │ │ │ + 0x00d50f30 0a202020 20666c6f 6174206f 66667365 . float offse │ │ │ │ + 0x00d50f40 74203d20 66726163 74286375 724c656e t = fract(curLen │ │ │ │ + 0x00d50f50 202f206c 656e2920 2a206c65 6e3b200a / len) * len; . │ │ │ │ + 0x00d50f60 20202020 72657475 726e2073 74657028 return step( │ │ │ │ + 0x00d50f70 6f666673 65742c20 64617368 4c656e29 offset, dashLen) │ │ │ │ + 0x00d50f80 3b200a20 207d200a 2020636f 6e737420 ; . } . const │ │ │ │ + 0x00d50f90 666c6f61 74206b53 68617065 436f6f72 float kShapeCoor │ │ │ │ + 0x00d50fa0 64536361 6c617220 3d203130 30302e30 dScalar = 1000.0 │ │ │ │ + 0x00d50fb0 3b200a20 20766f69 64206d61 696e2829 ; . void main() │ │ │ │ + 0x00d50fc0 200a2020 7b200a20 20202069 66202876 . { . if (v │ │ │ │ + 0x00d50fd0 5f6c656e 6774682e 78203c20 765f6c65 _length.x < v_le │ │ │ │ + 0x00d50fe0 6e677468 2e7a2920 0a202020 20202064 ngth.z) . d │ │ │ │ + 0x00d50ff0 69736361 72643b20 0a202020 20766563 iscard; . vec │ │ │ │ + 0x00d51000 3220636f 65667320 3d207374 65702876 2 coefs = step(v │ │ │ │ + 0x00d51010 5f6c656e 6774682e 78782c20 755f6661 _length.xx, u_fa │ │ │ │ + 0x00d51020 6b65426f 72646572 73293b20 0a202020 keBorders); . │ │ │ │ + 0x00d51030 20636f65 66732e79 203d2031 2e30202d coefs.y = 1.0 - │ │ │ │ + 0x00d51040 20636f65 66732e79 3b200a20 20202076 coefs.y; . v │ │ │ │ + 0x00d51050 65633420 6d61696e 436f6c6f 72203d20 ec4 mainColor = │ │ │ │ + 0x00d51060 6d697828 755f636f 6c6f722c 20755f66 mix(u_color, u_f │ │ │ │ + 0x00d51070 616b6543 6f6c6f72 2c20636f 6566732e akeColor, coefs. │ │ │ │ + 0x00d51080 78293b20 0a202020 206d6169 6e436f6c x); . mainCol │ │ │ │ + 0x00d51090 6f72203d 206d6978 286d6169 6e436f6c or = mix(mainCol │ │ │ │ + 0x00d510a0 6f722c20 755f6661 6b65436f 6c6f722c or, u_fakeColor, │ │ │ │ + 0x00d510b0 20636f65 66732e79 293b200a 20202020 coefs.y); . │ │ │ │ + 0x00d510c0 76656334 20636f6c 6f72203d 206d6169 vec4 color = mai │ │ │ │ + 0x00d510d0 6e436f6c 6f72202b 20765f63 6f6c6f72 nColor + v_color │ │ │ │ + 0x00d510e0 3b200a20 20202063 6f6c6f72 2e61202a ; . color.a * │ │ │ │ + 0x00d510f0 3d202831 2e30202d 20736d6f 6f746873 = (1.0 - smooths │ │ │ │ + 0x00d51100 74657028 6b416e74 69616c69 6173696e tep(kAntialiasin │ │ │ │ + 0x00d51110 67546872 6573686f 6c642c20 312e302c gThreshold, 1.0, │ │ │ │ + 0x00d51120 20616273 28765f6c 656e6774 682e7929 abs(v_length.y) │ │ │ │ + 0x00d51130 2929202a 200a2020 20202020 20202020 )) * . │ │ │ │ + 0x00d51140 20202020 2020616c 70686146 726f6d50 alphaFromP │ │ │ │ + 0x00d51150 61747465 726e2876 5f6c656e 6774682e attern(v_length. │ │ │ │ + 0x00d51160 782c2075 5f706174 7465726e 2e782c20 x, u_pattern.x, │ │ │ │ + 0x00d51170 755f7061 74746572 6e2e7929 3b200a20 u_pattern.y); . │ │ │ │ + 0x00d51180 20202063 6f6c6f72 203d2076 65633428 color = vec4( │ │ │ │ + 0x00d51190 6d697828 636f6c6f 722e7267 622c2075 mix(color.rgb, u │ │ │ │ + 0x00d511a0 5f6d6173 6b436f6c 6f722e72 67622c20 _maskColor.rgb, │ │ │ │ + 0x00d511b0 755f6d61 736b436f 6c6f722e 61292c20 u_maskColor.a), │ │ │ │ + 0x00d511c0 636f6c6f 722e6129 3b200a20 20202076 color.a); . v │ │ │ │ + 0x00d511d0 5f467261 67436f6c 6f72203d 20636f6c _FragColor = col │ │ │ │ + 0x00d511e0 6f723b20 0a20207d 200a0000 00000000 or; . } ....... │ │ │ │ + 0x00d511f0 00000000 00000000 00000000 00000000 ................ │ │ │ │ + 0x00d51200 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d51210 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d51220 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d51230 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d51240 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d51250 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d51260 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d51270 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d51280 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d51290 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d512a0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d512b0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d512c0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d512d0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d512e0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d512f0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d51300 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d51310 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d51320 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d51330 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d51340 2023656e 64696620 0a202023 69666465 #endif . #ifde │ │ │ │ + 0x00d51350 6620454e 41424c45 5f565446 200a2020 f ENABLE_VTF . │ │ │ │ + 0x00d51360 696e204c 4f575f50 20766563 3420765f in LOW_P vec4 v_ │ │ │ │ + 0x00d51370 636f6c6f 723b200a 20202365 6c736520 color; . #else │ │ │ │ + 0x00d51380 0a202069 6e207665 63322076 5f636f6c . in vec2 v_col │ │ │ │ + 0x00d51390 6f725465 78436f6f 72643b20 0a202075 orTexCoord; . u │ │ │ │ + 0x00d513a0 6e69666f 726d2073 616d706c 65723244 niform sampler2D │ │ │ │ + 0x00d513b0 20755f63 6f6c6f72 5465783b 200a2020 u_colorTex; . │ │ │ │ + 0x00d513c0 23656e64 6966200a 2020696e 20766563 #endif . in vec │ │ │ │ + 0x00d513d0 3220765f 6d61736b 54657843 6f6f7264 2 v_maskTexCoord │ │ │ │ + 0x00d513e0 3b200a20 206f7574 20766563 3420765f ; . out vec4 v_ │ │ │ │ + 0x00d513f0 46726167 436f6c6f 723b200a 2020756e FragColor; . un │ │ │ │ + 0x00d51400 69666f72 6d206d61 74342075 5f6d6f64 iform mat4 u_mod │ │ │ │ + 0x00d51410 656c5669 65773b20 0a202075 6e69666f elView; . unifo │ │ │ │ + 0x00d51420 726d206d 61743420 755f7072 6f6a6563 rm mat4 u_projec │ │ │ │ + 0x00d51430 74696f6e 3b200a20 20756e69 666f726d tion; . uniform │ │ │ │ + 0x00d51440 206d6174 3420755f 7069766f 74547261 mat4 u_pivotTra │ │ │ │ + 0x00d51450 6e73666f 726d3b20 0a202075 6e69666f nsform; . unifo │ │ │ │ + 0x00d51460 726d2076 65633220 755f636f 6e747261 rm vec2 u_contra │ │ │ │ + 0x00d51470 73744761 6d6d613b 200a2020 756e6966 stGamma; . unif │ │ │ │ + 0x00d51480 6f726d20 666c6f61 7420755f 6f706163 orm float u_opac │ │ │ │ + 0x00d51490 6974793b 200a2020 756e6966 6f726d20 ity; . uniform │ │ │ │ + 0x00d514a0 666c6f61 7420755f 7a536361 6c653b20 float u_zScale; │ │ │ │ + 0x00d514b0 0a202075 6e69666f 726d2066 6c6f6174 . uniform float │ │ │ │ + 0x00d514c0 20755f69 6e746572 706f6c61 74696f6e u_interpolation │ │ │ │ + 0x00d514d0 3b200a20 20756e69 666f726d 20666c6f ; . uniform flo │ │ │ │ + 0x00d514e0 61742075 5f69734f 75746c69 6e655061 at u_isOutlinePa │ │ │ │ + 0x00d514f0 73733b20 0a202075 6e69666f 726d2073 ss; . uniform s │ │ │ │ + 0x00d51500 616d706c 65723244 20755f6d 61736b54 ampler2D u_maskT │ │ │ │ + 0x00d51510 65783b20 0a202063 6f6e7374 20666c6f ex; . const flo │ │ │ │ + 0x00d51520 6174206b 53686170 65436f6f 72645363 at kShapeCoordSc │ │ │ │ + 0x00d51530 616c6172 203d2031 3030302e 303b200a alar = 1000.0; . │ │ │ │ + 0x00d51540 2020766f 6964206d 61696e28 29200a20 void main() . │ │ │ │ + 0x00d51550 207b200a 20202369 66646566 20454e41 { . #ifdef ENA │ │ │ │ + 0x00d51560 424c455f 56544620 0a202020 204c4f57 BLE_VTF . LOW │ │ │ │ + 0x00d51570 5f502076 65633420 676c7970 68436f6c _P vec4 glyphCol │ │ │ │ + 0x00d51580 6f72203d 20765f63 6f6c6f72 3b200a20 or = v_color; . │ │ │ │ + 0x00d51590 2023656c 7365200a 20202020 4c4f575f #else . LOW_ │ │ │ │ + 0x00d515a0 50207665 63342067 6c797068 436f6c6f P vec4 glyphColo │ │ │ │ + 0x00d515b0 72203d20 74657874 75726528 755f636f r = texture(u_co │ │ │ │ + 0x00d515c0 6c6f7254 65782c20 765f636f 6c6f7254 lorTex, v_colorT │ │ │ │ + 0x00d515d0 6578436f 6f726429 3b200a20 2023656e exCoord); . #en │ │ │ │ + 0x00d515e0 64696620 0a202020 20666c6f 61742064 dif . float d │ │ │ │ + 0x00d515f0 69737420 3d207465 78747572 6528755f ist = texture(u_ │ │ │ │ + 0x00d51600 6d61736b 5465782c 20765f6d 61736b54 maskTex, v_maskT │ │ │ │ + 0x00d51610 6578436f 6f726429 2e723b20 0a202020 exCoord).r; . │ │ │ │ + 0x00d51620 20666c6f 61742061 6c706861 203d2073 float alpha = s │ │ │ │ + 0x00d51630 6d6f6f74 68737465 7028755f 636f6e74 moothstep(u_cont │ │ │ │ + 0x00d51640 72617374 47616d6d 612e7820 2d20755f rastGamma.x - u_ │ │ │ │ + 0x00d51650 636f6e74 72617374 47616d6d 612e792c contrastGamma.y, │ │ │ │ + 0x00d51660 20755f63 6f6e7472 61737447 616d6d61 u_contrastGamma │ │ │ │ + 0x00d51670 2e78202b 20755f63 6f6e7472 61737447 .x + u_contrastG │ │ │ │ + 0x00d51680 616d6d61 2e792c20 64697374 29202a20 amma.y, dist) * │ │ │ │ + 0x00d51690 755f6f70 61636974 793b200a 20202020 u_opacity; . │ │ │ │ + 0x00d516a0 676c7970 68436f6c 6f722e61 202a3d20 glyphColor.a *= │ │ │ │ + 0x00d516b0 616c7068 613b200a 20202020 765f4672 alpha; . v_Fr │ │ │ │ + 0x00d516c0 6167436f 6c6f7220 3d20676c 79706843 agColor = glyphC │ │ │ │ + 0x00d516d0 6f6c6f72 3b200a20 207d200a 00000000 olor; . } ..... │ │ │ │ + 0x00d516e0 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d516f0 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d51700 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d51710 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d51720 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d51730 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d51740 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d51750 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d51760 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d51770 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d51780 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d51790 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d517a0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d517b0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d517c0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d517d0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d517e0 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d517f0 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d51800 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d51810 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d51820 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d51830 63322076 5f636f6c 6f725465 78436f6f c2 v_colorTexCoo │ │ │ │ + 0x00d51840 7264733b 200a2020 696e2076 65633420 rds; . in vec4 │ │ │ │ + 0x00d51850 765f6f66 66736574 303b200a 2020696e v_offset0; . in │ │ │ │ + 0x00d51860 20766563 3420765f 6f666673 6574313b vec4 v_offset1; │ │ │ │ + 0x00d51870 200a2020 696e2076 65633420 765f6f66 . in vec4 v_of │ │ │ │ + 0x00d51880 66736574 323b200a 20206f75 74207665 fset2; . out ve │ │ │ │ + 0x00d51890 63342076 5f467261 67436f6c 6f723b20 c4 v_FragColor; │ │ │ │ + 0x00d518a0 0a202075 6e69666f 726d2073 616d706c . uniform sampl │ │ │ │ + 0x00d518b0 65723244 20755f63 6f6c6f72 5465783b er2D u_colorTex; │ │ │ │ + 0x00d518c0 200a2020 23646566 696e6520 534d4141 . #define SMAA │ │ │ │ + 0x00d518d0 5f544852 4553484f 4c442030 2e303520 _THRESHOLD 0.05 │ │ │ │ + 0x00d518e0 0a202063 6f6e7374 20766563 32206b54 . const vec2 kT │ │ │ │ + 0x00d518f0 68726573 686f6c64 203d2076 65633228 hreshold = vec2( │ │ │ │ + 0x00d51900 534d4141 5f544852 4553484f 4c442c20 SMAA_THRESHOLD, │ │ │ │ + 0x00d51910 534d4141 5f544852 4553484f 4c44293b SMAA_THRESHOLD); │ │ │ │ + 0x00d51920 200a2020 23646566 696e6520 534d4141 . #define SMAA │ │ │ │ + 0x00d51930 5f4c4f43 414c5f43 4f4e5452 4153545f _LOCAL_CONTRAST_ │ │ │ │ + 0x00d51940 41444150 54415449 4f4e5f46 4143544f ADAPTATION_FACTO │ │ │ │ + 0x00d51950 5220322e 30200a20 20636f6e 73742076 R 2.0 . const v │ │ │ │ + 0x00d51960 65633320 6b576569 67687473 203d2076 ec3 kWeights = v │ │ │ │ + 0x00d51970 65633328 302e3231 32362c20 302e3731 ec3(0.2126, 0.71 │ │ │ │ + 0x00d51980 35322c20 302e3037 3232293b 200a2020 52, 0.0722); . │ │ │ │ + 0x00d51990 636f6e73 7420666c 6f617420 6b536861 const float kSha │ │ │ │ + 0x00d519a0 7065436f 6f726453 63616c61 72203d20 peCoordScalar = │ │ │ │ + 0x00d519b0 31303030 2e303b20 0a202076 6f696420 1000.0; . void │ │ │ │ + 0x00d519c0 6d61696e 2829200a 20207b20 0a202020 main() . { . │ │ │ │ + 0x00d519d0 20666c6f 6174204c 203d2064 6f742874 float L = dot(t │ │ │ │ + 0x00d519e0 65787475 72652875 5f636f6c 6f725465 exture(u_colorTe │ │ │ │ + 0x00d519f0 782c2076 5f636f6c 6f725465 78436f6f x, v_colorTexCoo │ │ │ │ + 0x00d51a00 72647329 2e726762 2c206b57 65696768 rds).rgb, kWeigh │ │ │ │ + 0x00d51a10 7473293b 200a2020 2020666c 6f617420 ts); . float │ │ │ │ + 0x00d51a20 4c6c6566 74203d20 646f7428 74657874 Lleft = dot(text │ │ │ │ + 0x00d51a30 75726528 755f636f 6c6f7254 65782c20 ure(u_colorTex, │ │ │ │ + 0x00d51a40 765f6f66 66736574 302e7879 292e7267 v_offset0.xy).rg │ │ │ │ + 0x00d51a50 622c206b 57656967 68747329 3b200a20 b, kWeights); . │ │ │ │ + 0x00d51a60 20202066 6c6f6174 204c746f 70203d20 float Ltop = │ │ │ │ + 0x00d51a70 646f7428 74657874 75726528 755f636f dot(texture(u_co │ │ │ │ + 0x00d51a80 6c6f7254 65782c20 765f6f66 66736574 lorTex, v_offset │ │ │ │ + 0x00d51a90 302e7a77 292e7267 622c206b 57656967 0.zw).rgb, kWeig │ │ │ │ + 0x00d51aa0 68747329 3b200a20 20202076 65633420 hts); . vec4 │ │ │ │ + 0x00d51ab0 64656c74 613b200a 20202020 64656c74 delta; . delt │ │ │ │ + 0x00d51ac0 612e7879 203d2061 6273284c 202d2076 a.xy = abs(L - v │ │ │ │ + 0x00d51ad0 65633228 4c6c6566 742c204c 746f7029 ec2(Lleft, Ltop) │ │ │ │ + 0x00d51ae0 293b200a 20202020 76656332 20656467 ); . vec2 edg │ │ │ │ + 0x00d51af0 6573203d 20737465 70286b54 68726573 es = step(kThres │ │ │ │ + 0x00d51b00 686f6c64 2c206465 6c74612e 7879293b hold, delta.xy); │ │ │ │ + 0x00d51b10 200a2020 20206966 2028646f 74286564 . if (dot(ed │ │ │ │ + 0x00d51b20 6765732c 20766563 3228312e 302c2031 ges, vec2(1.0, 1 │ │ │ │ + 0x00d51b30 2e302929 203d3d20 302e3029 200a2020 .0)) == 0.0) . │ │ │ │ + 0x00d51b40 20202020 20206469 73636172 643b200a discard; . │ │ │ │ + 0x00d51b50 20202020 666c6f61 74204c72 69676874 float Lright │ │ │ │ + 0x00d51b60 203d2064 6f742874 65787475 72652875 = dot(texture(u │ │ │ │ + 0x00d51b70 5f636f6c 6f725465 782c2076 5f6f6666 _colorTex, v_off │ │ │ │ + 0x00d51b80 73657431 2e787929 2e726762 2c206b57 set1.xy).rgb, kW │ │ │ │ + 0x00d51b90 65696768 7473293b 200a2020 2020666c eights); . fl │ │ │ │ + 0x00d51ba0 6f617420 4c626f74 746f6d20 203d2064 oat Lbottom = d │ │ │ │ + 0x00d51bb0 6f742874 65787475 72652875 5f636f6c ot(texture(u_col │ │ │ │ + 0x00d51bc0 6f725465 782c2076 5f6f6666 73657431 orTex, v_offset1 │ │ │ │ + 0x00d51bd0 2e7a7729 2e726762 2c206b57 65696768 .zw).rgb, kWeigh │ │ │ │ + 0x00d51be0 7473293b 200a2020 20206465 6c74612e ts); . delta. │ │ │ │ + 0x00d51bf0 7a77203d 20616273 284c202d 20766563 zw = abs(L - vec │ │ │ │ + 0x00d51c00 32284c72 69676874 2c204c62 6f74746f 2(Lright, Lbotto │ │ │ │ + 0x00d51c10 6d29293b 200a2020 20207665 6332206d m)); . vec2 m │ │ │ │ + 0x00d51c20 61784465 6c746120 3d206d61 78286465 axDelta = max(de │ │ │ │ + 0x00d51c30 6c74612e 78792c20 64656c74 612e7a77 lta.xy, delta.zw │ │ │ │ + 0x00d51c40 293b200a 20202020 666c6f61 74204c6c ); . float Ll │ │ │ │ + 0x00d51c50 6566746c 65667420 3d20646f 74287465 eftleft = dot(te │ │ │ │ + 0x00d51c60 78747572 6528755f 636f6c6f 72546578 xture(u_colorTex │ │ │ │ + 0x00d51c70 2c20765f 6f666673 6574322e 7879292e , v_offset2.xy). │ │ │ │ + 0x00d51c80 7267622c 206b5765 69676874 73293b20 rgb, kWeights); │ │ │ │ + 0x00d51c90 0a202020 20666c6f 6174204c 746f7074 . float Ltopt │ │ │ │ + 0x00d51ca0 6f70203d 20646f74 28746578 74757265 op = dot(texture │ │ │ │ + 0x00d51cb0 28755f63 6f6c6f72 5465782c 20765f6f (u_colorTex, v_o │ │ │ │ + 0x00d51cc0 66667365 74322e7a 77292e72 67622c20 ffset2.zw).rgb, │ │ │ │ + 0x00d51cd0 6b576569 67687473 293b200a 20202020 kWeights); . │ │ │ │ + 0x00d51ce0 64656c74 612e7a77 203d2061 62732876 delta.zw = abs(v │ │ │ │ + 0x00d51cf0 65633228 4c6c6566 742c204c 746f7029 ec2(Lleft, Ltop) │ │ │ │ + 0x00d51d00 202d2076 65633228 4c6c6566 746c6566 - vec2(Lleftlef │ │ │ │ + 0x00d51d10 742c204c 746f7074 6f702929 3b200a20 t, Ltoptop)); . │ │ │ │ + 0x00d51d20 2020206d 61784465 6c746120 3d206d61 maxDelta = ma │ │ │ │ + 0x00d51d30 78286d61 7844656c 74612e78 792c2064 x(maxDelta.xy, d │ │ │ │ + 0x00d51d40 656c7461 2e7a7729 3b200a20 20202066 elta.zw); . f │ │ │ │ + 0x00d51d50 6c6f6174 2066696e 616c4465 6c746120 loat finalDelta │ │ │ │ + 0x00d51d60 3d206d61 78286d61 7844656c 74612e78 = max(maxDelta.x │ │ │ │ + 0x00d51d70 2c206d61 7844656c 74612e79 293b200a , maxDelta.y); . │ │ │ │ + 0x00d51d80 20202020 65646765 73202a3d 20737465 edges *= ste │ │ │ │ + 0x00d51d90 70286669 6e616c44 656c7461 2c20534d p(finalDelta, SM │ │ │ │ + 0x00d51da0 41415f4c 4f43414c 5f434f4e 54524153 AA_LOCAL_CONTRAS │ │ │ │ + 0x00d51db0 545f4144 41505441 54494f4e 5f464143 T_ADAPTATION_FAC │ │ │ │ + 0x00d51dc0 544f5220 2a206465 6c74612e 7879293b TOR * delta.xy); │ │ │ │ + 0x00d51dd0 200a2020 2020765f 46726167 436f6c6f . v_FragColo │ │ │ │ + 0x00d51de0 72203d20 76656334 28656467 65732c20 r = vec4(edges, │ │ │ │ + 0x00d51df0 302e302c 20312e30 293b200a 20207d20 0.0, 1.0); . } │ │ │ │ + 0x00d51e00 0a000000 00000000 00000000 00000000 ................ │ │ │ │ + 0x00d51e10 00000000 00000000 00000000 00000000 ................ │ │ │ │ + 0x00d51e20 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d51e30 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d51e40 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d51e50 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d51e60 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d51e70 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d51e80 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d51e90 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d51ea0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d51eb0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d51ec0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d51ed0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d51ee0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d51ef0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d51f00 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d51f10 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d51f20 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d51f30 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d51f40 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d51f50 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d51f60 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d51f70 63342076 5f6f6666 73657473 3b200a20 c4 v_offsets; . │ │ │ │ + 0x00d51f80 20696e20 76656334 20765f63 6f6c6f72 in vec4 v_color │ │ │ │ + 0x00d51f90 3b200a20 206f7574 20766563 3420765f ; . out vec4 v_ │ │ │ │ + 0x00d51fa0 46726167 436f6c6f 723b200a 2020636f FragColor; . co │ │ │ │ + 0x00d51fb0 6e737420 666c6f61 74206b53 68617065 nst float kShape │ │ │ │ + 0x00d51fc0 436f6f72 64536361 6c617220 3d203130 CoordScalar = 10 │ │ │ │ + 0x00d51fd0 30302e30 3b200a20 20766f69 64206d61 00.0; . void ma │ │ │ │ + 0x00d51fe0 696e2829 200a2020 7b200a20 20202076 in() . { . v │ │ │ │ + 0x00d51ff0 65633420 66696e61 6c436f6c 6f72203d ec4 finalColor = │ │ │ │ + 0x00d52000 20765f63 6f6c6f72 3b200a20 20202076 v_color; . v │ │ │ │ + 0x00d52010 65633220 72616469 75733b20 0a202020 ec2 radius; . │ │ │ │ + 0x00d52020 20726164 6975732e 78203d20 6d617828 radius.x = max( │ │ │ │ + 0x00d52030 302e302c 20616273 28765f6f 66667365 0.0, abs(v_offse │ │ │ │ + 0x00d52040 74732e78 29202d20 765f6f66 66736574 ts.x) - v_offset │ │ │ │ + 0x00d52050 732e7a29 3b200a20 20202072 61646975 s.z); . radiu │ │ │ │ + 0x00d52060 732e7920 3d206d61 7828302e 302c2061 s.y = max(0.0, a │ │ │ │ + 0x00d52070 62732876 5f6f6666 73657473 2e792920 bs(v_offsets.y) │ │ │ │ + 0x00d52080 2d20765f 6f666673 6574732e 77293b20 - v_offsets.w); │ │ │ │ + 0x00d52090 0a202020 20666c6f 6174206d 61785261 . float maxRa │ │ │ │ + 0x00d520a0 64697573 203d2031 2e303b20 0a202020 dius = 1.0; . │ │ │ │ + 0x00d520b0 20666c6f 61742061 61526164 69757320 float aaRadius │ │ │ │ + 0x00d520c0 3d20302e 393b200a 20202020 666c6f61 = 0.9; . floa │ │ │ │ + 0x00d520d0 74207374 65705661 6c756520 3d20736d t stepValue = sm │ │ │ │ + 0x00d520e0 6f6f7468 73746570 28616152 61646975 oothstep(aaRadiu │ │ │ │ + 0x00d520f0 73202a20 61615261 64697573 2c206d61 s * aaRadius, ma │ │ │ │ + 0x00d52100 78526164 69757320 2a206d61 78526164 xRadius * maxRad │ │ │ │ + 0x00d52110 6975732c 20646f74 28726164 6975732e ius, dot(radius. │ │ │ │ + 0x00d52120 78792c20 72616469 75732e78 7929293b xy, radius.xy)); │ │ │ │ + 0x00d52130 200a2020 20206669 6e616c43 6f6c6f72 . finalColor │ │ │ │ + 0x00d52140 2e61203d 2066696e 616c436f 6c6f722e .a = finalColor. │ │ │ │ + 0x00d52150 61202a20 28312e30 202d2073 74657056 a * (1.0 - stepV │ │ │ │ + 0x00d52160 616c7565 293b200a 20202020 765f4672 alue); . v_Fr │ │ │ │ + 0x00d52170 6167436f 6c6f7220 3d206669 6e616c43 agColor = finalC │ │ │ │ + 0x00d52180 6f6c6f72 3b200a20 207d200a 00000000 olor; . } ..... │ │ │ │ + 0x00d52190 00000000 00000000 00000000 00000000 ................ │ │ │ │ + 0x00d521a0 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d521b0 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d521c0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d521d0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d521e0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d521f0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d52200 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d52210 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d52220 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d52230 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d52240 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d52250 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d52260 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d52270 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d52280 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d52290 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d522a0 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d522b0 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d522c0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d522d0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d522e0 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d522f0 63322076 5f636f6c 6f725465 78436f6f c2 v_colorTexCoo │ │ │ │ + 0x00d52300 7264733b 200a2020 696e2076 65633220 rds; . in vec2 │ │ │ │ + 0x00d52310 765f6d61 736b5465 78436f6f 7264733b v_maskTexCoords; │ │ │ │ + 0x00d52320 200a2020 6f757420 76656334 20765f46 . out vec4 v_F │ │ │ │ + 0x00d52330 72616743 6f6c6f72 3b200a20 20756e69 ragColor; . uni │ │ │ │ + 0x00d52340 666f726d 206d6174 3420755f 6d6f6465 form mat4 u_mode │ │ │ │ + 0x00d52350 6c566965 773b200a 2020756e 69666f72 lView; . unifor │ │ │ │ + 0x00d52360 6d206d61 74342075 5f70726f 6a656374 m mat4 u_project │ │ │ │ + 0x00d52370 696f6e3b 200a2020 756e6966 6f726d20 ion; . uniform │ │ │ │ + 0x00d52380 6d617434 20755f70 69766f74 5472616e mat4 u_pivotTran │ │ │ │ + 0x00d52390 73666f72 6d3b200a 2020756e 69666f72 sform; . unifor │ │ │ │ + 0x00d523a0 6d207665 63322075 5f636f6e 74726173 m vec2 u_contras │ │ │ │ + 0x00d523b0 7447616d 6d613b20 0a202075 6e69666f tGamma; . unifo │ │ │ │ + 0x00d523c0 726d2066 6c6f6174 20755f6f 70616369 rm float u_opaci │ │ │ │ + 0x00d523d0 74793b20 0a202075 6e69666f 726d2066 ty; . uniform f │ │ │ │ + 0x00d523e0 6c6f6174 20755f7a 5363616c 653b200a loat u_zScale; . │ │ │ │ + 0x00d523f0 2020756e 69666f72 6d20666c 6f617420 uniform float │ │ │ │ + 0x00d52400 755f696e 74657270 6f6c6174 696f6e3b u_interpolation; │ │ │ │ + 0x00d52410 200a2020 756e6966 6f726d20 666c6f61 . uniform floa │ │ │ │ + 0x00d52420 7420755f 69734f75 746c696e 65506173 t u_isOutlinePas │ │ │ │ + 0x00d52430 733b200a 2020756e 69666f72 6d207361 s; . uniform sa │ │ │ │ + 0x00d52440 6d706c65 72324420 755f636f 6c6f7254 mpler2D u_colorT │ │ │ │ + 0x00d52450 65783b20 0a202075 6e69666f 726d2073 ex; . uniform s │ │ │ │ + 0x00d52460 616d706c 65723244 20755f6d 61736b54 ampler2D u_maskT │ │ │ │ + 0x00d52470 65783b20 0a202063 6f6e7374 20666c6f ex; . const flo │ │ │ │ + 0x00d52480 6174206b 53686170 65436f6f 72645363 at kShapeCoordSc │ │ │ │ + 0x00d52490 616c6172 203d2031 3030302e 303b200a alar = 1000.0; . │ │ │ │ + 0x00d524a0 2020766f 6964206d 61696e28 29200a20 void main() . │ │ │ │ + 0x00d524b0 207b200a 20202020 76656334 2066696e { . vec4 fin │ │ │ │ + 0x00d524c0 616c436f 6c6f7220 3d207465 78747572 alColor = textur │ │ │ │ + 0x00d524d0 6528755f 636f6c6f 72546578 2c20765f e(u_colorTex, v_ │ │ │ │ + 0x00d524e0 636f6c6f 72546578 436f6f72 64732920 colorTexCoords) │ │ │ │ + 0x00d524f0 2a207465 78747572 6528755f 6d61736b * texture(u_mask │ │ │ │ + 0x00d52500 5465782c 20765f6d 61736b54 6578436f Tex, v_maskTexCo │ │ │ │ + 0x00d52510 6f726473 293b200a 20202020 66696e61 ords); . fina │ │ │ │ + 0x00d52520 6c436f6c 6f722e61 202a3d20 755f6f70 lColor.a *= u_op │ │ │ │ + 0x00d52530 61636974 793b200a 20202020 765f4672 acity; . v_Fr │ │ │ │ + 0x00d52540 6167436f 6c6f7220 3d206669 6e616c43 agColor = finalC │ │ │ │ + 0x00d52550 6f6c6f72 3b200a20 207d200a 00000000 olor; . } ..... │ │ │ │ + 0x00d52560 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d52570 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d52580 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d52590 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d525a0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d525b0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d525c0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d525d0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d525e0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d525f0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d52600 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d52610 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d52620 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d52630 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d52640 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d52650 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d52660 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d52670 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d52680 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d52690 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d526a0 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d526b0 63342076 5f6e6f72 6d616c3b 200a2020 c4 v_normal; . │ │ │ │ + 0x00d526c0 23696664 65662045 4e41424c 455f5654 #ifdef ENABLE_VT │ │ │ │ + 0x00d526d0 46200a20 20696e20 4c4f575f 50207665 F . in LOW_P ve │ │ │ │ + 0x00d526e0 63342076 5f636f6c 6f723b20 0a202023 c4 v_color; . # │ │ │ │ + 0x00d526f0 656c7365 200a2020 696e2076 65633220 else . in vec2 │ │ │ │ + 0x00d52700 765f636f 6c6f7254 6578436f 6f726473 v_colorTexCoords │ │ │ │ + 0x00d52710 3b200a20 20756e69 666f726d 2073616d ; . uniform sam │ │ │ │ + 0x00d52720 706c6572 32442075 5f636f6c 6f725465 pler2D u_colorTe │ │ │ │ + 0x00d52730 783b200a 20202365 6e646966 200a2020 x; . #endif . │ │ │ │ + 0x00d52740 6f757420 76656334 20765f46 72616743 out vec4 v_FragC │ │ │ │ + 0x00d52750 6f6c6f72 3b200a20 20756e69 666f726d olor; . uniform │ │ │ │ + 0x00d52760 206d6174 3420755f 6d6f6465 6c566965 mat4 u_modelVie │ │ │ │ + 0x00d52770 773b200a 2020756e 69666f72 6d206d61 w; . uniform ma │ │ │ │ + 0x00d52780 74342075 5f70726f 6a656374 696f6e3b t4 u_projection; │ │ │ │ + 0x00d52790 200a2020 756e6966 6f726d20 6d617434 . uniform mat4 │ │ │ │ + 0x00d527a0 20755f70 69766f74 5472616e 73666f72 u_pivotTransfor │ │ │ │ + 0x00d527b0 6d3b200a 2020756e 69666f72 6d207665 m; . uniform ve │ │ │ │ + 0x00d527c0 63322075 5f636f6e 74726173 7447616d c2 u_contrastGam │ │ │ │ + 0x00d527d0 6d613b20 0a202075 6e69666f 726d2066 ma; . uniform f │ │ │ │ + 0x00d527e0 6c6f6174 20755f6f 70616369 74793b20 loat u_opacity; │ │ │ │ + 0x00d527f0 0a202075 6e69666f 726d2066 6c6f6174 . uniform float │ │ │ │ + 0x00d52800 20755f7a 5363616c 653b200a 2020756e u_zScale; . un │ │ │ │ + 0x00d52810 69666f72 6d20666c 6f617420 755f696e iform float u_in │ │ │ │ + 0x00d52820 74657270 6f6c6174 696f6e3b 200a2020 terpolation; . │ │ │ │ + 0x00d52830 756e6966 6f726d20 666c6f61 7420755f uniform float u_ │ │ │ │ + 0x00d52840 69734f75 746c696e 65506173 733b200a isOutlinePass; . │ │ │ │ + 0x00d52850 2020636f 6e737420 666c6f61 74206161 const float aa │ │ │ │ + 0x00d52860 50697865 6c73436f 756e7420 3d20322e PixelsCount = 2. │ │ │ │ + 0x00d52870 353b200a 2020636f 6e737420 666c6f61 5; . const floa │ │ │ │ + 0x00d52880 74206b53 68617065 436f6f72 64536361 t kShapeCoordSca │ │ │ │ + 0x00d52890 6c617220 3d203130 30302e30 3b200a20 lar = 1000.0; . │ │ │ │ + 0x00d528a0 20766f69 64206d61 696e2829 200a2020 void main() . │ │ │ │ + 0x00d528b0 7b200a20 20236966 64656620 454e4142 { . #ifdef ENAB │ │ │ │ + 0x00d528c0 4c455f56 5446200a 20202020 4c4f575f LE_VTF . LOW_ │ │ │ │ + 0x00d528d0 50207665 63342063 6f6c6f72 203d2076 P vec4 color = v │ │ │ │ + 0x00d528e0 5f636f6c 6f723b20 0a202023 656c7365 _color; . #else │ │ │ │ + 0x00d528f0 200a2020 20204c4f 575f5020 76656334 . LOW_P vec4 │ │ │ │ + 0x00d52900 20636f6c 6f72203d 20746578 74757265 color = texture │ │ │ │ + 0x00d52910 28755f63 6f6c6f72 5465782c 20765f63 (u_colorTex, v_c │ │ │ │ + 0x00d52920 6f6c6f72 54657843 6f6f7264 73293b20 olorTexCoords); │ │ │ │ + 0x00d52930 0a202023 656e6469 66200a20 20202066 . #endif . f │ │ │ │ + 0x00d52940 6c6f6174 20723120 3d202876 5f6e6f72 loat r1 = (v_nor │ │ │ │ + 0x00d52950 6d616c2e 7a202d20 61615069 78656c73 mal.z - aaPixels │ │ │ │ + 0x00d52960 436f756e 7429202a 2028765f 6e6f726d Count) * (v_norm │ │ │ │ + 0x00d52970 616c2e7a 202d2061 61506978 656c7343 al.z - aaPixelsC │ │ │ │ + 0x00d52980 6f756e74 293b200a 20202020 666c6f61 ount); . floa │ │ │ │ + 0x00d52990 74207232 203d2076 5f6e6f72 6d616c2e t r2 = v_normal. │ │ │ │ + 0x00d529a0 78202a20 765f6e6f 726d616c 2e78202b x * v_normal.x + │ │ │ │ + 0x00d529b0 20765f6e 6f726d61 6c2e7920 2a20765f v_normal.y * v_ │ │ │ │ + 0x00d529c0 6e6f726d 616c2e79 3b200a20 20202066 normal.y; . f │ │ │ │ + 0x00d529d0 6c6f6174 20723320 3d20765f 6e6f726d loat r3 = v_norm │ │ │ │ + 0x00d529e0 616c2e7a 202a2076 5f6e6f72 6d616c2e al.z * v_normal. │ │ │ │ + 0x00d529f0 7a3b200a 20202020 666c6f61 7420616c z; . float al │ │ │ │ + 0x00d52a00 70686120 3d206d69 78287374 65702872 pha = mix(step(r │ │ │ │ + 0x00d52a10 332c2072 32292c20 736d6f6f 74687374 3, r2), smoothst │ │ │ │ + 0x00d52a20 65702872 312c2072 332c2072 32292c20 ep(r1, r3, r2), │ │ │ │ + 0x00d52a30 765f6e6f 726d616c 2e77293b 200a2020 v_normal.w); . │ │ │ │ + 0x00d52a40 20204c4f 575f5020 76656334 2066696e LOW_P vec4 fin │ │ │ │ + 0x00d52a50 616c436f 6c6f7220 3d20636f 6c6f723b alColor = color; │ │ │ │ + 0x00d52a60 200a2020 20206669 6e616c43 6f6c6f72 . finalColor │ │ │ │ + 0x00d52a70 2e61203d 2066696e 616c436f 6c6f722e .a = finalColor. │ │ │ │ + 0x00d52a80 61202a20 755f6f70 61636974 79202a20 a * u_opacity * │ │ │ │ + 0x00d52a90 28312e30 202d2061 6c706861 293b200a (1.0 - alpha); . │ │ │ │ + 0x00d52aa0 20202020 69662028 66696e61 6c436f6c if (finalCol │ │ │ │ + 0x00d52ab0 6f722e61 203d3d20 302e3029 200a2020 or.a == 0.0) . │ │ │ │ + 0x00d52ac0 20202020 64697363 6172643b 200a2020 discard; . │ │ │ │ + 0x00d52ad0 2020765f 46726167 436f6c6f 72203d20 v_FragColor = │ │ │ │ + 0x00d52ae0 66696e61 6c436f6c 6f723b20 0a20207d finalColor; . } │ │ │ │ + 0x00d52af0 200a0000 00000000 00000000 00000000 ............... │ │ │ │ + 0x00d52b00 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d52b10 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d52b20 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d52b30 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d52b40 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d52b50 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d52b60 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d52b70 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d52b80 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d52b90 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d52ba0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d52bb0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d52bc0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d52bd0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d52be0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d52bf0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d52c00 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d52c10 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d52c20 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d52c30 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d52c40 2023656e 64696620 0a202069 6e20666c #endif . in fl │ │ │ │ + 0x00d52c50 6f617420 765f696e 74656e73 6974793b oat v_intensity; │ │ │ │ + 0x00d52c60 200a2020 6f757420 76656334 20765f46 . out vec4 v_F │ │ │ │ + 0x00d52c70 72616743 6f6c6f72 3b200a20 20756e69 ragColor; . uni │ │ │ │ + 0x00d52c80 666f726d 206d6174 3420755f 7472616e form mat4 u_tran │ │ │ │ + 0x00d52c90 73666f72 6d3b200a 2020756e 69666f72 sform; . unifor │ │ │ │ + 0x00d52ca0 6d206d61 74342075 5f6e6f72 6d616c54 m mat4 u_normalT │ │ │ │ + 0x00d52cb0 72616e73 666f726d 3b200a20 20756e69 ransform; . uni │ │ │ │ + 0x00d52cc0 666f726d 20766563 3420755f 636f6c6f form vec4 u_colo │ │ │ │ + 0x00d52cd0 723b200a 2020756e 69666f72 6d207665 r; . uniform ve │ │ │ │ + 0x00d52ce0 63322075 5f746578 436f6f72 64466c69 c2 u_texCoordFli │ │ │ │ + 0x00d52cf0 7070696e 673b200a 2020636f 6e737420 pping; . const │ │ │ │ + 0x00d52d00 666c6f61 74206b53 68617065 436f6f72 float kShapeCoor │ │ │ │ + 0x00d52d10 64536361 6c617220 3d203130 30302e30 dScalar = 1000.0 │ │ │ │ + 0x00d52d20 3b200a20 20766f69 64206d61 696e2829 ; . void main() │ │ │ │ + 0x00d52d30 200a2020 7b200a20 20202076 5f467261 . { . v_Fra │ │ │ │ + 0x00d52d40 67436f6c 6f72203d 20766563 3428755f gColor = vec4(u_ │ │ │ │ + 0x00d52d50 636f6c6f 722e7267 622c2075 5f636f6c color.rgb, u_col │ │ │ │ + 0x00d52d60 6f722e61 202a2076 5f696e74 656e7369 or.a * v_intensi │ │ │ │ + 0x00d52d70 7479293b 200a2020 7d200a00 00000000 ty); . } ...... │ │ │ │ + 0x00d52d80 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d52d90 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d52da0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d52db0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d52dc0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d52dd0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d52de0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d52df0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d52e00 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d52e10 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d52e20 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d52e30 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d52e40 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d52e50 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d52e60 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d52e70 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d52e80 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d52e90 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d52ea0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d52eb0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d52ec0 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d52ed0 63332061 5f706f73 6974696f 6e3b200a c3 a_position; . │ │ │ │ + 0x00d52ee0 2020696e 20766563 3420615f 6e6f726d in vec4 a_norm │ │ │ │ + 0x00d52ef0 616c3b20 0a202069 6e207665 63342061 al; . in vec4 a │ │ │ │ + 0x00d52f00 5f636f6c 6f725465 78436f6f 7264733b _colorTexCoords; │ │ │ │ + 0x00d52f10 200a2020 6f757420 76656334 20765f6e . out vec4 v_n │ │ │ │ + 0x00d52f20 6f726d61 6c3b200a 20202369 66646566 ormal; . #ifdef │ │ │ │ + 0x00d52f30 20454e41 424c455f 56544620 0a20206f ENABLE_VTF . o │ │ │ │ + 0x00d52f40 7574204c 4f575f50 20766563 3420765f ut LOW_P vec4 v_ │ │ │ │ + 0x00d52f50 636f6c6f 723b200a 20202365 6c736520 color; . #else │ │ │ │ + 0x00d52f60 0a20206f 75742076 65633220 765f636f . out vec2 v_co │ │ │ │ + 0x00d52f70 6c6f7254 6578436f 6f726473 3b200a20 lorTexCoords; . │ │ │ │ + 0x00d52f80 2023656e 64696620 0a202075 6e69666f #endif . unifo │ │ │ │ + 0x00d52f90 726d206d 61743420 755f6d6f 64656c56 rm mat4 u_modelV │ │ │ │ + 0x00d52fa0 6965773b 200a2020 756e6966 6f726d20 iew; . uniform │ │ │ │ + 0x00d52fb0 6d617434 20755f70 726f6a65 6374696f mat4 u_projectio │ │ │ │ + 0x00d52fc0 6e3b200a 2020756e 69666f72 6d206d61 n; . uniform ma │ │ │ │ + 0x00d52fd0 74342075 5f706976 6f745472 616e7366 t4 u_pivotTransf │ │ │ │ + 0x00d52fe0 6f726d3b 200a2020 756e6966 6f726d20 orm; . uniform │ │ │ │ + 0x00d52ff0 76656332 20755f63 6f6e7472 61737447 vec2 u_contrastG │ │ │ │ + 0x00d53000 616d6d61 3b200a20 20756e69 666f726d amma; . uniform │ │ │ │ + 0x00d53010 20666c6f 61742075 5f6f7061 63697479 float u_opacity │ │ │ │ + 0x00d53020 3b200a20 20756e69 666f726d 20666c6f ; . uniform flo │ │ │ │ + 0x00d53030 61742075 5f7a5363 616c653b 200a2020 at u_zScale; . │ │ │ │ + 0x00d53040 756e6966 6f726d20 666c6f61 7420755f uniform float u_ │ │ │ │ + 0x00d53050 696e7465 72706f6c 6174696f 6e3b200a interpolation; . │ │ │ │ + 0x00d53060 2020756e 69666f72 6d20666c 6f617420 uniform float │ │ │ │ + 0x00d53070 755f6973 4f75746c 696e6550 6173733b u_isOutlinePass; │ │ │ │ + 0x00d53080 200a2020 23696664 65662045 4e41424c . #ifdef ENABL │ │ │ │ + 0x00d53090 455f5654 46200a20 20756e69 666f726d E_VTF . uniform │ │ │ │ + 0x00d530a0 2073616d 706c6572 32442075 5f636f6c sampler2D u_col │ │ │ │ + 0x00d530b0 6f725465 783b200a 20202365 6e646966 orTex; . #endif │ │ │ │ + 0x00d530c0 200a2020 636f6e73 7420666c 6f617420 . const float │ │ │ │ + 0x00d530d0 6b536861 7065436f 6f726453 63616c61 kShapeCoordScala │ │ │ │ + 0x00d530e0 72203d20 31303030 2e303b20 0a202076 r = 1000.0; . v │ │ │ │ + 0x00d530f0 65633420 6170706c 79506976 6f745472 ec4 applyPivotTr │ │ │ │ + 0x00d53100 616e7366 6f726d28 76656334 20706976 ansform(vec4 piv │ │ │ │ + 0x00d53110 6f742c20 6d617434 20706976 6f745472 ot, mat4 pivotTr │ │ │ │ + 0x00d53120 616e7366 6f726d2c 20666c6f 61742070 ansform, float p │ │ │ │ + 0x00d53130 69766f74 5265616c 5a29200a 20207b20 ivotRealZ) . { │ │ │ │ + 0x00d53140 0a202020 20766563 34207472 616e7366 . vec4 transf │ │ │ │ + 0x00d53150 6f726d65 64506976 6f74203d 20706976 ormedPivot = piv │ │ │ │ + 0x00d53160 6f743b20 0a202020 20666c6f 61742077 ot; . float w │ │ │ │ + 0x00d53170 203d2074 72616e73 666f726d 65645069 = transformedPi │ │ │ │ + 0x00d53180 766f742e 773b200a 20202020 7472616e vot.w; . tran │ │ │ │ + 0x00d53190 73666f72 6d656450 69766f74 2e787977 sformedPivot.xyw │ │ │ │ + 0x00d531a0 203d2028 7069766f 74547261 6e73666f = (pivotTransfo │ │ │ │ + 0x00d531b0 726d202a 20766563 34287472 616e7366 rm * vec4(transf │ │ │ │ + 0x00d531c0 6f726d65 64506976 6f742e78 792c2070 ormedPivot.xy, p │ │ │ │ + 0x00d531d0 69766f74 5265616c 5a2c2077 29292e78 ivotRealZ, w)).x │ │ │ │ + 0x00d531e0 79773b20 0a202020 20747261 6e73666f yw; . transfo │ │ │ │ + 0x00d531f0 726d6564 5069766f 742e7a20 2a3d2074 rmedPivot.z *= t │ │ │ │ + 0x00d53200 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ + 0x00d53210 77202f20 773b200a 20202369 66646566 w / w; . #ifdef │ │ │ │ + 0x00d53220 2056554c 4b414e20 0a202020 20747261 VULKAN . tra │ │ │ │ + 0x00d53230 6e73666f 726d6564 5069766f 742e7920 nsformedPivot.y │ │ │ │ + 0x00d53240 3d202d74 72616e73 666f726d 65645069 = -transformedPi │ │ │ │ + 0x00d53250 766f742e 793b200a 20202020 7472616e vot.y; . tran │ │ │ │ + 0x00d53260 73666f72 6d656450 69766f74 2e7a203d sformedPivot.z = │ │ │ │ + 0x00d53270 20287472 616e7366 6f726d65 64506976 (transformedPiv │ │ │ │ + 0x00d53280 6f742e7a 20202b20 7472616e 73666f72 ot.z + transfor │ │ │ │ + 0x00d53290 6d656450 69766f74 2e772920 2f20322e medPivot.w) / 2. │ │ │ │ + 0x00d532a0 303b200a 20202365 6e646966 200a2020 0; . #endif . │ │ │ │ + 0x00d532b0 20207265 7475726e 20747261 6e73666f return transfo │ │ │ │ + 0x00d532c0 726d6564 5069766f 743b200a 20207d20 rmedPivot; . } │ │ │ │ + 0x00d532d0 0a202076 65633420 6170706c 7942696c . vec4 applyBil │ │ │ │ + 0x00d532e0 6c626f61 72645069 766f7454 72616e73 lboardPivotTrans │ │ │ │ + 0x00d532f0 666f726d 28766563 34207069 766f742c form(vec4 pivot, │ │ │ │ + 0x00d53300 206d6174 34207069 766f7454 72616e73 mat4 pivotTrans │ │ │ │ + 0x00d53310 666f726d 2c20666c 6f617420 7069766f form, float pivo │ │ │ │ + 0x00d53320 74526561 6c5a2c20 76656332 206f6666 tRealZ, vec2 off │ │ │ │ + 0x00d53330 73657429 200a2020 7b200a20 20202066 set) . { . f │ │ │ │ + 0x00d53340 6c6f6174 206c6f67 69635a20 3d207069 loat logicZ = pi │ │ │ │ + 0x00d53350 766f742e 7a202f20 7069766f 742e773b vot.z / pivot.w; │ │ │ │ + 0x00d53360 200a2020 20207665 63342074 72616e73 . vec4 trans │ │ │ │ + 0x00d53370 666f726d 65645069 766f7420 3d207069 formedPivot = pi │ │ │ │ + 0x00d53380 766f7454 72616e73 666f726d 202a2076 votTransform * v │ │ │ │ + 0x00d53390 65633428 7069766f 742e7879 2c207069 ec4(pivot.xy, pi │ │ │ │ + 0x00d533a0 766f7452 65616c5a 2c207069 766f742e votRealZ, pivot. │ │ │ │ + 0x00d533b0 77293b20 0a202020 20766563 34207363 w); . vec4 sc │ │ │ │ + 0x00d533c0 616c6520 3d207069 766f7454 72616e73 ale = pivotTrans │ │ │ │ + 0x00d533d0 666f726d 202a2076 65633428 312e302c form * vec4(1.0, │ │ │ │ + 0x00d533e0 202d312e 302c2030 2e302c20 312e3029 -1.0, 0.0, 1.0) │ │ │ │ + 0x00d533f0 3b200a20 20202076 65633420 706f7369 ; . vec4 posi │ │ │ │ + 0x00d53400 74696f6e 203d2076 65633428 7472616e tion = vec4(tran │ │ │ │ + 0x00d53410 73666f72 6d656450 69766f74 2e787920 sformedPivot.xy │ │ │ │ + 0x00d53420 2f207472 616e7366 6f726d65 64506976 / transformedPiv │ │ │ │ + 0x00d53430 6f742e77 2c206c6f 6769635a 2c20312e ot.w, logicZ, 1. │ │ │ │ + 0x00d53440 3029202b 20766563 34286f66 66736574 0) + vec4(offset │ │ │ │ + 0x00d53450 202f2073 63616c65 2e77202a 20736361 / scale.w * sca │ │ │ │ + 0x00d53460 6c652e78 2c20302e 302c2030 2e30293b le.x, 0.0, 0.0); │ │ │ │ + 0x00d53470 200a2020 23696664 65662056 554c4b41 . #ifdef VULKA │ │ │ │ + 0x00d53480 4e200a20 20202070 6f736974 696f6e2e N . position. │ │ │ │ + 0x00d53490 79203d20 2d706f73 6974696f 6e2e793b y = -position.y; │ │ │ │ + 0x00d534a0 200a2020 2020706f 73697469 6f6e2e7a . position.z │ │ │ │ + 0x00d534b0 203d2028 706f7369 74696f6e 2e7a2020 = (position.z │ │ │ │ + 0x00d534c0 2b20706f 73697469 6f6e2e77 29202f20 + position.w) / │ │ │ │ + 0x00d534d0 322e303b 200a2020 23656e64 6966200a 2.0; . #endif . │ │ │ │ + 0x00d534e0 20202020 72657475 726e2070 6f736974 return posit │ │ │ │ + 0x00d534f0 696f6e3b 200a2020 7d200a20 20766563 ion; . } . vec │ │ │ │ + 0x00d53500 32206361 6c634c69 6e655472 616e7366 2 calcLineTransf │ │ │ │ + 0x00d53510 6f726d65 64417869 73506f73 28766563 ormedAxisPos(vec │ │ │ │ + 0x00d53520 32206f72 6967696e 616c4178 6973506f 2 originalAxisPo │ │ │ │ + 0x00d53530 732c2076 65633220 73686966 74656450 s, vec2 shiftedP │ │ │ │ + 0x00d53540 6f732c20 6d617434 206d6f64 656c5669 os, mat4 modelVi │ │ │ │ + 0x00d53550 65772c20 666c6f61 74206861 6c665769 ew, float halfWi │ │ │ │ + 0x00d53560 64746829 200a2020 7b200a20 20202076 dth) . { . v │ │ │ │ + 0x00d53570 65633220 70203d20 28766563 34287368 ec2 p = (vec4(sh │ │ │ │ + 0x00d53580 69667465 64506f73 2c20302e 302c2031 iftedPos, 0.0, 1 │ │ │ │ + 0x00d53590 2e302920 2a206d6f 64656c56 69657729 .0) * modelView) │ │ │ │ + 0x00d535a0 2e78793b 200a2020 20207665 63322064 .xy; . vec2 d │ │ │ │ + 0x00d535b0 203d2070 202d206f 72696769 6e616c41 = p - originalA │ │ │ │ + 0x00d535c0 78697350 6f733b20 0a202020 20696620 xisPos; . if │ │ │ │ + 0x00d535d0 28646f74 28642c20 64292021 3d20302e (dot(d, d) != 0. │ │ │ │ + 0x00d535e0 3029200a 20202020 20207265 7475726e 0) . return │ │ │ │ + 0x00d535f0 206f7269 67696e61 6c417869 73506f73 originalAxisPos │ │ │ │ + 0x00d53600 202b206e 6f726d61 6c697a65 28642920 + normalize(d) │ │ │ │ + 0x00d53610 2a206861 6c665769 6474683b 200a2020 * halfWidth; . │ │ │ │ + 0x00d53620 2020656c 7365200a 20202020 20207265 else . re │ │ │ │ + 0x00d53630 7475726e 206f7269 67696e61 6c417869 turn originalAxi │ │ │ │ + 0x00d53640 73506f73 3b200a20 207d200a 2020766f sPos; . } . vo │ │ │ │ + 0x00d53650 6964206d 61696e28 29200a20 207b200a id main() . { . │ │ │ │ + 0x00d53660 20202020 76656334 2070203d 20766563 vec4 p = vec │ │ │ │ + 0x00d53670 3428615f 706f7369 74696f6e 2c203129 4(a_position, 1) │ │ │ │ + 0x00d53680 202a2075 5f6d6f64 656c5669 65773b20 * u_modelView; │ │ │ │ + 0x00d53690 0a202020 20766563 3420706f 73203d20 . vec4 pos = │ │ │ │ + 0x00d536a0 76656334 28615f6e 6f726d61 6c2e7879 vec4(a_normal.xy │ │ │ │ + 0x00d536b0 202b2061 5f636f6c 6f725465 78436f6f + a_colorTexCoo │ │ │ │ + 0x00d536c0 7264732e 7a772c20 302c2030 29202b20 rds.zw, 0, 0) + │ │ │ │ + 0x00d536d0 703b200a 20202020 676c5f50 6f736974 p; . gl_Posit │ │ │ │ + 0x00d536e0 696f6e20 3d206170 706c7950 69766f74 ion = applyPivot │ │ │ │ + 0x00d536f0 5472616e 73666f72 6d28706f 73202a20 Transform(pos * │ │ │ │ + 0x00d53700 755f7072 6f6a6563 74696f6e 2c20755f u_projection, u_ │ │ │ │ + 0x00d53710 7069766f 74547261 6e73666f 726d2c20 pivotTransform, │ │ │ │ + 0x00d53720 302e3029 3b200a20 20236966 64656620 0.0); . #ifdef │ │ │ │ + 0x00d53730 454e4142 4c455f56 5446200a 20202020 ENABLE_VTF . │ │ │ │ + 0x00d53740 765f636f 6c6f7220 3d207465 78747572 v_color = textur │ │ │ │ + 0x00d53750 6528755f 636f6c6f 72546578 2c20615f e(u_colorTex, a_ │ │ │ │ + 0x00d53760 636f6c6f 72546578 436f6f72 64732e78 colorTexCoords.x │ │ │ │ + 0x00d53770 79293b20 0a202023 656c7365 200a2020 y); . #else . │ │ │ │ + 0x00d53780 2020765f 636f6c6f 72546578 436f6f72 v_colorTexCoor │ │ │ │ + 0x00d53790 6473203d 20615f63 6f6c6f72 54657843 ds = a_colorTexC │ │ │ │ + 0x00d537a0 6f6f7264 732e7879 3b200a20 2023656e oords.xy; . #en │ │ │ │ + 0x00d537b0 64696620 0a202020 20765f6e 6f726d61 dif . v_norma │ │ │ │ + 0x00d537c0 6c203d20 615f6e6f 726d616c 3b200a20 l = a_normal; . │ │ │ │ + 0x00d537d0 207d200a 00000000 00000000 00000000 } ............. │ │ │ │ + 0x00d537e0 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d537f0 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d53800 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d53810 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d53820 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d53830 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d53840 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d53850 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d53860 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d53870 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d53880 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d53890 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d538a0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d538b0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d538c0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d538d0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d538e0 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d538f0 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d53900 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d53910 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d53920 2023656e 64696620 0a202069 6e20666c #endif . in fl │ │ │ │ + 0x00d53930 6f617420 765f696e 74656e73 6974793b oat v_intensity; │ │ │ │ + 0x00d53940 200a2020 6f757420 76656334 20765f46 . out vec4 v_F │ │ │ │ + 0x00d53950 72616743 6f6c6f72 3b200a20 20756e69 ragColor; . uni │ │ │ │ + 0x00d53960 666f726d 206d6174 3420755f 7472616e form mat4 u_tran │ │ │ │ + 0x00d53970 73666f72 6d3b200a 2020756e 69666f72 sform; . unifor │ │ │ │ + 0x00d53980 6d206d61 74342075 5f6e6f72 6d616c54 m mat4 u_normalT │ │ │ │ + 0x00d53990 72616e73 666f726d 3b200a20 20756e69 ransform; . uni │ │ │ │ + 0x00d539a0 666f726d 20766563 3420755f 636f6c6f form vec4 u_colo │ │ │ │ + 0x00d539b0 723b200a 2020756e 69666f72 6d207665 r; . uniform ve │ │ │ │ + 0x00d539c0 63322075 5f746578 436f6f72 64466c69 c2 u_texCoordFli │ │ │ │ + 0x00d539d0 7070696e 673b200a 2020636f 6e737420 pping; . const │ │ │ │ + 0x00d539e0 666c6f61 74206b53 68617065 436f6f72 float kShapeCoor │ │ │ │ + 0x00d539f0 64536361 6c617220 3d203130 30302e30 dScalar = 1000.0 │ │ │ │ + 0x00d53a00 3b200a20 20766f69 64206d61 696e2829 ; . void main() │ │ │ │ + 0x00d53a10 200a2020 7b200a20 20202076 5f467261 . { . v_Fra │ │ │ │ + 0x00d53a20 67436f6c 6f72203d 20766563 3428755f gColor = vec4(u_ │ │ │ │ + 0x00d53a30 636f6c6f 722e7267 622c2075 5f636f6c color.rgb, u_col │ │ │ │ + 0x00d53a40 6f722e61 202a2073 6d6f6f74 68737465 or.a * smoothste │ │ │ │ + 0x00d53a50 7028302e 372c2031 2e302c20 765f696e p(0.7, 1.0, v_in │ │ │ │ + 0x00d53a60 74656e73 69747929 293b200a 20207d20 tensity)); . } │ │ │ │ + 0x00d53a70 0a000000 00000000 00000000 00000000 ................ │ │ │ │ + 0x00d53a80 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d53a90 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d53aa0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d53ab0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d53ac0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d53ad0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d53ae0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d53af0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d53b00 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d53b10 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d53b20 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d53b30 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d53b40 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d53b50 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d53b60 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d53b70 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d53b80 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d53b90 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d53ba0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d53bb0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d53bc0 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d53bd0 63342061 5f706f73 6974696f 6e3b200a c4 a_position; . │ │ │ │ + 0x00d53be0 2020696e 20766563 3220615f 6e6f726d in vec2 a_norm │ │ │ │ + 0x00d53bf0 616c3b20 0a202069 6e207665 63322061 al; . in vec2 a │ │ │ │ + 0x00d53c00 5f636f6c 6f725465 78436f6f 7264733b _colorTexCoords; │ │ │ │ + 0x00d53c10 200a2020 6f757420 76656332 20765f63 . out vec2 v_c │ │ │ │ + 0x00d53c20 6f6c6f72 54657843 6f6f7264 733b200a olorTexCoords; . │ │ │ │ + 0x00d53c30 2020756e 69666f72 6d206d61 74342075 uniform mat4 u │ │ │ │ + 0x00d53c40 5f6d6f64 656c5669 65773b20 0a202075 _modelView; . u │ │ │ │ + 0x00d53c50 6e69666f 726d206d 61743420 755f7072 niform mat4 u_pr │ │ │ │ + 0x00d53c60 6f6a6563 74696f6e 3b200a20 20756e69 ojection; . uni │ │ │ │ + 0x00d53c70 666f726d 206d6174 3420755f 7069766f form mat4 u_pivo │ │ │ │ + 0x00d53c80 74547261 6e73666f 726d3b20 0a202075 tTransform; . u │ │ │ │ + 0x00d53c90 6e69666f 726d2076 65633220 755f636f niform vec2 u_co │ │ │ │ + 0x00d53ca0 6e747261 73744761 6d6d613b 200a2020 ntrastGamma; . │ │ │ │ + 0x00d53cb0 756e6966 6f726d20 666c6f61 7420755f uniform float u_ │ │ │ │ + 0x00d53cc0 6f706163 6974793b 200a2020 756e6966 opacity; . unif │ │ │ │ + 0x00d53cd0 6f726d20 666c6f61 7420755f 7a536361 orm float u_zSca │ │ │ │ + 0x00d53ce0 6c653b20 0a202075 6e69666f 726d2066 le; . uniform f │ │ │ │ + 0x00d53cf0 6c6f6174 20755f69 6e746572 706f6c61 loat u_interpola │ │ │ │ + 0x00d53d00 74696f6e 3b200a20 20756e69 666f726d tion; . uniform │ │ │ │ + 0x00d53d10 20666c6f 61742075 5f69734f 75746c69 float u_isOutli │ │ │ │ + 0x00d53d20 6e655061 73733b20 0a202063 6f6e7374 nePass; . const │ │ │ │ + 0x00d53d30 20666c6f 6174206b 53686170 65436f6f float kShapeCoo │ │ │ │ + 0x00d53d40 72645363 616c6172 203d2031 3030302e rdScalar = 1000. │ │ │ │ + 0x00d53d50 303b200a 20207665 63342061 70706c79 0; . vec4 apply │ │ │ │ + 0x00d53d60 5069766f 74547261 6e73666f 726d2876 PivotTransform(v │ │ │ │ + 0x00d53d70 65633420 7069766f 742c206d 61743420 ec4 pivot, mat4 │ │ │ │ + 0x00d53d80 7069766f 74547261 6e73666f 726d2c20 pivotTransform, │ │ │ │ + 0x00d53d90 666c6f61 74207069 766f7452 65616c5a float pivotRealZ │ │ │ │ + 0x00d53da0 29200a20 207b200a 20202020 76656334 ) . { . vec4 │ │ │ │ + 0x00d53db0 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ + 0x00d53dc0 74203d20 7069766f 743b200a 20202020 t = pivot; . │ │ │ │ + 0x00d53dd0 666c6f61 74207720 3d207472 616e7366 float w = transf │ │ │ │ + 0x00d53de0 6f726d65 64506976 6f742e77 3b200a20 ormedPivot.w; . │ │ │ │ + 0x00d53df0 20202074 72616e73 666f726d 65645069 transformedPi │ │ │ │ + 0x00d53e00 766f742e 78797720 3d202870 69766f74 vot.xyw = (pivot │ │ │ │ + 0x00d53e10 5472616e 73666f72 6d202a20 76656334 Transform * vec4 │ │ │ │ + 0x00d53e20 28747261 6e73666f 726d6564 5069766f (transformedPivo │ │ │ │ + 0x00d53e30 742e7879 2c207069 766f7452 65616c5a t.xy, pivotRealZ │ │ │ │ + 0x00d53e40 2c207729 292e7879 773b200a 20202020 , w)).xyw; . │ │ │ │ + 0x00d53e50 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ + 0x00d53e60 2e7a202a 3d207472 616e7366 6f726d65 .z *= transforme │ │ │ │ + 0x00d53e70 64506976 6f742e77 202f2077 3b200a20 dPivot.w / w; . │ │ │ │ + 0x00d53e80 20236966 64656620 56554c4b 414e200a #ifdef VULKAN . │ │ │ │ + 0x00d53e90 20202020 7472616e 73666f72 6d656450 transformedP │ │ │ │ + 0x00d53ea0 69766f74 2e79203d 202d7472 616e7366 ivot.y = -transf │ │ │ │ + 0x00d53eb0 6f726d65 64506976 6f742e79 3b200a20 ormedPivot.y; . │ │ │ │ + 0x00d53ec0 20202074 72616e73 666f726d 65645069 transformedPi │ │ │ │ + 0x00d53ed0 766f742e 7a203d20 28747261 6e73666f vot.z = (transfo │ │ │ │ + 0x00d53ee0 726d6564 5069766f 742e7a20 202b2074 rmedPivot.z + t │ │ │ │ + 0x00d53ef0 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ + 0x00d53f00 7729202f 20322e30 3b200a20 2023656e w) / 2.0; . #en │ │ │ │ + 0x00d53f10 64696620 0a202020 20726574 75726e20 dif . return │ │ │ │ + 0x00d53f20 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ + 0x00d53f30 3b200a20 207d200a 20207665 63342061 ; . } . vec4 a │ │ │ │ + 0x00d53f40 70706c79 42696c6c 626f6172 64506976 pplyBillboardPiv │ │ │ │ + 0x00d53f50 6f745472 616e7366 6f726d28 76656334 otTransform(vec4 │ │ │ │ + 0x00d53f60 20706976 6f742c20 6d617434 20706976 pivot, mat4 piv │ │ │ │ + 0x00d53f70 6f745472 616e7366 6f726d2c 20666c6f otTransform, flo │ │ │ │ + 0x00d53f80 61742070 69766f74 5265616c 5a2c2076 at pivotRealZ, v │ │ │ │ + 0x00d53f90 65633220 6f666673 65742920 0a20207b ec2 offset) . { │ │ │ │ + 0x00d53fa0 200a2020 2020666c 6f617420 6c6f6769 . float logi │ │ │ │ + 0x00d53fb0 635a203d 20706976 6f742e7a 202f2070 cZ = pivot.z / p │ │ │ │ + 0x00d53fc0 69766f74 2e773b20 0a202020 20766563 ivot.w; . vec │ │ │ │ + 0x00d53fd0 34207472 616e7366 6f726d65 64506976 4 transformedPiv │ │ │ │ + 0x00d53fe0 6f74203d 20706976 6f745472 616e7366 ot = pivotTransf │ │ │ │ + 0x00d53ff0 6f726d20 2a207665 63342870 69766f74 orm * vec4(pivot │ │ │ │ + 0x00d54000 2e78792c 20706976 6f745265 616c5a2c .xy, pivotRealZ, │ │ │ │ + 0x00d54010 20706976 6f742e77 293b200a 20202020 pivot.w); . │ │ │ │ + 0x00d54020 76656334 20736361 6c65203d 20706976 vec4 scale = piv │ │ │ │ + 0x00d54030 6f745472 616e7366 6f726d20 2a207665 otTransform * ve │ │ │ │ + 0x00d54040 63342831 2e302c20 2d312e30 2c20302e c4(1.0, -1.0, 0. │ │ │ │ + 0x00d54050 302c2031 2e30293b 200a2020 20207665 0, 1.0); . ve │ │ │ │ + 0x00d54060 63342070 6f736974 696f6e20 3d207665 c4 position = ve │ │ │ │ + 0x00d54070 63342874 72616e73 666f726d 65645069 c4(transformedPi │ │ │ │ + 0x00d54080 766f742e 7879202f 20747261 6e73666f vot.xy / transfo │ │ │ │ + 0x00d54090 726d6564 5069766f 742e772c 206c6f67 rmedPivot.w, log │ │ │ │ + 0x00d540a0 69635a2c 20312e30 29202b20 76656334 icZ, 1.0) + vec4 │ │ │ │ + 0x00d540b0 286f6666 73657420 2f207363 616c652e (offset / scale. │ │ │ │ + 0x00d540c0 77202a20 7363616c 652e782c 20302e30 w * scale.x, 0.0 │ │ │ │ + 0x00d540d0 2c20302e 30293b20 0a202023 69666465 , 0.0); . #ifde │ │ │ │ + 0x00d540e0 66205655 4c4b414e 200a2020 2020706f f VULKAN . po │ │ │ │ + 0x00d540f0 73697469 6f6e2e79 203d202d 706f7369 sition.y = -posi │ │ │ │ + 0x00d54100 74696f6e 2e793b20 0a202020 20706f73 tion.y; . pos │ │ │ │ + 0x00d54110 6974696f 6e2e7a20 3d202870 6f736974 ition.z = (posit │ │ │ │ + 0x00d54120 696f6e2e 7a20202b 20706f73 6974696f ion.z + positio │ │ │ │ + 0x00d54130 6e2e7729 202f2032 2e303b20 0a202023 n.w) / 2.0; . # │ │ │ │ + 0x00d54140 656e6469 66200a20 20202072 65747572 endif . retur │ │ │ │ + 0x00d54150 6e20706f 73697469 6f6e3b20 0a20207d n position; . } │ │ │ │ + 0x00d54160 200a2020 76656332 2063616c 634c696e . vec2 calcLin │ │ │ │ + 0x00d54170 65547261 6e73666f 726d6564 41786973 eTransformedAxis │ │ │ │ + 0x00d54180 506f7328 76656332 206f7269 67696e61 Pos(vec2 origina │ │ │ │ + 0x00d54190 6c417869 73506f73 2c207665 63322073 lAxisPos, vec2 s │ │ │ │ + 0x00d541a0 68696674 6564506f 732c206d 61743420 hiftedPos, mat4 │ │ │ │ + 0x00d541b0 6d6f6465 6c566965 772c2066 6c6f6174 modelView, float │ │ │ │ + 0x00d541c0 2068616c 66576964 74682920 0a20207b halfWidth) . { │ │ │ │ + 0x00d541d0 200a2020 20207665 63322070 203d2028 . vec2 p = ( │ │ │ │ + 0x00d541e0 76656334 28736869 66746564 506f732c vec4(shiftedPos, │ │ │ │ + 0x00d541f0 20302e30 2c20312e 3029202a 206d6f64 0.0, 1.0) * mod │ │ │ │ + 0x00d54200 656c5669 6577292e 78793b20 0a202020 elView).xy; . │ │ │ │ + 0x00d54210 20766563 32206420 3d207020 2d206f72 vec2 d = p - or │ │ │ │ + 0x00d54220 6967696e 616c4178 6973506f 733b200a iginalAxisPos; . │ │ │ │ + 0x00d54230 20202020 69662028 646f7428 642c2064 if (dot(d, d │ │ │ │ + 0x00d54240 2920213d 20302e30 29200a20 20202020 ) != 0.0) . │ │ │ │ + 0x00d54250 20726574 75726e20 6f726967 696e616c return original │ │ │ │ + 0x00d54260 41786973 506f7320 2b206e6f 726d616c AxisPos + normal │ │ │ │ + 0x00d54270 697a6528 6429202a 2068616c 66576964 ize(d) * halfWid │ │ │ │ + 0x00d54280 74683b20 0a202020 20656c73 65200a20 th; . else . │ │ │ │ + 0x00d54290 20202020 20726574 75726e20 6f726967 return orig │ │ │ │ + 0x00d542a0 696e616c 41786973 506f733b 200a2020 inalAxisPos; . │ │ │ │ + 0x00d542b0 7d200a20 20766f69 64206d61 696e2829 } . void main() │ │ │ │ + 0x00d542c0 200a2020 7b200a20 20202076 65633420 . { . vec4 │ │ │ │ + 0x00d542d0 706f7320 3d207665 63342861 5f706f73 pos = vec4(a_pos │ │ │ │ + 0x00d542e0 6974696f 6e2e7879 7a2c2031 29202a20 ition.xyz, 1) * │ │ │ │ + 0x00d542f0 755f6d6f 64656c56 6965773b 200a2020 u_modelView; . │ │ │ │ + 0x00d54300 20207665 63342073 68696674 6564506f vec4 shiftedPo │ │ │ │ + 0x00d54310 73203d20 76656334 28615f6e 6f726d61 s = vec4(a_norma │ │ │ │ + 0x00d54320 6c2c2030 2c203029 202b2070 6f733b20 l, 0, 0) + pos; │ │ │ │ + 0x00d54330 0a202020 20676c5f 506f7369 74696f6e . gl_Position │ │ │ │ + 0x00d54340 203d2061 70706c79 5069766f 74547261 = applyPivotTra │ │ │ │ + 0x00d54350 6e73666f 726d2873 68696674 6564506f nsform(shiftedPo │ │ │ │ + 0x00d54360 73202a20 755f7072 6f6a6563 74696f6e s * u_projection │ │ │ │ + 0x00d54370 2c20755f 7069766f 74547261 6e73666f , u_pivotTransfo │ │ │ │ + 0x00d54380 726d2c20 302e3029 3b200a20 20202076 rm, 0.0); . v │ │ │ │ + 0x00d54390 5f636f6c 6f725465 78436f6f 72647320 _colorTexCoords │ │ │ │ + 0x00d543a0 3d20615f 636f6c6f 72546578 436f6f72 = a_colorTexCoor │ │ │ │ + 0x00d543b0 64733b20 0a20207d 200a0000 00000000 ds; . } ....... │ │ │ │ + 0x00d543c0 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d543d0 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d543e0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d543f0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d54400 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d54410 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d54420 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d54430 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d54440 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d54450 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d54460 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d54470 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d54480 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d54490 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d544a0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d544b0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d544c0 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d544d0 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d544e0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d544f0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d54500 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d54510 63332061 5f706f73 6974696f 6e3b200a c3 a_position; . │ │ │ │ + 0x00d54520 2020696e 20766563 3320615f 6e6f726d in vec3 a_norm │ │ │ │ + 0x00d54530 616c3b20 0a202069 6e207665 63322061 al; . in vec2 a │ │ │ │ + 0x00d54540 5f636f6c 6f725465 78436f6f 72643b20 _colorTexCoord; │ │ │ │ + 0x00d54550 0a202023 69666465 6620454e 41424c45 . #ifdef ENABLE │ │ │ │ + 0x00d54560 5f565446 200a2020 6f757420 4c4f575f _VTF . out LOW_ │ │ │ │ + 0x00d54570 50207665 63342076 5f636f6c 6f723b20 P vec4 v_color; │ │ │ │ + 0x00d54580 0a202023 656c7365 200a2020 6f757420 . #else . out │ │ │ │ + 0x00d54590 76656332 20765f63 6f6c6f72 54657843 vec2 v_colorTexC │ │ │ │ + 0x00d545a0 6f6f7264 3b200a20 2023656e 64696620 oord; . #endif │ │ │ │ + 0x00d545b0 0a202075 6e69666f 726d206d 61743420 . uniform mat4 │ │ │ │ + 0x00d545c0 755f6d6f 64656c56 6965773b 200a2020 u_modelView; . │ │ │ │ + 0x00d545d0 756e6966 6f726d20 6d617434 20755f70 uniform mat4 u_p │ │ │ │ + 0x00d545e0 726f6a65 6374696f 6e3b200a 2020756e rojection; . un │ │ │ │ + 0x00d545f0 69666f72 6d206d61 74342075 5f706976 iform mat4 u_piv │ │ │ │ + 0x00d54600 6f745472 616e7366 6f726d3b 200a2020 otTransform; . │ │ │ │ + 0x00d54610 756e6966 6f726d20 76656332 20755f63 uniform vec2 u_c │ │ │ │ + 0x00d54620 6f6e7472 61737447 616d6d61 3b200a20 ontrastGamma; . │ │ │ │ + 0x00d54630 20756e69 666f726d 20666c6f 61742075 uniform float u │ │ │ │ + 0x00d54640 5f6f7061 63697479 3b200a20 20756e69 _opacity; . uni │ │ │ │ + 0x00d54650 666f726d 20666c6f 61742075 5f7a5363 form float u_zSc │ │ │ │ + 0x00d54660 616c653b 200a2020 756e6966 6f726d20 ale; . uniform │ │ │ │ + 0x00d54670 666c6f61 7420755f 696e7465 72706f6c float u_interpol │ │ │ │ + 0x00d54680 6174696f 6e3b200a 2020756e 69666f72 ation; . unifor │ │ │ │ + 0x00d54690 6d20666c 6f617420 755f6973 4f75746c m float u_isOutl │ │ │ │ + 0x00d546a0 696e6550 6173733b 200a2020 23696664 inePass; . #ifd │ │ │ │ + 0x00d546b0 65662045 4e41424c 455f5654 46200a20 ef ENABLE_VTF . │ │ │ │ + 0x00d546c0 20756e69 666f726d 2073616d 706c6572 uniform sampler │ │ │ │ + 0x00d546d0 32442075 5f636f6c 6f725465 783b200a 2D u_colorTex; . │ │ │ │ + 0x00d546e0 20202365 6e646966 200a2020 636f6e73 #endif . cons │ │ │ │ + 0x00d546f0 7420666c 6f617420 6b536861 7065436f t float kShapeCo │ │ │ │ + 0x00d54700 6f726453 63616c61 72203d20 31303030 ordScalar = 1000 │ │ │ │ + 0x00d54710 2e303b20 0a202076 65633420 6170706c .0; . vec4 appl │ │ │ │ + 0x00d54720 79506976 6f745472 616e7366 6f726d28 yPivotTransform( │ │ │ │ + 0x00d54730 76656334 20706976 6f742c20 6d617434 vec4 pivot, mat4 │ │ │ │ + 0x00d54740 20706976 6f745472 616e7366 6f726d2c pivotTransform, │ │ │ │ + 0x00d54750 20666c6f 61742070 69766f74 5265616c float pivotReal │ │ │ │ + 0x00d54760 5a29200a 20207b20 0a202020 20766563 Z) . { . vec │ │ │ │ + 0x00d54770 34207472 616e7366 6f726d65 64506976 4 transformedPiv │ │ │ │ + 0x00d54780 6f74203d 20706976 6f743b20 0a202020 ot = pivot; . │ │ │ │ + 0x00d54790 20666c6f 61742077 203d2074 72616e73 float w = trans │ │ │ │ + 0x00d547a0 666f726d 65645069 766f742e 773b200a formedPivot.w; . │ │ │ │ + 0x00d547b0 20202020 7472616e 73666f72 6d656450 transformedP │ │ │ │ + 0x00d547c0 69766f74 2e787977 203d2028 7069766f ivot.xyw = (pivo │ │ │ │ + 0x00d547d0 74547261 6e73666f 726d202a 20766563 tTransform * vec │ │ │ │ + 0x00d547e0 34287472 616e7366 6f726d65 64506976 4(transformedPiv │ │ │ │ + 0x00d547f0 6f742e78 792c2070 69766f74 5265616c ot.xy, pivotReal │ │ │ │ + 0x00d54800 5a2c2077 29292e78 79773b20 0a202020 Z, w)).xyw; . │ │ │ │ + 0x00d54810 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ + 0x00d54820 742e7a20 2a3d2074 72616e73 666f726d t.z *= transform │ │ │ │ + 0x00d54830 65645069 766f742e 77202f20 773b200a edPivot.w / w; . │ │ │ │ + 0x00d54840 20202369 66646566 2056554c 4b414e20 #ifdef VULKAN │ │ │ │ + 0x00d54850 0a202020 20747261 6e73666f 726d6564 . transformed │ │ │ │ + 0x00d54860 5069766f 742e7920 3d202d74 72616e73 Pivot.y = -trans │ │ │ │ + 0x00d54870 666f726d 65645069 766f742e 793b200a formedPivot.y; . │ │ │ │ + 0x00d54880 20202020 7472616e 73666f72 6d656450 transformedP │ │ │ │ + 0x00d54890 69766f74 2e7a203d 20287472 616e7366 ivot.z = (transf │ │ │ │ + 0x00d548a0 6f726d65 64506976 6f742e7a 20202b20 ormedPivot.z + │ │ │ │ + 0x00d548b0 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ + 0x00d548c0 2e772920 2f20322e 303b200a 20202365 .w) / 2.0; . #e │ │ │ │ + 0x00d548d0 6e646966 200a2020 20207265 7475726e ndif . return │ │ │ │ + 0x00d548e0 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ + 0x00d548f0 743b200a 20207d20 0a202076 65633420 t; . } . vec4 │ │ │ │ + 0x00d54900 6170706c 7942696c 6c626f61 72645069 applyBillboardPi │ │ │ │ + 0x00d54910 766f7454 72616e73 666f726d 28766563 votTransform(vec │ │ │ │ + 0x00d54920 34207069 766f742c 206d6174 34207069 4 pivot, mat4 pi │ │ │ │ + 0x00d54930 766f7454 72616e73 666f726d 2c20666c votTransform, fl │ │ │ │ + 0x00d54940 6f617420 7069766f 74526561 6c5a2c20 oat pivotRealZ, │ │ │ │ + 0x00d54950 76656332 206f6666 73657429 200a2020 vec2 offset) . │ │ │ │ + 0x00d54960 7b200a20 20202066 6c6f6174 206c6f67 { . float log │ │ │ │ + 0x00d54970 69635a20 3d207069 766f742e 7a202f20 icZ = pivot.z / │ │ │ │ + 0x00d54980 7069766f 742e773b 200a2020 20207665 pivot.w; . ve │ │ │ │ + 0x00d54990 63342074 72616e73 666f726d 65645069 c4 transformedPi │ │ │ │ + 0x00d549a0 766f7420 3d207069 766f7454 72616e73 vot = pivotTrans │ │ │ │ + 0x00d549b0 666f726d 202a2076 65633428 7069766f form * vec4(pivo │ │ │ │ + 0x00d549c0 742e7879 2c207069 766f7452 65616c5a t.xy, pivotRealZ │ │ │ │ + 0x00d549d0 2c207069 766f742e 77293b20 0a202020 , pivot.w); . │ │ │ │ + 0x00d549e0 20766563 34207363 616c6520 3d207069 vec4 scale = pi │ │ │ │ + 0x00d549f0 766f7454 72616e73 666f726d 202a2076 votTransform * v │ │ │ │ + 0x00d54a00 65633428 312e302c 202d312e 302c2030 ec4(1.0, -1.0, 0 │ │ │ │ + 0x00d54a10 2e302c20 312e3029 3b200a20 20202076 .0, 1.0); . v │ │ │ │ + 0x00d54a20 65633420 706f7369 74696f6e 203d2076 ec4 position = v │ │ │ │ + 0x00d54a30 65633428 7472616e 73666f72 6d656450 ec4(transformedP │ │ │ │ + 0x00d54a40 69766f74 2e787920 2f207472 616e7366 ivot.xy / transf │ │ │ │ + 0x00d54a50 6f726d65 64506976 6f742e77 2c206c6f ormedPivot.w, lo │ │ │ │ + 0x00d54a60 6769635a 2c20312e 3029202b 20766563 gicZ, 1.0) + vec │ │ │ │ + 0x00d54a70 34286f66 66736574 202f2073 63616c65 4(offset / scale │ │ │ │ + 0x00d54a80 2e77202a 20736361 6c652e78 2c20302e .w * scale.x, 0. │ │ │ │ + 0x00d54a90 302c2030 2e30293b 200a2020 23696664 0, 0.0); . #ifd │ │ │ │ + 0x00d54aa0 65662056 554c4b41 4e200a20 20202070 ef VULKAN . p │ │ │ │ + 0x00d54ab0 6f736974 696f6e2e 79203d20 2d706f73 osition.y = -pos │ │ │ │ + 0x00d54ac0 6974696f 6e2e793b 200a2020 2020706f ition.y; . po │ │ │ │ + 0x00d54ad0 73697469 6f6e2e7a 203d2028 706f7369 sition.z = (posi │ │ │ │ + 0x00d54ae0 74696f6e 2e7a2020 2b20706f 73697469 tion.z + positi │ │ │ │ + 0x00d54af0 6f6e2e77 29202f20 322e303b 200a2020 on.w) / 2.0; . │ │ │ │ + 0x00d54b00 23656e64 6966200a 20202020 72657475 #endif . retu │ │ │ │ + 0x00d54b10 726e2070 6f736974 696f6e3b 200a2020 rn position; . │ │ │ │ + 0x00d54b20 7d200a20 20766563 32206361 6c634c69 } . vec2 calcLi │ │ │ │ + 0x00d54b30 6e655472 616e7366 6f726d65 64417869 neTransformedAxi │ │ │ │ + 0x00d54b40 73506f73 28766563 32206f72 6967696e sPos(vec2 origin │ │ │ │ + 0x00d54b50 616c4178 6973506f 732c2076 65633220 alAxisPos, vec2 │ │ │ │ + 0x00d54b60 73686966 74656450 6f732c20 6d617434 shiftedPos, mat4 │ │ │ │ + 0x00d54b70 206d6f64 656c5669 65772c20 666c6f61 modelView, floa │ │ │ │ + 0x00d54b80 74206861 6c665769 64746829 200a2020 t halfWidth) . │ │ │ │ + 0x00d54b90 7b200a20 20202076 65633220 70203d20 { . vec2 p = │ │ │ │ + 0x00d54ba0 28766563 34287368 69667465 64506f73 (vec4(shiftedPos │ │ │ │ + 0x00d54bb0 2c20302e 302c2031 2e302920 2a206d6f , 0.0, 1.0) * mo │ │ │ │ + 0x00d54bc0 64656c56 69657729 2e78793b 200a2020 delView).xy; . │ │ │ │ + 0x00d54bd0 20207665 63322064 203d2070 202d206f vec2 d = p - o │ │ │ │ + 0x00d54be0 72696769 6e616c41 78697350 6f733b20 riginalAxisPos; │ │ │ │ + 0x00d54bf0 0a202020 20696620 28646f74 28642c20 . if (dot(d, │ │ │ │ + 0x00d54c00 64292021 3d20302e 3029200a 20202020 d) != 0.0) . │ │ │ │ + 0x00d54c10 20207265 7475726e 206f7269 67696e61 return origina │ │ │ │ + 0x00d54c20 6c417869 73506f73 202b206e 6f726d61 lAxisPos + norma │ │ │ │ + 0x00d54c30 6c697a65 28642920 2a206861 6c665769 lize(d) * halfWi │ │ │ │ + 0x00d54c40 6474683b 200a2020 2020656c 7365200a dth; . else . │ │ │ │ + 0x00d54c50 20202020 20207265 7475726e 206f7269 return ori │ │ │ │ + 0x00d54c60 67696e61 6c417869 73506f73 3b200a20 ginalAxisPos; . │ │ │ │ + 0x00d54c70 207d200a 2020766f 6964206d 61696e28 } . void main( │ │ │ │ + 0x00d54c80 29200a20 207b200a 20202020 76656332 ) . { . vec2 │ │ │ │ + 0x00d54c90 206e6f72 6d616c20 3d20615f 6e6f726d normal = a_norm │ │ │ │ + 0x00d54ca0 616c2e78 793b200a 20202020 666c6f61 al.xy; . floa │ │ │ │ + 0x00d54cb0 74206861 6c665769 64746820 3d206c65 t halfWidth = le │ │ │ │ + 0x00d54cc0 6e677468 286e6f72 6d616c29 3b200a20 ngth(normal); . │ │ │ │ + 0x00d54cd0 20202076 65633220 7472616e 73666f72 vec2 transfor │ │ │ │ + 0x00d54ce0 6d656441 78697350 6f73203d 20287665 medAxisPos = (ve │ │ │ │ + 0x00d54cf0 63342861 5f706f73 6974696f 6e2e7879 c4(a_position.xy │ │ │ │ + 0x00d54d00 2c20302e 302c2031 2e302920 2a20755f , 0.0, 1.0) * u_ │ │ │ │ + 0x00d54d10 6d6f6465 6c566965 77292e78 793b200a modelView).xy; . │ │ │ │ + 0x00d54d20 20202020 69662028 68616c66 57696474 if (halfWidt │ │ │ │ + 0x00d54d30 6820213d 20302e30 29200a20 2020207b h != 0.0) . { │ │ │ │ + 0x00d54d40 200a2020 20202020 7472616e 73666f72 . transfor │ │ │ │ + 0x00d54d50 6d656441 78697350 6f73203d 2063616c medAxisPos = cal │ │ │ │ + 0x00d54d60 634c696e 65547261 6e73666f 726d6564 cLineTransformed │ │ │ │ + 0x00d54d70 41786973 506f7328 7472616e 73666f72 AxisPos(transfor │ │ │ │ + 0x00d54d80 6d656441 78697350 6f732c20 615f706f medAxisPos, a_po │ │ │ │ + 0x00d54d90 73697469 6f6e2e78 79202b20 6e6f726d sition.xy + norm │ │ │ │ + 0x00d54da0 616c2c20 0a202020 20202020 20202020 al, . │ │ │ │ + 0x00d54db0 20202020 20202020 20202020 20202020 │ │ │ │ + 0x00d54dc0 20202020 20202020 20202020 20202020 │ │ │ │ + 0x00d54dd0 20202020 20202020 20202075 5f6d6f64 u_mod │ │ │ │ + 0x00d54de0 656c5669 65772c20 68616c66 57696474 elView, halfWidt │ │ │ │ + 0x00d54df0 68293b20 0a202020 207d200a 20202369 h); . } . #i │ │ │ │ + 0x00d54e00 66646566 20454e41 424c455f 56544620 fdef ENABLE_VTF │ │ │ │ + 0x00d54e10 0a202020 20765f63 6f6c6f72 203d2074 . v_color = t │ │ │ │ + 0x00d54e20 65787475 72652875 5f636f6c 6f725465 exture(u_colorTe │ │ │ │ + 0x00d54e30 782c2061 5f636f6c 6f725465 78436f6f x, a_colorTexCoo │ │ │ │ + 0x00d54e40 7264293b 200a2020 23656c73 65200a20 rd); . #else . │ │ │ │ + 0x00d54e50 20202076 5f636f6c 6f725465 78436f6f v_colorTexCoo │ │ │ │ + 0x00d54e60 7264203d 20615f63 6f6c6f72 54657843 rd = a_colorTexC │ │ │ │ + 0x00d54e70 6f6f7264 3b200a20 2023656e 64696620 oord; . #endif │ │ │ │ + 0x00d54e80 0a202020 20766563 3420706f 73203d20 . vec4 pos = │ │ │ │ + 0x00d54e90 76656334 28747261 6e73666f 726d6564 vec4(transformed │ │ │ │ + 0x00d54ea0 41786973 506f732c 20615f70 6f736974 AxisPos, a_posit │ │ │ │ + 0x00d54eb0 696f6e2e 7a2c2031 2e302920 2a20755f ion.z, 1.0) * u_ │ │ │ │ + 0x00d54ec0 70726f6a 65637469 6f6e3b20 0a202020 projection; . │ │ │ │ + 0x00d54ed0 20676c5f 506f7369 74696f6e 203d2061 gl_Position = a │ │ │ │ + 0x00d54ee0 70706c79 5069766f 74547261 6e73666f pplyPivotTransfo │ │ │ │ + 0x00d54ef0 726d2870 6f732c20 755f7069 766f7454 rm(pos, u_pivotT │ │ │ │ + 0x00d54f00 72616e73 666f726d 2c20302e 30293b20 ransform, 0.0); │ │ │ │ + 0x00d54f10 0a20207d 200a0000 00000000 00000000 . } ........... │ │ │ │ + 0x00d54f20 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d54f30 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d54f40 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d54f50 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d54f60 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d54f70 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d54f80 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d54f90 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d54fa0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d54fb0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d54fc0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d54fd0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d54fe0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d54ff0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d55000 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d55010 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d55020 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d55030 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d55040 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d55050 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d55060 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d55070 63332061 5f706f73 6974696f 6e3b200a c3 a_position; . │ │ │ │ + 0x00d55080 2020696e 20766563 3220615f 636f6c6f in vec2 a_colo │ │ │ │ + 0x00d55090 72546578 436f6f72 64733b20 0a202023 rTexCoords; . # │ │ │ │ + 0x00d550a0 69666465 6620454e 41424c45 5f565446 ifdef ENABLE_VTF │ │ │ │ + 0x00d550b0 200a2020 6f757420 4c4f575f 50207665 . out LOW_P ve │ │ │ │ + 0x00d550c0 63342076 5f636f6c 6f723b20 0a202023 c4 v_color; . # │ │ │ │ + 0x00d550d0 656c7365 200a2020 6f757420 76656332 else . out vec2 │ │ │ │ + 0x00d550e0 20765f63 6f6c6f72 54657843 6f6f7264 v_colorTexCoord │ │ │ │ + 0x00d550f0 733b200a 20202365 6e646966 200a2020 s; . #endif . │ │ │ │ + 0x00d55100 756e6966 6f726d20 6d617434 20755f6d uniform mat4 u_m │ │ │ │ + 0x00d55110 6f64656c 56696577 3b200a20 20756e69 odelView; . uni │ │ │ │ + 0x00d55120 666f726d 206d6174 3420755f 70726f6a form mat4 u_proj │ │ │ │ + 0x00d55130 65637469 6f6e3b20 0a202075 6e69666f ection; . unifo │ │ │ │ + 0x00d55140 726d206d 61743420 755f7069 766f7454 rm mat4 u_pivotT │ │ │ │ + 0x00d55150 72616e73 666f726d 3b200a20 20756e69 ransform; . uni │ │ │ │ + 0x00d55160 666f726d 20766563 3220755f 636f6e74 form vec2 u_cont │ │ │ │ + 0x00d55170 72617374 47616d6d 613b200a 2020756e rastGamma; . un │ │ │ │ + 0x00d55180 69666f72 6d20666c 6f617420 755f6f70 iform float u_op │ │ │ │ + 0x00d55190 61636974 793b200a 2020756e 69666f72 acity; . unifor │ │ │ │ + 0x00d551a0 6d20666c 6f617420 755f7a53 63616c65 m float u_zScale │ │ │ │ + 0x00d551b0 3b200a20 20756e69 666f726d 20666c6f ; . uniform flo │ │ │ │ + 0x00d551c0 61742075 5f696e74 6572706f 6c617469 at u_interpolati │ │ │ │ + 0x00d551d0 6f6e3b20 0a202075 6e69666f 726d2066 on; . uniform f │ │ │ │ + 0x00d551e0 6c6f6174 20755f69 734f7574 6c696e65 loat u_isOutline │ │ │ │ + 0x00d551f0 50617373 3b200a20 20236966 64656620 Pass; . #ifdef │ │ │ │ + 0x00d55200 454e4142 4c455f56 5446200a 2020756e ENABLE_VTF . un │ │ │ │ + 0x00d55210 69666f72 6d207361 6d706c65 72324420 iform sampler2D │ │ │ │ + 0x00d55220 755f636f 6c6f7254 65783b20 0a202023 u_colorTex; . # │ │ │ │ + 0x00d55230 656e6469 66200a20 20636f6e 73742066 endif . const f │ │ │ │ + 0x00d55240 6c6f6174 206b5368 61706543 6f6f7264 loat kShapeCoord │ │ │ │ + 0x00d55250 5363616c 6172203d 20313030 302e303b Scalar = 1000.0; │ │ │ │ + 0x00d55260 200a2020 76656334 20617070 6c795069 . vec4 applyPi │ │ │ │ + 0x00d55270 766f7454 72616e73 666f726d 28766563 votTransform(vec │ │ │ │ + 0x00d55280 34207069 766f742c 206d6174 34207069 4 pivot, mat4 pi │ │ │ │ + 0x00d55290 766f7454 72616e73 666f726d 2c20666c votTransform, fl │ │ │ │ + 0x00d552a0 6f617420 7069766f 74526561 6c5a2920 oat pivotRealZ) │ │ │ │ + 0x00d552b0 0a20207b 200a2020 20207665 63342074 . { . vec4 t │ │ │ │ + 0x00d552c0 72616e73 666f726d 65645069 766f7420 ransformedPivot │ │ │ │ + 0x00d552d0 3d207069 766f743b 200a2020 2020666c = pivot; . fl │ │ │ │ + 0x00d552e0 6f617420 77203d20 7472616e 73666f72 oat w = transfor │ │ │ │ + 0x00d552f0 6d656450 69766f74 2e773b20 0a202020 medPivot.w; . │ │ │ │ + 0x00d55300 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ + 0x00d55310 742e7879 77203d20 28706976 6f745472 t.xyw = (pivotTr │ │ │ │ + 0x00d55320 616e7366 6f726d20 2a207665 63342874 ansform * vec4(t │ │ │ │ + 0x00d55330 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ + 0x00d55340 78792c20 7069766f 74526561 6c5a2c20 xy, pivotRealZ, │ │ │ │ + 0x00d55350 7729292e 7879773b 200a2020 20207472 w)).xyw; . tr │ │ │ │ + 0x00d55360 616e7366 6f726d65 64506976 6f742e7a ansformedPivot.z │ │ │ │ + 0x00d55370 202a3d20 7472616e 73666f72 6d656450 *= transformedP │ │ │ │ + 0x00d55380 69766f74 2e77202f 20773b20 0a202023 ivot.w / w; . # │ │ │ │ + 0x00d55390 69666465 66205655 4c4b414e 200a2020 ifdef VULKAN . │ │ │ │ + 0x00d553a0 20207472 616e7366 6f726d65 64506976 transformedPiv │ │ │ │ + 0x00d553b0 6f742e79 203d202d 7472616e 73666f72 ot.y = -transfor │ │ │ │ + 0x00d553c0 6d656450 69766f74 2e793b20 0a202020 medPivot.y; . │ │ │ │ + 0x00d553d0 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ + 0x00d553e0 742e7a20 3d202874 72616e73 666f726d t.z = (transform │ │ │ │ + 0x00d553f0 65645069 766f742e 7a20202b 20747261 edPivot.z + tra │ │ │ │ + 0x00d55400 6e73666f 726d6564 5069766f 742e7729 nsformedPivot.w) │ │ │ │ + 0x00d55410 202f2032 2e303b20 0a202023 656e6469 / 2.0; . #endi │ │ │ │ + 0x00d55420 66200a20 20202072 65747572 6e207472 f . return tr │ │ │ │ + 0x00d55430 616e7366 6f726d65 64506976 6f743b20 ansformedPivot; │ │ │ │ + 0x00d55440 0a20207d 200a2020 76656334 20617070 . } . vec4 app │ │ │ │ + 0x00d55450 6c794269 6c6c626f 61726450 69766f74 lyBillboardPivot │ │ │ │ + 0x00d55460 5472616e 73666f72 6d287665 63342070 Transform(vec4 p │ │ │ │ + 0x00d55470 69766f74 2c206d61 74342070 69766f74 ivot, mat4 pivot │ │ │ │ + 0x00d55480 5472616e 73666f72 6d2c2066 6c6f6174 Transform, float │ │ │ │ + 0x00d55490 20706976 6f745265 616c5a2c 20766563 pivotRealZ, vec │ │ │ │ + 0x00d554a0 32206f66 66736574 29200a20 207b200a 2 offset) . { . │ │ │ │ + 0x00d554b0 20202020 666c6f61 74206c6f 6769635a float logicZ │ │ │ │ + 0x00d554c0 203d2070 69766f74 2e7a202f 20706976 = pivot.z / piv │ │ │ │ + 0x00d554d0 6f742e77 3b200a20 20202076 65633420 ot.w; . vec4 │ │ │ │ + 0x00d554e0 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ + 0x00d554f0 203d2070 69766f74 5472616e 73666f72 = pivotTransfor │ │ │ │ + 0x00d55500 6d202a20 76656334 28706976 6f742e78 m * vec4(pivot.x │ │ │ │ + 0x00d55510 792c2070 69766f74 5265616c 5a2c2070 y, pivotRealZ, p │ │ │ │ + 0x00d55520 69766f74 2e77293b 200a2020 20207665 ivot.w); . ve │ │ │ │ + 0x00d55530 63342073 63616c65 203d2070 69766f74 c4 scale = pivot │ │ │ │ + 0x00d55540 5472616e 73666f72 6d202a20 76656334 Transform * vec4 │ │ │ │ + 0x00d55550 28312e30 2c202d31 2e302c20 302e302c (1.0, -1.0, 0.0, │ │ │ │ + 0x00d55560 20312e30 293b200a 20202020 76656334 1.0); . vec4 │ │ │ │ + 0x00d55570 20706f73 6974696f 6e203d20 76656334 position = vec4 │ │ │ │ + 0x00d55580 28747261 6e73666f 726d6564 5069766f (transformedPivo │ │ │ │ + 0x00d55590 742e7879 202f2074 72616e73 666f726d t.xy / transform │ │ │ │ + 0x00d555a0 65645069 766f742e 772c206c 6f676963 edPivot.w, logic │ │ │ │ + 0x00d555b0 5a2c2031 2e302920 2b207665 6334286f Z, 1.0) + vec4(o │ │ │ │ + 0x00d555c0 66667365 74202f20 7363616c 652e7720 ffset / scale.w │ │ │ │ + 0x00d555d0 2a207363 616c652e 782c2030 2e302c20 * scale.x, 0.0, │ │ │ │ + 0x00d555e0 302e3029 3b200a20 20236966 64656620 0.0); . #ifdef │ │ │ │ + 0x00d555f0 56554c4b 414e200a 20202020 706f7369 VULKAN . posi │ │ │ │ + 0x00d55600 74696f6e 2e79203d 202d706f 73697469 tion.y = -positi │ │ │ │ + 0x00d55610 6f6e2e79 3b200a20 20202070 6f736974 on.y; . posit │ │ │ │ + 0x00d55620 696f6e2e 7a203d20 28706f73 6974696f ion.z = (positio │ │ │ │ + 0x00d55630 6e2e7a20 202b2070 6f736974 696f6e2e n.z + position. │ │ │ │ + 0x00d55640 7729202f 20322e30 3b200a20 2023656e w) / 2.0; . #en │ │ │ │ + 0x00d55650 64696620 0a202020 20726574 75726e20 dif . return │ │ │ │ + 0x00d55660 706f7369 74696f6e 3b200a20 207d200a position; . } . │ │ │ │ + 0x00d55670 20207665 63322063 616c634c 696e6554 vec2 calcLineT │ │ │ │ + 0x00d55680 72616e73 666f726d 65644178 6973506f ransformedAxisPo │ │ │ │ + 0x00d55690 73287665 6332206f 72696769 6e616c41 s(vec2 originalA │ │ │ │ + 0x00d556a0 78697350 6f732c20 76656332 20736869 xisPos, vec2 shi │ │ │ │ + 0x00d556b0 66746564 506f732c 206d6174 34206d6f ftedPos, mat4 mo │ │ │ │ + 0x00d556c0 64656c56 6965772c 20666c6f 61742068 delView, float h │ │ │ │ + 0x00d556d0 616c6657 69647468 29200a20 207b200a alfWidth) . { . │ │ │ │ + 0x00d556e0 20202020 76656332 2070203d 20287665 vec2 p = (ve │ │ │ │ + 0x00d556f0 63342873 68696674 6564506f 732c2030 c4(shiftedPos, 0 │ │ │ │ + 0x00d55700 2e302c20 312e3029 202a206d 6f64656c .0, 1.0) * model │ │ │ │ + 0x00d55710 56696577 292e7879 3b200a20 20202076 View).xy; . v │ │ │ │ + 0x00d55720 65633220 64203d20 70202d20 6f726967 ec2 d = p - orig │ │ │ │ + 0x00d55730 696e616c 41786973 506f733b 200a2020 inalAxisPos; . │ │ │ │ + 0x00d55740 20206966 2028646f 7428642c 20642920 if (dot(d, d) │ │ │ │ + 0x00d55750 213d2030 2e302920 0a202020 20202072 != 0.0) . r │ │ │ │ + 0x00d55760 65747572 6e206f72 6967696e 616c4178 eturn originalAx │ │ │ │ + 0x00d55770 6973506f 73202b20 6e6f726d 616c697a isPos + normaliz │ │ │ │ + 0x00d55780 65286429 202a2068 616c6657 69647468 e(d) * halfWidth │ │ │ │ + 0x00d55790 3b200a20 20202065 6c736520 0a202020 ; . else . │ │ │ │ + 0x00d557a0 20202072 65747572 6e206f72 6967696e return origin │ │ │ │ + 0x00d557b0 616c4178 6973506f 733b200a 20207d20 alAxisPos; . } │ │ │ │ + 0x00d557c0 0a202076 6f696420 6d61696e 2829200a . void main() . │ │ │ │ + 0x00d557d0 20207b20 0a202020 20766563 3420706f { . vec4 po │ │ │ │ + 0x00d557e0 73203d20 76656334 28615f70 6f736974 s = vec4(a_posit │ │ │ │ + 0x00d557f0 696f6e2c 20312920 2a20755f 6d6f6465 ion, 1) * u_mode │ │ │ │ + 0x00d55800 6c566965 77202a20 755f7072 6f6a6563 lView * u_projec │ │ │ │ + 0x00d55810 74696f6e 3b200a20 20202067 6c5f506f tion; . gl_Po │ │ │ │ + 0x00d55820 73697469 6f6e203d 20617070 6c795069 sition = applyPi │ │ │ │ + 0x00d55830 766f7454 72616e73 666f726d 28706f73 votTransform(pos │ │ │ │ + 0x00d55840 2c20755f 7069766f 74547261 6e73666f , u_pivotTransfo │ │ │ │ + 0x00d55850 726d2c20 302e3029 3b200a20 20236966 rm, 0.0); . #if │ │ │ │ + 0x00d55860 64656620 454e4142 4c455f56 5446200a def ENABLE_VTF . │ │ │ │ + 0x00d55870 20202020 765f636f 6c6f7220 3d207465 v_color = te │ │ │ │ + 0x00d55880 78747572 6528755f 636f6c6f 72546578 xture(u_colorTex │ │ │ │ + 0x00d55890 2c20615f 636f6c6f 72546578 436f6f72 , a_colorTexCoor │ │ │ │ + 0x00d558a0 6473293b 200a2020 23656c73 65200a20 ds); . #else . │ │ │ │ + 0x00d558b0 20202076 5f636f6c 6f725465 78436f6f v_colorTexCoo │ │ │ │ + 0x00d558c0 72647320 3d20615f 636f6c6f 72546578 rds = a_colorTex │ │ │ │ + 0x00d558d0 436f6f72 64733b20 0a202023 656e6469 Coords; . #endi │ │ │ │ + 0x00d558e0 66200a20 207d200a 00000000 00000000 f . } ......... │ │ │ │ + 0x00d558f0 00000000 00000000 00000000 00000000 ................ │ │ │ │ + 0x00d55900 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d55910 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d55920 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d55930 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d55940 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d55950 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d55960 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d55970 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d55980 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d55990 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d559a0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d559b0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d559c0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d559d0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d559e0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d559f0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d55a00 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d55a10 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d55a20 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d55a30 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d55a40 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d55a50 63342076 5f636f6f 7264733b 200a2020 c4 v_coords; . │ │ │ │ + 0x00d55a60 696e2076 65633420 765f6f66 66736574 in vec4 v_offset │ │ │ │ + 0x00d55a70 303b200a 2020696e 20766563 3420765f 0; . in vec4 v_ │ │ │ │ + 0x00d55a80 6f666673 6574313b 200a2020 696e2076 offset1; . in v │ │ │ │ + 0x00d55a90 65633420 765f6f66 66736574 323b200a ec4 v_offset2; . │ │ │ │ + 0x00d55aa0 20206f75 74207665 63342076 5f467261 out vec4 v_Fra │ │ │ │ + 0x00d55ab0 67436f6c 6f723b20 0a202075 6e69666f gColor; . unifo │ │ │ │ + 0x00d55ac0 726d2076 65633420 755f6672 616d6562 rm vec4 u_frameb │ │ │ │ + 0x00d55ad0 75666665 724d6574 72696373 3b200a20 ufferMetrics; . │ │ │ │ + 0x00d55ae0 20756e69 666f726d 2073616d 706c6572 uniform sampler │ │ │ │ + 0x00d55af0 32442075 5f636f6c 6f725465 783b200a 2D u_colorTex; . │ │ │ │ + 0x00d55b00 2020756e 69666f72 6d207361 6d706c65 uniform sample │ │ │ │ + 0x00d55b10 72324420 755f736d 61614172 65613b20 r2D u_smaaArea; │ │ │ │ + 0x00d55b20 0a202075 6e69666f 726d2073 616d706c . uniform sampl │ │ │ │ + 0x00d55b30 65723244 20755f73 6d616153 65617263 er2D u_smaaSearc │ │ │ │ + 0x00d55b40 683b200a 20202364 6566696e 6520534d h; . #define SM │ │ │ │ + 0x00d55b50 41415f53 45415243 48544558 5f53495a AA_SEARCHTEX_SIZ │ │ │ │ + 0x00d55b60 45207665 63322836 362e302c 2033332e E vec2(66.0, 33. │ │ │ │ + 0x00d55b70 3029200a 20202364 6566696e 6520534d 0) . #define SM │ │ │ │ + 0x00d55b80 41415f53 45415243 48544558 5f504143 AA_SEARCHTEX_PAC │ │ │ │ + 0x00d55b90 4b45445f 53495a45 20766563 32283634 KED_SIZE vec2(64 │ │ │ │ + 0x00d55ba0 2e302c20 31362e30 29200a20 20236465 .0, 16.0) . #de │ │ │ │ + 0x00d55bb0 66696e65 20534d41 415f4152 45415445 fine SMAA_AREATE │ │ │ │ + 0x00d55bc0 585f4d41 585f4449 5354414e 43452031 X_MAX_DISTANCE 1 │ │ │ │ + 0x00d55bd0 362e3020 0a202023 64656669 6e652053 6.0 . #define S │ │ │ │ + 0x00d55be0 4d41415f 41524541 5445585f 50495845 MAA_AREATEX_PIXE │ │ │ │ + 0x00d55bf0 4c5f5349 5a452028 76656332 28312e30 L_SIZE (vec2(1.0 │ │ │ │ + 0x00d55c00 202f2032 35362e30 2c20312e 30202f20 / 256.0, 1.0 / │ │ │ │ + 0x00d55c10 31303234 2e302929 200a2020 23646566 1024.0)) . #def │ │ │ │ + 0x00d55c20 696e6520 534d4141 4c6f6f70 42656769 ine SMAALoopBegi │ │ │ │ + 0x00d55c30 6e28636f 6e646974 696f6e29 20776869 n(condition) whi │ │ │ │ + 0x00d55c40 6c652028 636f6e64 6974696f 6e29207b le (condition) { │ │ │ │ + 0x00d55c50 200a2020 23646566 696e6520 534d4141 . #define SMAA │ │ │ │ + 0x00d55c60 4c6f6f70 456e6420 7d200a20 20236465 LoopEnd } . #de │ │ │ │ + 0x00d55c70 66696e65 20534d41 4153616d 706c654c fine SMAASampleL │ │ │ │ + 0x00d55c80 6576656c 5a65726f 28746578 2c20636f evelZero(tex, co │ │ │ │ + 0x00d55c90 6f726429 20746578 74757265 4c6f6428 ord) textureLod( │ │ │ │ + 0x00d55ca0 7465782c 20636f6f 72642c20 302e3029 tex, coord, 0.0) │ │ │ │ + 0x00d55cb0 200a2020 23646566 696e6520 534d4141 . #define SMAA │ │ │ │ + 0x00d55cc0 53616d70 6c654c65 76656c5a 65726f4f SampleLevelZeroO │ │ │ │ + 0x00d55cd0 66667365 74287465 782c2063 6f6f7264 ffset(tex, coord │ │ │ │ + 0x00d55ce0 2c206f66 66736574 29207465 78747572 , offset) textur │ │ │ │ + 0x00d55cf0 654c6f64 4f666673 65742874 65782c20 eLodOffset(tex, │ │ │ │ + 0x00d55d00 636f6f72 642c2030 2e302c20 6f666673 coord, 0.0, offs │ │ │ │ + 0x00d55d10 65742920 0a202023 64656669 6e652053 et) . #define S │ │ │ │ + 0x00d55d20 4d414152 6f756e64 28762920 726f756e MAARound(v) roun │ │ │ │ + 0x00d55d30 64282876 2929200a 20202364 6566696e d((v)) . #defin │ │ │ │ + 0x00d55d40 6520534d 41414f66 66736574 28782c79 e SMAAOffset(x,y │ │ │ │ + 0x00d55d50 29206976 65633228 782c7929 200a2020 ) ivec2(x,y) . │ │ │ │ + 0x00d55d60 636f6e73 74207665 6332206b 41726561 const vec2 kArea │ │ │ │ + 0x00d55d70 5465784d 61784469 7374616e 6365203d TexMaxDistance = │ │ │ │ + 0x00d55d80 20766563 3228534d 41415f41 52454154 vec2(SMAA_AREAT │ │ │ │ + 0x00d55d90 45585f4d 41585f44 49535441 4e43452c EX_MAX_DISTANCE, │ │ │ │ + 0x00d55da0 20534d41 415f4152 45415445 585f4d41 SMAA_AREATEX_MA │ │ │ │ + 0x00d55db0 585f4449 5354414e 4345293b 200a2020 X_DISTANCE); . │ │ │ │ + 0x00d55dc0 636f6e73 7420666c 6f617420 6b416374 const float kAct │ │ │ │ + 0x00d55dd0 69766174 696f6e54 68726573 686f6c64 ivationThreshold │ │ │ │ + 0x00d55de0 203d2030 2e383238 313b200a 2020666c = 0.8281; . fl │ │ │ │ + 0x00d55df0 6f617420 534d4141 53656172 63684c65 oat SMAASearchLe │ │ │ │ + 0x00d55e00 6e677468 28766563 3220652c 20666c6f ngth(vec2 e, flo │ │ │ │ + 0x00d55e10 6174206f 66667365 7429200a 20207b20 at offset) . { │ │ │ │ + 0x00d55e20 0a202020 20766563 32207363 616c6520 . vec2 scale │ │ │ │ + 0x00d55e30 3d20534d 41415f53 45415243 48544558 = SMAA_SEARCHTEX │ │ │ │ + 0x00d55e40 5f53495a 45202a20 76656332 28302e35 _SIZE * vec2(0.5 │ │ │ │ + 0x00d55e50 2c202d31 2e30293b 200a2020 20207665 , -1.0); . ve │ │ │ │ + 0x00d55e60 63322062 69617320 3d20534d 41415f53 c2 bias = SMAA_S │ │ │ │ + 0x00d55e70 45415243 48544558 5f53495a 45202a20 EARCHTEX_SIZE * │ │ │ │ + 0x00d55e80 76656332 286f6666 7365742c 20312e30 vec2(offset, 1.0 │ │ │ │ + 0x00d55e90 293b200a 20202020 7363616c 65202b3d ); . scale += │ │ │ │ + 0x00d55ea0 20766563 32282d31 2e302c20 20312e30 vec2(-1.0, 1.0 │ │ │ │ + 0x00d55eb0 293b200a 20202020 62696173 202b3d20 ); . bias += │ │ │ │ + 0x00d55ec0 76656332 2820302e 352c202d 302e3529 vec2( 0.5, -0.5) │ │ │ │ + 0x00d55ed0 3b200a20 20202073 63616c65 202a3d20 ; . scale *= │ │ │ │ + 0x00d55ee0 312e3020 2f20534d 41415f53 45415243 1.0 / SMAA_SEARC │ │ │ │ + 0x00d55ef0 48544558 5f504143 4b45445f 53495a45 HTEX_PACKED_SIZE │ │ │ │ + 0x00d55f00 3b200a20 20202062 69617320 2a3d2031 ; . bias *= 1 │ │ │ │ + 0x00d55f10 2e30202f 20534d41 415f5345 41524348 .0 / SMAA_SEARCH │ │ │ │ + 0x00d55f20 5445585f 5041434b 45445f53 495a453b TEX_PACKED_SIZE; │ │ │ │ + 0x00d55f30 200a2020 20207265 7475726e 20534d41 . return SMA │ │ │ │ + 0x00d55f40 4153616d 706c654c 6576656c 5a65726f ASampleLevelZero │ │ │ │ + 0x00d55f50 28755f73 6d616153 65617263 682c2073 (u_smaaSearch, s │ │ │ │ + 0x00d55f60 63616c65 202a2065 202b2062 69617329 cale * e + bias) │ │ │ │ + 0x00d55f70 2e723b20 0a20207d 200a2020 666c6f61 .r; . } . floa │ │ │ │ + 0x00d55f80 7420534d 41415365 61726368 584c6566 t SMAASearchXLef │ │ │ │ + 0x00d55f90 74287665 63322074 6578636f 6f72642c t(vec2 texcoord, │ │ │ │ + 0x00d55fa0 20666c6f 61742065 6e642920 0a20207b float end) . { │ │ │ │ + 0x00d55fb0 200a2020 20207665 63322065 203d2076 . vec2 e = v │ │ │ │ + 0x00d55fc0 65633228 302e302c 20312e30 293b200a ec2(0.0, 1.0); . │ │ │ │ + 0x00d55fd0 20202020 534d4141 4c6f6f70 42656769 SMAALoopBegi │ │ │ │ + 0x00d55fe0 6e287465 78636f6f 72642e78 203e2065 n(texcoord.x > e │ │ │ │ + 0x00d55ff0 6e642026 2620652e 67203e20 6b416374 nd && e.g > kAct │ │ │ │ + 0x00d56000 69766174 696f6e54 68726573 686f6c64 ivationThreshold │ │ │ │ + 0x00d56010 20262620 652e7220 3d3d2030 2e302920 && e.r == 0.0) │ │ │ │ + 0x00d56020 0a202020 20202065 203d2053 4d414153 . e = SMAAS │ │ │ │ + 0x00d56030 616d706c 654c6576 656c5a65 726f2875 ampleLevelZero(u │ │ │ │ + 0x00d56040 5f636f6c 6f725465 782c2074 6578636f _colorTex, texco │ │ │ │ + 0x00d56050 6f726429 2e72673b 200a2020 20202020 ord).rg; . │ │ │ │ + 0x00d56060 74657863 6f6f7264 203d2076 65633228 texcoord = vec2( │ │ │ │ + 0x00d56070 2d322e30 2c20302e 3029202a 20755f66 -2.0, 0.0) * u_f │ │ │ │ + 0x00d56080 72616d65 62756666 65724d65 74726963 ramebufferMetric │ │ │ │ + 0x00d56090 732e7879 202b2074 6578636f 6f72643b s.xy + texcoord; │ │ │ │ + 0x00d560a0 200a2020 2020534d 41414c6f 6f70456e . SMAALoopEn │ │ │ │ + 0x00d560b0 64200a20 20202066 6c6f6174 206f6666 d . float off │ │ │ │ + 0x00d560c0 73657420 3d20332e 3235202d 20283235 set = 3.25 - (25 │ │ │ │ + 0x00d560d0 352e3020 2f203132 372e3029 202a2053 5.0 / 127.0) * S │ │ │ │ + 0x00d560e0 4d414153 65617263 684c656e 67746828 MAASearchLength( │ │ │ │ + 0x00d560f0 652c2030 2e30293b 200a2020 20207265 e, 0.0); . re │ │ │ │ + 0x00d56100 7475726e 20755f66 72616d65 62756666 turn u_framebuff │ │ │ │ + 0x00d56110 65724d65 74726963 732e7820 2a206f66 erMetrics.x * of │ │ │ │ + 0x00d56120 66736574 202b2074 6578636f 6f72642e fset + texcoord. │ │ │ │ + 0x00d56130 783b200a 20207d20 0a202066 6c6f6174 x; . } . float │ │ │ │ + 0x00d56140 20534d41 41536561 72636858 52696768 SMAASearchXRigh │ │ │ │ + 0x00d56150 74287665 63322074 6578636f 6f72642c t(vec2 texcoord, │ │ │ │ + 0x00d56160 20666c6f 61742065 6e642920 0a20207b float end) . { │ │ │ │ + 0x00d56170 200a2020 20207665 63322065 203d2076 . vec2 e = v │ │ │ │ + 0x00d56180 65633228 302e302c 20312e30 293b200a ec2(0.0, 1.0); . │ │ │ │ + 0x00d56190 20202020 534d4141 4c6f6f70 42656769 SMAALoopBegi │ │ │ │ + 0x00d561a0 6e287465 78636f6f 72642e78 203c2065 n(texcoord.x < e │ │ │ │ + 0x00d561b0 6e642026 2620652e 67203e20 6b416374 nd && e.g > kAct │ │ │ │ + 0x00d561c0 69766174 696f6e54 68726573 686f6c64 ivationThreshold │ │ │ │ + 0x00d561d0 20262620 652e7220 3d3d2030 2e302920 && e.r == 0.0) │ │ │ │ + 0x00d561e0 0a202020 20202065 203d2053 4d414153 . e = SMAAS │ │ │ │ + 0x00d561f0 616d706c 654c6576 656c5a65 726f2875 ampleLevelZero(u │ │ │ │ + 0x00d56200 5f636f6c 6f725465 782c2074 6578636f _colorTex, texco │ │ │ │ + 0x00d56210 6f726429 2e72673b 200a2020 20202020 ord).rg; . │ │ │ │ + 0x00d56220 74657863 6f6f7264 203d2076 65633228 texcoord = vec2( │ │ │ │ + 0x00d56230 322e302c 20302e30 29202a20 755f6672 2.0, 0.0) * u_fr │ │ │ │ + 0x00d56240 616d6562 75666665 724d6574 72696373 amebufferMetrics │ │ │ │ + 0x00d56250 2e787920 2b207465 78636f6f 72643b20 .xy + texcoord; │ │ │ │ + 0x00d56260 0a202020 20534d41 414c6f6f 70456e64 . SMAALoopEnd │ │ │ │ + 0x00d56270 200a2020 2020666c 6f617420 6f666673 . float offs │ │ │ │ + 0x00d56280 6574203d 20332e32 35202d20 28323535 et = 3.25 - (255 │ │ │ │ + 0x00d56290 2e30202f 20313237 2e302920 2a20534d .0 / 127.0) * SM │ │ │ │ + 0x00d562a0 41415365 61726368 4c656e67 74682865 AASearchLength(e │ │ │ │ + 0x00d562b0 2c20302e 35293b20 0a202020 20726574 , 0.5); . ret │ │ │ │ + 0x00d562c0 75726e20 2d755f66 72616d65 62756666 urn -u_framebuff │ │ │ │ + 0x00d562d0 65724d65 74726963 732e7820 2a206f66 erMetrics.x * of │ │ │ │ + 0x00d562e0 66736574 202b2074 6578636f 6f72642e fset + texcoord. │ │ │ │ + 0x00d562f0 783b200a 20207d20 0a202066 6c6f6174 x; . } . float │ │ │ │ + 0x00d56300 20534d41 41536561 72636859 55702876 SMAASearchYUp(v │ │ │ │ + 0x00d56310 65633220 74657863 6f6f7264 2c20666c ec2 texcoord, fl │ │ │ │ + 0x00d56320 6f617420 656e6429 200a2020 7b200a20 oat end) . { . │ │ │ │ + 0x00d56330 20202076 65633220 65203d20 76656332 vec2 e = vec2 │ │ │ │ + 0x00d56340 28312e30 2c20302e 30293b20 0a202020 (1.0, 0.0); . │ │ │ │ + 0x00d56350 20534d41 414c6f6f 70426567 696e2874 SMAALoopBegin(t │ │ │ │ + 0x00d56360 6578636f 6f72642e 79203e20 656e6420 excoord.y > end │ │ │ │ + 0x00d56370 26262065 2e72203e 206b4163 74697661 && e.r > kActiva │ │ │ │ + 0x00d56380 74696f6e 54687265 73686f6c 64202626 tionThreshold && │ │ │ │ + 0x00d56390 20652e67 203d3d20 302e3029 200a2020 e.g == 0.0) . │ │ │ │ + 0x00d563a0 20202020 65203d20 534d4141 53616d70 e = SMAASamp │ │ │ │ + 0x00d563b0 6c654c65 76656c5a 65726f28 755f636f leLevelZero(u_co │ │ │ │ + 0x00d563c0 6c6f7254 65782c20 74657863 6f6f7264 lorTex, texcoord │ │ │ │ + 0x00d563d0 292e7267 3b200a20 20202020 20746578 ).rg; . tex │ │ │ │ + 0x00d563e0 636f6f72 64203d20 76656332 28302e30 coord = vec2(0.0 │ │ │ │ + 0x00d563f0 2c202d32 2e302920 2a20755f 6672616d , -2.0) * u_fram │ │ │ │ + 0x00d56400 65627566 6665724d 65747269 63732e78 ebufferMetrics.x │ │ │ │ + 0x00d56410 79202b20 74657863 6f6f7264 3b200a20 y + texcoord; . │ │ │ │ + 0x00d56420 20202053 4d41414c 6f6f7045 6e64200a SMAALoopEnd . │ │ │ │ + 0x00d56430 20202020 666c6f61 74206f66 66736574 float offset │ │ │ │ + 0x00d56440 203d2033 2e323520 2d202832 35352e30 = 3.25 - (255.0 │ │ │ │ + 0x00d56450 202f2031 32372e30 29202a20 534d4141 / 127.0) * SMAA │ │ │ │ + 0x00d56460 53656172 63684c65 6e677468 28652e67 SearchLength(e.g │ │ │ │ + 0x00d56470 722c2030 2e30293b 200a2020 20207265 r, 0.0); . re │ │ │ │ + 0x00d56480 7475726e 20755f66 72616d65 62756666 turn u_framebuff │ │ │ │ + 0x00d56490 65724d65 74726963 732e7920 2a206f66 erMetrics.y * of │ │ │ │ + 0x00d564a0 66736574 202b2074 6578636f 6f72642e fset + texcoord. │ │ │ │ + 0x00d564b0 793b200a 20207d20 0a202066 6c6f6174 y; . } . float │ │ │ │ + 0x00d564c0 20534d41 41536561 72636859 446f776e SMAASearchYDown │ │ │ │ + 0x00d564d0 28766563 32207465 78636f6f 72642c20 (vec2 texcoord, │ │ │ │ + 0x00d564e0 666c6f61 7420656e 6429200a 20207b20 float end) . { │ │ │ │ + 0x00d564f0 0a202020 20766563 32206520 3d207665 . vec2 e = ve │ │ │ │ + 0x00d56500 63322831 2e302c20 302e3029 3b200a20 c2(1.0, 0.0); . │ │ │ │ + 0x00d56510 20202053 4d41414c 6f6f7042 6567696e SMAALoopBegin │ │ │ │ + 0x00d56520 28746578 636f6f72 642e7920 3c20656e (texcoord.y < en │ │ │ │ + 0x00d56530 64202626 20652e72 203e206b 41637469 d && e.r > kActi │ │ │ │ + 0x00d56540 76617469 6f6e5468 72657368 6f6c6420 vationThreshold │ │ │ │ + 0x00d56550 26262065 2e67203d 3d20302e 3029200a && e.g == 0.0) . │ │ │ │ + 0x00d56560 20202020 20206520 3d20534d 41415361 e = SMAASa │ │ │ │ + 0x00d56570 6d706c65 4c657665 6c5a6572 6f28755f mpleLevelZero(u_ │ │ │ │ + 0x00d56580 636f6c6f 72546578 2c207465 78636f6f colorTex, texcoo │ │ │ │ + 0x00d56590 7264292e 72673b20 0a202020 20202074 rd).rg; . t │ │ │ │ + 0x00d565a0 6578636f 6f726420 3d207665 63322830 excoord = vec2(0 │ │ │ │ + 0x00d565b0 2e302c20 322e3029 202a2075 5f667261 .0, 2.0) * u_fra │ │ │ │ + 0x00d565c0 6d656275 66666572 4d657472 6963732e mebufferMetrics. │ │ │ │ + 0x00d565d0 7879202b 20746578 636f6f72 643b200a xy + texcoord; . │ │ │ │ + 0x00d565e0 20202020 534d4141 4c6f6f70 456e6420 SMAALoopEnd │ │ │ │ + 0x00d565f0 0a202020 20666c6f 6174206f 66667365 . float offse │ │ │ │ + 0x00d56600 74203d20 332e3235 202d2028 3235352e t = 3.25 - (255. │ │ │ │ + 0x00d56610 30202f20 3132372e 3029202a 20534d41 0 / 127.0) * SMA │ │ │ │ + 0x00d56620 41536561 7263684c 656e6774 6828652e ASearchLength(e. │ │ │ │ + 0x00d56630 67722c20 302e3529 3b200a20 20202072 gr, 0.5); . r │ │ │ │ + 0x00d56640 65747572 6e202d75 5f667261 6d656275 eturn -u_framebu │ │ │ │ + 0x00d56650 66666572 4d657472 6963732e 79202a20 fferMetrics.y * │ │ │ │ + 0x00d56660 6f666673 6574202b 20746578 636f6f72 offset + texcoor │ │ │ │ + 0x00d56670 642e793b 200a2020 7d200a20 20766563 d.y; . } . vec │ │ │ │ + 0x00d56680 3220534d 41414172 65612876 65633220 2 SMAAArea(vec2 │ │ │ │ + 0x00d56690 64697374 2c20666c 6f617420 65312c20 dist, float e1, │ │ │ │ + 0x00d566a0 666c6f61 74206532 29200a20 207b200a float e2) . { . │ │ │ │ + 0x00d566b0 20202020 76656332 20746578 636f6f72 vec2 texcoor │ │ │ │ + 0x00d566c0 64203d20 6b417265 61546578 4d617844 d = kAreaTexMaxD │ │ │ │ + 0x00d566d0 69737461 6e636520 2a20534d 4141526f istance * SMAARo │ │ │ │ + 0x00d566e0 756e6428 342e3020 2a207665 63322865 und(4.0 * vec2(e │ │ │ │ + 0x00d566f0 312c2065 32292920 2b206469 73743b20 1, e2)) + dist; │ │ │ │ + 0x00d56700 0a202020 20746578 636f6f72 64203d20 . texcoord = │ │ │ │ + 0x00d56710 534d4141 5f415245 41544558 5f504958 SMAA_AREATEX_PIX │ │ │ │ + 0x00d56720 454c5f53 495a4520 2a202874 6578636f EL_SIZE * (texco │ │ │ │ + 0x00d56730 6f726420 2b20302e 35293b20 0a202020 ord + 0.5); . │ │ │ │ + 0x00d56740 20726574 75726e20 534d4141 53616d70 return SMAASamp │ │ │ │ + 0x00d56750 6c654c65 76656c5a 65726f28 755f736d leLevelZero(u_sm │ │ │ │ + 0x00d56760 61614172 65612c20 74657863 6f6f7264 aaArea, texcoord │ │ │ │ + 0x00d56770 292e7267 3b200a20 207d200a 2020636f ).rg; . } . co │ │ │ │ + 0x00d56780 6e737420 666c6f61 74206b53 68617065 nst float kShape │ │ │ │ + 0x00d56790 436f6f72 64536361 6c617220 3d203130 CoordScalar = 10 │ │ │ │ + 0x00d567a0 30302e30 3b200a20 20766f69 64206d61 00.0; . void ma │ │ │ │ + 0x00d567b0 696e2829 200a2020 7b200a20 20202076 in() . { . v │ │ │ │ + 0x00d567c0 65633420 77656967 68747320 3d207665 ec4 weights = ve │ │ │ │ + 0x00d567d0 63342830 2e302c20 302e302c 20302e30 c4(0.0, 0.0, 0.0 │ │ │ │ + 0x00d567e0 2c20302e 30293b20 0a202020 20766563 , 0.0); . vec │ │ │ │ + 0x00d567f0 32206520 3d207465 78747572 6528755f 2 e = texture(u_ │ │ │ │ + 0x00d56800 636f6c6f 72546578 2c20765f 636f6f72 colorTex, v_coor │ │ │ │ + 0x00d56810 64732e78 79292e72 673b200a 20202020 ds.xy).rg; . │ │ │ │ + 0x00d56820 69662028 652e6720 3e20302e 3029202f if (e.g > 0.0) / │ │ │ │ + 0x00d56830 2f204564 67652061 74206e6f 72746820 / Edge at north │ │ │ │ + 0x00d56840 0a202020 207b200a 20202020 20207665 . { . ve │ │ │ │ + 0x00d56850 63322064 3b200a20 20202020 20766563 c2 d; . vec │ │ │ │ + 0x00d56860 3320636f 6f726473 3b200a20 20202020 3 coords; . │ │ │ │ + 0x00d56870 20636f6f 7264732e 78203d20 534d4141 coords.x = SMAA │ │ │ │ + 0x00d56880 53656172 6368584c 65667428 765f6f66 SearchXLeft(v_of │ │ │ │ + 0x00d56890 66736574 302e7879 2c20765f 6f666673 fset0.xy, v_offs │ │ │ │ + 0x00d568a0 6574322e 78293b20 0a202020 20202063 et2.x); . c │ │ │ │ + 0x00d568b0 6f6f7264 732e7920 3d20765f 6f666673 oords.y = v_offs │ │ │ │ + 0x00d568c0 6574312e 793b200a 20202020 2020642e et1.y; . d. │ │ │ │ + 0x00d568d0 78203d20 636f6f72 64732e78 3b200a20 x = coords.x; . │ │ │ │ + 0x00d568e0 20202020 20666c6f 61742065 31203d20 float e1 = │ │ │ │ + 0x00d568f0 534d4141 53616d70 6c654c65 76656c5a SMAASampleLevelZ │ │ │ │ + 0x00d56900 65726f28 755f636f 6c6f7254 65782c20 ero(u_colorTex, │ │ │ │ + 0x00d56910 636f6f72 64732e78 79292e72 3b200a20 coords.xy).r; . │ │ │ │ + 0x00d56920 20202020 20636f6f 7264732e 7a203d20 coords.z = │ │ │ │ + 0x00d56930 534d4141 53656172 63685852 69676874 SMAASearchXRight │ │ │ │ + 0x00d56940 28765f6f 66667365 74302e7a 772c2076 (v_offset0.zw, v │ │ │ │ + 0x00d56950 5f6f6666 73657432 2e79293b 200a2020 _offset2.y); . │ │ │ │ + 0x00d56960 20202020 642e7920 3d20636f 6f726473 d.y = coords │ │ │ │ + 0x00d56970 2e7a3b20 0a202020 20202076 65633220 .z; . vec2 │ │ │ │ + 0x00d56980 7a7a203d 20755f66 72616d65 62756666 zz = u_framebuff │ │ │ │ + 0x00d56990 65724d65 74726963 732e7a7a 3b200a20 erMetrics.zz; . │ │ │ │ + 0x00d569a0 20202020 2064203d 20616273 28534d41 d = abs(SMA │ │ │ │ + 0x00d569b0 41526f75 6e64287a 7a202a20 64202d20 ARound(zz * d - │ │ │ │ + 0x00d569c0 765f636f 6f726473 2e7a7a29 293b200a v_coords.zz)); . │ │ │ │ + 0x00d569d0 20202020 20207665 63322073 7172745f vec2 sqrt_ │ │ │ │ + 0x00d569e0 64203d20 73717274 2864293b 200a2020 d = sqrt(d); . │ │ │ │ + 0x00d569f0 20202020 666c6f61 74206532 203d2053 float e2 = S │ │ │ │ + 0x00d56a00 4d414153 616d706c 654c6576 656c5a65 MAASampleLevelZe │ │ │ │ + 0x00d56a10 726f4f66 66736574 28755f63 6f6c6f72 roOffset(u_color │ │ │ │ + 0x00d56a20 5465782c 20636f6f 7264732e 7a792c20 Tex, coords.zy, │ │ │ │ + 0x00d56a30 534d4141 4f666673 65742831 2c203029 SMAAOffset(1, 0) │ │ │ │ + 0x00d56a40 292e723b 200a2020 20202020 77656967 ).r; . weig │ │ │ │ + 0x00d56a50 6874732e 7267203d 20534d41 41417265 hts.rg = SMAAAre │ │ │ │ + 0x00d56a60 61287371 72745f64 2c206531 2c206532 a(sqrt_d, e1, e2 │ │ │ │ + 0x00d56a70 293b200a 20202020 7d200a20 20202069 ); . } . i │ │ │ │ + 0x00d56a80 66202865 2e72203e 20302e30 29202f2f f (e.r > 0.0) // │ │ │ │ + 0x00d56a90 20456467 65206174 20776573 74200a20 Edge at west . │ │ │ │ + 0x00d56aa0 2020207b 200a2020 20202020 76656332 { . vec2 │ │ │ │ + 0x00d56ab0 20643b20 0a202020 20202076 65633320 d; . vec3 │ │ │ │ + 0x00d56ac0 636f6f72 64733b20 0a202020 20202063 coords; . c │ │ │ │ + 0x00d56ad0 6f6f7264 732e7920 3d20534d 41415365 oords.y = SMAASe │ │ │ │ + 0x00d56ae0 61726368 59557028 765f6f66 66736574 archYUp(v_offset │ │ │ │ + 0x00d56af0 312e7879 2c20765f 6f666673 6574322e 1.xy, v_offset2. │ │ │ │ + 0x00d56b00 7a293b20 0a202020 20202063 6f6f7264 z); . coord │ │ │ │ + 0x00d56b10 732e7820 3d20765f 6f666673 6574302e s.x = v_offset0. │ │ │ │ + 0x00d56b20 783b200a 20202020 2020642e 78203d20 x; . d.x = │ │ │ │ + 0x00d56b30 636f6f72 64732e79 3b200a20 20202020 coords.y; . │ │ │ │ + 0x00d56b40 20666c6f 61742065 31203d20 534d4141 float e1 = SMAA │ │ │ │ + 0x00d56b50 53616d70 6c654c65 76656c5a 65726f28 SampleLevelZero( │ │ │ │ + 0x00d56b60 755f636f 6c6f7254 65782c20 636f6f72 u_colorTex, coor │ │ │ │ + 0x00d56b70 64732e78 79292e67 3b200a20 20202020 ds.xy).g; . │ │ │ │ + 0x00d56b80 20636f6f 7264732e 7a203d20 534d4141 coords.z = SMAA │ │ │ │ + 0x00d56b90 53656172 63685944 6f776e28 765f6f66 SearchYDown(v_of │ │ │ │ + 0x00d56ba0 66736574 312e7a77 2c20765f 6f666673 fset1.zw, v_offs │ │ │ │ + 0x00d56bb0 6574322e 77293b20 0a202020 20202064 et2.w); . d │ │ │ │ + 0x00d56bc0 2e79203d 20636f6f 7264732e 7a3b200a .y = coords.z; . │ │ │ │ + 0x00d56bd0 20202020 20207665 63322077 77203d20 vec2 ww = │ │ │ │ + 0x00d56be0 755f6672 616d6562 75666665 724d6574 u_framebufferMet │ │ │ │ + 0x00d56bf0 72696373 2e77773b 200a2020 20202020 rics.ww; . │ │ │ │ + 0x00d56c00 64203d20 61627328 534d4141 526f756e d = abs(SMAARoun │ │ │ │ + 0x00d56c10 64287777 202a2064 202d2076 5f636f6f d(ww * d - v_coo │ │ │ │ + 0x00d56c20 7264732e 77772929 3b200a20 20202020 rds.ww)); . │ │ │ │ + 0x00d56c30 20766563 32207371 72745f64 203d2073 vec2 sqrt_d = s │ │ │ │ + 0x00d56c40 71727428 64293b20 0a202020 20202066 qrt(d); . f │ │ │ │ + 0x00d56c50 6c6f6174 20653220 3d20534d 41415361 loat e2 = SMAASa │ │ │ │ + 0x00d56c60 6d706c65 4c657665 6c5a6572 6f4f6666 mpleLevelZeroOff │ │ │ │ + 0x00d56c70 73657428 755f636f 6c6f7254 65782c20 set(u_colorTex, │ │ │ │ + 0x00d56c80 636f6f72 64732e78 7a2c2053 4d41414f coords.xz, SMAAO │ │ │ │ + 0x00d56c90 66667365 7428302c 20312929 2e673b20 ffset(0, 1)).g; │ │ │ │ + 0x00d56ca0 0a202020 20202077 65696768 74732e62 . weights.b │ │ │ │ + 0x00d56cb0 61203d20 534d4141 41726561 28737172 a = SMAAArea(sqr │ │ │ │ + 0x00d56cc0 745f642c 2065312c 20653229 3b200a20 t_d, e1, e2); . │ │ │ │ + 0x00d56cd0 2020207d 200a2020 2020765f 46726167 } . v_Frag │ │ │ │ + 0x00d56ce0 436f6c6f 72203d20 77656967 6874733b Color = weights; │ │ │ │ + 0x00d56cf0 200a2020 7d200a00 00000000 00000000 . } .......... │ │ │ │ + 0x00d56d00 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d56d10 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d56d20 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d56d30 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d56d40 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d56d50 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d56d60 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d56d70 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d56d80 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d56d90 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d56da0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d56db0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d56dc0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d56dd0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d56de0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d56df0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d56e00 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d56e10 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d56e20 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d56e30 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d56e40 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d56e50 63332061 5f706f73 6974696f 6e3b200a c3 a_position; . │ │ │ │ + 0x00d56e60 2020696e 20766563 3320615f 6e6f726d in vec3 a_norm │ │ │ │ + 0x00d56e70 616c3b20 0a202069 6e207665 63322061 al; . in vec2 a │ │ │ │ + 0x00d56e80 5f636f6c 6f725465 78436f6f 7264733b _colorTexCoords; │ │ │ │ + 0x00d56e90 200a2020 6f757420 76656332 20765f63 . out vec2 v_c │ │ │ │ + 0x00d56ea0 6f6c6f72 54657843 6f6f7264 733b200a olorTexCoords; . │ │ │ │ + 0x00d56eb0 20206f75 7420666c 6f617420 765f696e out float v_in │ │ │ │ + 0x00d56ec0 74656e73 6974793b 200a2020 756e6966 tensity; . unif │ │ │ │ + 0x00d56ed0 6f726d20 6d617434 20755f6d 6f64656c orm mat4 u_model │ │ │ │ + 0x00d56ee0 56696577 3b200a20 20756e69 666f726d View; . uniform │ │ │ │ + 0x00d56ef0 206d6174 3420755f 70726f6a 65637469 mat4 u_projecti │ │ │ │ + 0x00d56f00 6f6e3b20 0a202075 6e69666f 726d206d on; . uniform m │ │ │ │ + 0x00d56f10 61743420 755f7069 766f7454 72616e73 at4 u_pivotTrans │ │ │ │ + 0x00d56f20 666f726d 3b200a20 20756e69 666f726d form; . uniform │ │ │ │ + 0x00d56f30 20766563 3220755f 636f6e74 72617374 vec2 u_contrast │ │ │ │ + 0x00d56f40 47616d6d 613b200a 2020756e 69666f72 Gamma; . unifor │ │ │ │ + 0x00d56f50 6d20666c 6f617420 755f6f70 61636974 m float u_opacit │ │ │ │ + 0x00d56f60 793b200a 2020756e 69666f72 6d20666c y; . uniform fl │ │ │ │ + 0x00d56f70 6f617420 755f7a53 63616c65 3b200a20 oat u_zScale; . │ │ │ │ + 0x00d56f80 20756e69 666f726d 20666c6f 61742075 uniform float u │ │ │ │ + 0x00d56f90 5f696e74 6572706f 6c617469 6f6e3b20 _interpolation; │ │ │ │ + 0x00d56fa0 0a202075 6e69666f 726d2066 6c6f6174 . uniform float │ │ │ │ + 0x00d56fb0 20755f69 734f7574 6c696e65 50617373 u_isOutlinePass │ │ │ │ + 0x00d56fc0 3b200a20 20636f6e 73742076 65633420 ; . const vec4 │ │ │ │ + 0x00d56fd0 6b4e6f72 6d616c69 7a65644c 69676874 kNormalizedLight │ │ │ │ + 0x00d56fe0 44697220 3d207665 63342830 2e333136 Dir = vec4(0.316 │ │ │ │ + 0x00d56ff0 322c2030 2e302c20 302e3934 38362c20 2, 0.0, 0.9486, │ │ │ │ + 0x00d57000 302e3029 3b200a20 20636f6e 73742066 0.0); . const f │ │ │ │ + 0x00d57010 6c6f6174 206b5368 61706543 6f6f7264 loat kShapeCoord │ │ │ │ + 0x00d57020 5363616c 6172203d 20313030 302e303b Scalar = 1000.0; │ │ │ │ + 0x00d57030 200a2020 76656334 20617070 6c795069 . vec4 applyPi │ │ │ │ + 0x00d57040 766f7454 72616e73 666f726d 28766563 votTransform(vec │ │ │ │ + 0x00d57050 34207069 766f742c 206d6174 34207069 4 pivot, mat4 pi │ │ │ │ + 0x00d57060 766f7454 72616e73 666f726d 2c20666c votTransform, fl │ │ │ │ + 0x00d57070 6f617420 7069766f 74526561 6c5a2920 oat pivotRealZ) │ │ │ │ + 0x00d57080 0a20207b 200a2020 20207665 63342074 . { . vec4 t │ │ │ │ + 0x00d57090 72616e73 666f726d 65645069 766f7420 ransformedPivot │ │ │ │ + 0x00d570a0 3d207069 766f743b 200a2020 2020666c = pivot; . fl │ │ │ │ + 0x00d570b0 6f617420 77203d20 7472616e 73666f72 oat w = transfor │ │ │ │ + 0x00d570c0 6d656450 69766f74 2e773b20 0a202020 medPivot.w; . │ │ │ │ + 0x00d570d0 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ + 0x00d570e0 742e7879 77203d20 28706976 6f745472 t.xyw = (pivotTr │ │ │ │ + 0x00d570f0 616e7366 6f726d20 2a207665 63342874 ansform * vec4(t │ │ │ │ + 0x00d57100 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ + 0x00d57110 78792c20 7069766f 74526561 6c5a2c20 xy, pivotRealZ, │ │ │ │ + 0x00d57120 7729292e 7879773b 200a2020 20207472 w)).xyw; . tr │ │ │ │ + 0x00d57130 616e7366 6f726d65 64506976 6f742e7a ansformedPivot.z │ │ │ │ + 0x00d57140 202a3d20 7472616e 73666f72 6d656450 *= transformedP │ │ │ │ + 0x00d57150 69766f74 2e77202f 20773b20 0a202023 ivot.w / w; . # │ │ │ │ + 0x00d57160 69666465 66205655 4c4b414e 200a2020 ifdef VULKAN . │ │ │ │ + 0x00d57170 20207472 616e7366 6f726d65 64506976 transformedPiv │ │ │ │ + 0x00d57180 6f742e79 203d202d 7472616e 73666f72 ot.y = -transfor │ │ │ │ + 0x00d57190 6d656450 69766f74 2e793b20 0a202020 medPivot.y; . │ │ │ │ + 0x00d571a0 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ + 0x00d571b0 742e7a20 3d202874 72616e73 666f726d t.z = (transform │ │ │ │ + 0x00d571c0 65645069 766f742e 7a20202b 20747261 edPivot.z + tra │ │ │ │ + 0x00d571d0 6e73666f 726d6564 5069766f 742e7729 nsformedPivot.w) │ │ │ │ + 0x00d571e0 202f2032 2e303b20 0a202023 656e6469 / 2.0; . #endi │ │ │ │ + 0x00d571f0 66200a20 20202072 65747572 6e207472 f . return tr │ │ │ │ + 0x00d57200 616e7366 6f726d65 64506976 6f743b20 ansformedPivot; │ │ │ │ + 0x00d57210 0a20207d 200a2020 76656334 20617070 . } . vec4 app │ │ │ │ + 0x00d57220 6c794269 6c6c626f 61726450 69766f74 lyBillboardPivot │ │ │ │ + 0x00d57230 5472616e 73666f72 6d287665 63342070 Transform(vec4 p │ │ │ │ + 0x00d57240 69766f74 2c206d61 74342070 69766f74 ivot, mat4 pivot │ │ │ │ + 0x00d57250 5472616e 73666f72 6d2c2066 6c6f6174 Transform, float │ │ │ │ + 0x00d57260 20706976 6f745265 616c5a2c 20766563 pivotRealZ, vec │ │ │ │ + 0x00d57270 32206f66 66736574 29200a20 207b200a 2 offset) . { . │ │ │ │ + 0x00d57280 20202020 666c6f61 74206c6f 6769635a float logicZ │ │ │ │ + 0x00d57290 203d2070 69766f74 2e7a202f 20706976 = pivot.z / piv │ │ │ │ + 0x00d572a0 6f742e77 3b200a20 20202076 65633420 ot.w; . vec4 │ │ │ │ + 0x00d572b0 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ + 0x00d572c0 203d2070 69766f74 5472616e 73666f72 = pivotTransfor │ │ │ │ + 0x00d572d0 6d202a20 76656334 28706976 6f742e78 m * vec4(pivot.x │ │ │ │ + 0x00d572e0 792c2070 69766f74 5265616c 5a2c2070 y, pivotRealZ, p │ │ │ │ + 0x00d572f0 69766f74 2e77293b 200a2020 20207665 ivot.w); . ve │ │ │ │ + 0x00d57300 63342073 63616c65 203d2070 69766f74 c4 scale = pivot │ │ │ │ + 0x00d57310 5472616e 73666f72 6d202a20 76656334 Transform * vec4 │ │ │ │ + 0x00d57320 28312e30 2c202d31 2e302c20 302e302c (1.0, -1.0, 0.0, │ │ │ │ + 0x00d57330 20312e30 293b200a 20202020 76656334 1.0); . vec4 │ │ │ │ + 0x00d57340 20706f73 6974696f 6e203d20 76656334 position = vec4 │ │ │ │ + 0x00d57350 28747261 6e73666f 726d6564 5069766f (transformedPivo │ │ │ │ + 0x00d57360 742e7879 202f2074 72616e73 666f726d t.xy / transform │ │ │ │ + 0x00d57370 65645069 766f742e 772c206c 6f676963 edPivot.w, logic │ │ │ │ + 0x00d57380 5a2c2031 2e302920 2b207665 6334286f Z, 1.0) + vec4(o │ │ │ │ + 0x00d57390 66667365 74202f20 7363616c 652e7720 ffset / scale.w │ │ │ │ + 0x00d573a0 2a207363 616c652e 782c2030 2e302c20 * scale.x, 0.0, │ │ │ │ + 0x00d573b0 302e3029 3b200a20 20236966 64656620 0.0); . #ifdef │ │ │ │ + 0x00d573c0 56554c4b 414e200a 20202020 706f7369 VULKAN . posi │ │ │ │ + 0x00d573d0 74696f6e 2e79203d 202d706f 73697469 tion.y = -positi │ │ │ │ + 0x00d573e0 6f6e2e79 3b200a20 20202070 6f736974 on.y; . posit │ │ │ │ + 0x00d573f0 696f6e2e 7a203d20 28706f73 6974696f ion.z = (positio │ │ │ │ + 0x00d57400 6e2e7a20 202b2070 6f736974 696f6e2e n.z + position. │ │ │ │ + 0x00d57410 7729202f 20322e30 3b200a20 2023656e w) / 2.0; . #en │ │ │ │ + 0x00d57420 64696620 0a202020 20726574 75726e20 dif . return │ │ │ │ + 0x00d57430 706f7369 74696f6e 3b200a20 207d200a position; . } . │ │ │ │ + 0x00d57440 20207665 63322063 616c634c 696e6554 vec2 calcLineT │ │ │ │ + 0x00d57450 72616e73 666f726d 65644178 6973506f ransformedAxisPo │ │ │ │ + 0x00d57460 73287665 6332206f 72696769 6e616c41 s(vec2 originalA │ │ │ │ + 0x00d57470 78697350 6f732c20 76656332 20736869 xisPos, vec2 shi │ │ │ │ + 0x00d57480 66746564 506f732c 206d6174 34206d6f ftedPos, mat4 mo │ │ │ │ + 0x00d57490 64656c56 6965772c 20666c6f 61742068 delView, float h │ │ │ │ + 0x00d574a0 616c6657 69647468 29200a20 207b200a alfWidth) . { . │ │ │ │ + 0x00d574b0 20202020 76656332 2070203d 20287665 vec2 p = (ve │ │ │ │ + 0x00d574c0 63342873 68696674 6564506f 732c2030 c4(shiftedPos, 0 │ │ │ │ + 0x00d574d0 2e302c20 312e3029 202a206d 6f64656c .0, 1.0) * model │ │ │ │ + 0x00d574e0 56696577 292e7879 3b200a20 20202076 View).xy; . v │ │ │ │ + 0x00d574f0 65633220 64203d20 70202d20 6f726967 ec2 d = p - orig │ │ │ │ + 0x00d57500 696e616c 41786973 506f733b 200a2020 inalAxisPos; . │ │ │ │ + 0x00d57510 20206966 2028646f 7428642c 20642920 if (dot(d, d) │ │ │ │ + 0x00d57520 213d2030 2e302920 0a202020 20202072 != 0.0) . r │ │ │ │ + 0x00d57530 65747572 6e206f72 6967696e 616c4178 eturn originalAx │ │ │ │ + 0x00d57540 6973506f 73202b20 6e6f726d 616c697a isPos + normaliz │ │ │ │ + 0x00d57550 65286429 202a2068 616c6657 69647468 e(d) * halfWidth │ │ │ │ + 0x00d57560 3b200a20 20202065 6c736520 0a202020 ; . else . │ │ │ │ + 0x00d57570 20202072 65747572 6e206f72 6967696e return origin │ │ │ │ + 0x00d57580 616c4178 6973506f 733b200a 20207d20 alAxisPos; . } │ │ │ │ + 0x00d57590 0a202076 6f696420 6d61696e 2829200a . void main() . │ │ │ │ + 0x00d575a0 20207b20 0a202020 20766563 3420706f { . vec4 po │ │ │ │ + 0x00d575b0 73203d20 76656334 28615f70 6f736974 s = vec4(a_posit │ │ │ │ + 0x00d575c0 696f6e2c 20312e30 29202a20 755f6d6f ion, 1.0) * u_mo │ │ │ │ + 0x00d575d0 64656c56 6965773b 200a2020 20207665 delView; . ve │ │ │ │ + 0x00d575e0 6334206e 6f726d61 6c203d20 76656334 c4 normal = vec4 │ │ │ │ + 0x00d575f0 28615f70 6f736974 696f6e20 2b20615f (a_position + a_ │ │ │ │ + 0x00d57600 6e6f726d 616c2c20 312e3029 202a2075 normal, 1.0) * u │ │ │ │ + 0x00d57610 5f6d6f64 656c5669 65773b20 0a202020 _modelView; . │ │ │ │ + 0x00d57620 206e6f72 6d616c2e 78797720 3d20286e normal.xyw = (n │ │ │ │ + 0x00d57630 6f726d61 6c202a20 755f7072 6f6a6563 ormal * u_projec │ │ │ │ + 0x00d57640 74696f6e 292e7879 773b200a 20202020 tion).xyw; . │ │ │ │ + 0x00d57650 6e6f726d 616c2e7a 203d206e 6f726d61 normal.z = norma │ │ │ │ + 0x00d57660 6c2e7a20 2a20755f 7a536361 6c653b20 l.z * u_zScale; │ │ │ │ + 0x00d57670 0a202020 20706f73 2e787977 203d2028 . pos.xyw = ( │ │ │ │ + 0x00d57680 706f7320 2a20755f 70726f6a 65637469 pos * u_projecti │ │ │ │ + 0x00d57690 6f6e292e 7879773b 200a2020 2020706f on).xyw; . po │ │ │ │ + 0x00d576a0 732e7a20 3d20615f 706f7369 74696f6e s.z = a_position │ │ │ │ + 0x00d576b0 2e7a202a 20755f7a 5363616c 653b200a .z * u_zScale; . │ │ │ │ + 0x00d576c0 20202020 76656334 206e6f72 6d446972 vec4 normDir │ │ │ │ + 0x00d576d0 203d206e 6f726d61 6c202d20 706f733b = normal - pos; │ │ │ │ + 0x00d576e0 200a2020 20206966 2028646f 74286e6f . if (dot(no │ │ │ │ + 0x00d576f0 726d4469 722c206e 6f726d44 69722920 rmDir, normDir) │ │ │ │ + 0x00d57700 213d2030 2e302920 0a202020 20202076 != 0.0) . v │ │ │ │ + 0x00d57710 5f696e74 656e7369 7479203d 206d6178 _intensity = max │ │ │ │ + 0x00d57720 28302e30 2c202d64 6f74286b 4e6f726d (0.0, -dot(kNorm │ │ │ │ + 0x00d57730 616c697a 65644c69 67687444 69722c20 alizedLightDir, │ │ │ │ + 0x00d57740 6e6f726d 616c697a 65286e6f 726d4469 normalize(normDi │ │ │ │ + 0x00d57750 72292929 3b200a20 20202065 6c736520 r))); . else │ │ │ │ + 0x00d57760 0a202020 20202076 5f696e74 656e7369 . v_intensi │ │ │ │ + 0x00d57770 7479203d 20302e30 3b200a20 20202067 ty = 0.0; . g │ │ │ │ + 0x00d57780 6c5f506f 73697469 6f6e203d 20755f70 l_Position = u_p │ │ │ │ + 0x00d57790 69766f74 5472616e 73666f72 6d202a20 ivotTransform * │ │ │ │ + 0x00d577a0 706f733b 200a2020 23696664 65662056 pos; . #ifdef V │ │ │ │ + 0x00d577b0 554c4b41 4e200a20 20202067 6c5f506f ULKAN . gl_Po │ │ │ │ + 0x00d577c0 73697469 6f6e2e79 203d202d 676c5f50 sition.y = -gl_P │ │ │ │ + 0x00d577d0 6f736974 696f6e2e 793b200a 20202020 osition.y; . │ │ │ │ + 0x00d577e0 676c5f50 6f736974 696f6e2e 7a203d20 gl_Position.z = │ │ │ │ + 0x00d577f0 28676c5f 506f7369 74696f6e 2e7a2020 (gl_Position.z │ │ │ │ + 0x00d57800 2b20676c 5f506f73 6974696f 6e2e7729 + gl_Position.w) │ │ │ │ + 0x00d57810 202a2030 2e353b20 0a202023 656e6469 * 0.5; . #endi │ │ │ │ + 0x00d57820 66200a20 20202076 5f636f6c 6f725465 f . v_colorTe │ │ │ │ + 0x00d57830 78436f6f 72647320 3d20615f 636f6c6f xCoords = a_colo │ │ │ │ + 0x00d57840 72546578 436f6f72 64733b20 0a20207d rTexCoords; . } │ │ │ │ + 0x00d57850 200a0000 00000000 00000000 00000000 ............... │ │ │ │ + 0x00d57860 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d57870 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d57880 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d57890 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d578a0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d578b0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d578c0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d578d0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d578e0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d578f0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d57900 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d57910 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d57920 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d57930 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d57940 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d57950 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d57960 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d57970 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d57980 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d57990 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d579a0 2023656e 64696620 0a20206f 75742076 #endif . out v │ │ │ │ + 0x00d579b0 65633420 765f4672 6167436f 6c6f723b ec4 v_FragColor; │ │ │ │ + 0x00d579c0 200a2020 756e6966 6f726d20 76656334 . uniform vec4 │ │ │ │ + 0x00d579d0 20755f63 6f6c6f72 3b200a20 20636f6e u_color; . con │ │ │ │ + 0x00d579e0 73742066 6c6f6174 206b5368 61706543 st float kShapeC │ │ │ │ + 0x00d579f0 6f6f7264 5363616c 6172203d 20313030 oordScalar = 100 │ │ │ │ + 0x00d57a00 302e303b 200a2020 766f6964 206d6169 0.0; . void mai │ │ │ │ + 0x00d57a10 6e282920 0a20207b 200a2020 2020765f n() . { . v_ │ │ │ │ + 0x00d57a20 46726167 436f6c6f 72203d20 755f636f FragColor = u_co │ │ │ │ + 0x00d57a30 6c6f723b 200a2020 7d200a00 00000000 lor; . } ...... │ │ │ │ + 0x00d57a40 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d57a50 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d57a60 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d57a70 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d57a80 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d57a90 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d57aa0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d57ab0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d57ac0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d57ad0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d57ae0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d57af0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d57b00 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d57b10 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d57b20 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d57b30 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d57b40 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d57b50 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d57b60 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d57b70 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d57b80 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d57b90 63322076 5f636f6c 6f725465 78436f6f c2 v_colorTexCoo │ │ │ │ + 0x00d57ba0 7264733b 200a2020 696e2066 6c6f6174 rds; . in float │ │ │ │ + 0x00d57bb0 20765f69 6e74656e 73697479 3b200a20 v_intensity; . │ │ │ │ + 0x00d57bc0 206f7574 20766563 3420765f 46726167 out vec4 v_Frag │ │ │ │ + 0x00d57bd0 436f6c6f 723b200a 2020756e 69666f72 Color; . unifor │ │ │ │ + 0x00d57be0 6d206d61 74342075 5f6d6f64 656c5669 m mat4 u_modelVi │ │ │ │ + 0x00d57bf0 65773b20 0a202075 6e69666f 726d206d ew; . uniform m │ │ │ │ + 0x00d57c00 61743420 755f7072 6f6a6563 74696f6e at4 u_projection │ │ │ │ + 0x00d57c10 3b200a20 20756e69 666f726d 206d6174 ; . uniform mat │ │ │ │ + 0x00d57c20 3420755f 7069766f 74547261 6e73666f 4 u_pivotTransfo │ │ │ │ + 0x00d57c30 726d3b20 0a202075 6e69666f 726d2076 rm; . uniform v │ │ │ │ + 0x00d57c40 65633220 755f636f 6e747261 73744761 ec2 u_contrastGa │ │ │ │ + 0x00d57c50 6d6d613b 200a2020 756e6966 6f726d20 mma; . uniform │ │ │ │ + 0x00d57c60 666c6f61 7420755f 6f706163 6974793b float u_opacity; │ │ │ │ + 0x00d57c70 200a2020 756e6966 6f726d20 666c6f61 . uniform floa │ │ │ │ + 0x00d57c80 7420755f 7a536361 6c653b20 0a202075 t u_zScale; . u │ │ │ │ + 0x00d57c90 6e69666f 726d2066 6c6f6174 20755f69 niform float u_i │ │ │ │ + 0x00d57ca0 6e746572 706f6c61 74696f6e 3b200a20 nterpolation; . │ │ │ │ + 0x00d57cb0 20756e69 666f726d 20666c6f 61742075 uniform float u │ │ │ │ + 0x00d57cc0 5f69734f 75746c69 6e655061 73733b20 _isOutlinePass; │ │ │ │ + 0x00d57cd0 0a202075 6e69666f 726d2073 616d706c . uniform sampl │ │ │ │ + 0x00d57ce0 65723244 20755f63 6f6c6f72 5465783b er2D u_colorTex; │ │ │ │ + 0x00d57cf0 200a2020 636f6e73 7420666c 6f617420 . const float │ │ │ │ + 0x00d57d00 6b536861 7065436f 6f726453 63616c61 kShapeCoordScala │ │ │ │ + 0x00d57d10 72203d20 31303030 2e303b20 0a202076 r = 1000.0; . v │ │ │ │ + 0x00d57d20 6f696420 6d61696e 2829200a 20207b20 oid main() . { │ │ │ │ + 0x00d57d30 0a202020 20766563 34206669 6e616c43 . vec4 finalC │ │ │ │ + 0x00d57d40 6f6c6f72 203d2076 65633428 74657874 olor = vec4(text │ │ │ │ + 0x00d57d50 75726528 755f636f 6c6f7254 65782c20 ure(u_colorTex, │ │ │ │ + 0x00d57d60 765f636f 6c6f7254 6578436f 6f726473 v_colorTexCoords │ │ │ │ + 0x00d57d70 292e7267 622c2075 5f6f7061 63697479 ).rgb, u_opacity │ │ │ │ + 0x00d57d80 293b200a 20202020 765f4672 6167436f ); . v_FragCo │ │ │ │ + 0x00d57d90 6c6f7220 3d207665 63342828 765f696e lor = vec4((v_in │ │ │ │ + 0x00d57da0 74656e73 69747920 2a20302e 32202b20 tensity * 0.2 + │ │ │ │ + 0x00d57db0 302e3829 202a2066 696e616c 436f6c6f 0.8) * finalColo │ │ │ │ + 0x00d57dc0 722e7267 622c2066 696e616c 436f6c6f r.rgb, finalColo │ │ │ │ + 0x00d57dd0 722e6129 3b200a20 207d200a 00000000 r.a); . } ..... │ │ │ │ 0x00d57de0 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ 0x00d57df0 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ 0x00d57e00 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ 0x00d57e10 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ 0x00d57e20 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ 0x00d57e30 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ 0x00d57e40 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ @@ -58865,1205 +58865,1205 @@ │ │ │ │ 0x00d57ee0 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ 0x00d57ef0 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ 0x00d57f00 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ 0x00d57f10 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ 0x00d57f20 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ 0x00d57f30 63332061 5f706f73 6974696f 6e3b200a c3 a_position; . │ │ │ │ 0x00d57f40 2020696e 20766563 3220615f 636f6c6f in vec2 a_colo │ │ │ │ - 0x00d57f50 72546578 436f6f72 643b200a 20206f75 rTexCoord; . ou │ │ │ │ - 0x00d57f60 74207665 63322076 5f636f6c 6f725465 t vec2 v_colorTe │ │ │ │ - 0x00d57f70 78436f6f 72643b20 0a202075 6e69666f xCoord; . unifo │ │ │ │ - 0x00d57f80 726d206d 61743420 755f6d6f 64656c56 rm mat4 u_modelV │ │ │ │ - 0x00d57f90 6965773b 200a2020 756e6966 6f726d20 iew; . uniform │ │ │ │ - 0x00d57fa0 6d617434 20755f70 726f6a65 6374696f mat4 u_projectio │ │ │ │ - 0x00d57fb0 6e3b200a 2020756e 69666f72 6d206d61 n; . uniform ma │ │ │ │ - 0x00d57fc0 74342075 5f706976 6f745472 616e7366 t4 u_pivotTransf │ │ │ │ - 0x00d57fd0 6f726d3b 200a2020 756e6966 6f726d20 orm; . uniform │ │ │ │ - 0x00d57fe0 76656334 20755f74 72616666 69635061 vec4 u_trafficPa │ │ │ │ - 0x00d57ff0 72616d73 3b200a20 20756e69 666f726d rams; . uniform │ │ │ │ - 0x00d58000 20766563 3420755f 6f75746c 696e6543 vec4 u_outlineC │ │ │ │ - 0x00d58010 6f6c6f72 3b200a20 20756e69 666f726d olor; . uniform │ │ │ │ - 0x00d58020 20766563 3420755f 6c696768 74417272 vec4 u_lightArr │ │ │ │ - 0x00d58030 6f77436f 6c6f723b 200a2020 756e6966 owColor; . unif │ │ │ │ - 0x00d58040 6f726d20 76656334 20755f64 61726b41 orm vec4 u_darkA │ │ │ │ - 0x00d58050 72726f77 436f6c6f 723b200a 2020756e rrowColor; . un │ │ │ │ - 0x00d58060 69666f72 6d20666c 6f617420 755f6f75 iform float u_ou │ │ │ │ - 0x00d58070 746c696e 653b200a 2020756e 69666f72 tline; . unifor │ │ │ │ - 0x00d58080 6d20666c 6f617420 755f6f70 61636974 m float u_opacit │ │ │ │ - 0x00d58090 793b200a 2020636f 6e737420 666c6f61 y; . const floa │ │ │ │ - 0x00d580a0 74206b53 68617065 436f6f72 64536361 t kShapeCoordSca │ │ │ │ - 0x00d580b0 6c617220 3d203130 30302e30 3b200a20 lar = 1000.0; . │ │ │ │ - 0x00d580c0 20766563 34206170 706c7950 69766f74 vec4 applyPivot │ │ │ │ - 0x00d580d0 5472616e 73666f72 6d287665 63342070 Transform(vec4 p │ │ │ │ - 0x00d580e0 69766f74 2c206d61 74342070 69766f74 ivot, mat4 pivot │ │ │ │ - 0x00d580f0 5472616e 73666f72 6d2c2066 6c6f6174 Transform, float │ │ │ │ - 0x00d58100 20706976 6f745265 616c5a29 200a2020 pivotRealZ) . │ │ │ │ - 0x00d58110 7b200a20 20202076 65633420 7472616e { . vec4 tran │ │ │ │ - 0x00d58120 73666f72 6d656450 69766f74 203d2070 sformedPivot = p │ │ │ │ - 0x00d58130 69766f74 3b200a20 20202066 6c6f6174 ivot; . float │ │ │ │ - 0x00d58140 2077203d 20747261 6e73666f 726d6564 w = transformed │ │ │ │ - 0x00d58150 5069766f 742e773b 200a2020 20207472 Pivot.w; . tr │ │ │ │ - 0x00d58160 616e7366 6f726d65 64506976 6f742e78 ansformedPivot.x │ │ │ │ - 0x00d58170 7977203d 20287069 766f7454 72616e73 yw = (pivotTrans │ │ │ │ - 0x00d58180 666f726d 202a2076 65633428 7472616e form * vec4(tran │ │ │ │ - 0x00d58190 73666f72 6d656450 69766f74 2e78792c sformedPivot.xy, │ │ │ │ - 0x00d581a0 20706976 6f745265 616c5a2c 20772929 pivotRealZ, w)) │ │ │ │ - 0x00d581b0 2e787977 3b200a20 20202074 72616e73 .xyw; . trans │ │ │ │ - 0x00d581c0 666f726d 65645069 766f742e 7a202a3d formedPivot.z *= │ │ │ │ - 0x00d581d0 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ - 0x00d581e0 742e7720 2f20773b 200a2020 23696664 t.w / w; . #ifd │ │ │ │ - 0x00d581f0 65662056 554c4b41 4e200a20 20202074 ef VULKAN . t │ │ │ │ - 0x00d58200 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ - 0x00d58210 79203d20 2d747261 6e73666f 726d6564 y = -transformed │ │ │ │ - 0x00d58220 5069766f 742e793b 200a2020 20207472 Pivot.y; . tr │ │ │ │ - 0x00d58230 616e7366 6f726d65 64506976 6f742e7a ansformedPivot.z │ │ │ │ - 0x00d58240 203d2028 7472616e 73666f72 6d656450 = (transformedP │ │ │ │ - 0x00d58250 69766f74 2e7a2020 2b207472 616e7366 ivot.z + transf │ │ │ │ - 0x00d58260 6f726d65 64506976 6f742e77 29202f20 ormedPivot.w) / │ │ │ │ - 0x00d58270 322e303b 200a2020 23656e64 6966200a 2.0; . #endif . │ │ │ │ - 0x00d58280 20202020 72657475 726e2074 72616e73 return trans │ │ │ │ - 0x00d58290 666f726d 65645069 766f743b 200a2020 formedPivot; . │ │ │ │ - 0x00d582a0 7d200a20 20766563 34206170 706c7942 } . vec4 applyB │ │ │ │ - 0x00d582b0 696c6c62 6f617264 5069766f 74547261 illboardPivotTra │ │ │ │ - 0x00d582c0 6e73666f 726d2876 65633420 7069766f nsform(vec4 pivo │ │ │ │ - 0x00d582d0 742c206d 61743420 7069766f 74547261 t, mat4 pivotTra │ │ │ │ - 0x00d582e0 6e73666f 726d2c20 666c6f61 74207069 nsform, float pi │ │ │ │ - 0x00d582f0 766f7452 65616c5a 2c207665 6332206f votRealZ, vec2 o │ │ │ │ - 0x00d58300 66667365 7429200a 20207b20 0a202020 ffset) . { . │ │ │ │ - 0x00d58310 20666c6f 6174206c 6f676963 5a203d20 float logicZ = │ │ │ │ - 0x00d58320 7069766f 742e7a20 2f207069 766f742e pivot.z / pivot. │ │ │ │ - 0x00d58330 773b200a 20202020 76656334 20747261 w; . vec4 tra │ │ │ │ - 0x00d58340 6e73666f 726d6564 5069766f 74203d20 nsformedPivot = │ │ │ │ - 0x00d58350 7069766f 74547261 6e73666f 726d202a pivotTransform * │ │ │ │ - 0x00d58360 20766563 34287069 766f742e 78792c20 vec4(pivot.xy, │ │ │ │ - 0x00d58370 7069766f 74526561 6c5a2c20 7069766f pivotRealZ, pivo │ │ │ │ - 0x00d58380 742e7729 3b200a20 20202076 65633420 t.w); . vec4 │ │ │ │ - 0x00d58390 7363616c 65203d20 7069766f 74547261 scale = pivotTra │ │ │ │ - 0x00d583a0 6e73666f 726d202a 20766563 3428312e nsform * vec4(1. │ │ │ │ - 0x00d583b0 302c202d 312e302c 20302e30 2c20312e 0, -1.0, 0.0, 1. │ │ │ │ - 0x00d583c0 30293b20 0a202020 20766563 3420706f 0); . vec4 po │ │ │ │ - 0x00d583d0 73697469 6f6e203d 20766563 34287472 sition = vec4(tr │ │ │ │ - 0x00d583e0 616e7366 6f726d65 64506976 6f742e78 ansformedPivot.x │ │ │ │ - 0x00d583f0 79202f20 7472616e 73666f72 6d656450 y / transformedP │ │ │ │ - 0x00d58400 69766f74 2e772c20 6c6f6769 635a2c20 ivot.w, logicZ, │ │ │ │ - 0x00d58410 312e3029 202b2076 65633428 6f666673 1.0) + vec4(offs │ │ │ │ - 0x00d58420 6574202f 20736361 6c652e77 202a2073 et / scale.w * s │ │ │ │ - 0x00d58430 63616c65 2e782c20 302e302c 20302e30 cale.x, 0.0, 0.0 │ │ │ │ - 0x00d58440 293b200a 20202369 66646566 2056554c ); . #ifdef VUL │ │ │ │ - 0x00d58450 4b414e20 0a202020 20706f73 6974696f KAN . positio │ │ │ │ - 0x00d58460 6e2e7920 3d202d70 6f736974 696f6e2e n.y = -position. │ │ │ │ - 0x00d58470 793b200a 20202020 706f7369 74696f6e y; . position │ │ │ │ - 0x00d58480 2e7a203d 2028706f 73697469 6f6e2e7a .z = (position.z │ │ │ │ - 0x00d58490 20202b20 706f7369 74696f6e 2e772920 + position.w) │ │ │ │ - 0x00d584a0 2f20322e 303b200a 20202365 6e646966 / 2.0; . #endif │ │ │ │ - 0x00d584b0 200a2020 20207265 7475726e 20706f73 . return pos │ │ │ │ - 0x00d584c0 6974696f 6e3b200a 20207d20 0a202076 ition; . } . v │ │ │ │ - 0x00d584d0 65633220 63616c63 4c696e65 5472616e ec2 calcLineTran │ │ │ │ - 0x00d584e0 73666f72 6d656441 78697350 6f732876 sformedAxisPos(v │ │ │ │ - 0x00d584f0 65633220 6f726967 696e616c 41786973 ec2 originalAxis │ │ │ │ - 0x00d58500 506f732c 20766563 32207368 69667465 Pos, vec2 shifte │ │ │ │ - 0x00d58510 64506f73 2c206d61 7434206d 6f64656c dPos, mat4 model │ │ │ │ - 0x00d58520 56696577 2c20666c 6f617420 68616c66 View, float half │ │ │ │ - 0x00d58530 57696474 6829200a 20207b20 0a202020 Width) . { . │ │ │ │ - 0x00d58540 20766563 32207020 3d202876 65633428 vec2 p = (vec4( │ │ │ │ - 0x00d58550 73686966 74656450 6f732c20 302e302c shiftedPos, 0.0, │ │ │ │ - 0x00d58560 20312e30 29202a20 6d6f6465 6c566965 1.0) * modelVie │ │ │ │ - 0x00d58570 77292e78 793b200a 20202020 76656332 w).xy; . vec2 │ │ │ │ - 0x00d58580 2064203d 2070202d 206f7269 67696e61 d = p - origina │ │ │ │ - 0x00d58590 6c417869 73506f73 3b200a20 20202069 lAxisPos; . i │ │ │ │ - 0x00d585a0 66202864 6f742864 2c206429 20213d20 f (dot(d, d) != │ │ │ │ - 0x00d585b0 302e3029 200a2020 20202020 72657475 0.0) . retu │ │ │ │ - 0x00d585c0 726e206f 72696769 6e616c41 78697350 rn originalAxisP │ │ │ │ - 0x00d585d0 6f73202b 206e6f72 6d616c69 7a652864 os + normalize(d │ │ │ │ - 0x00d585e0 29202a20 68616c66 57696474 683b200a ) * halfWidth; . │ │ │ │ - 0x00d585f0 20202020 656c7365 200a2020 20202020 else . │ │ │ │ - 0x00d58600 72657475 726e206f 72696769 6e616c41 return originalA │ │ │ │ - 0x00d58610 78697350 6f733b20 0a20207d 200a2020 xisPos; . } . │ │ │ │ - 0x00d58620 766f6964 206d6169 6e282920 0a20207b void main() . { │ │ │ │ - 0x00d58630 200a2020 20207665 63322074 72616e73 . vec2 trans │ │ │ │ - 0x00d58640 666f726d 65644178 6973506f 73203d20 formedAxisPos = │ │ │ │ - 0x00d58650 28766563 3428615f 706f7369 74696f6e (vec4(a_position │ │ │ │ - 0x00d58660 2e78792c 20302e30 2c20312e 3029202a .xy, 0.0, 1.0) * │ │ │ │ - 0x00d58670 20755f6d 6f64656c 56696577 292e7879 u_modelView).xy │ │ │ │ - 0x00d58680 3b200a20 20202076 65633420 706f7320 ; . vec4 pos │ │ │ │ - 0x00d58690 3d207665 63342874 72616e73 666f726d = vec4(transform │ │ │ │ - 0x00d586a0 65644178 6973506f 732c2061 5f706f73 edAxisPos, a_pos │ │ │ │ - 0x00d586b0 6974696f 6e2e7a2c 20312e30 29202a20 ition.z, 1.0) * │ │ │ │ - 0x00d586c0 755f7072 6f6a6563 74696f6e 3b200a20 u_projection; . │ │ │ │ - 0x00d586d0 20202076 5f636f6c 6f725465 78436f6f v_colorTexCoo │ │ │ │ - 0x00d586e0 7264203d 20615f63 6f6c6f72 54657843 rd = a_colorTexC │ │ │ │ - 0x00d586f0 6f6f7264 3b200a20 20202067 6c5f506f oord; . gl_Po │ │ │ │ - 0x00d58700 73697469 6f6e203d 20617070 6c795069 sition = applyPi │ │ │ │ - 0x00d58710 766f7454 72616e73 666f726d 28706f73 votTransform(pos │ │ │ │ - 0x00d58720 2c20755f 7069766f 74547261 6e73666f , u_pivotTransfo │ │ │ │ - 0x00d58730 726d2c20 302e3029 3b200a20 207d200a rm, 0.0); . } . │ │ │ │ - 0x00d58740 00000000 00000000 00000000 00000000 ................ │ │ │ │ - 0x00d58750 00000000 00000000 00000000 00000000 ................ │ │ │ │ - 0x00d58760 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d58770 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d58780 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d58790 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d587a0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d587b0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d587c0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d587d0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d587e0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d587f0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d58800 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d58810 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d58820 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d58830 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d58840 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d58850 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d58860 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d58870 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d58880 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d58890 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d588a0 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d588b0 63342076 5f636f6c 6f723b20 0a20206f c4 v_color; . o │ │ │ │ - 0x00d588c0 75742076 65633420 765f4672 6167436f ut vec4 v_FragCo │ │ │ │ - 0x00d588d0 6c6f723b 200a2020 636f6e73 7420666c lor; . const fl │ │ │ │ - 0x00d588e0 6f617420 6b536861 7065436f 6f726453 oat kShapeCoordS │ │ │ │ - 0x00d588f0 63616c61 72203d20 31303030 2e303b20 calar = 1000.0; │ │ │ │ - 0x00d58900 0a202076 6f696420 6d61696e 2829200a . void main() . │ │ │ │ - 0x00d58910 20207b20 0a202020 20765f46 72616743 { . v_FragC │ │ │ │ - 0x00d58920 6f6c6f72 203d2076 5f636f6c 6f723b20 olor = v_color; │ │ │ │ - 0x00d58930 0a20207d 200a0000 00000000 00000000 . } ........... │ │ │ │ - 0x00d58940 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d58950 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d58960 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d58970 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d58980 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d58990 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d589a0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d589b0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d589c0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d589d0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d589e0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d589f0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d58a00 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d58a10 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d58a20 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d58a30 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d58a40 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d58a50 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d58a60 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d58a70 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d58a80 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d58a90 63332061 5f706f73 6974696f 6e3b200a c3 a_position; . │ │ │ │ - 0x00d58aa0 2020696e 20766563 3420615f 6e6f726d in vec4 a_norm │ │ │ │ - 0x00d58ab0 616c3b20 0a202069 6e207665 63342061 al; . in vec4 a │ │ │ │ - 0x00d58ac0 5f636f6c 6f723b20 0a20206f 75742076 _color; . out v │ │ │ │ - 0x00d58ad0 65633420 765f636f 6c6f723b 200a2020 ec4 v_color; . │ │ │ │ - 0x00d58ae0 756e6966 6f726d20 6d617434 20755f6d uniform mat4 u_m │ │ │ │ - 0x00d58af0 6f64656c 56696577 3b200a20 20756e69 odelView; . uni │ │ │ │ - 0x00d58b00 666f726d 206d6174 3420755f 70726f6a form mat4 u_proj │ │ │ │ - 0x00d58b10 65637469 6f6e3b20 0a202075 6e69666f ection; . unifo │ │ │ │ - 0x00d58b20 726d206d 61743420 755f7069 766f7454 rm mat4 u_pivotT │ │ │ │ - 0x00d58b30 72616e73 666f726d 3b200a20 20756e69 ransform; . uni │ │ │ │ - 0x00d58b40 666f726d 20766563 3420755f 70617261 form vec4 u_para │ │ │ │ - 0x00d58b50 6d733b20 0a202075 6e69666f 726d2066 ms; . uniform f │ │ │ │ - 0x00d58b60 6c6f6174 20755f6c 696e6548 616c6657 loat u_lineHalfW │ │ │ │ - 0x00d58b70 69647468 3b200a20 20756e69 666f726d idth; . uniform │ │ │ │ - 0x00d58b80 20666c6f 61742075 5f6d6178 52616469 float u_maxRadi │ │ │ │ - 0x00d58b90 75733b20 0a202063 6f6e7374 20666c6f us; . const flo │ │ │ │ - 0x00d58ba0 6174206b 53686170 65436f6f 72645363 at kShapeCoordSc │ │ │ │ - 0x00d58bb0 616c6172 203d2031 3030302e 303b200a alar = 1000.0; . │ │ │ │ - 0x00d58bc0 20207665 63342061 70706c79 5069766f vec4 applyPivo │ │ │ │ - 0x00d58bd0 74547261 6e73666f 726d2876 65633420 tTransform(vec4 │ │ │ │ - 0x00d58be0 7069766f 742c206d 61743420 7069766f pivot, mat4 pivo │ │ │ │ - 0x00d58bf0 74547261 6e73666f 726d2c20 666c6f61 tTransform, floa │ │ │ │ - 0x00d58c00 74207069 766f7452 65616c5a 29200a20 t pivotRealZ) . │ │ │ │ - 0x00d58c10 207b200a 20202020 76656334 20747261 { . vec4 tra │ │ │ │ - 0x00d58c20 6e73666f 726d6564 5069766f 74203d20 nsformedPivot = │ │ │ │ - 0x00d58c30 7069766f 743b200a 20202020 666c6f61 pivot; . floa │ │ │ │ - 0x00d58c40 74207720 3d207472 616e7366 6f726d65 t w = transforme │ │ │ │ - 0x00d58c50 64506976 6f742e77 3b200a20 20202074 dPivot.w; . t │ │ │ │ - 0x00d58c60 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ - 0x00d58c70 78797720 3d202870 69766f74 5472616e xyw = (pivotTran │ │ │ │ - 0x00d58c80 73666f72 6d202a20 76656334 28747261 sform * vec4(tra │ │ │ │ - 0x00d58c90 6e73666f 726d6564 5069766f 742e7879 nsformedPivot.xy │ │ │ │ - 0x00d58ca0 2c207069 766f7452 65616c5a 2c207729 , pivotRealZ, w) │ │ │ │ - 0x00d58cb0 292e7879 773b200a 20202020 7472616e ).xyw; . tran │ │ │ │ - 0x00d58cc0 73666f72 6d656450 69766f74 2e7a202a sformedPivot.z * │ │ │ │ - 0x00d58cd0 3d207472 616e7366 6f726d65 64506976 = transformedPiv │ │ │ │ - 0x00d58ce0 6f742e77 202f2077 3b200a20 20236966 ot.w / w; . #if │ │ │ │ - 0x00d58cf0 64656620 56554c4b 414e200a 20202020 def VULKAN . │ │ │ │ - 0x00d58d00 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ - 0x00d58d10 2e79203d 202d7472 616e7366 6f726d65 .y = -transforme │ │ │ │ - 0x00d58d20 64506976 6f742e79 3b200a20 20202074 dPivot.y; . t │ │ │ │ - 0x00d58d30 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ - 0x00d58d40 7a203d20 28747261 6e73666f 726d6564 z = (transformed │ │ │ │ - 0x00d58d50 5069766f 742e7a20 202b2074 72616e73 Pivot.z + trans │ │ │ │ - 0x00d58d60 666f726d 65645069 766f742e 7729202f formedPivot.w) / │ │ │ │ - 0x00d58d70 20322e30 3b200a20 2023656e 64696620 2.0; . #endif │ │ │ │ - 0x00d58d80 0a202020 20726574 75726e20 7472616e . return tran │ │ │ │ - 0x00d58d90 73666f72 6d656450 69766f74 3b200a20 sformedPivot; . │ │ │ │ - 0x00d58da0 207d200a 20207665 63342061 70706c79 } . vec4 apply │ │ │ │ - 0x00d58db0 42696c6c 626f6172 64506976 6f745472 BillboardPivotTr │ │ │ │ - 0x00d58dc0 616e7366 6f726d28 76656334 20706976 ansform(vec4 piv │ │ │ │ - 0x00d58dd0 6f742c20 6d617434 20706976 6f745472 ot, mat4 pivotTr │ │ │ │ - 0x00d58de0 616e7366 6f726d2c 20666c6f 61742070 ansform, float p │ │ │ │ - 0x00d58df0 69766f74 5265616c 5a2c2076 65633220 ivotRealZ, vec2 │ │ │ │ - 0x00d58e00 6f666673 65742920 0a20207b 200a2020 offset) . { . │ │ │ │ - 0x00d58e10 2020666c 6f617420 6c6f6769 635a203d float logicZ = │ │ │ │ - 0x00d58e20 20706976 6f742e7a 202f2070 69766f74 pivot.z / pivot │ │ │ │ - 0x00d58e30 2e773b20 0a202020 20766563 34207472 .w; . vec4 tr │ │ │ │ - 0x00d58e40 616e7366 6f726d65 64506976 6f74203d ansformedPivot = │ │ │ │ - 0x00d58e50 20706976 6f745472 616e7366 6f726d20 pivotTransform │ │ │ │ - 0x00d58e60 2a207665 63342870 69766f74 2e78792c * vec4(pivot.xy, │ │ │ │ - 0x00d58e70 20706976 6f745265 616c5a2c 20706976 pivotRealZ, piv │ │ │ │ - 0x00d58e80 6f742e77 293b200a 20202020 76656334 ot.w); . vec4 │ │ │ │ - 0x00d58e90 20736361 6c65203d 20706976 6f745472 scale = pivotTr │ │ │ │ - 0x00d58ea0 616e7366 6f726d20 2a207665 63342831 ansform * vec4(1 │ │ │ │ - 0x00d58eb0 2e302c20 2d312e30 2c20302e 302c2031 .0, -1.0, 0.0, 1 │ │ │ │ - 0x00d58ec0 2e30293b 200a2020 20207665 63342070 .0); . vec4 p │ │ │ │ - 0x00d58ed0 6f736974 696f6e20 3d207665 63342874 osition = vec4(t │ │ │ │ - 0x00d58ee0 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ - 0x00d58ef0 7879202f 20747261 6e73666f 726d6564 xy / transformed │ │ │ │ - 0x00d58f00 5069766f 742e772c 206c6f67 69635a2c Pivot.w, logicZ, │ │ │ │ - 0x00d58f10 20312e30 29202b20 76656334 286f6666 1.0) + vec4(off │ │ │ │ - 0x00d58f20 73657420 2f207363 616c652e 77202a20 set / scale.w * │ │ │ │ - 0x00d58f30 7363616c 652e782c 20302e30 2c20302e scale.x, 0.0, 0. │ │ │ │ - 0x00d58f40 30293b20 0a202023 69666465 66205655 0); . #ifdef VU │ │ │ │ - 0x00d58f50 4c4b414e 200a2020 2020706f 73697469 LKAN . positi │ │ │ │ - 0x00d58f60 6f6e2e79 203d202d 706f7369 74696f6e on.y = -position │ │ │ │ - 0x00d58f70 2e793b20 0a202020 20706f73 6974696f .y; . positio │ │ │ │ - 0x00d58f80 6e2e7a20 3d202870 6f736974 696f6e2e n.z = (position. │ │ │ │ - 0x00d58f90 7a20202b 20706f73 6974696f 6e2e7729 z + position.w) │ │ │ │ - 0x00d58fa0 202f2032 2e303b20 0a202023 656e6469 / 2.0; . #endi │ │ │ │ - 0x00d58fb0 66200a20 20202072 65747572 6e20706f f . return po │ │ │ │ - 0x00d58fc0 73697469 6f6e3b20 0a20207d 200a2020 sition; . } . │ │ │ │ - 0x00d58fd0 76656332 2063616c 634c696e 65547261 vec2 calcLineTra │ │ │ │ - 0x00d58fe0 6e73666f 726d6564 41786973 506f7328 nsformedAxisPos( │ │ │ │ - 0x00d58ff0 76656332 206f7269 67696e61 6c417869 vec2 originalAxi │ │ │ │ - 0x00d59000 73506f73 2c207665 63322073 68696674 sPos, vec2 shift │ │ │ │ - 0x00d59010 6564506f 732c206d 61743420 6d6f6465 edPos, mat4 mode │ │ │ │ - 0x00d59020 6c566965 772c2066 6c6f6174 2068616c lView, float hal │ │ │ │ - 0x00d59030 66576964 74682920 0a20207b 200a2020 fWidth) . { . │ │ │ │ - 0x00d59040 20207665 63322070 203d2028 76656334 vec2 p = (vec4 │ │ │ │ - 0x00d59050 28736869 66746564 506f732c 20302e30 (shiftedPos, 0.0 │ │ │ │ - 0x00d59060 2c20312e 3029202a 206d6f64 656c5669 , 1.0) * modelVi │ │ │ │ - 0x00d59070 6577292e 78793b20 0a202020 20766563 ew).xy; . vec │ │ │ │ - 0x00d59080 32206420 3d207020 2d206f72 6967696e 2 d = p - origin │ │ │ │ - 0x00d59090 616c4178 6973506f 733b200a 20202020 alAxisPos; . │ │ │ │ - 0x00d590a0 69662028 646f7428 642c2064 2920213d if (dot(d, d) != │ │ │ │ - 0x00d590b0 20302e30 29200a20 20202020 20726574 0.0) . ret │ │ │ │ - 0x00d590c0 75726e20 6f726967 696e616c 41786973 urn originalAxis │ │ │ │ - 0x00d590d0 506f7320 2b206e6f 726d616c 697a6528 Pos + normalize( │ │ │ │ - 0x00d590e0 6429202a 2068616c 66576964 74683b20 d) * halfWidth; │ │ │ │ - 0x00d590f0 0a202020 20656c73 65200a20 20202020 . else . │ │ │ │ - 0x00d59100 20726574 75726e20 6f726967 696e616c return original │ │ │ │ - 0x00d59110 41786973 506f733b 200a2020 7d200a20 AxisPos; . } . │ │ │ │ - 0x00d59120 20766f69 64206d61 696e2829 200a2020 void main() . │ │ │ │ - 0x00d59130 7b200a20 20202076 65633220 6e6f726d { . vec2 norm │ │ │ │ - 0x00d59140 616c203d 20615f6e 6f726d61 6c2e7879 al = a_normal.xy │ │ │ │ - 0x00d59150 3b200a20 20202076 65633220 7472616e ; . vec2 tran │ │ │ │ - 0x00d59160 73666f72 6d656441 78697350 6f73203d sformedAxisPos = │ │ │ │ - 0x00d59170 20287665 63342861 5f706f73 6974696f (vec4(a_positio │ │ │ │ - 0x00d59180 6e2e7879 2c20302e 302c2031 2e302920 n.xy, 0.0, 1.0) │ │ │ │ - 0x00d59190 2a20755f 6d6f6465 6c566965 77292e78 * u_modelView).x │ │ │ │ - 0x00d591a0 793b200a 20202020 69662028 646f7428 y; . if (dot( │ │ │ │ - 0x00d591b0 6e6f726d 616c2c20 6e6f726d 616c2920 normal, normal) │ │ │ │ - 0x00d591c0 213d2030 2e302920 0a202020 207b200a != 0.0) . { . │ │ │ │ - 0x00d591d0 20202020 20207665 6332206e 6f726d20 vec2 norm │ │ │ │ - 0x00d591e0 3d206e6f 726d616c 202a2075 5f6c696e = normal * u_lin │ │ │ │ - 0x00d591f0 6548616c 66576964 74683b20 0a202020 eHalfWidth; . │ │ │ │ - 0x00d59200 20202074 72616e73 666f726d 65644178 transformedAx │ │ │ │ - 0x00d59210 6973506f 73203d20 63616c63 4c696e65 isPos = calcLine │ │ │ │ - 0x00d59220 5472616e 73666f72 6d656441 78697350 TransformedAxisP │ │ │ │ - 0x00d59230 6f732874 72616e73 666f726d 65644178 os(transformedAx │ │ │ │ - 0x00d59240 6973506f 732c2061 5f706f73 6974696f isPos, a_positio │ │ │ │ - 0x00d59250 6e2e7879 202b206e 6f726d2c 200a2020 n.xy + norm, . │ │ │ │ - 0x00d59260 20202020 20202020 20202020 20202020 │ │ │ │ - 0x00d59270 20202020 20202020 20202020 20202020 │ │ │ │ - 0x00d59280 20202020 20202020 20202020 20202020 │ │ │ │ - 0x00d59290 20202020 755f6d6f 64656c56 6965772c u_modelView, │ │ │ │ - 0x00d592a0 206c656e 67746828 6e6f726d 29293b20 length(norm)); │ │ │ │ - 0x00d592b0 0a202020 207d200a 20202020 765f636f . } . v_co │ │ │ │ - 0x00d592c0 6c6f7220 3d20615f 636f6c6f 723b200a lor = a_color; . │ │ │ │ - 0x00d592d0 20202020 76656334 20706f73 203d2076 vec4 pos = v │ │ │ │ - 0x00d592e0 65633428 7472616e 73666f72 6d656441 ec4(transformedA │ │ │ │ - 0x00d592f0 78697350 6f732c20 615f706f 73697469 xisPos, a_positi │ │ │ │ - 0x00d59300 6f6e2e7a 2c20312e 3029202a 20755f70 on.z, 1.0) * u_p │ │ │ │ - 0x00d59310 726f6a65 6374696f 6e3b200a 20202020 rojection; . │ │ │ │ - 0x00d59320 676c5f50 6f736974 696f6e20 3d206170 gl_Position = ap │ │ │ │ - 0x00d59330 706c7950 69766f74 5472616e 73666f72 plyPivotTransfor │ │ │ │ - 0x00d59340 6d28706f 732c2075 5f706976 6f745472 m(pos, u_pivotTr │ │ │ │ - 0x00d59350 616e7366 6f726d2c 20302e30 293b200a ansform, 0.0); . │ │ │ │ - 0x00d59360 20207d20 0a000000 00000000 00000000 } ............ │ │ │ │ - 0x00d59370 00000000 00000000 00000000 00000000 ................ │ │ │ │ - 0x00d59380 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d59390 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d593a0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d593b0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d593c0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d593d0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d593e0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d593f0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d59400 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d59410 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d59420 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d59430 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d59440 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d59450 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d59460 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d59470 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d59480 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d59490 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d594a0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d594b0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d594c0 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d594d0 63332076 5f726164 6975733b 200a2020 c3 v_radius; . │ │ │ │ - 0x00d594e0 696e2076 65633420 765f636f 6c6f723b in vec4 v_color; │ │ │ │ - 0x00d594f0 200a2020 6f757420 76656334 20765f46 . out vec4 v_F │ │ │ │ - 0x00d59500 72616743 6f6c6f72 3b200a20 20636f6e ragColor; . con │ │ │ │ - 0x00d59510 73742066 6c6f6174 20616150 6978656c st float aaPixel │ │ │ │ - 0x00d59520 73436f75 6e74203d 20322e35 3b200a20 sCount = 2.5; . │ │ │ │ - 0x00d59530 20636f6e 73742066 6c6f6174 206b5368 const float kSh │ │ │ │ - 0x00d59540 61706543 6f6f7264 5363616c 6172203d apeCoordScalar = │ │ │ │ - 0x00d59550 20313030 302e303b 200a2020 766f6964 1000.0; . void │ │ │ │ - 0x00d59560 206d6169 6e282920 0a20207b 200a2020 main() . { . │ │ │ │ - 0x00d59570 20207665 63342066 696e616c 436f6c6f vec4 finalColo │ │ │ │ - 0x00d59580 72203d20 765f636f 6c6f723b 200a2020 r = v_color; . │ │ │ │ - 0x00d59590 2020666c 6f617420 736d616c 6c526164 float smallRad │ │ │ │ - 0x00d595a0 69757320 3d20765f 72616469 75732e7a ius = v_radius.z │ │ │ │ - 0x00d595b0 202d2061 61506978 656c7343 6f756e74 - aaPixelsCount │ │ │ │ - 0x00d595c0 3b200a20 20202066 6c6f6174 20737465 ; . float ste │ │ │ │ - 0x00d595d0 7056616c 7565203d 20736d6f 6f746873 pValue = smooths │ │ │ │ - 0x00d595e0 74657028 736d616c 6c526164 69757320 tep(smallRadius │ │ │ │ - 0x00d595f0 2a20736d 616c6c52 61646975 732c2076 * smallRadius, v │ │ │ │ - 0x00d59600 5f726164 6975732e 7a202a20 765f7261 _radius.z * v_ra │ │ │ │ - 0x00d59610 64697573 2e7a2c20 0a202020 20202020 dius.z, . │ │ │ │ - 0x00d59620 20202020 20202020 20202020 20202020 │ │ │ │ - 0x00d59630 20202020 20202020 20646f74 28765f72 dot(v_r │ │ │ │ - 0x00d59640 61646975 732e7879 2c20765f 72616469 adius.xy, v_radi │ │ │ │ - 0x00d59650 75732e78 7929293b 200a2020 20206669 us.xy)); . fi │ │ │ │ - 0x00d59660 6e616c43 6f6c6f72 2e61203d 2066696e nalColor.a = fin │ │ │ │ - 0x00d59670 616c436f 6c6f722e 61202a20 28312e30 alColor.a * (1.0 │ │ │ │ - 0x00d59680 202d2073 74657056 616c7565 293b200a - stepValue); . │ │ │ │ - 0x00d59690 20202020 69662028 66696e61 6c436f6c if (finalCol │ │ │ │ - 0x00d596a0 6f722e61 203c2030 2e303129 200a2020 or.a < 0.01) . │ │ │ │ - 0x00d596b0 20202020 64697363 6172643b 200a2020 discard; . │ │ │ │ - 0x00d596c0 2020765f 46726167 436f6c6f 72203d20 v_FragColor = │ │ │ │ - 0x00d596d0 66696e61 6c436f6c 6f723b20 0a20207d finalColor; . } │ │ │ │ - 0x00d596e0 200a0000 00000000 00000000 00000000 ............... │ │ │ │ - 0x00d596f0 00000000 00000000 00000000 00000000 ................ │ │ │ │ - 0x00d59700 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d59710 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d59720 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d59730 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d59740 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d59750 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d59760 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d59770 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d59780 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d59790 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d597a0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d597b0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d597c0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d597d0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d597e0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d597f0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d59800 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d59810 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d59820 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d59830 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d59840 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d59850 63332061 5f706f73 6974696f 6e3b200a c3 a_position; . │ │ │ │ - 0x00d59860 2020696e 20766563 3420615f 6e6f726d in vec4 a_norm │ │ │ │ - 0x00d59870 616c3b20 0a202069 6e207665 63342061 al; . in vec4 a │ │ │ │ - 0x00d59880 5f636f6c 6f723b20 0a20206f 75742076 _color; . out v │ │ │ │ - 0x00d59890 65633320 765f7261 64697573 3b200a20 ec3 v_radius; . │ │ │ │ - 0x00d598a0 206f7574 20766563 3420765f 636f6c6f out vec4 v_colo │ │ │ │ - 0x00d598b0 723b200a 2020756e 69666f72 6d206d61 r; . uniform ma │ │ │ │ - 0x00d598c0 74342075 5f6d6f64 656c5669 65773b20 t4 u_modelView; │ │ │ │ - 0x00d598d0 0a202075 6e69666f 726d206d 61743420 . uniform mat4 │ │ │ │ - 0x00d598e0 755f7072 6f6a6563 74696f6e 3b200a20 u_projection; . │ │ │ │ - 0x00d598f0 20756e69 666f726d 206d6174 3420755f uniform mat4 u_ │ │ │ │ - 0x00d59900 7069766f 74547261 6e73666f 726d3b20 pivotTransform; │ │ │ │ - 0x00d59910 0a202075 6e69666f 726d2076 65633420 . uniform vec4 │ │ │ │ - 0x00d59920 755f7061 72616d73 3b200a20 20756e69 u_params; . uni │ │ │ │ - 0x00d59930 666f726d 20666c6f 61742075 5f6c696e form float u_lin │ │ │ │ - 0x00d59940 6548616c 66576964 74683b20 0a202075 eHalfWidth; . u │ │ │ │ - 0x00d59950 6e69666f 726d2066 6c6f6174 20755f6d niform float u_m │ │ │ │ - 0x00d59960 61785261 64697573 3b200a20 20636f6e axRadius; . con │ │ │ │ - 0x00d59970 73742066 6c6f6174 206b5368 61706543 st float kShapeC │ │ │ │ - 0x00d59980 6f6f7264 5363616c 6172203d 20313030 oordScalar = 100 │ │ │ │ - 0x00d59990 302e303b 200a2020 76656334 20617070 0.0; . vec4 app │ │ │ │ - 0x00d599a0 6c795069 766f7454 72616e73 666f726d lyPivotTransform │ │ │ │ - 0x00d599b0 28766563 34207069 766f742c 206d6174 (vec4 pivot, mat │ │ │ │ - 0x00d599c0 34207069 766f7454 72616e73 666f726d 4 pivotTransform │ │ │ │ - 0x00d599d0 2c20666c 6f617420 7069766f 74526561 , float pivotRea │ │ │ │ - 0x00d599e0 6c5a2920 0a20207b 200a2020 20207665 lZ) . { . ve │ │ │ │ - 0x00d599f0 63342074 72616e73 666f726d 65645069 c4 transformedPi │ │ │ │ - 0x00d59a00 766f7420 3d207069 766f743b 200a2020 vot = pivot; . │ │ │ │ - 0x00d59a10 2020666c 6f617420 77203d20 7472616e float w = tran │ │ │ │ - 0x00d59a20 73666f72 6d656450 69766f74 2e773b20 sformedPivot.w; │ │ │ │ - 0x00d59a30 0a202020 20747261 6e73666f 726d6564 . transformed │ │ │ │ - 0x00d59a40 5069766f 742e7879 77203d20 28706976 Pivot.xyw = (piv │ │ │ │ - 0x00d59a50 6f745472 616e7366 6f726d20 2a207665 otTransform * ve │ │ │ │ - 0x00d59a60 63342874 72616e73 666f726d 65645069 c4(transformedPi │ │ │ │ - 0x00d59a70 766f742e 78792c20 7069766f 74526561 vot.xy, pivotRea │ │ │ │ - 0x00d59a80 6c5a2c20 7729292e 7879773b 200a2020 lZ, w)).xyw; . │ │ │ │ - 0x00d59a90 20207472 616e7366 6f726d65 64506976 transformedPiv │ │ │ │ - 0x00d59aa0 6f742e7a 202a3d20 7472616e 73666f72 ot.z *= transfor │ │ │ │ - 0x00d59ab0 6d656450 69766f74 2e77202f 20773b20 medPivot.w / w; │ │ │ │ - 0x00d59ac0 0a202023 69666465 66205655 4c4b414e . #ifdef VULKAN │ │ │ │ - 0x00d59ad0 200a2020 20207472 616e7366 6f726d65 . transforme │ │ │ │ - 0x00d59ae0 64506976 6f742e79 203d202d 7472616e dPivot.y = -tran │ │ │ │ - 0x00d59af0 73666f72 6d656450 69766f74 2e793b20 sformedPivot.y; │ │ │ │ - 0x00d59b00 0a202020 20747261 6e73666f 726d6564 . transformed │ │ │ │ - 0x00d59b10 5069766f 742e7a20 3d202874 72616e73 Pivot.z = (trans │ │ │ │ - 0x00d59b20 666f726d 65645069 766f742e 7a20202b formedPivot.z + │ │ │ │ - 0x00d59b30 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ - 0x00d59b40 742e7729 202f2032 2e303b20 0a202023 t.w) / 2.0; . # │ │ │ │ - 0x00d59b50 656e6469 66200a20 20202072 65747572 endif . retur │ │ │ │ - 0x00d59b60 6e207472 616e7366 6f726d65 64506976 n transformedPiv │ │ │ │ - 0x00d59b70 6f743b20 0a20207d 200a2020 76656334 ot; . } . vec4 │ │ │ │ - 0x00d59b80 20617070 6c794269 6c6c626f 61726450 applyBillboardP │ │ │ │ - 0x00d59b90 69766f74 5472616e 73666f72 6d287665 ivotTransform(ve │ │ │ │ - 0x00d59ba0 63342070 69766f74 2c206d61 74342070 c4 pivot, mat4 p │ │ │ │ - 0x00d59bb0 69766f74 5472616e 73666f72 6d2c2066 ivotTransform, f │ │ │ │ - 0x00d59bc0 6c6f6174 20706976 6f745265 616c5a2c loat pivotRealZ, │ │ │ │ - 0x00d59bd0 20766563 32206f66 66736574 29200a20 vec2 offset) . │ │ │ │ - 0x00d59be0 207b200a 20202020 666c6f61 74206c6f { . float lo │ │ │ │ - 0x00d59bf0 6769635a 203d2070 69766f74 2e7a202f gicZ = pivot.z / │ │ │ │ - 0x00d59c00 20706976 6f742e77 3b200a20 20202076 pivot.w; . v │ │ │ │ - 0x00d59c10 65633420 7472616e 73666f72 6d656450 ec4 transformedP │ │ │ │ - 0x00d59c20 69766f74 203d2070 69766f74 5472616e ivot = pivotTran │ │ │ │ - 0x00d59c30 73666f72 6d202a20 76656334 28706976 sform * vec4(piv │ │ │ │ - 0x00d59c40 6f742e78 792c2070 69766f74 5265616c ot.xy, pivotReal │ │ │ │ - 0x00d59c50 5a2c2070 69766f74 2e77293b 200a2020 Z, pivot.w); . │ │ │ │ - 0x00d59c60 20207665 63342073 63616c65 203d2070 vec4 scale = p │ │ │ │ - 0x00d59c70 69766f74 5472616e 73666f72 6d202a20 ivotTransform * │ │ │ │ - 0x00d59c80 76656334 28312e30 2c202d31 2e302c20 vec4(1.0, -1.0, │ │ │ │ - 0x00d59c90 302e302c 20312e30 293b200a 20202020 0.0, 1.0); . │ │ │ │ - 0x00d59ca0 76656334 20706f73 6974696f 6e203d20 vec4 position = │ │ │ │ - 0x00d59cb0 76656334 28747261 6e73666f 726d6564 vec4(transformed │ │ │ │ - 0x00d59cc0 5069766f 742e7879 202f2074 72616e73 Pivot.xy / trans │ │ │ │ - 0x00d59cd0 666f726d 65645069 766f742e 772c206c formedPivot.w, l │ │ │ │ - 0x00d59ce0 6f676963 5a2c2031 2e302920 2b207665 ogicZ, 1.0) + ve │ │ │ │ - 0x00d59cf0 6334286f 66667365 74202f20 7363616c c4(offset / scal │ │ │ │ - 0x00d59d00 652e7720 2a207363 616c652e 782c2030 e.w * scale.x, 0 │ │ │ │ - 0x00d59d10 2e302c20 302e3029 3b200a20 20236966 .0, 0.0); . #if │ │ │ │ - 0x00d59d20 64656620 56554c4b 414e200a 20202020 def VULKAN . │ │ │ │ - 0x00d59d30 706f7369 74696f6e 2e79203d 202d706f position.y = -po │ │ │ │ - 0x00d59d40 73697469 6f6e2e79 3b200a20 20202070 sition.y; . p │ │ │ │ - 0x00d59d50 6f736974 696f6e2e 7a203d20 28706f73 osition.z = (pos │ │ │ │ - 0x00d59d60 6974696f 6e2e7a20 202b2070 6f736974 ition.z + posit │ │ │ │ - 0x00d59d70 696f6e2e 7729202f 20322e30 3b200a20 ion.w) / 2.0; . │ │ │ │ - 0x00d59d80 2023656e 64696620 0a202020 20726574 #endif . ret │ │ │ │ - 0x00d59d90 75726e20 706f7369 74696f6e 3b200a20 urn position; . │ │ │ │ - 0x00d59da0 207d200a 20207665 63322063 616c634c } . vec2 calcL │ │ │ │ - 0x00d59db0 696e6554 72616e73 666f726d 65644178 ineTransformedAx │ │ │ │ - 0x00d59dc0 6973506f 73287665 6332206f 72696769 isPos(vec2 origi │ │ │ │ - 0x00d59dd0 6e616c41 78697350 6f732c20 76656332 nalAxisPos, vec2 │ │ │ │ - 0x00d59de0 20736869 66746564 506f732c 206d6174 shiftedPos, mat │ │ │ │ - 0x00d59df0 34206d6f 64656c56 6965772c 20666c6f 4 modelView, flo │ │ │ │ - 0x00d59e00 61742068 616c6657 69647468 29200a20 at halfWidth) . │ │ │ │ - 0x00d59e10 207b200a 20202020 76656332 2070203d { . vec2 p = │ │ │ │ - 0x00d59e20 20287665 63342873 68696674 6564506f (vec4(shiftedPo │ │ │ │ - 0x00d59e30 732c2030 2e302c20 312e3029 202a206d s, 0.0, 1.0) * m │ │ │ │ - 0x00d59e40 6f64656c 56696577 292e7879 3b200a20 odelView).xy; . │ │ │ │ - 0x00d59e50 20202076 65633220 64203d20 70202d20 vec2 d = p - │ │ │ │ - 0x00d59e60 6f726967 696e616c 41786973 506f733b originalAxisPos; │ │ │ │ - 0x00d59e70 200a2020 20206966 2028646f 7428642c . if (dot(d, │ │ │ │ - 0x00d59e80 20642920 213d2030 2e302920 0a202020 d) != 0.0) . │ │ │ │ - 0x00d59e90 20202072 65747572 6e206f72 6967696e return origin │ │ │ │ - 0x00d59ea0 616c4178 6973506f 73202b20 6e6f726d alAxisPos + norm │ │ │ │ - 0x00d59eb0 616c697a 65286429 202a2068 616c6657 alize(d) * halfW │ │ │ │ - 0x00d59ec0 69647468 3b200a20 20202065 6c736520 idth; . else │ │ │ │ - 0x00d59ed0 0a202020 20202072 65747572 6e206f72 . return or │ │ │ │ - 0x00d59ee0 6967696e 616c4178 6973506f 733b200a iginalAxisPos; . │ │ │ │ - 0x00d59ef0 20207d20 0a202076 6f696420 6d61696e } . void main │ │ │ │ - 0x00d59f00 2829200a 20207b20 0a202020 20766563 () . { . vec │ │ │ │ - 0x00d59f10 32206e6f 726d616c 203d2061 5f6e6f72 2 normal = a_nor │ │ │ │ - 0x00d59f20 6d616c2e 78793b20 0a202020 20766563 mal.xy; . vec │ │ │ │ - 0x00d59f30 32207472 616e7366 6f726d65 64417869 2 transformedAxi │ │ │ │ - 0x00d59f40 73506f73 203d2028 76656334 28615f70 sPos = (vec4(a_p │ │ │ │ - 0x00d59f50 6f736974 696f6e2e 78792c20 302e302c osition.xy, 0.0, │ │ │ │ - 0x00d59f60 20312e30 29202a20 755f6d6f 64656c56 1.0) * u_modelV │ │ │ │ - 0x00d59f70 69657729 2e78793b 200a2020 20206966 iew).xy; . if │ │ │ │ - 0x00d59f80 2028646f 74286e6f 726d616c 2c206e6f (dot(normal, no │ │ │ │ - 0x00d59f90 726d616c 2920213d 20302e30 29200a20 rmal) != 0.0) . │ │ │ │ - 0x00d59fa0 2020207b 200a2020 20202020 76656332 { . vec2 │ │ │ │ - 0x00d59fb0 206e6f72 6d203d20 6e6f726d 616c202a norm = normal * │ │ │ │ - 0x00d59fc0 20755f6c 696e6548 616c6657 69647468 u_lineHalfWidth │ │ │ │ - 0x00d59fd0 3b200a20 20202020 20747261 6e73666f ; . transfo │ │ │ │ - 0x00d59fe0 726d6564 41786973 506f7320 3d206361 rmedAxisPos = ca │ │ │ │ - 0x00d59ff0 6c634c69 6e655472 616e7366 6f726d65 lcLineTransforme │ │ │ │ - 0x00d5a000 64417869 73506f73 28747261 6e73666f dAxisPos(transfo │ │ │ │ - 0x00d5a010 726d6564 41786973 506f732c 20615f70 rmedAxisPos, a_p │ │ │ │ - 0x00d5a020 6f736974 696f6e2e 7879202b 206e6f72 osition.xy + nor │ │ │ │ - 0x00d5a030 6d2c200a 20202020 20202020 20202020 m, . │ │ │ │ - 0x00d5a040 20202020 20202020 20202020 20202020 │ │ │ │ - 0x00d5a050 20202020 20202020 20202020 20202020 │ │ │ │ - 0x00d5a060 20202020 20202020 2020755f 6d6f6465 u_mode │ │ │ │ - 0x00d5a070 6c566965 772c206c 656e6774 68286e6f lView, length(no │ │ │ │ - 0x00d5a080 726d2929 3b200a20 2020207d 200a2020 rm)); . } . │ │ │ │ - 0x00d5a090 20207472 616e7366 6f726d65 64417869 transformedAxi │ │ │ │ - 0x00d5a0a0 73506f73 202b3d20 615f6e6f 726d616c sPos += a_normal │ │ │ │ - 0x00d5a0b0 2e7a7720 2a20755f 6c696e65 48616c66 .zw * u_lineHalf │ │ │ │ - 0x00d5a0c0 57696474 683b200a 20202020 76656334 Width; . vec4 │ │ │ │ - 0x00d5a0d0 20706f73 203d2076 65633428 7472616e pos = vec4(tran │ │ │ │ - 0x00d5a0e0 73666f72 6d656441 78697350 6f732c20 sformedAxisPos, │ │ │ │ - 0x00d5a0f0 615f706f 73697469 6f6e2e7a 2c20312e a_position.z, 1. │ │ │ │ - 0x00d5a100 3029202a 20755f70 726f6a65 6374696f 0) * u_projectio │ │ │ │ - 0x00d5a110 6e3b200a 20202020 676c5f50 6f736974 n; . gl_Posit │ │ │ │ - 0x00d5a120 696f6e20 3d206170 706c7950 69766f74 ion = applyPivot │ │ │ │ - 0x00d5a130 5472616e 73666f72 6d28706f 732c2075 Transform(pos, u │ │ │ │ - 0x00d5a140 5f706976 6f745472 616e7366 6f726d2c _pivotTransform, │ │ │ │ - 0x00d5a150 20302e30 293b200a 20202020 765f636f 0.0); . v_co │ │ │ │ - 0x00d5a160 6c6f7220 3d20615f 636f6c6f 723b200a lor = a_color; . │ │ │ │ - 0x00d5a170 20202020 765f7261 64697573 203d2076 v_radius = v │ │ │ │ - 0x00d5a180 65633328 615f6e6f 726d616c 2e7a772c ec3(a_normal.zw, │ │ │ │ - 0x00d5a190 20755f6d 61785261 64697573 29202a20 u_maxRadius) * │ │ │ │ - 0x00d5a1a0 755f6c69 6e654861 6c665769 6474683b u_lineHalfWidth; │ │ │ │ - 0x00d5a1b0 200a2020 7d200a00 00000000 00000000 . } .......... │ │ │ │ - 0x00d5a1c0 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d5a1d0 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d5a1e0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d5a1f0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d5a200 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d5a210 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d5a220 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d5a230 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d5a240 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d5a250 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d5a260 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d5a270 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d5a280 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d5a290 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d5a2a0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d5a2b0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d5a2c0 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d5a2d0 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d5a2e0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d5a2f0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d5a300 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d5a310 63342076 5f6f6666 73657473 3b200a20 c4 v_offsets; . │ │ │ │ - 0x00d5a320 20696e20 76656334 20765f63 6f6c6f72 in vec4 v_color │ │ │ │ - 0x00d5a330 3b200a20 206f7574 20766563 3420765f ; . out vec4 v_ │ │ │ │ - 0x00d5a340 46726167 436f6c6f 723b200a 2020636f FragColor; . co │ │ │ │ - 0x00d5a350 6e737420 666c6f61 74206b53 68617065 nst float kShape │ │ │ │ - 0x00d5a360 436f6f72 64536361 6c617220 3d203130 CoordScalar = 10 │ │ │ │ - 0x00d5a370 30302e30 3b200a20 20766f69 64206d61 00.0; . void ma │ │ │ │ - 0x00d5a380 696e2829 200a2020 7b200a20 20202076 in() . { . v │ │ │ │ - 0x00d5a390 65633420 66696e61 6c436f6c 6f72203d ec4 finalColor = │ │ │ │ - 0x00d5a3a0 20765f63 6f6c6f72 3b200a20 20202076 v_color; . v │ │ │ │ - 0x00d5a3b0 65633220 72616469 75733b20 0a202020 ec2 radius; . │ │ │ │ - 0x00d5a3c0 20726164 6975732e 78203d20 6d617828 radius.x = max( │ │ │ │ - 0x00d5a3d0 302e302c 20616273 28765f6f 66667365 0.0, abs(v_offse │ │ │ │ - 0x00d5a3e0 74732e78 29202d20 765f6f66 66736574 ts.x) - v_offset │ │ │ │ - 0x00d5a3f0 732e7a29 3b200a20 20202072 61646975 s.z); . radiu │ │ │ │ - 0x00d5a400 732e7920 3d206d61 7828302e 302c2061 s.y = max(0.0, a │ │ │ │ - 0x00d5a410 62732876 5f6f6666 73657473 2e792920 bs(v_offsets.y) │ │ │ │ - 0x00d5a420 2d20765f 6f666673 6574732e 77293b20 - v_offsets.w); │ │ │ │ - 0x00d5a430 0a202020 20666c6f 6174206d 61785261 . float maxRa │ │ │ │ - 0x00d5a440 64697573 203d2031 2e303b20 0a202020 dius = 1.0; . │ │ │ │ - 0x00d5a450 20666c6f 61742061 61526164 69757320 float aaRadius │ │ │ │ - 0x00d5a460 3d20302e 393b200a 20202020 666c6f61 = 0.9; . floa │ │ │ │ - 0x00d5a470 74207374 65705661 6c756520 3d20736d t stepValue = sm │ │ │ │ - 0x00d5a480 6f6f7468 73746570 28616152 61646975 oothstep(aaRadiu │ │ │ │ - 0x00d5a490 73202a20 61615261 64697573 2c206d61 s * aaRadius, ma │ │ │ │ - 0x00d5a4a0 78526164 69757320 2a206d61 78526164 xRadius * maxRad │ │ │ │ - 0x00d5a4b0 6975732c 20646f74 28726164 6975732e ius, dot(radius. │ │ │ │ - 0x00d5a4c0 78792c20 72616469 75732e78 7929293b xy, radius.xy)); │ │ │ │ - 0x00d5a4d0 200a2020 20206669 6e616c43 6f6c6f72 . finalColor │ │ │ │ - 0x00d5a4e0 2e61203d 2066696e 616c436f 6c6f722e .a = finalColor. │ │ │ │ - 0x00d5a4f0 61202a20 28312e30 202d2073 74657056 a * (1.0 - stepV │ │ │ │ - 0x00d5a500 616c7565 293b200a 20202020 765f4672 alue); . v_Fr │ │ │ │ - 0x00d5a510 6167436f 6c6f7220 3d206669 6e616c43 agColor = finalC │ │ │ │ - 0x00d5a520 6f6c6f72 3b200a20 207d200a 00000000 olor; . } ..... │ │ │ │ - 0x00d5a530 00000000 00000000 00000000 00000000 ................ │ │ │ │ - 0x00d5a540 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d5a550 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d5a560 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d5a570 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d5a580 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d5a590 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d5a5a0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d5a5b0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d5a5c0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d5a5d0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d5a5e0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d5a5f0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d5a600 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d5a610 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d5a620 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d5a630 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d5a640 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d5a650 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d5a660 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d5a670 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d5a680 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d5a690 63332061 5f706f73 6974696f 6e3b200a c3 a_position; . │ │ │ │ - 0x00d5a6a0 2020696e 20766563 3420615f 6e6f726d in vec4 a_norm │ │ │ │ - 0x00d5a6b0 616c3b20 0a202069 6e207665 63342061 al; . in vec4 a │ │ │ │ - 0x00d5a6c0 5f636f6c 6f723b20 0a20206f 75742076 _color; . out v │ │ │ │ - 0x00d5a6d0 65633420 765f6f66 66736574 733b200a ec4 v_offsets; . │ │ │ │ - 0x00d5a6e0 20206f75 74207665 63342076 5f636f6c out vec4 v_col │ │ │ │ - 0x00d5a6f0 6f723b20 0a202075 6e69666f 726d206d or; . uniform m │ │ │ │ - 0x00d5a700 61743420 755f6d6f 64656c56 6965773b at4 u_modelView; │ │ │ │ - 0x00d5a710 200a2020 756e6966 6f726d20 6d617434 . uniform mat4 │ │ │ │ - 0x00d5a720 20755f70 726f6a65 6374696f 6e3b200a u_projection; . │ │ │ │ - 0x00d5a730 2020756e 69666f72 6d206d61 74342075 uniform mat4 u │ │ │ │ - 0x00d5a740 5f706976 6f745472 616e7366 6f726d3b _pivotTransform; │ │ │ │ - 0x00d5a750 200a2020 756e6966 6f726d20 76656334 . uniform vec4 │ │ │ │ - 0x00d5a760 20755f70 6172616d 733b200a 2020756e u_params; . un │ │ │ │ - 0x00d5a770 69666f72 6d20666c 6f617420 755f6c69 iform float u_li │ │ │ │ - 0x00d5a780 6e654861 6c665769 6474683b 200a2020 neHalfWidth; . │ │ │ │ - 0x00d5a790 756e6966 6f726d20 666c6f61 7420755f uniform float u_ │ │ │ │ - 0x00d5a7a0 6d617852 61646975 733b200a 2020636f maxRadius; . co │ │ │ │ - 0x00d5a7b0 6e737420 666c6f61 74206b53 68617065 nst float kShape │ │ │ │ - 0x00d5a7c0 436f6f72 64536361 6c617220 3d203130 CoordScalar = 10 │ │ │ │ - 0x00d5a7d0 30302e30 3b200a20 20766563 34206170 00.0; . vec4 ap │ │ │ │ - 0x00d5a7e0 706c7950 69766f74 5472616e 73666f72 plyPivotTransfor │ │ │ │ - 0x00d5a7f0 6d287665 63342070 69766f74 2c206d61 m(vec4 pivot, ma │ │ │ │ - 0x00d5a800 74342070 69766f74 5472616e 73666f72 t4 pivotTransfor │ │ │ │ - 0x00d5a810 6d2c2066 6c6f6174 20706976 6f745265 m, float pivotRe │ │ │ │ - 0x00d5a820 616c5a29 200a2020 7b200a20 20202076 alZ) . { . v │ │ │ │ - 0x00d5a830 65633420 7472616e 73666f72 6d656450 ec4 transformedP │ │ │ │ - 0x00d5a840 69766f74 203d2070 69766f74 3b200a20 ivot = pivot; . │ │ │ │ - 0x00d5a850 20202066 6c6f6174 2077203d 20747261 float w = tra │ │ │ │ - 0x00d5a860 6e73666f 726d6564 5069766f 742e773b nsformedPivot.w; │ │ │ │ - 0x00d5a870 200a2020 20207472 616e7366 6f726d65 . transforme │ │ │ │ - 0x00d5a880 64506976 6f742e78 7977203d 20287069 dPivot.xyw = (pi │ │ │ │ - 0x00d5a890 766f7454 72616e73 666f726d 202a2076 votTransform * v │ │ │ │ - 0x00d5a8a0 65633428 7472616e 73666f72 6d656450 ec4(transformedP │ │ │ │ - 0x00d5a8b0 69766f74 2e78792c 20706976 6f745265 ivot.xy, pivotRe │ │ │ │ - 0x00d5a8c0 616c5a2c 20772929 2e787977 3b200a20 alZ, w)).xyw; . │ │ │ │ - 0x00d5a8d0 20202074 72616e73 666f726d 65645069 transformedPi │ │ │ │ - 0x00d5a8e0 766f742e 7a202a3d 20747261 6e73666f vot.z *= transfo │ │ │ │ - 0x00d5a8f0 726d6564 5069766f 742e7720 2f20773b rmedPivot.w / w; │ │ │ │ - 0x00d5a900 200a2020 23696664 65662056 554c4b41 . #ifdef VULKA │ │ │ │ - 0x00d5a910 4e200a20 20202074 72616e73 666f726d N . transform │ │ │ │ - 0x00d5a920 65645069 766f742e 79203d20 2d747261 edPivot.y = -tra │ │ │ │ - 0x00d5a930 6e73666f 726d6564 5069766f 742e793b nsformedPivot.y; │ │ │ │ - 0x00d5a940 200a2020 20207472 616e7366 6f726d65 . transforme │ │ │ │ - 0x00d5a950 64506976 6f742e7a 203d2028 7472616e dPivot.z = (tran │ │ │ │ - 0x00d5a960 73666f72 6d656450 69766f74 2e7a2020 sformedPivot.z │ │ │ │ - 0x00d5a970 2b207472 616e7366 6f726d65 64506976 + transformedPiv │ │ │ │ - 0x00d5a980 6f742e77 29202f20 322e303b 200a2020 ot.w) / 2.0; . │ │ │ │ - 0x00d5a990 23656e64 6966200a 20202020 72657475 #endif . retu │ │ │ │ - 0x00d5a9a0 726e2074 72616e73 666f726d 65645069 rn transformedPi │ │ │ │ - 0x00d5a9b0 766f743b 200a2020 7d200a20 20766563 vot; . } . vec │ │ │ │ - 0x00d5a9c0 34206170 706c7942 696c6c62 6f617264 4 applyBillboard │ │ │ │ - 0x00d5a9d0 5069766f 74547261 6e73666f 726d2876 PivotTransform(v │ │ │ │ - 0x00d5a9e0 65633420 7069766f 742c206d 61743420 ec4 pivot, mat4 │ │ │ │ - 0x00d5a9f0 7069766f 74547261 6e73666f 726d2c20 pivotTransform, │ │ │ │ - 0x00d5aa00 666c6f61 74207069 766f7452 65616c5a float pivotRealZ │ │ │ │ - 0x00d5aa10 2c207665 6332206f 66667365 7429200a , vec2 offset) . │ │ │ │ - 0x00d5aa20 20207b20 0a202020 20666c6f 6174206c { . float l │ │ │ │ - 0x00d5aa30 6f676963 5a203d20 7069766f 742e7a20 ogicZ = pivot.z │ │ │ │ - 0x00d5aa40 2f207069 766f742e 773b200a 20202020 / pivot.w; . │ │ │ │ - 0x00d5aa50 76656334 20747261 6e73666f 726d6564 vec4 transformed │ │ │ │ - 0x00d5aa60 5069766f 74203d20 7069766f 74547261 Pivot = pivotTra │ │ │ │ - 0x00d5aa70 6e73666f 726d202a 20766563 34287069 nsform * vec4(pi │ │ │ │ - 0x00d5aa80 766f742e 78792c20 7069766f 74526561 vot.xy, pivotRea │ │ │ │ - 0x00d5aa90 6c5a2c20 7069766f 742e7729 3b200a20 lZ, pivot.w); . │ │ │ │ - 0x00d5aaa0 20202076 65633420 7363616c 65203d20 vec4 scale = │ │ │ │ - 0x00d5aab0 7069766f 74547261 6e73666f 726d202a pivotTransform * │ │ │ │ - 0x00d5aac0 20766563 3428312e 302c202d 312e302c vec4(1.0, -1.0, │ │ │ │ - 0x00d5aad0 20302e30 2c20312e 30293b20 0a202020 0.0, 1.0); . │ │ │ │ - 0x00d5aae0 20766563 3420706f 73697469 6f6e203d vec4 position = │ │ │ │ - 0x00d5aaf0 20766563 34287472 616e7366 6f726d65 vec4(transforme │ │ │ │ - 0x00d5ab00 64506976 6f742e78 79202f20 7472616e dPivot.xy / tran │ │ │ │ - 0x00d5ab10 73666f72 6d656450 69766f74 2e772c20 sformedPivot.w, │ │ │ │ - 0x00d5ab20 6c6f6769 635a2c20 312e3029 202b2076 logicZ, 1.0) + v │ │ │ │ - 0x00d5ab30 65633428 6f666673 6574202f 20736361 ec4(offset / sca │ │ │ │ - 0x00d5ab40 6c652e77 202a2073 63616c65 2e782c20 le.w * scale.x, │ │ │ │ - 0x00d5ab50 302e302c 20302e30 293b200a 20202369 0.0, 0.0); . #i │ │ │ │ - 0x00d5ab60 66646566 2056554c 4b414e20 0a202020 fdef VULKAN . │ │ │ │ - 0x00d5ab70 20706f73 6974696f 6e2e7920 3d202d70 position.y = -p │ │ │ │ - 0x00d5ab80 6f736974 696f6e2e 793b200a 20202020 osition.y; . │ │ │ │ - 0x00d5ab90 706f7369 74696f6e 2e7a203d 2028706f position.z = (po │ │ │ │ - 0x00d5aba0 73697469 6f6e2e7a 20202b20 706f7369 sition.z + posi │ │ │ │ - 0x00d5abb0 74696f6e 2e772920 2f20322e 303b200a tion.w) / 2.0; . │ │ │ │ - 0x00d5abc0 20202365 6e646966 200a2020 20207265 #endif . re │ │ │ │ - 0x00d5abd0 7475726e 20706f73 6974696f 6e3b200a turn position; . │ │ │ │ - 0x00d5abe0 20207d20 0a202076 65633220 63616c63 } . vec2 calc │ │ │ │ - 0x00d5abf0 4c696e65 5472616e 73666f72 6d656441 LineTransformedA │ │ │ │ - 0x00d5ac00 78697350 6f732876 65633220 6f726967 xisPos(vec2 orig │ │ │ │ - 0x00d5ac10 696e616c 41786973 506f732c 20766563 inalAxisPos, vec │ │ │ │ - 0x00d5ac20 32207368 69667465 64506f73 2c206d61 2 shiftedPos, ma │ │ │ │ - 0x00d5ac30 7434206d 6f64656c 56696577 2c20666c t4 modelView, fl │ │ │ │ - 0x00d5ac40 6f617420 68616c66 57696474 6829200a oat halfWidth) . │ │ │ │ - 0x00d5ac50 20207b20 0a202020 20766563 32207020 { . vec2 p │ │ │ │ - 0x00d5ac60 3d202876 65633428 73686966 74656450 = (vec4(shiftedP │ │ │ │ - 0x00d5ac70 6f732c20 302e302c 20312e30 29202a20 os, 0.0, 1.0) * │ │ │ │ - 0x00d5ac80 6d6f6465 6c566965 77292e78 793b200a modelView).xy; . │ │ │ │ - 0x00d5ac90 20202020 76656332 2064203d 2070202d vec2 d = p - │ │ │ │ - 0x00d5aca0 206f7269 67696e61 6c417869 73506f73 originalAxisPos │ │ │ │ - 0x00d5acb0 3b200a20 20202069 66202864 6f742864 ; . if (dot(d │ │ │ │ - 0x00d5acc0 2c206429 20213d20 302e3029 200a2020 , d) != 0.0) . │ │ │ │ - 0x00d5acd0 20202020 72657475 726e206f 72696769 return origi │ │ │ │ - 0x00d5ace0 6e616c41 78697350 6f73202b 206e6f72 nalAxisPos + nor │ │ │ │ - 0x00d5acf0 6d616c69 7a652864 29202a20 68616c66 malize(d) * half │ │ │ │ - 0x00d5ad00 57696474 683b200a 20202020 656c7365 Width; . else │ │ │ │ - 0x00d5ad10 200a2020 20202020 72657475 726e206f . return o │ │ │ │ - 0x00d5ad20 72696769 6e616c41 78697350 6f733b20 riginalAxisPos; │ │ │ │ - 0x00d5ad30 0a20207d 200a2020 766f6964 206d6169 . } . void mai │ │ │ │ - 0x00d5ad40 6e282920 0a20207b 200a2020 20207665 n() . { . ve │ │ │ │ - 0x00d5ad50 63342070 6f73203d 20766563 3428615f c4 pos = vec4(a_ │ │ │ │ - 0x00d5ad60 706f7369 74696f6e 2e78792c 20302c20 position.xy, 0, │ │ │ │ - 0x00d5ad70 3129202a 20755f6d 6f64656c 56696577 1) * u_modelView │ │ │ │ - 0x00d5ad80 3b200a20 20202076 65633220 6e6f726d ; . vec2 norm │ │ │ │ - 0x00d5ad90 616c203d 20766563 3228615f 6e6f726d al = vec2(a_norm │ │ │ │ - 0x00d5ada0 616c2e78 202a2075 5f706172 616d732e al.x * u_params. │ │ │ │ - 0x00d5adb0 78202d20 615f6e6f 726d616c 2e79202a x - a_normal.y * │ │ │ │ - 0x00d5adc0 20755f70 6172616d 732e792c 200a2020 u_params.y, . │ │ │ │ - 0x00d5add0 20202020 20202020 20202020 20202020 │ │ │ │ - 0x00d5ade0 20202020 20615f6e 6f726d61 6c2e7820 a_normal.x │ │ │ │ - 0x00d5adf0 2a20755f 70617261 6d732e79 202b2061 * u_params.y + a │ │ │ │ - 0x00d5ae00 5f6e6f72 6d616c2e 79202a20 755f7061 _normal.y * u_pa │ │ │ │ - 0x00d5ae10 72616d73 2e78293b 200a2020 20207665 rams.x); . ve │ │ │ │ - 0x00d5ae20 63322073 68696674 6564506f 73203d20 c2 shiftedPos = │ │ │ │ - 0x00d5ae30 6e6f726d 616c202a 20755f70 6172616d normal * u_param │ │ │ │ - 0x00d5ae40 732e7a20 2b20706f 732e7879 3b200a20 s.z + pos.xy; . │ │ │ │ - 0x00d5ae50 20202070 6f73203d 20766563 34287368 pos = vec4(sh │ │ │ │ - 0x00d5ae60 69667465 64506f73 2c20615f 706f7369 iftedPos, a_posi │ │ │ │ - 0x00d5ae70 74696f6e 2e7a2c20 312e3029 202a2075 tion.z, 1.0) * u │ │ │ │ - 0x00d5ae80 5f70726f 6a656374 696f6e3b 200a2020 _projection; . │ │ │ │ - 0x00d5ae90 2020676c 5f506f73 6974696f 6e203d20 gl_Position = │ │ │ │ - 0x00d5aea0 6170706c 79506976 6f745472 616e7366 applyPivotTransf │ │ │ │ - 0x00d5aeb0 6f726d28 706f732c 20755f70 69766f74 orm(pos, u_pivot │ │ │ │ - 0x00d5aec0 5472616e 73666f72 6d2c2030 2e30293b Transform, 0.0); │ │ │ │ - 0x00d5aed0 200a2020 20207665 6332206f 66667365 . vec2 offse │ │ │ │ - 0x00d5aee0 7473203d 20616273 28615f6e 6f726d61 ts = abs(a_norma │ │ │ │ - 0x00d5aef0 6c2e7a77 293b200a 20202020 765f6f66 l.zw); . v_of │ │ │ │ - 0x00d5af00 66736574 73203d20 76656334 28615f6e fsets = vec4(a_n │ │ │ │ - 0x00d5af10 6f726d61 6c2e7a77 2c206f66 66736574 ormal.zw, offset │ │ │ │ - 0x00d5af20 73202d20 312e3029 3b200a20 20202076 s - 1.0); . v │ │ │ │ - 0x00d5af30 5f636f6c 6f72203d 20615f63 6f6c6f72 _color = a_color │ │ │ │ - 0x00d5af40 3b200a20 207d200a 00000000 00000000 ; . } ......... │ │ │ │ - 0x00d5af50 00000000 00000000 00000000 00000000 ................ │ │ │ │ - 0x00d5af60 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d5af70 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d5af80 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d5af90 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d5afa0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d5afb0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d5afc0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d5afd0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d5afe0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d5aff0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d5b000 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d5b010 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d5b020 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d5b030 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d5b040 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d5b050 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d5b060 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d5b070 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d5b080 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d5b090 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d5b0a0 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d5b0b0 63342076 5f746578 436f6f72 64733b20 c4 v_texCoords; │ │ │ │ - 0x00d5b0c0 0a202069 6e207665 63342076 5f6d6173 . in vec4 v_mas │ │ │ │ - 0x00d5b0d0 6b436f6c 6f723b20 0a20206f 75742076 kColor; . out v │ │ │ │ - 0x00d5b0e0 65633420 765f4672 6167436f 6c6f723b ec4 v_FragColor; │ │ │ │ - 0x00d5b0f0 200a2020 756e6966 6f726d20 6d617434 . uniform mat4 │ │ │ │ - 0x00d5b100 20755f6d 6f64656c 56696577 3b200a20 u_modelView; . │ │ │ │ - 0x00d5b110 20756e69 666f726d 206d6174 3420755f uniform mat4 u_ │ │ │ │ - 0x00d5b120 70726f6a 65637469 6f6e3b20 0a202075 projection; . u │ │ │ │ - 0x00d5b130 6e69666f 726d206d 61743420 755f7069 niform mat4 u_pi │ │ │ │ - 0x00d5b140 766f7454 72616e73 666f726d 3b200a20 votTransform; . │ │ │ │ - 0x00d5b150 20756e69 666f726d 20766563 3220755f uniform vec2 u_ │ │ │ │ - 0x00d5b160 636f6e74 72617374 47616d6d 613b200a contrastGamma; . │ │ │ │ - 0x00d5b170 2020756e 69666f72 6d20666c 6f617420 uniform float │ │ │ │ - 0x00d5b180 755f6f70 61636974 793b200a 2020756e u_opacity; . un │ │ │ │ - 0x00d5b190 69666f72 6d20666c 6f617420 755f7a53 iform float u_zS │ │ │ │ - 0x00d5b1a0 63616c65 3b200a20 20756e69 666f726d cale; . uniform │ │ │ │ - 0x00d5b1b0 20666c6f 61742075 5f696e74 6572706f float u_interpo │ │ │ │ - 0x00d5b1c0 6c617469 6f6e3b20 0a202075 6e69666f lation; . unifo │ │ │ │ - 0x00d5b1d0 726d2066 6c6f6174 20755f69 734f7574 rm float u_isOut │ │ │ │ - 0x00d5b1e0 6c696e65 50617373 3b200a20 20756e69 linePass; . uni │ │ │ │ - 0x00d5b1f0 666f726d 2073616d 706c6572 32442075 form sampler2D u │ │ │ │ - 0x00d5b200 5f636f6c 6f725465 783b200a 2020636f _colorTex; . co │ │ │ │ - 0x00d5b210 6e737420 666c6f61 74206b53 68617065 nst float kShape │ │ │ │ - 0x00d5b220 436f6f72 64536361 6c617220 3d203130 CoordScalar = 10 │ │ │ │ - 0x00d5b230 30302e30 3b200a20 20766f69 64206d61 00.0; . void ma │ │ │ │ - 0x00d5b240 696e2829 200a2020 7b200a20 20202076 in() . { . v │ │ │ │ - 0x00d5b250 65633420 636f6c6f 72203d20 74657874 ec4 color = text │ │ │ │ - 0x00d5b260 75726528 755f636f 6c6f7254 65782c20 ure(u_colorTex, │ │ │ │ - 0x00d5b270 765f7465 78436f6f 7264732e 7879293b v_texCoords.xy); │ │ │ │ - 0x00d5b280 200a2020 20207665 63342062 67436f6c . vec4 bgCol │ │ │ │ - 0x00d5b290 6f72203d 20746578 74757265 28755f63 or = texture(u_c │ │ │ │ - 0x00d5b2a0 6f6c6f72 5465782c 20765f74 6578436f olorTex, v_texCo │ │ │ │ - 0x00d5b2b0 6f726473 2e7a7729 202a2076 65633428 ords.zw) * vec4( │ │ │ │ - 0x00d5b2c0 765f6d61 736b436f 6c6f722e 78797a2c v_maskColor.xyz, │ │ │ │ - 0x00d5b2d0 20312e30 293b200a 20202020 76656334 1.0); . vec4 │ │ │ │ - 0x00d5b2e0 2066696e 616c436f 6c6f7220 3d206d69 finalColor = mi │ │ │ │ - 0x00d5b2f0 7828636f 6c6f722c 206d6978 28626743 x(color, mix(bgC │ │ │ │ - 0x00d5b300 6f6c6f72 2c20636f 6c6f722c 20636f6c olor, color, col │ │ │ │ - 0x00d5b310 6f722e61 292c2062 67436f6c 6f722e61 or.a), bgColor.a │ │ │ │ - 0x00d5b320 293b200a 20202020 66696e61 6c436f6c ); . finalCol │ │ │ │ - 0x00d5b330 6f722e61 203d2063 6c616d70 28636f6c or.a = clamp(col │ │ │ │ - 0x00d5b340 6f722e61 202b2062 67436f6c 6f722e61 or.a + bgColor.a │ │ │ │ - 0x00d5b350 2c20302e 302c2031 2e302920 2a20755f , 0.0, 1.0) * u_ │ │ │ │ - 0x00d5b360 6f706163 69747920 2a20765f 6d61736b opacity * v_mask │ │ │ │ - 0x00d5b370 436f6c6f 722e773b 200a2020 20206966 Color.w; . if │ │ │ │ - 0x00d5b380 20286669 6e616c43 6f6c6f72 2e61203c (finalColor.a < │ │ │ │ - 0x00d5b390 20302e30 3129200a 20202020 20206469 0.01) . di │ │ │ │ - 0x00d5b3a0 73636172 643b200a 20202020 765f4672 scard; . v_Fr │ │ │ │ - 0x00d5b3b0 6167436f 6c6f7220 3d206669 6e616c43 agColor = finalC │ │ │ │ - 0x00d5b3c0 6f6c6f72 3b200a20 207d200a 00000000 olor; . } ..... │ │ │ │ - 0x00d5b3d0 00000000 00000000 00000000 00000000 ................ │ │ │ │ - 0x00d5b3e0 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d5b3f0 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d5b400 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d5b410 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d5b420 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d5b430 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d5b440 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d5b450 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d5b460 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d5b470 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d5b480 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d5b490 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d5b4a0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d5b4b0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d5b4c0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d5b4d0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d5b4e0 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d5b4f0 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d5b500 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d5b510 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d5b520 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d5b530 63332061 5f706f73 6974696f 6e3b200a c3 a_position; . │ │ │ │ - 0x00d5b540 2020696e 20766563 3320615f 6e6f726d in vec3 a_norm │ │ │ │ - 0x00d5b550 616c416e 64416e69 6d617465 4f725a3b alAndAnimateOrZ; │ │ │ │ - 0x00d5b560 200a2020 696e2076 65633420 615f7465 . in vec4 a_te │ │ │ │ - 0x00d5b570 78436f6f 7264733b 200a2020 696e2076 xCoords; . in v │ │ │ │ - 0x00d5b580 65633420 615f636f 6c6f723b 200a2020 ec4 a_color; . │ │ │ │ - 0x00d5b590 6f757420 76656334 20765f74 6578436f out vec4 v_texCo │ │ │ │ - 0x00d5b5a0 6f726473 3b200a20 206f7574 20766563 ords; . out vec │ │ │ │ - 0x00d5b5b0 3420765f 6d61736b 436f6c6f 723b200a 4 v_maskColor; . │ │ │ │ - 0x00d5b5c0 2020756e 69666f72 6d206d61 74342075 uniform mat4 u │ │ │ │ - 0x00d5b5d0 5f6d6f64 656c5669 65773b20 0a202075 _modelView; . u │ │ │ │ - 0x00d5b5e0 6e69666f 726d206d 61743420 755f7072 niform mat4 u_pr │ │ │ │ - 0x00d5b5f0 6f6a6563 74696f6e 3b200a20 20756e69 ojection; . uni │ │ │ │ - 0x00d5b600 666f726d 206d6174 3420755f 7069766f form mat4 u_pivo │ │ │ │ - 0x00d5b610 74547261 6e73666f 726d3b20 0a202075 tTransform; . u │ │ │ │ - 0x00d5b620 6e69666f 726d2076 65633220 755f636f niform vec2 u_co │ │ │ │ - 0x00d5b630 6e747261 73744761 6d6d613b 200a2020 ntrastGamma; . │ │ │ │ - 0x00d5b640 756e6966 6f726d20 666c6f61 7420755f uniform float u_ │ │ │ │ - 0x00d5b650 6f706163 6974793b 200a2020 756e6966 opacity; . unif │ │ │ │ - 0x00d5b660 6f726d20 666c6f61 7420755f 7a536361 orm float u_zSca │ │ │ │ - 0x00d5b670 6c653b20 0a202075 6e69666f 726d2066 le; . uniform f │ │ │ │ - 0x00d5b680 6c6f6174 20755f69 6e746572 706f6c61 loat u_interpola │ │ │ │ - 0x00d5b690 74696f6e 3b200a20 20756e69 666f726d tion; . uniform │ │ │ │ - 0x00d5b6a0 20666c6f 61742075 5f69734f 75746c69 float u_isOutli │ │ │ │ - 0x00d5b6b0 6e655061 73733b20 0a202063 6f6e7374 nePass; . const │ │ │ │ - 0x00d5b6c0 20666c6f 6174206b 53686170 65436f6f float kShapeCoo │ │ │ │ - 0x00d5b6d0 72645363 616c6172 203d2031 3030302e rdScalar = 1000. │ │ │ │ - 0x00d5b6e0 303b200a 20207665 63342061 70706c79 0; . vec4 apply │ │ │ │ - 0x00d5b6f0 5069766f 74547261 6e73666f 726d2876 PivotTransform(v │ │ │ │ - 0x00d5b700 65633420 7069766f 742c206d 61743420 ec4 pivot, mat4 │ │ │ │ - 0x00d5b710 7069766f 74547261 6e73666f 726d2c20 pivotTransform, │ │ │ │ - 0x00d5b720 666c6f61 74207069 766f7452 65616c5a float pivotRealZ │ │ │ │ - 0x00d5b730 29200a20 207b200a 20202020 76656334 ) . { . vec4 │ │ │ │ - 0x00d5b740 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ - 0x00d5b750 74203d20 7069766f 743b200a 20202020 t = pivot; . │ │ │ │ - 0x00d5b760 666c6f61 74207720 3d207472 616e7366 float w = transf │ │ │ │ - 0x00d5b770 6f726d65 64506976 6f742e77 3b200a20 ormedPivot.w; . │ │ │ │ - 0x00d5b780 20202074 72616e73 666f726d 65645069 transformedPi │ │ │ │ - 0x00d5b790 766f742e 78797720 3d202870 69766f74 vot.xyw = (pivot │ │ │ │ - 0x00d5b7a0 5472616e 73666f72 6d202a20 76656334 Transform * vec4 │ │ │ │ - 0x00d5b7b0 28747261 6e73666f 726d6564 5069766f (transformedPivo │ │ │ │ - 0x00d5b7c0 742e7879 2c207069 766f7452 65616c5a t.xy, pivotRealZ │ │ │ │ - 0x00d5b7d0 2c207729 292e7879 773b200a 20202020 , w)).xyw; . │ │ │ │ - 0x00d5b7e0 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ - 0x00d5b7f0 2e7a202a 3d207472 616e7366 6f726d65 .z *= transforme │ │ │ │ - 0x00d5b800 64506976 6f742e77 202f2077 3b200a20 dPivot.w / w; . │ │ │ │ - 0x00d5b810 20236966 64656620 56554c4b 414e200a #ifdef VULKAN . │ │ │ │ - 0x00d5b820 20202020 7472616e 73666f72 6d656450 transformedP │ │ │ │ - 0x00d5b830 69766f74 2e79203d 202d7472 616e7366 ivot.y = -transf │ │ │ │ - 0x00d5b840 6f726d65 64506976 6f742e79 3b200a20 ormedPivot.y; . │ │ │ │ - 0x00d5b850 20202074 72616e73 666f726d 65645069 transformedPi │ │ │ │ - 0x00d5b860 766f742e 7a203d20 28747261 6e73666f vot.z = (transfo │ │ │ │ - 0x00d5b870 726d6564 5069766f 742e7a20 202b2074 rmedPivot.z + t │ │ │ │ - 0x00d5b880 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ - 0x00d5b890 7729202f 20322e30 3b200a20 2023656e w) / 2.0; . #en │ │ │ │ - 0x00d5b8a0 64696620 0a202020 20726574 75726e20 dif . return │ │ │ │ - 0x00d5b8b0 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ - 0x00d5b8c0 3b200a20 207d200a 20207665 63342061 ; . } . vec4 a │ │ │ │ - 0x00d5b8d0 70706c79 42696c6c 626f6172 64506976 pplyBillboardPiv │ │ │ │ - 0x00d5b8e0 6f745472 616e7366 6f726d28 76656334 otTransform(vec4 │ │ │ │ - 0x00d5b8f0 20706976 6f742c20 6d617434 20706976 pivot, mat4 piv │ │ │ │ - 0x00d5b900 6f745472 616e7366 6f726d2c 20666c6f otTransform, flo │ │ │ │ - 0x00d5b910 61742070 69766f74 5265616c 5a2c2076 at pivotRealZ, v │ │ │ │ - 0x00d5b920 65633220 6f666673 65742920 0a20207b ec2 offset) . { │ │ │ │ - 0x00d5b930 200a2020 2020666c 6f617420 6c6f6769 . float logi │ │ │ │ - 0x00d5b940 635a203d 20706976 6f742e7a 202f2070 cZ = pivot.z / p │ │ │ │ - 0x00d5b950 69766f74 2e773b20 0a202020 20766563 ivot.w; . vec │ │ │ │ - 0x00d5b960 34207472 616e7366 6f726d65 64506976 4 transformedPiv │ │ │ │ - 0x00d5b970 6f74203d 20706976 6f745472 616e7366 ot = pivotTransf │ │ │ │ - 0x00d5b980 6f726d20 2a207665 63342870 69766f74 orm * vec4(pivot │ │ │ │ - 0x00d5b990 2e78792c 20706976 6f745265 616c5a2c .xy, pivotRealZ, │ │ │ │ - 0x00d5b9a0 20706976 6f742e77 293b200a 20202020 pivot.w); . │ │ │ │ - 0x00d5b9b0 76656334 20736361 6c65203d 20706976 vec4 scale = piv │ │ │ │ - 0x00d5b9c0 6f745472 616e7366 6f726d20 2a207665 otTransform * ve │ │ │ │ - 0x00d5b9d0 63342831 2e302c20 2d312e30 2c20302e c4(1.0, -1.0, 0. │ │ │ │ - 0x00d5b9e0 302c2031 2e30293b 200a2020 20207665 0, 1.0); . ve │ │ │ │ - 0x00d5b9f0 63342070 6f736974 696f6e20 3d207665 c4 position = ve │ │ │ │ - 0x00d5ba00 63342874 72616e73 666f726d 65645069 c4(transformedPi │ │ │ │ - 0x00d5ba10 766f742e 7879202f 20747261 6e73666f vot.xy / transfo │ │ │ │ - 0x00d5ba20 726d6564 5069766f 742e772c 206c6f67 rmedPivot.w, log │ │ │ │ - 0x00d5ba30 69635a2c 20312e30 29202b20 76656334 icZ, 1.0) + vec4 │ │ │ │ - 0x00d5ba40 286f6666 73657420 2f207363 616c652e (offset / scale. │ │ │ │ - 0x00d5ba50 77202a20 7363616c 652e782c 20302e30 w * scale.x, 0.0 │ │ │ │ - 0x00d5ba60 2c20302e 30293b20 0a202023 69666465 , 0.0); . #ifde │ │ │ │ - 0x00d5ba70 66205655 4c4b414e 200a2020 2020706f f VULKAN . po │ │ │ │ - 0x00d5ba80 73697469 6f6e2e79 203d202d 706f7369 sition.y = -posi │ │ │ │ - 0x00d5ba90 74696f6e 2e793b20 0a202020 20706f73 tion.y; . pos │ │ │ │ - 0x00d5baa0 6974696f 6e2e7a20 3d202870 6f736974 ition.z = (posit │ │ │ │ - 0x00d5bab0 696f6e2e 7a20202b 20706f73 6974696f ion.z + positio │ │ │ │ - 0x00d5bac0 6e2e7729 202f2032 2e303b20 0a202023 n.w) / 2.0; . # │ │ │ │ - 0x00d5bad0 656e6469 66200a20 20202072 65747572 endif . retur │ │ │ │ - 0x00d5bae0 6e20706f 73697469 6f6e3b20 0a20207d n position; . } │ │ │ │ - 0x00d5baf0 200a2020 76656332 2063616c 634c696e . vec2 calcLin │ │ │ │ - 0x00d5bb00 65547261 6e73666f 726d6564 41786973 eTransformedAxis │ │ │ │ - 0x00d5bb10 506f7328 76656332 206f7269 67696e61 Pos(vec2 origina │ │ │ │ - 0x00d5bb20 6c417869 73506f73 2c207665 63322073 lAxisPos, vec2 s │ │ │ │ - 0x00d5bb30 68696674 6564506f 732c206d 61743420 hiftedPos, mat4 │ │ │ │ - 0x00d5bb40 6d6f6465 6c566965 772c2066 6c6f6174 modelView, float │ │ │ │ - 0x00d5bb50 2068616c 66576964 74682920 0a20207b halfWidth) . { │ │ │ │ - 0x00d5bb60 200a2020 20207665 63322070 203d2028 . vec2 p = ( │ │ │ │ - 0x00d5bb70 76656334 28736869 66746564 506f732c vec4(shiftedPos, │ │ │ │ - 0x00d5bb80 20302e30 2c20312e 3029202a 206d6f64 0.0, 1.0) * mod │ │ │ │ - 0x00d5bb90 656c5669 6577292e 78793b20 0a202020 elView).xy; . │ │ │ │ - 0x00d5bba0 20766563 32206420 3d207020 2d206f72 vec2 d = p - or │ │ │ │ - 0x00d5bbb0 6967696e 616c4178 6973506f 733b200a iginalAxisPos; . │ │ │ │ - 0x00d5bbc0 20202020 69662028 646f7428 642c2064 if (dot(d, d │ │ │ │ - 0x00d5bbd0 2920213d 20302e30 29200a20 20202020 ) != 0.0) . │ │ │ │ - 0x00d5bbe0 20726574 75726e20 6f726967 696e616c return original │ │ │ │ - 0x00d5bbf0 41786973 506f7320 2b206e6f 726d616c AxisPos + normal │ │ │ │ - 0x00d5bc00 697a6528 6429202a 2068616c 66576964 ize(d) * halfWid │ │ │ │ - 0x00d5bc10 74683b20 0a202020 20656c73 65200a20 th; . else . │ │ │ │ - 0x00d5bc20 20202020 20726574 75726e20 6f726967 return orig │ │ │ │ - 0x00d5bc30 696e616c 41786973 506f733b 200a2020 inalAxisPos; . │ │ │ │ - 0x00d5bc40 7d200a20 20766f69 64206d61 696e2829 } . void main() │ │ │ │ - 0x00d5bc50 200a2020 7b200a20 20202076 65633220 . { . vec2 │ │ │ │ - 0x00d5bc60 6e6f726d 616c203d 20615f6e 6f726d61 normal = a_norma │ │ │ │ - 0x00d5bc70 6c416e64 416e696d 6174654f 725a2e78 lAndAnimateOrZ.x │ │ │ │ - 0x00d5bc80 793b200a 20202020 69662028 615f6e6f y; . if (a_no │ │ │ │ - 0x00d5bc90 726d616c 416e6441 6e696d61 74654f72 rmalAndAnimateOr │ │ │ │ - 0x00d5bca0 5a2e7a20 3e20302e 3029200a 20202020 Z.z > 0.0) . │ │ │ │ - 0x00d5bcb0 20206e6f 726d616c 203d2075 5f696e74 normal = u_int │ │ │ │ - 0x00d5bcc0 6572706f 6c617469 6f6e202a 206e6f72 erpolation * nor │ │ │ │ - 0x00d5bcd0 6d616c3b 200a2020 20207665 63342070 mal; . vec4 p │ │ │ │ - 0x00d5bce0 203d2076 65633428 615f706f 73697469 = vec4(a_positi │ │ │ │ - 0x00d5bcf0 6f6e2c20 312e3029 202a2075 5f6d6f64 on, 1.0) * u_mod │ │ │ │ - 0x00d5bd00 656c5669 65773b20 0a202020 20766563 elView; . vec │ │ │ │ - 0x00d5bd10 3420706f 73203d20 76656334 286e6f72 4 pos = vec4(nor │ │ │ │ - 0x00d5bd20 6d616c2c 20302e30 2c20302e 3029202b mal, 0.0, 0.0) + │ │ │ │ - 0x00d5bd30 20703b20 0a202020 20766563 34207072 p; . vec4 pr │ │ │ │ - 0x00d5bd40 6f6a6563 74656450 69766f74 203d2070 ojectedPivot = p │ │ │ │ - 0x00d5bd50 202a2075 5f70726f 6a656374 696f6e3b * u_projection; │ │ │ │ - 0x00d5bd60 200a2020 2020676c 5f506f73 6974696f . gl_Positio │ │ │ │ - 0x00d5bd70 6e203d20 6170706c 79506976 6f745472 n = applyPivotTr │ │ │ │ - 0x00d5bd80 616e7366 6f726d28 706f7320 2a20755f ansform(pos * u_ │ │ │ │ - 0x00d5bd90 70726f6a 65637469 6f6e2c20 755f7069 projection, u_pi │ │ │ │ - 0x00d5bda0 766f7454 72616e73 666f726d 2c20302e votTransform, 0. │ │ │ │ - 0x00d5bdb0 30293b20 0a202020 20666c6f 6174206e 0); . float n │ │ │ │ - 0x00d5bdc0 65775a20 3d207072 6f6a6563 74656450 ewZ = projectedP │ │ │ │ - 0x00d5bdd0 69766f74 2e79202f 2070726f 6a656374 ivot.y / project │ │ │ │ - 0x00d5bde0 65645069 766f742e 77202a20 302e3520 edPivot.w * 0.5 │ │ │ │ - 0x00d5bdf0 2b20302e 353b200a 20202020 676c5f50 + 0.5; . gl_P │ │ │ │ - 0x00d5be00 6f736974 696f6e2e 7a203d20 61627328 osition.z = abs( │ │ │ │ - 0x00d5be10 615f6e6f 726d616c 416e6441 6e696d61 a_normalAndAnima │ │ │ │ - 0x00d5be20 74654f72 5a2e7a29 202a206e 65775a20 teOrZ.z) * newZ │ │ │ │ - 0x00d5be30 2b202831 2e30202d 20616273 28615f6e + (1.0 - abs(a_n │ │ │ │ - 0x00d5be40 6f726d61 6c416e64 416e696d 6174654f ormalAndAnimateO │ │ │ │ - 0x00d5be50 725a2e7a 2929202a 20676c5f 506f7369 rZ.z)) * gl_Posi │ │ │ │ - 0x00d5be60 74696f6e 2e7a3b20 0a202020 20765f74 tion.z; . v_t │ │ │ │ - 0x00d5be70 6578436f 6f726473 203d2061 5f746578 exCoords = a_tex │ │ │ │ - 0x00d5be80 436f6f72 64733b20 0a202020 20765f6d Coords; . v_m │ │ │ │ - 0x00d5be90 61736b43 6f6c6f72 203d2061 5f636f6c askColor = a_col │ │ │ │ - 0x00d5bea0 6f723b20 0a20207d 200a0000 00000000 or; . } ....... │ │ │ │ - 0x00d5beb0 00000000 00000000 00000000 00000000 ................ │ │ │ │ - 0x00d5bec0 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ - 0x00d5bed0 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ - 0x00d5bee0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ - 0x00d5bef0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ - 0x00d5bf00 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ - 0x00d5bf10 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ - 0x00d5bf20 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ - 0x00d5bf30 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ - 0x00d5bf40 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ - 0x00d5bf50 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ - 0x00d5bf60 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ - 0x00d5bf70 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ - 0x00d5bf80 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ - 0x00d5bf90 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ - 0x00d5bfa0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ - 0x00d5bfb0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ - 0x00d5bfc0 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ - 0x00d5bfd0 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ - 0x00d5bfe0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ - 0x00d5bff0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ - 0x00d5c000 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ - 0x00d5c010 63332061 5f706f73 6974696f 6e3b200a c3 a_position; . │ │ │ │ - 0x00d5c020 2020696e 20766563 3320615f 6e6f726d in vec3 a_norm │ │ │ │ - 0x00d5c030 616c416e 64416e69 6d617465 4f725a3b alAndAnimateOrZ; │ │ │ │ - 0x00d5c040 200a2020 696e2076 65633420 615f7465 . in vec4 a_te │ │ │ │ - 0x00d5c050 78436f6f 7264733b 200a2020 696e2076 xCoords; . in v │ │ │ │ - 0x00d5c060 65633420 615f636f 6c6f723b 200a2020 ec4 a_color; . │ │ │ │ - 0x00d5c070 6f757420 76656334 20765f74 6578436f out vec4 v_texCo │ │ │ │ - 0x00d5c080 6f726473 3b200a20 206f7574 20766563 ords; . out vec │ │ │ │ - 0x00d5c090 3420765f 6d61736b 436f6c6f 723b200a 4 v_maskColor; . │ │ │ │ - 0x00d5c0a0 2020756e 69666f72 6d206d61 74342075 uniform mat4 u │ │ │ │ - 0x00d5c0b0 5f6d6f64 656c5669 65773b20 0a202075 _modelView; . u │ │ │ │ - 0x00d5c0c0 6e69666f 726d206d 61743420 755f7072 niform mat4 u_pr │ │ │ │ - 0x00d5c0d0 6f6a6563 74696f6e 3b200a20 20756e69 ojection; . uni │ │ │ │ - 0x00d5c0e0 666f726d 206d6174 3420755f 7069766f form mat4 u_pivo │ │ │ │ - 0x00d5c0f0 74547261 6e73666f 726d3b20 0a202075 tTransform; . u │ │ │ │ - 0x00d5c100 6e69666f 726d2076 65633220 755f636f niform vec2 u_co │ │ │ │ - 0x00d5c110 6e747261 73744761 6d6d613b 200a2020 ntrastGamma; . │ │ │ │ - 0x00d5c120 756e6966 6f726d20 666c6f61 7420755f uniform float u_ │ │ │ │ - 0x00d5c130 6f706163 6974793b 200a2020 756e6966 opacity; . unif │ │ │ │ - 0x00d5c140 6f726d20 666c6f61 7420755f 7a536361 orm float u_zSca │ │ │ │ - 0x00d5c150 6c653b20 0a202075 6e69666f 726d2066 le; . uniform f │ │ │ │ - 0x00d5c160 6c6f6174 20755f69 6e746572 706f6c61 loat u_interpola │ │ │ │ - 0x00d5c170 74696f6e 3b200a20 20756e69 666f726d tion; . uniform │ │ │ │ - 0x00d5c180 20666c6f 61742075 5f69734f 75746c69 float u_isOutli │ │ │ │ - 0x00d5c190 6e655061 73733b20 0a202063 6f6e7374 nePass; . const │ │ │ │ - 0x00d5c1a0 20666c6f 6174206b 53686170 65436f6f float kShapeCoo │ │ │ │ - 0x00d5c1b0 72645363 616c6172 203d2031 3030302e rdScalar = 1000. │ │ │ │ - 0x00d5c1c0 303b200a 20207665 63342061 70706c79 0; . vec4 apply │ │ │ │ - 0x00d5c1d0 5069766f 74547261 6e73666f 726d2876 PivotTransform(v │ │ │ │ - 0x00d5c1e0 65633420 7069766f 742c206d 61743420 ec4 pivot, mat4 │ │ │ │ - 0x00d5c1f0 7069766f 74547261 6e73666f 726d2c20 pivotTransform, │ │ │ │ - 0x00d5c200 666c6f61 74207069 766f7452 65616c5a float pivotRealZ │ │ │ │ - 0x00d5c210 29200a20 207b200a 20202020 76656334 ) . { . vec4 │ │ │ │ - 0x00d5c220 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ - 0x00d5c230 74203d20 7069766f 743b200a 20202020 t = pivot; . │ │ │ │ - 0x00d5c240 666c6f61 74207720 3d207472 616e7366 float w = transf │ │ │ │ - 0x00d5c250 6f726d65 64506976 6f742e77 3b200a20 ormedPivot.w; . │ │ │ │ - 0x00d5c260 20202074 72616e73 666f726d 65645069 transformedPi │ │ │ │ - 0x00d5c270 766f742e 78797720 3d202870 69766f74 vot.xyw = (pivot │ │ │ │ - 0x00d5c280 5472616e 73666f72 6d202a20 76656334 Transform * vec4 │ │ │ │ - 0x00d5c290 28747261 6e73666f 726d6564 5069766f (transformedPivo │ │ │ │ - 0x00d5c2a0 742e7879 2c207069 766f7452 65616c5a t.xy, pivotRealZ │ │ │ │ - 0x00d5c2b0 2c207729 292e7879 773b200a 20202020 , w)).xyw; . │ │ │ │ - 0x00d5c2c0 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ - 0x00d5c2d0 2e7a202a 3d207472 616e7366 6f726d65 .z *= transforme │ │ │ │ - 0x00d5c2e0 64506976 6f742e77 202f2077 3b200a20 dPivot.w / w; . │ │ │ │ - 0x00d5c2f0 20236966 64656620 56554c4b 414e200a #ifdef VULKAN . │ │ │ │ - 0x00d5c300 20202020 7472616e 73666f72 6d656450 transformedP │ │ │ │ - 0x00d5c310 69766f74 2e79203d 202d7472 616e7366 ivot.y = -transf │ │ │ │ - 0x00d5c320 6f726d65 64506976 6f742e79 3b200a20 ormedPivot.y; . │ │ │ │ - 0x00d5c330 20202074 72616e73 666f726d 65645069 transformedPi │ │ │ │ - 0x00d5c340 766f742e 7a203d20 28747261 6e73666f vot.z = (transfo │ │ │ │ - 0x00d5c350 726d6564 5069766f 742e7a20 202b2074 rmedPivot.z + t │ │ │ │ - 0x00d5c360 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ - 0x00d5c370 7729202f 20322e30 3b200a20 2023656e w) / 2.0; . #en │ │ │ │ - 0x00d5c380 64696620 0a202020 20726574 75726e20 dif . return │ │ │ │ + 0x00d57f50 72546578 436f6f72 64733b20 0a202023 rTexCoords; . # │ │ │ │ + 0x00d57f60 69666465 6620454e 41424c45 5f565446 ifdef ENABLE_VTF │ │ │ │ + 0x00d57f70 200a2020 6f757420 4c4f575f 50207665 . out LOW_P ve │ │ │ │ + 0x00d57f80 63342076 5f636f6c 6f723b20 0a202023 c4 v_color; . # │ │ │ │ + 0x00d57f90 656c7365 200a2020 6f757420 76656332 else . out vec2 │ │ │ │ + 0x00d57fa0 20765f63 6f6c6f72 54657843 6f6f7264 v_colorTexCoord │ │ │ │ + 0x00d57fb0 733b200a 20202365 6e646966 200a2020 s; . #endif . │ │ │ │ + 0x00d57fc0 756e6966 6f726d20 6d617434 20755f6d uniform mat4 u_m │ │ │ │ + 0x00d57fd0 6f64656c 56696577 3b200a20 20756e69 odelView; . uni │ │ │ │ + 0x00d57fe0 666f726d 206d6174 3420755f 70726f6a form mat4 u_proj │ │ │ │ + 0x00d57ff0 65637469 6f6e3b20 0a202075 6e69666f ection; . unifo │ │ │ │ + 0x00d58000 726d206d 61743420 755f7069 766f7454 rm mat4 u_pivotT │ │ │ │ + 0x00d58010 72616e73 666f726d 3b200a20 20756e69 ransform; . uni │ │ │ │ + 0x00d58020 666f726d 20766563 3220755f 636f6e74 form vec2 u_cont │ │ │ │ + 0x00d58030 72617374 47616d6d 613b200a 2020756e rastGamma; . un │ │ │ │ + 0x00d58040 69666f72 6d20666c 6f617420 755f6f70 iform float u_op │ │ │ │ + 0x00d58050 61636974 793b200a 2020756e 69666f72 acity; . unifor │ │ │ │ + 0x00d58060 6d20666c 6f617420 755f7a53 63616c65 m float u_zScale │ │ │ │ + 0x00d58070 3b200a20 20756e69 666f726d 20666c6f ; . uniform flo │ │ │ │ + 0x00d58080 61742075 5f696e74 6572706f 6c617469 at u_interpolati │ │ │ │ + 0x00d58090 6f6e3b20 0a202075 6e69666f 726d2066 on; . uniform f │ │ │ │ + 0x00d580a0 6c6f6174 20755f69 734f7574 6c696e65 loat u_isOutline │ │ │ │ + 0x00d580b0 50617373 3b200a20 20236966 64656620 Pass; . #ifdef │ │ │ │ + 0x00d580c0 454e4142 4c455f56 5446200a 2020756e ENABLE_VTF . un │ │ │ │ + 0x00d580d0 69666f72 6d207361 6d706c65 72324420 iform sampler2D │ │ │ │ + 0x00d580e0 755f636f 6c6f7254 65783b20 0a202023 u_colorTex; . # │ │ │ │ + 0x00d580f0 656e6469 66200a20 20636f6e 73742066 endif . const f │ │ │ │ + 0x00d58100 6c6f6174 206b5368 61706543 6f6f7264 loat kShapeCoord │ │ │ │ + 0x00d58110 5363616c 6172203d 20313030 302e303b Scalar = 1000.0; │ │ │ │ + 0x00d58120 200a2020 76656334 20617070 6c795069 . vec4 applyPi │ │ │ │ + 0x00d58130 766f7454 72616e73 666f726d 28766563 votTransform(vec │ │ │ │ + 0x00d58140 34207069 766f742c 206d6174 34207069 4 pivot, mat4 pi │ │ │ │ + 0x00d58150 766f7454 72616e73 666f726d 2c20666c votTransform, fl │ │ │ │ + 0x00d58160 6f617420 7069766f 74526561 6c5a2920 oat pivotRealZ) │ │ │ │ + 0x00d58170 0a20207b 200a2020 20207665 63342074 . { . vec4 t │ │ │ │ + 0x00d58180 72616e73 666f726d 65645069 766f7420 ransformedPivot │ │ │ │ + 0x00d58190 3d207069 766f743b 200a2020 2020666c = pivot; . fl │ │ │ │ + 0x00d581a0 6f617420 77203d20 7472616e 73666f72 oat w = transfor │ │ │ │ + 0x00d581b0 6d656450 69766f74 2e773b20 0a202020 medPivot.w; . │ │ │ │ + 0x00d581c0 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ + 0x00d581d0 742e7879 77203d20 28706976 6f745472 t.xyw = (pivotTr │ │ │ │ + 0x00d581e0 616e7366 6f726d20 2a207665 63342874 ansform * vec4(t │ │ │ │ + 0x00d581f0 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ + 0x00d58200 78792c20 7069766f 74526561 6c5a2c20 xy, pivotRealZ, │ │ │ │ + 0x00d58210 7729292e 7879773b 200a2020 20207472 w)).xyw; . tr │ │ │ │ + 0x00d58220 616e7366 6f726d65 64506976 6f742e7a ansformedPivot.z │ │ │ │ + 0x00d58230 202a3d20 7472616e 73666f72 6d656450 *= transformedP │ │ │ │ + 0x00d58240 69766f74 2e77202f 20773b20 0a202023 ivot.w / w; . # │ │ │ │ + 0x00d58250 69666465 66205655 4c4b414e 200a2020 ifdef VULKAN . │ │ │ │ + 0x00d58260 20207472 616e7366 6f726d65 64506976 transformedPiv │ │ │ │ + 0x00d58270 6f742e79 203d202d 7472616e 73666f72 ot.y = -transfor │ │ │ │ + 0x00d58280 6d656450 69766f74 2e793b20 0a202020 medPivot.y; . │ │ │ │ + 0x00d58290 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ + 0x00d582a0 742e7a20 3d202874 72616e73 666f726d t.z = (transform │ │ │ │ + 0x00d582b0 65645069 766f742e 7a20202b 20747261 edPivot.z + tra │ │ │ │ + 0x00d582c0 6e73666f 726d6564 5069766f 742e7729 nsformedPivot.w) │ │ │ │ + 0x00d582d0 202f2032 2e303b20 0a202023 656e6469 / 2.0; . #endi │ │ │ │ + 0x00d582e0 66200a20 20202072 65747572 6e207472 f . return tr │ │ │ │ + 0x00d582f0 616e7366 6f726d65 64506976 6f743b20 ansformedPivot; │ │ │ │ + 0x00d58300 0a20207d 200a2020 76656334 20617070 . } . vec4 app │ │ │ │ + 0x00d58310 6c794269 6c6c626f 61726450 69766f74 lyBillboardPivot │ │ │ │ + 0x00d58320 5472616e 73666f72 6d287665 63342070 Transform(vec4 p │ │ │ │ + 0x00d58330 69766f74 2c206d61 74342070 69766f74 ivot, mat4 pivot │ │ │ │ + 0x00d58340 5472616e 73666f72 6d2c2066 6c6f6174 Transform, float │ │ │ │ + 0x00d58350 20706976 6f745265 616c5a2c 20766563 pivotRealZ, vec │ │ │ │ + 0x00d58360 32206f66 66736574 29200a20 207b200a 2 offset) . { . │ │ │ │ + 0x00d58370 20202020 666c6f61 74206c6f 6769635a float logicZ │ │ │ │ + 0x00d58380 203d2070 69766f74 2e7a202f 20706976 = pivot.z / piv │ │ │ │ + 0x00d58390 6f742e77 3b200a20 20202076 65633420 ot.w; . vec4 │ │ │ │ + 0x00d583a0 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ + 0x00d583b0 203d2070 69766f74 5472616e 73666f72 = pivotTransfor │ │ │ │ + 0x00d583c0 6d202a20 76656334 28706976 6f742e78 m * vec4(pivot.x │ │ │ │ + 0x00d583d0 792c2070 69766f74 5265616c 5a2c2070 y, pivotRealZ, p │ │ │ │ + 0x00d583e0 69766f74 2e77293b 200a2020 20207665 ivot.w); . ve │ │ │ │ + 0x00d583f0 63342073 63616c65 203d2070 69766f74 c4 scale = pivot │ │ │ │ + 0x00d58400 5472616e 73666f72 6d202a20 76656334 Transform * vec4 │ │ │ │ + 0x00d58410 28312e30 2c202d31 2e302c20 302e302c (1.0, -1.0, 0.0, │ │ │ │ + 0x00d58420 20312e30 293b200a 20202020 76656334 1.0); . vec4 │ │ │ │ + 0x00d58430 20706f73 6974696f 6e203d20 76656334 position = vec4 │ │ │ │ + 0x00d58440 28747261 6e73666f 726d6564 5069766f (transformedPivo │ │ │ │ + 0x00d58450 742e7879 202f2074 72616e73 666f726d t.xy / transform │ │ │ │ + 0x00d58460 65645069 766f742e 772c206c 6f676963 edPivot.w, logic │ │ │ │ + 0x00d58470 5a2c2031 2e302920 2b207665 6334286f Z, 1.0) + vec4(o │ │ │ │ + 0x00d58480 66667365 74202f20 7363616c 652e7720 ffset / scale.w │ │ │ │ + 0x00d58490 2a207363 616c652e 782c2030 2e302c20 * scale.x, 0.0, │ │ │ │ + 0x00d584a0 302e3029 3b200a20 20236966 64656620 0.0); . #ifdef │ │ │ │ + 0x00d584b0 56554c4b 414e200a 20202020 706f7369 VULKAN . posi │ │ │ │ + 0x00d584c0 74696f6e 2e79203d 202d706f 73697469 tion.y = -positi │ │ │ │ + 0x00d584d0 6f6e2e79 3b200a20 20202070 6f736974 on.y; . posit │ │ │ │ + 0x00d584e0 696f6e2e 7a203d20 28706f73 6974696f ion.z = (positio │ │ │ │ + 0x00d584f0 6e2e7a20 202b2070 6f736974 696f6e2e n.z + position. │ │ │ │ + 0x00d58500 7729202f 20322e30 3b200a20 2023656e w) / 2.0; . #en │ │ │ │ + 0x00d58510 64696620 0a202020 20726574 75726e20 dif . return │ │ │ │ + 0x00d58520 706f7369 74696f6e 3b200a20 207d200a position; . } . │ │ │ │ + 0x00d58530 20207665 63322063 616c634c 696e6554 vec2 calcLineT │ │ │ │ + 0x00d58540 72616e73 666f726d 65644178 6973506f ransformedAxisPo │ │ │ │ + 0x00d58550 73287665 6332206f 72696769 6e616c41 s(vec2 originalA │ │ │ │ + 0x00d58560 78697350 6f732c20 76656332 20736869 xisPos, vec2 shi │ │ │ │ + 0x00d58570 66746564 506f732c 206d6174 34206d6f ftedPos, mat4 mo │ │ │ │ + 0x00d58580 64656c56 6965772c 20666c6f 61742068 delView, float h │ │ │ │ + 0x00d58590 616c6657 69647468 29200a20 207b200a alfWidth) . { . │ │ │ │ + 0x00d585a0 20202020 76656332 2070203d 20287665 vec2 p = (ve │ │ │ │ + 0x00d585b0 63342873 68696674 6564506f 732c2030 c4(shiftedPos, 0 │ │ │ │ + 0x00d585c0 2e302c20 312e3029 202a206d 6f64656c .0, 1.0) * model │ │ │ │ + 0x00d585d0 56696577 292e7879 3b200a20 20202076 View).xy; . v │ │ │ │ + 0x00d585e0 65633220 64203d20 70202d20 6f726967 ec2 d = p - orig │ │ │ │ + 0x00d585f0 696e616c 41786973 506f733b 200a2020 inalAxisPos; . │ │ │ │ + 0x00d58600 20206966 2028646f 7428642c 20642920 if (dot(d, d) │ │ │ │ + 0x00d58610 213d2030 2e302920 0a202020 20202072 != 0.0) . r │ │ │ │ + 0x00d58620 65747572 6e206f72 6967696e 616c4178 eturn originalAx │ │ │ │ + 0x00d58630 6973506f 73202b20 6e6f726d 616c697a isPos + normaliz │ │ │ │ + 0x00d58640 65286429 202a2068 616c6657 69647468 e(d) * halfWidth │ │ │ │ + 0x00d58650 3b200a20 20202065 6c736520 0a202020 ; . else . │ │ │ │ + 0x00d58660 20202072 65747572 6e206f72 6967696e return origin │ │ │ │ + 0x00d58670 616c4178 6973506f 733b200a 20207d20 alAxisPos; . } │ │ │ │ + 0x00d58680 0a202076 6f696420 6d61696e 2829200a . void main() . │ │ │ │ + 0x00d58690 20207b20 0a202020 20766563 3420706f { . vec4 po │ │ │ │ + 0x00d586a0 73203d20 76656334 28615f70 6f736974 s = vec4(a_posit │ │ │ │ + 0x00d586b0 696f6e2c 20312e30 29202a20 755f6d6f ion, 1.0) * u_mo │ │ │ │ + 0x00d586c0 64656c56 6965773b 200a2020 2020706f delView; . po │ │ │ │ + 0x00d586d0 732e7879 77203d20 28706f73 202a2075 s.xyw = (pos * u │ │ │ │ + 0x00d586e0 5f70726f 6a656374 696f6e29 2e787977 _projection).xyw │ │ │ │ + 0x00d586f0 3b200a20 20202070 6f732e7a 203d2061 ; . pos.z = a │ │ │ │ + 0x00d58700 5f706f73 6974696f 6e2e7a20 2a20755f _position.z * u_ │ │ │ │ + 0x00d58710 7a536361 6c653b20 0a202020 20676c5f zScale; . gl_ │ │ │ │ + 0x00d58720 506f7369 74696f6e 203d2075 5f706976 Position = u_piv │ │ │ │ + 0x00d58730 6f745472 616e7366 6f726d20 2a20706f otTransform * po │ │ │ │ + 0x00d58740 733b200a 20202369 66646566 2056554c s; . #ifdef VUL │ │ │ │ + 0x00d58750 4b414e20 0a202020 20676c5f 506f7369 KAN . gl_Posi │ │ │ │ + 0x00d58760 74696f6e 2e79203d 202d676c 5f506f73 tion.y = -gl_Pos │ │ │ │ + 0x00d58770 6974696f 6e2e793b 200a2020 2020676c ition.y; . gl │ │ │ │ + 0x00d58780 5f506f73 6974696f 6e2e7a20 3d202867 _Position.z = (g │ │ │ │ + 0x00d58790 6c5f506f 73697469 6f6e2e7a 20202b20 l_Position.z + │ │ │ │ + 0x00d587a0 676c5f50 6f736974 696f6e2e 7729202a gl_Position.w) * │ │ │ │ + 0x00d587b0 20302e35 3b200a20 2023656e 64696620 0.5; . #endif │ │ │ │ + 0x00d587c0 0a202023 69666465 6620454e 41424c45 . #ifdef ENABLE │ │ │ │ + 0x00d587d0 5f565446 200a2020 2020765f 636f6c6f _VTF . v_colo │ │ │ │ + 0x00d587e0 72203d20 74657874 75726528 755f636f r = texture(u_co │ │ │ │ + 0x00d587f0 6c6f7254 65782c20 615f636f 6c6f7254 lorTex, a_colorT │ │ │ │ + 0x00d58800 6578436f 6f726473 293b200a 20202365 exCoords); . #e │ │ │ │ + 0x00d58810 6c736520 0a202020 20765f63 6f6c6f72 lse . v_color │ │ │ │ + 0x00d58820 54657843 6f6f7264 73203d20 615f636f TexCoords = a_co │ │ │ │ + 0x00d58830 6c6f7254 6578436f 6f726473 3b200a20 lorTexCoords; . │ │ │ │ + 0x00d58840 2023656e 64696620 0a20207d 200a0000 #endif . } ... │ │ │ │ + 0x00d58850 00000000 00000000 00000000 00000000 ................ │ │ │ │ + 0x00d58860 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d58870 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d58880 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d58890 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d588a0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d588b0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d588c0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d588d0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d588e0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d588f0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d58900 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d58910 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d58920 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d58930 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d58940 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d58950 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d58960 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d58970 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d58980 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d58990 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d589a0 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d589b0 63332061 5f706f73 6974696f 6e3b200a c3 a_position; . │ │ │ │ + 0x00d589c0 2020696e 20766563 3420615f 6e6f726d in vec4 a_norm │ │ │ │ + 0x00d589d0 616c3b20 0a202069 6e207665 63342061 al; . in vec4 a │ │ │ │ + 0x00d589e0 5f636f6c 6f725465 78436f6f 7264733b _colorTexCoords; │ │ │ │ + 0x00d589f0 200a2020 6f757420 76656334 20765f6e . out vec4 v_n │ │ │ │ + 0x00d58a00 6f726d61 6c3b200a 20202369 66646566 ormal; . #ifdef │ │ │ │ + 0x00d58a10 20454e41 424c455f 56544620 0a20206f ENABLE_VTF . o │ │ │ │ + 0x00d58a20 7574204c 4f575f50 20766563 3420765f ut LOW_P vec4 v_ │ │ │ │ + 0x00d58a30 636f6c6f 723b200a 20202365 6c736520 color; . #else │ │ │ │ + 0x00d58a40 0a20206f 75742076 65633220 765f636f . out vec2 v_co │ │ │ │ + 0x00d58a50 6c6f7254 6578436f 6f726473 3b200a20 lorTexCoords; . │ │ │ │ + 0x00d58a60 2023656e 64696620 0a202075 6e69666f #endif . unifo │ │ │ │ + 0x00d58a70 726d206d 61743420 755f6d6f 64656c56 rm mat4 u_modelV │ │ │ │ + 0x00d58a80 6965773b 200a2020 756e6966 6f726d20 iew; . uniform │ │ │ │ + 0x00d58a90 6d617434 20755f70 726f6a65 6374696f mat4 u_projectio │ │ │ │ + 0x00d58aa0 6e3b200a 2020756e 69666f72 6d206d61 n; . uniform ma │ │ │ │ + 0x00d58ab0 74342075 5f706976 6f745472 616e7366 t4 u_pivotTransf │ │ │ │ + 0x00d58ac0 6f726d3b 200a2020 756e6966 6f726d20 orm; . uniform │ │ │ │ + 0x00d58ad0 76656332 20755f63 6f6e7472 61737447 vec2 u_contrastG │ │ │ │ + 0x00d58ae0 616d6d61 3b200a20 20756e69 666f726d amma; . uniform │ │ │ │ + 0x00d58af0 20666c6f 61742075 5f6f7061 63697479 float u_opacity │ │ │ │ + 0x00d58b00 3b200a20 20756e69 666f726d 20666c6f ; . uniform flo │ │ │ │ + 0x00d58b10 61742075 5f7a5363 616c653b 200a2020 at u_zScale; . │ │ │ │ + 0x00d58b20 756e6966 6f726d20 666c6f61 7420755f uniform float u_ │ │ │ │ + 0x00d58b30 696e7465 72706f6c 6174696f 6e3b200a interpolation; . │ │ │ │ + 0x00d58b40 2020756e 69666f72 6d20666c 6f617420 uniform float │ │ │ │ + 0x00d58b50 755f6973 4f75746c 696e6550 6173733b u_isOutlinePass; │ │ │ │ + 0x00d58b60 200a2020 23696664 65662045 4e41424c . #ifdef ENABL │ │ │ │ + 0x00d58b70 455f5654 46200a20 20756e69 666f726d E_VTF . uniform │ │ │ │ + 0x00d58b80 2073616d 706c6572 32442075 5f636f6c sampler2D u_col │ │ │ │ + 0x00d58b90 6f725465 783b200a 20202365 6e646966 orTex; . #endif │ │ │ │ + 0x00d58ba0 200a2020 636f6e73 7420666c 6f617420 . const float │ │ │ │ + 0x00d58bb0 6b536861 7065436f 6f726453 63616c61 kShapeCoordScala │ │ │ │ + 0x00d58bc0 72203d20 31303030 2e303b20 0a202076 r = 1000.0; . v │ │ │ │ + 0x00d58bd0 65633420 6170706c 79506976 6f745472 ec4 applyPivotTr │ │ │ │ + 0x00d58be0 616e7366 6f726d28 76656334 20706976 ansform(vec4 piv │ │ │ │ + 0x00d58bf0 6f742c20 6d617434 20706976 6f745472 ot, mat4 pivotTr │ │ │ │ + 0x00d58c00 616e7366 6f726d2c 20666c6f 61742070 ansform, float p │ │ │ │ + 0x00d58c10 69766f74 5265616c 5a29200a 20207b20 ivotRealZ) . { │ │ │ │ + 0x00d58c20 0a202020 20766563 34207472 616e7366 . vec4 transf │ │ │ │ + 0x00d58c30 6f726d65 64506976 6f74203d 20706976 ormedPivot = piv │ │ │ │ + 0x00d58c40 6f743b20 0a202020 20666c6f 61742077 ot; . float w │ │ │ │ + 0x00d58c50 203d2074 72616e73 666f726d 65645069 = transformedPi │ │ │ │ + 0x00d58c60 766f742e 773b200a 20202020 7472616e vot.w; . tran │ │ │ │ + 0x00d58c70 73666f72 6d656450 69766f74 2e787977 sformedPivot.xyw │ │ │ │ + 0x00d58c80 203d2028 7069766f 74547261 6e73666f = (pivotTransfo │ │ │ │ + 0x00d58c90 726d202a 20766563 34287472 616e7366 rm * vec4(transf │ │ │ │ + 0x00d58ca0 6f726d65 64506976 6f742e78 792c2070 ormedPivot.xy, p │ │ │ │ + 0x00d58cb0 69766f74 5265616c 5a2c2077 29292e78 ivotRealZ, w)).x │ │ │ │ + 0x00d58cc0 79773b20 0a202020 20747261 6e73666f yw; . transfo │ │ │ │ + 0x00d58cd0 726d6564 5069766f 742e7a20 2a3d2074 rmedPivot.z *= t │ │ │ │ + 0x00d58ce0 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ + 0x00d58cf0 77202f20 773b200a 20202369 66646566 w / w; . #ifdef │ │ │ │ + 0x00d58d00 2056554c 4b414e20 0a202020 20747261 VULKAN . tra │ │ │ │ + 0x00d58d10 6e73666f 726d6564 5069766f 742e7920 nsformedPivot.y │ │ │ │ + 0x00d58d20 3d202d74 72616e73 666f726d 65645069 = -transformedPi │ │ │ │ + 0x00d58d30 766f742e 793b200a 20202020 7472616e vot.y; . tran │ │ │ │ + 0x00d58d40 73666f72 6d656450 69766f74 2e7a203d sformedPivot.z = │ │ │ │ + 0x00d58d50 20287472 616e7366 6f726d65 64506976 (transformedPiv │ │ │ │ + 0x00d58d60 6f742e7a 20202b20 7472616e 73666f72 ot.z + transfor │ │ │ │ + 0x00d58d70 6d656450 69766f74 2e772920 2f20322e medPivot.w) / 2. │ │ │ │ + 0x00d58d80 303b200a 20202365 6e646966 200a2020 0; . #endif . │ │ │ │ + 0x00d58d90 20207265 7475726e 20747261 6e73666f return transfo │ │ │ │ + 0x00d58da0 726d6564 5069766f 743b200a 20207d20 rmedPivot; . } │ │ │ │ + 0x00d58db0 0a202076 65633420 6170706c 7942696c . vec4 applyBil │ │ │ │ + 0x00d58dc0 6c626f61 72645069 766f7454 72616e73 lboardPivotTrans │ │ │ │ + 0x00d58dd0 666f726d 28766563 34207069 766f742c form(vec4 pivot, │ │ │ │ + 0x00d58de0 206d6174 34207069 766f7454 72616e73 mat4 pivotTrans │ │ │ │ + 0x00d58df0 666f726d 2c20666c 6f617420 7069766f form, float pivo │ │ │ │ + 0x00d58e00 74526561 6c5a2c20 76656332 206f6666 tRealZ, vec2 off │ │ │ │ + 0x00d58e10 73657429 200a2020 7b200a20 20202066 set) . { . f │ │ │ │ + 0x00d58e20 6c6f6174 206c6f67 69635a20 3d207069 loat logicZ = pi │ │ │ │ + 0x00d58e30 766f742e 7a202f20 7069766f 742e773b vot.z / pivot.w; │ │ │ │ + 0x00d58e40 200a2020 20207665 63342074 72616e73 . vec4 trans │ │ │ │ + 0x00d58e50 666f726d 65645069 766f7420 3d207069 formedPivot = pi │ │ │ │ + 0x00d58e60 766f7454 72616e73 666f726d 202a2076 votTransform * v │ │ │ │ + 0x00d58e70 65633428 7069766f 742e7879 2c207069 ec4(pivot.xy, pi │ │ │ │ + 0x00d58e80 766f7452 65616c5a 2c207069 766f742e votRealZ, pivot. │ │ │ │ + 0x00d58e90 77293b20 0a202020 20766563 34207363 w); . vec4 sc │ │ │ │ + 0x00d58ea0 616c6520 3d207069 766f7454 72616e73 ale = pivotTrans │ │ │ │ + 0x00d58eb0 666f726d 202a2076 65633428 312e302c form * vec4(1.0, │ │ │ │ + 0x00d58ec0 202d312e 302c2030 2e302c20 312e3029 -1.0, 0.0, 1.0) │ │ │ │ + 0x00d58ed0 3b200a20 20202076 65633420 706f7369 ; . vec4 posi │ │ │ │ + 0x00d58ee0 74696f6e 203d2076 65633428 7472616e tion = vec4(tran │ │ │ │ + 0x00d58ef0 73666f72 6d656450 69766f74 2e787920 sformedPivot.xy │ │ │ │ + 0x00d58f00 2f207472 616e7366 6f726d65 64506976 / transformedPiv │ │ │ │ + 0x00d58f10 6f742e77 2c206c6f 6769635a 2c20312e ot.w, logicZ, 1. │ │ │ │ + 0x00d58f20 3029202b 20766563 34286f66 66736574 0) + vec4(offset │ │ │ │ + 0x00d58f30 202f2073 63616c65 2e77202a 20736361 / scale.w * sca │ │ │ │ + 0x00d58f40 6c652e78 2c20302e 302c2030 2e30293b le.x, 0.0, 0.0); │ │ │ │ + 0x00d58f50 200a2020 23696664 65662056 554c4b41 . #ifdef VULKA │ │ │ │ + 0x00d58f60 4e200a20 20202070 6f736974 696f6e2e N . position. │ │ │ │ + 0x00d58f70 79203d20 2d706f73 6974696f 6e2e793b y = -position.y; │ │ │ │ + 0x00d58f80 200a2020 2020706f 73697469 6f6e2e7a . position.z │ │ │ │ + 0x00d58f90 203d2028 706f7369 74696f6e 2e7a2020 = (position.z │ │ │ │ + 0x00d58fa0 2b20706f 73697469 6f6e2e77 29202f20 + position.w) / │ │ │ │ + 0x00d58fb0 322e303b 200a2020 23656e64 6966200a 2.0; . #endif . │ │ │ │ + 0x00d58fc0 20202020 72657475 726e2070 6f736974 return posit │ │ │ │ + 0x00d58fd0 696f6e3b 200a2020 7d200a20 20766563 ion; . } . vec │ │ │ │ + 0x00d58fe0 32206361 6c634c69 6e655472 616e7366 2 calcLineTransf │ │ │ │ + 0x00d58ff0 6f726d65 64417869 73506f73 28766563 ormedAxisPos(vec │ │ │ │ + 0x00d59000 32206f72 6967696e 616c4178 6973506f 2 originalAxisPo │ │ │ │ + 0x00d59010 732c2076 65633220 73686966 74656450 s, vec2 shiftedP │ │ │ │ + 0x00d59020 6f732c20 6d617434 206d6f64 656c5669 os, mat4 modelVi │ │ │ │ + 0x00d59030 65772c20 666c6f61 74206861 6c665769 ew, float halfWi │ │ │ │ + 0x00d59040 64746829 200a2020 7b200a20 20202076 dth) . { . v │ │ │ │ + 0x00d59050 65633220 70203d20 28766563 34287368 ec2 p = (vec4(sh │ │ │ │ + 0x00d59060 69667465 64506f73 2c20302e 302c2031 iftedPos, 0.0, 1 │ │ │ │ + 0x00d59070 2e302920 2a206d6f 64656c56 69657729 .0) * modelView) │ │ │ │ + 0x00d59080 2e78793b 200a2020 20207665 63322064 .xy; . vec2 d │ │ │ │ + 0x00d59090 203d2070 202d206f 72696769 6e616c41 = p - originalA │ │ │ │ + 0x00d590a0 78697350 6f733b20 0a202020 20696620 xisPos; . if │ │ │ │ + 0x00d590b0 28646f74 28642c20 64292021 3d20302e (dot(d, d) != 0. │ │ │ │ + 0x00d590c0 3029200a 20202020 20207265 7475726e 0) . return │ │ │ │ + 0x00d590d0 206f7269 67696e61 6c417869 73506f73 originalAxisPos │ │ │ │ + 0x00d590e0 202b206e 6f726d61 6c697a65 28642920 + normalize(d) │ │ │ │ + 0x00d590f0 2a206861 6c665769 6474683b 200a2020 * halfWidth; . │ │ │ │ + 0x00d59100 2020656c 7365200a 20202020 20207265 else . re │ │ │ │ + 0x00d59110 7475726e 206f7269 67696e61 6c417869 turn originalAxi │ │ │ │ + 0x00d59120 73506f73 3b200a20 207d200a 2020766f sPos; . } . vo │ │ │ │ + 0x00d59130 6964206d 61696e28 29200a20 207b200a id main() . { . │ │ │ │ + 0x00d59140 20202020 76656334 20706976 6f74203d vec4 pivot = │ │ │ │ + 0x00d59150 20766563 3428615f 706f7369 74696f6e vec4(a_position │ │ │ │ + 0x00d59160 2e78797a 2c20312e 3029202a 20755f6d .xyz, 1.0) * u_m │ │ │ │ + 0x00d59170 6f64656c 56696577 3b200a20 20202076 odelView; . v │ │ │ │ + 0x00d59180 65633420 6f666673 6574203d 20766563 ec4 offset = vec │ │ │ │ + 0x00d59190 3428615f 6e6f726d 616c2e78 79202b20 4(a_normal.xy + │ │ │ │ + 0x00d591a0 615f636f 6c6f7254 6578436f 6f726473 a_colorTexCoords │ │ │ │ + 0x00d591b0 2e7a772c 20302e30 2c20302e 3029202a .zw, 0.0, 0.0) * │ │ │ │ + 0x00d591c0 20755f70 726f6a65 6374696f 6e3b200a u_projection; . │ │ │ │ + 0x00d591d0 20202020 676c5f50 6f736974 696f6e20 gl_Position │ │ │ │ + 0x00d591e0 3d206170 706c7942 696c6c62 6f617264 = applyBillboard │ │ │ │ + 0x00d591f0 5069766f 74547261 6e73666f 726d2870 PivotTransform(p │ │ │ │ + 0x00d59200 69766f74 202a2075 5f70726f 6a656374 ivot * u_project │ │ │ │ + 0x00d59210 696f6e2c 20755f70 69766f74 5472616e ion, u_pivotTran │ │ │ │ + 0x00d59220 73666f72 6d2c2030 2e302c20 6f666673 sform, 0.0, offs │ │ │ │ + 0x00d59230 65742e78 79293b20 0a202023 69666465 et.xy); . #ifde │ │ │ │ + 0x00d59240 6620454e 41424c45 5f565446 200a2020 f ENABLE_VTF . │ │ │ │ + 0x00d59250 2020765f 636f6c6f 72203d20 74657874 v_color = text │ │ │ │ + 0x00d59260 75726528 755f636f 6c6f7254 65782c20 ure(u_colorTex, │ │ │ │ + 0x00d59270 615f636f 6c6f7254 6578436f 6f726473 a_colorTexCoords │ │ │ │ + 0x00d59280 2e787929 3b200a20 2023656c 7365200a .xy); . #else . │ │ │ │ + 0x00d59290 20202020 765f636f 6c6f7254 6578436f v_colorTexCo │ │ │ │ + 0x00d592a0 6f726473 203d2061 5f636f6c 6f725465 ords = a_colorTe │ │ │ │ + 0x00d592b0 78436f6f 7264732e 78793b20 0a202023 xCoords.xy; . # │ │ │ │ + 0x00d592c0 656e6469 66200a20 20202076 5f6e6f72 endif . v_nor │ │ │ │ + 0x00d592d0 6d616c20 3d20615f 6e6f726d 616c3b20 mal = a_normal; │ │ │ │ + 0x00d592e0 0a20207d 200a0000 00000000 00000000 . } ........... │ │ │ │ + 0x00d592f0 00000000 00000000 00000000 00000000 ................ │ │ │ │ + 0x00d59300 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d59310 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d59320 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d59330 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d59340 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d59350 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d59360 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d59370 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d59380 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d59390 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d593a0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d593b0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d593c0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d593d0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d593e0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d593f0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d59400 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d59410 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d59420 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d59430 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d59440 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d59450 63332061 5f706f73 3b200a20 20696e20 c3 a_pos; . in │ │ │ │ + 0x00d59460 76656333 20615f6e 6f726d61 6c3b200a vec3 a_normal; . │ │ │ │ + 0x00d59470 2020696e 20766563 3220615f 74657843 in vec2 a_texC │ │ │ │ + 0x00d59480 6f6f7264 733b200a 20206f75 74207665 oords; . out ve │ │ │ │ + 0x00d59490 63332076 5f6e6f72 6d616c3b 200a2020 c3 v_normal; . │ │ │ │ + 0x00d594a0 6f757420 76656332 20765f74 6578436f out vec2 v_texCo │ │ │ │ + 0x00d594b0 6f726473 3b200a20 20756e69 666f726d ords; . uniform │ │ │ │ + 0x00d594c0 206d6174 3420755f 7472616e 73666f72 mat4 u_transfor │ │ │ │ + 0x00d594d0 6d3b200a 2020756e 69666f72 6d206d61 m; . uniform ma │ │ │ │ + 0x00d594e0 74342075 5f6e6f72 6d616c54 72616e73 t4 u_normalTrans │ │ │ │ + 0x00d594f0 666f726d 3b200a20 20756e69 666f726d form; . uniform │ │ │ │ + 0x00d59500 20766563 3420755f 636f6c6f 723b200a vec4 u_color; . │ │ │ │ + 0x00d59510 2020756e 69666f72 6d207665 63322075 uniform vec2 u │ │ │ │ + 0x00d59520 5f746578 436f6f72 64466c69 7070696e _texCoordFlippin │ │ │ │ + 0x00d59530 673b200a 2020636f 6e737420 666c6f61 g; . const floa │ │ │ │ + 0x00d59540 74206b53 68617065 436f6f72 64536361 t kShapeCoordSca │ │ │ │ + 0x00d59550 6c617220 3d203130 30302e30 3b200a20 lar = 1000.0; . │ │ │ │ + 0x00d59560 20766563 34206170 706c7950 69766f74 vec4 applyPivot │ │ │ │ + 0x00d59570 5472616e 73666f72 6d287665 63342070 Transform(vec4 p │ │ │ │ + 0x00d59580 69766f74 2c206d61 74342070 69766f74 ivot, mat4 pivot │ │ │ │ + 0x00d59590 5472616e 73666f72 6d2c2066 6c6f6174 Transform, float │ │ │ │ + 0x00d595a0 20706976 6f745265 616c5a29 200a2020 pivotRealZ) . │ │ │ │ + 0x00d595b0 7b200a20 20202076 65633420 7472616e { . vec4 tran │ │ │ │ + 0x00d595c0 73666f72 6d656450 69766f74 203d2070 sformedPivot = p │ │ │ │ + 0x00d595d0 69766f74 3b200a20 20202066 6c6f6174 ivot; . float │ │ │ │ + 0x00d595e0 2077203d 20747261 6e73666f 726d6564 w = transformed │ │ │ │ + 0x00d595f0 5069766f 742e773b 200a2020 20207472 Pivot.w; . tr │ │ │ │ + 0x00d59600 616e7366 6f726d65 64506976 6f742e78 ansformedPivot.x │ │ │ │ + 0x00d59610 7977203d 20287069 766f7454 72616e73 yw = (pivotTrans │ │ │ │ + 0x00d59620 666f726d 202a2076 65633428 7472616e form * vec4(tran │ │ │ │ + 0x00d59630 73666f72 6d656450 69766f74 2e78792c sformedPivot.xy, │ │ │ │ + 0x00d59640 20706976 6f745265 616c5a2c 20772929 pivotRealZ, w)) │ │ │ │ + 0x00d59650 2e787977 3b200a20 20202074 72616e73 .xyw; . trans │ │ │ │ + 0x00d59660 666f726d 65645069 766f742e 7a202a3d formedPivot.z *= │ │ │ │ + 0x00d59670 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ + 0x00d59680 742e7720 2f20773b 200a2020 23696664 t.w / w; . #ifd │ │ │ │ + 0x00d59690 65662056 554c4b41 4e200a20 20202074 ef VULKAN . t │ │ │ │ + 0x00d596a0 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ + 0x00d596b0 79203d20 2d747261 6e73666f 726d6564 y = -transformed │ │ │ │ + 0x00d596c0 5069766f 742e793b 200a2020 20207472 Pivot.y; . tr │ │ │ │ + 0x00d596d0 616e7366 6f726d65 64506976 6f742e7a ansformedPivot.z │ │ │ │ + 0x00d596e0 203d2028 7472616e 73666f72 6d656450 = (transformedP │ │ │ │ + 0x00d596f0 69766f74 2e7a2020 2b207472 616e7366 ivot.z + transf │ │ │ │ + 0x00d59700 6f726d65 64506976 6f742e77 29202f20 ormedPivot.w) / │ │ │ │ + 0x00d59710 322e303b 200a2020 23656e64 6966200a 2.0; . #endif . │ │ │ │ + 0x00d59720 20202020 72657475 726e2074 72616e73 return trans │ │ │ │ + 0x00d59730 666f726d 65645069 766f743b 200a2020 formedPivot; . │ │ │ │ + 0x00d59740 7d200a20 20766563 34206170 706c7942 } . vec4 applyB │ │ │ │ + 0x00d59750 696c6c62 6f617264 5069766f 74547261 illboardPivotTra │ │ │ │ + 0x00d59760 6e73666f 726d2876 65633420 7069766f nsform(vec4 pivo │ │ │ │ + 0x00d59770 742c206d 61743420 7069766f 74547261 t, mat4 pivotTra │ │ │ │ + 0x00d59780 6e73666f 726d2c20 666c6f61 74207069 nsform, float pi │ │ │ │ + 0x00d59790 766f7452 65616c5a 2c207665 6332206f votRealZ, vec2 o │ │ │ │ + 0x00d597a0 66667365 7429200a 20207b20 0a202020 ffset) . { . │ │ │ │ + 0x00d597b0 20666c6f 6174206c 6f676963 5a203d20 float logicZ = │ │ │ │ + 0x00d597c0 7069766f 742e7a20 2f207069 766f742e pivot.z / pivot. │ │ │ │ + 0x00d597d0 773b200a 20202020 76656334 20747261 w; . vec4 tra │ │ │ │ + 0x00d597e0 6e73666f 726d6564 5069766f 74203d20 nsformedPivot = │ │ │ │ + 0x00d597f0 7069766f 74547261 6e73666f 726d202a pivotTransform * │ │ │ │ + 0x00d59800 20766563 34287069 766f742e 78792c20 vec4(pivot.xy, │ │ │ │ + 0x00d59810 7069766f 74526561 6c5a2c20 7069766f pivotRealZ, pivo │ │ │ │ + 0x00d59820 742e7729 3b200a20 20202076 65633420 t.w); . vec4 │ │ │ │ + 0x00d59830 7363616c 65203d20 7069766f 74547261 scale = pivotTra │ │ │ │ + 0x00d59840 6e73666f 726d202a 20766563 3428312e nsform * vec4(1. │ │ │ │ + 0x00d59850 302c202d 312e302c 20302e30 2c20312e 0, -1.0, 0.0, 1. │ │ │ │ + 0x00d59860 30293b20 0a202020 20766563 3420706f 0); . vec4 po │ │ │ │ + 0x00d59870 73697469 6f6e203d 20766563 34287472 sition = vec4(tr │ │ │ │ + 0x00d59880 616e7366 6f726d65 64506976 6f742e78 ansformedPivot.x │ │ │ │ + 0x00d59890 79202f20 7472616e 73666f72 6d656450 y / transformedP │ │ │ │ + 0x00d598a0 69766f74 2e772c20 6c6f6769 635a2c20 ivot.w, logicZ, │ │ │ │ + 0x00d598b0 312e3029 202b2076 65633428 6f666673 1.0) + vec4(offs │ │ │ │ + 0x00d598c0 6574202f 20736361 6c652e77 202a2073 et / scale.w * s │ │ │ │ + 0x00d598d0 63616c65 2e782c20 302e302c 20302e30 cale.x, 0.0, 0.0 │ │ │ │ + 0x00d598e0 293b200a 20202369 66646566 2056554c ); . #ifdef VUL │ │ │ │ + 0x00d598f0 4b414e20 0a202020 20706f73 6974696f KAN . positio │ │ │ │ + 0x00d59900 6e2e7920 3d202d70 6f736974 696f6e2e n.y = -position. │ │ │ │ + 0x00d59910 793b200a 20202020 706f7369 74696f6e y; . position │ │ │ │ + 0x00d59920 2e7a203d 2028706f 73697469 6f6e2e7a .z = (position.z │ │ │ │ + 0x00d59930 20202b20 706f7369 74696f6e 2e772920 + position.w) │ │ │ │ + 0x00d59940 2f20322e 303b200a 20202365 6e646966 / 2.0; . #endif │ │ │ │ + 0x00d59950 200a2020 20207265 7475726e 20706f73 . return pos │ │ │ │ + 0x00d59960 6974696f 6e3b200a 20207d20 0a202076 ition; . } . v │ │ │ │ + 0x00d59970 65633220 63616c63 4c696e65 5472616e ec2 calcLineTran │ │ │ │ + 0x00d59980 73666f72 6d656441 78697350 6f732876 sformedAxisPos(v │ │ │ │ + 0x00d59990 65633220 6f726967 696e616c 41786973 ec2 originalAxis │ │ │ │ + 0x00d599a0 506f732c 20766563 32207368 69667465 Pos, vec2 shifte │ │ │ │ + 0x00d599b0 64506f73 2c206d61 7434206d 6f64656c dPos, mat4 model │ │ │ │ + 0x00d599c0 56696577 2c20666c 6f617420 68616c66 View, float half │ │ │ │ + 0x00d599d0 57696474 6829200a 20207b20 0a202020 Width) . { . │ │ │ │ + 0x00d599e0 20766563 32207020 3d202876 65633428 vec2 p = (vec4( │ │ │ │ + 0x00d599f0 73686966 74656450 6f732c20 302e302c shiftedPos, 0.0, │ │ │ │ + 0x00d59a00 20312e30 29202a20 6d6f6465 6c566965 1.0) * modelVie │ │ │ │ + 0x00d59a10 77292e78 793b200a 20202020 76656332 w).xy; . vec2 │ │ │ │ + 0x00d59a20 2064203d 2070202d 206f7269 67696e61 d = p - origina │ │ │ │ + 0x00d59a30 6c417869 73506f73 3b200a20 20202069 lAxisPos; . i │ │ │ │ + 0x00d59a40 66202864 6f742864 2c206429 20213d20 f (dot(d, d) != │ │ │ │ + 0x00d59a50 302e3029 200a2020 20202020 72657475 0.0) . retu │ │ │ │ + 0x00d59a60 726e206f 72696769 6e616c41 78697350 rn originalAxisP │ │ │ │ + 0x00d59a70 6f73202b 206e6f72 6d616c69 7a652864 os + normalize(d │ │ │ │ + 0x00d59a80 29202a20 68616c66 57696474 683b200a ) * halfWidth; . │ │ │ │ + 0x00d59a90 20202020 656c7365 200a2020 20202020 else . │ │ │ │ + 0x00d59aa0 72657475 726e206f 72696769 6e616c41 return originalA │ │ │ │ + 0x00d59ab0 78697350 6f733b20 0a20207d 200a2020 xisPos; . } . │ │ │ │ + 0x00d59ac0 766f6964 206d6169 6e282920 0a20207b void main() . { │ │ │ │ + 0x00d59ad0 200a2020 20207665 63342070 6f736974 . vec4 posit │ │ │ │ + 0x00d59ae0 696f6e20 3d20755f 7472616e 73666f72 ion = u_transfor │ │ │ │ + 0x00d59af0 6d202a20 76656334 28615f70 6f732c20 m * vec4(a_pos, │ │ │ │ + 0x00d59b00 312e3029 3b200a20 20202076 5f6e6f72 1.0); . v_nor │ │ │ │ + 0x00d59b10 6d616c20 3d206e6f 726d616c 697a6528 mal = normalize( │ │ │ │ + 0x00d59b20 28755f6e 6f726d61 6c547261 6e73666f (u_normalTransfo │ │ │ │ + 0x00d59b30 726d202a 20766563 3428615f 6e6f726d rm * vec4(a_norm │ │ │ │ + 0x00d59b40 616c2c20 302e3029 292e7879 7a293b20 al, 0.0)).xyz); │ │ │ │ + 0x00d59b50 0a202020 20765f74 6578436f 6f726473 . v_texCoords │ │ │ │ + 0x00d59b60 203d206d 69782861 5f746578 436f6f72 = mix(a_texCoor │ │ │ │ + 0x00d59b70 64732c20 312e3020 2d20615f 74657843 ds, 1.0 - a_texC │ │ │ │ + 0x00d59b80 6f6f7264 732c2075 5f746578 436f6f72 oords, u_texCoor │ │ │ │ + 0x00d59b90 64466c69 7070696e 67293b20 0a202020 dFlipping); . │ │ │ │ + 0x00d59ba0 20676c5f 506f7369 74696f6e 203d2070 gl_Position = p │ │ │ │ + 0x00d59bb0 6f736974 696f6e3b 200a2020 23696664 osition; . #ifd │ │ │ │ + 0x00d59bc0 65662056 554c4b41 4e200a20 20202067 ef VULKAN . g │ │ │ │ + 0x00d59bd0 6c5f506f 73697469 6f6e2e79 203d202d l_Position.y = - │ │ │ │ + 0x00d59be0 676c5f50 6f736974 696f6e2e 793b200a gl_Position.y; . │ │ │ │ + 0x00d59bf0 20202020 676c5f50 6f736974 696f6e2e gl_Position. │ │ │ │ + 0x00d59c00 7a203d20 28676c5f 506f7369 74696f6e z = (gl_Position │ │ │ │ + 0x00d59c10 2e7a202b 20676c5f 506f7369 74696f6e .z + gl_Position │ │ │ │ + 0x00d59c20 2e772920 2a20302e 353b200a 20202365 .w) * 0.5; . #e │ │ │ │ + 0x00d59c30 6e646966 200a2020 7d200a00 00000000 ndif . } ...... │ │ │ │ + 0x00d59c40 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d59c50 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d59c60 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d59c70 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d59c80 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d59c90 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d59ca0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d59cb0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d59cc0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d59cd0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d59ce0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d59cf0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d59d00 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d59d10 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d59d20 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d59d30 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d59d40 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d59d50 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d59d60 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d59d70 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d59d80 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d59d90 63342061 5f706f73 6974696f 6e3b200a c4 a_position; . │ │ │ │ + 0x00d59da0 2020696e 20766563 3220615f 6e6f726d in vec2 a_norm │ │ │ │ + 0x00d59db0 616c3b20 0a202069 6e207665 63322061 al; . in vec2 a │ │ │ │ + 0x00d59dc0 5f636f6c 6f725465 78436f6f 7264733b _colorTexCoords; │ │ │ │ + 0x00d59dd0 200a2020 6f757420 76656332 20765f63 . out vec2 v_c │ │ │ │ + 0x00d59de0 6f6c6f72 54657843 6f6f7264 733b200a olorTexCoords; . │ │ │ │ + 0x00d59df0 2020756e 69666f72 6d206d61 74342075 uniform mat4 u │ │ │ │ + 0x00d59e00 5f6d6f64 656c5669 65773b20 0a202075 _modelView; . u │ │ │ │ + 0x00d59e10 6e69666f 726d206d 61743420 755f7072 niform mat4 u_pr │ │ │ │ + 0x00d59e20 6f6a6563 74696f6e 3b200a20 20756e69 ojection; . uni │ │ │ │ + 0x00d59e30 666f726d 206d6174 3420755f 7069766f form mat4 u_pivo │ │ │ │ + 0x00d59e40 74547261 6e73666f 726d3b20 0a202075 tTransform; . u │ │ │ │ + 0x00d59e50 6e69666f 726d2076 65633220 755f636f niform vec2 u_co │ │ │ │ + 0x00d59e60 6e747261 73744761 6d6d613b 200a2020 ntrastGamma; . │ │ │ │ + 0x00d59e70 756e6966 6f726d20 666c6f61 7420755f uniform float u_ │ │ │ │ + 0x00d59e80 6f706163 6974793b 200a2020 756e6966 opacity; . unif │ │ │ │ + 0x00d59e90 6f726d20 666c6f61 7420755f 7a536361 orm float u_zSca │ │ │ │ + 0x00d59ea0 6c653b20 0a202075 6e69666f 726d2066 le; . uniform f │ │ │ │ + 0x00d59eb0 6c6f6174 20755f69 6e746572 706f6c61 loat u_interpola │ │ │ │ + 0x00d59ec0 74696f6e 3b200a20 20756e69 666f726d tion; . uniform │ │ │ │ + 0x00d59ed0 20666c6f 61742075 5f69734f 75746c69 float u_isOutli │ │ │ │ + 0x00d59ee0 6e655061 73733b20 0a202063 6f6e7374 nePass; . const │ │ │ │ + 0x00d59ef0 20666c6f 6174206b 53686170 65436f6f float kShapeCoo │ │ │ │ + 0x00d59f00 72645363 616c6172 203d2031 3030302e rdScalar = 1000. │ │ │ │ + 0x00d59f10 303b200a 20207665 63342061 70706c79 0; . vec4 apply │ │ │ │ + 0x00d59f20 5069766f 74547261 6e73666f 726d2876 PivotTransform(v │ │ │ │ + 0x00d59f30 65633420 7069766f 742c206d 61743420 ec4 pivot, mat4 │ │ │ │ + 0x00d59f40 7069766f 74547261 6e73666f 726d2c20 pivotTransform, │ │ │ │ + 0x00d59f50 666c6f61 74207069 766f7452 65616c5a float pivotRealZ │ │ │ │ + 0x00d59f60 29200a20 207b200a 20202020 76656334 ) . { . vec4 │ │ │ │ + 0x00d59f70 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ + 0x00d59f80 74203d20 7069766f 743b200a 20202020 t = pivot; . │ │ │ │ + 0x00d59f90 666c6f61 74207720 3d207472 616e7366 float w = transf │ │ │ │ + 0x00d59fa0 6f726d65 64506976 6f742e77 3b200a20 ormedPivot.w; . │ │ │ │ + 0x00d59fb0 20202074 72616e73 666f726d 65645069 transformedPi │ │ │ │ + 0x00d59fc0 766f742e 78797720 3d202870 69766f74 vot.xyw = (pivot │ │ │ │ + 0x00d59fd0 5472616e 73666f72 6d202a20 76656334 Transform * vec4 │ │ │ │ + 0x00d59fe0 28747261 6e73666f 726d6564 5069766f (transformedPivo │ │ │ │ + 0x00d59ff0 742e7879 2c207069 766f7452 65616c5a t.xy, pivotRealZ │ │ │ │ + 0x00d5a000 2c207729 292e7879 773b200a 20202020 , w)).xyw; . │ │ │ │ + 0x00d5a010 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ + 0x00d5a020 2e7a202a 3d207472 616e7366 6f726d65 .z *= transforme │ │ │ │ + 0x00d5a030 64506976 6f742e77 202f2077 3b200a20 dPivot.w / w; . │ │ │ │ + 0x00d5a040 20236966 64656620 56554c4b 414e200a #ifdef VULKAN . │ │ │ │ + 0x00d5a050 20202020 7472616e 73666f72 6d656450 transformedP │ │ │ │ + 0x00d5a060 69766f74 2e79203d 202d7472 616e7366 ivot.y = -transf │ │ │ │ + 0x00d5a070 6f726d65 64506976 6f742e79 3b200a20 ormedPivot.y; . │ │ │ │ + 0x00d5a080 20202074 72616e73 666f726d 65645069 transformedPi │ │ │ │ + 0x00d5a090 766f742e 7a203d20 28747261 6e73666f vot.z = (transfo │ │ │ │ + 0x00d5a0a0 726d6564 5069766f 742e7a20 202b2074 rmedPivot.z + t │ │ │ │ + 0x00d5a0b0 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ + 0x00d5a0c0 7729202f 20322e30 3b200a20 2023656e w) / 2.0; . #en │ │ │ │ + 0x00d5a0d0 64696620 0a202020 20726574 75726e20 dif . return │ │ │ │ + 0x00d5a0e0 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ + 0x00d5a0f0 3b200a20 207d200a 20207665 63342061 ; . } . vec4 a │ │ │ │ + 0x00d5a100 70706c79 42696c6c 626f6172 64506976 pplyBillboardPiv │ │ │ │ + 0x00d5a110 6f745472 616e7366 6f726d28 76656334 otTransform(vec4 │ │ │ │ + 0x00d5a120 20706976 6f742c20 6d617434 20706976 pivot, mat4 piv │ │ │ │ + 0x00d5a130 6f745472 616e7366 6f726d2c 20666c6f otTransform, flo │ │ │ │ + 0x00d5a140 61742070 69766f74 5265616c 5a2c2076 at pivotRealZ, v │ │ │ │ + 0x00d5a150 65633220 6f666673 65742920 0a20207b ec2 offset) . { │ │ │ │ + 0x00d5a160 200a2020 2020666c 6f617420 6c6f6769 . float logi │ │ │ │ + 0x00d5a170 635a203d 20706976 6f742e7a 202f2070 cZ = pivot.z / p │ │ │ │ + 0x00d5a180 69766f74 2e773b20 0a202020 20766563 ivot.w; . vec │ │ │ │ + 0x00d5a190 34207472 616e7366 6f726d65 64506976 4 transformedPiv │ │ │ │ + 0x00d5a1a0 6f74203d 20706976 6f745472 616e7366 ot = pivotTransf │ │ │ │ + 0x00d5a1b0 6f726d20 2a207665 63342870 69766f74 orm * vec4(pivot │ │ │ │ + 0x00d5a1c0 2e78792c 20706976 6f745265 616c5a2c .xy, pivotRealZ, │ │ │ │ + 0x00d5a1d0 20706976 6f742e77 293b200a 20202020 pivot.w); . │ │ │ │ + 0x00d5a1e0 76656334 20736361 6c65203d 20706976 vec4 scale = piv │ │ │ │ + 0x00d5a1f0 6f745472 616e7366 6f726d20 2a207665 otTransform * ve │ │ │ │ + 0x00d5a200 63342831 2e302c20 2d312e30 2c20302e c4(1.0, -1.0, 0. │ │ │ │ + 0x00d5a210 302c2031 2e30293b 200a2020 20207665 0, 1.0); . ve │ │ │ │ + 0x00d5a220 63342070 6f736974 696f6e20 3d207665 c4 position = ve │ │ │ │ + 0x00d5a230 63342874 72616e73 666f726d 65645069 c4(transformedPi │ │ │ │ + 0x00d5a240 766f742e 7879202f 20747261 6e73666f vot.xy / transfo │ │ │ │ + 0x00d5a250 726d6564 5069766f 742e772c 206c6f67 rmedPivot.w, log │ │ │ │ + 0x00d5a260 69635a2c 20312e30 29202b20 76656334 icZ, 1.0) + vec4 │ │ │ │ + 0x00d5a270 286f6666 73657420 2f207363 616c652e (offset / scale. │ │ │ │ + 0x00d5a280 77202a20 7363616c 652e782c 20302e30 w * scale.x, 0.0 │ │ │ │ + 0x00d5a290 2c20302e 30293b20 0a202023 69666465 , 0.0); . #ifde │ │ │ │ + 0x00d5a2a0 66205655 4c4b414e 200a2020 2020706f f VULKAN . po │ │ │ │ + 0x00d5a2b0 73697469 6f6e2e79 203d202d 706f7369 sition.y = -posi │ │ │ │ + 0x00d5a2c0 74696f6e 2e793b20 0a202020 20706f73 tion.y; . pos │ │ │ │ + 0x00d5a2d0 6974696f 6e2e7a20 3d202870 6f736974 ition.z = (posit │ │ │ │ + 0x00d5a2e0 696f6e2e 7a20202b 20706f73 6974696f ion.z + positio │ │ │ │ + 0x00d5a2f0 6e2e7729 202f2032 2e303b20 0a202023 n.w) / 2.0; . # │ │ │ │ + 0x00d5a300 656e6469 66200a20 20202072 65747572 endif . retur │ │ │ │ + 0x00d5a310 6e20706f 73697469 6f6e3b20 0a20207d n position; . } │ │ │ │ + 0x00d5a320 200a2020 76656332 2063616c 634c696e . vec2 calcLin │ │ │ │ + 0x00d5a330 65547261 6e73666f 726d6564 41786973 eTransformedAxis │ │ │ │ + 0x00d5a340 506f7328 76656332 206f7269 67696e61 Pos(vec2 origina │ │ │ │ + 0x00d5a350 6c417869 73506f73 2c207665 63322073 lAxisPos, vec2 s │ │ │ │ + 0x00d5a360 68696674 6564506f 732c206d 61743420 hiftedPos, mat4 │ │ │ │ + 0x00d5a370 6d6f6465 6c566965 772c2066 6c6f6174 modelView, float │ │ │ │ + 0x00d5a380 2068616c 66576964 74682920 0a20207b halfWidth) . { │ │ │ │ + 0x00d5a390 200a2020 20207665 63322070 203d2028 . vec2 p = ( │ │ │ │ + 0x00d5a3a0 76656334 28736869 66746564 506f732c vec4(shiftedPos, │ │ │ │ + 0x00d5a3b0 20302e30 2c20312e 3029202a 206d6f64 0.0, 1.0) * mod │ │ │ │ + 0x00d5a3c0 656c5669 6577292e 78793b20 0a202020 elView).xy; . │ │ │ │ + 0x00d5a3d0 20766563 32206420 3d207020 2d206f72 vec2 d = p - or │ │ │ │ + 0x00d5a3e0 6967696e 616c4178 6973506f 733b200a iginalAxisPos; . │ │ │ │ + 0x00d5a3f0 20202020 69662028 646f7428 642c2064 if (dot(d, d │ │ │ │ + 0x00d5a400 2920213d 20302e30 29200a20 20202020 ) != 0.0) . │ │ │ │ + 0x00d5a410 20726574 75726e20 6f726967 696e616c return original │ │ │ │ + 0x00d5a420 41786973 506f7320 2b206e6f 726d616c AxisPos + normal │ │ │ │ + 0x00d5a430 697a6528 6429202a 2068616c 66576964 ize(d) * halfWid │ │ │ │ + 0x00d5a440 74683b20 0a202020 20656c73 65200a20 th; . else . │ │ │ │ + 0x00d5a450 20202020 20726574 75726e20 6f726967 return orig │ │ │ │ + 0x00d5a460 696e616c 41786973 506f733b 200a2020 inalAxisPos; . │ │ │ │ + 0x00d5a470 7d200a20 20766f69 64206d61 696e2829 } . void main() │ │ │ │ + 0x00d5a480 200a2020 7b200a20 20202076 65633420 . { . vec4 │ │ │ │ + 0x00d5a490 706f7320 3d207665 63342861 5f706f73 pos = vec4(a_pos │ │ │ │ + 0x00d5a4a0 6974696f 6e2e7879 7a2c2031 29202a20 ition.xyz, 1) * │ │ │ │ + 0x00d5a4b0 755f6d6f 64656c56 6965773b 200a2020 u_modelView; . │ │ │ │ + 0x00d5a4c0 2020666c 6f617420 6e6f726d 616c4c65 float normalLe │ │ │ │ + 0x00d5a4d0 6e203d20 6c656e67 74682861 5f6e6f72 n = length(a_nor │ │ │ │ + 0x00d5a4e0 6d616c29 3b200a20 20202076 65633420 mal); . vec4 │ │ │ │ + 0x00d5a4f0 6e203d20 76656334 28615f70 6f736974 n = vec4(a_posit │ │ │ │ + 0x00d5a500 696f6e2e 7879202b 20615f6e 6f726d61 ion.xy + a_norma │ │ │ │ + 0x00d5a510 6c202a20 6b536861 7065436f 6f726453 l * kShapeCoordS │ │ │ │ + 0x00d5a520 63616c61 722c2030 2e302c20 302e3029 calar, 0.0, 0.0) │ │ │ │ + 0x00d5a530 202a2075 5f6d6f64 656c5669 65773b20 * u_modelView; │ │ │ │ + 0x00d5a540 0a202020 20766563 34206e6f 726d203d . vec4 norm = │ │ │ │ + 0x00d5a550 20766563 3428302e 302c2030 2e302c20 vec4(0.0, 0.0, │ │ │ │ + 0x00d5a560 302e302c 20302e30 293b200a 20202020 0.0, 0.0); . │ │ │ │ + 0x00d5a570 69662028 646f7428 6e2c206e 2920213d if (dot(n, n) != │ │ │ │ + 0x00d5a580 20302e30 29200a20 20202020 206e6f72 0.0) . nor │ │ │ │ + 0x00d5a590 6d203d20 6e6f726d 616c697a 65286e29 m = normalize(n) │ │ │ │ + 0x00d5a5a0 202a206e 6f726d61 6c4c656e 3b200a20 * normalLen; . │ │ │ │ + 0x00d5a5b0 20202076 65633420 73686966 74656450 vec4 shiftedP │ │ │ │ + 0x00d5a5c0 6f73203d 206e6f72 6d202b20 706f733b os = norm + pos; │ │ │ │ + 0x00d5a5d0 200a2020 2020676c 5f506f73 6974696f . gl_Positio │ │ │ │ + 0x00d5a5e0 6e203d20 6170706c 79506976 6f745472 n = applyPivotTr │ │ │ │ + 0x00d5a5f0 616e7366 6f726d28 73686966 74656450 ansform(shiftedP │ │ │ │ + 0x00d5a600 6f73202a 20755f70 726f6a65 6374696f os * u_projectio │ │ │ │ + 0x00d5a610 6e2c2075 5f706976 6f745472 616e7366 n, u_pivotTransf │ │ │ │ + 0x00d5a620 6f726d2c 20302e30 293b200a 20202020 orm, 0.0); . │ │ │ │ + 0x00d5a630 765f636f 6c6f7254 6578436f 6f726473 v_colorTexCoords │ │ │ │ + 0x00d5a640 203d2061 5f636f6c 6f725465 78436f6f = a_colorTexCoo │ │ │ │ + 0x00d5a650 7264733b 200a2020 7d200a00 00000000 rds; . } ...... │ │ │ │ + 0x00d5a660 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d5a670 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d5a680 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d5a690 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d5a6a0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d5a6b0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d5a6c0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d5a6d0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d5a6e0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d5a6f0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d5a700 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d5a710 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d5a720 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d5a730 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d5a740 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d5a750 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d5a760 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d5a770 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d5a780 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d5a790 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d5a7a0 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d5a7b0 63322061 5f706f73 6974696f 6e3b200a c2 a_position; . │ │ │ │ + 0x00d5a7c0 2020636f 6e737420 666c6f61 74206b53 const float kS │ │ │ │ + 0x00d5a7d0 68617065 436f6f72 64536361 6c617220 hapeCoordScalar │ │ │ │ + 0x00d5a7e0 3d203130 30302e30 3b200a20 20766563 = 1000.0; . vec │ │ │ │ + 0x00d5a7f0 34206170 706c7950 69766f74 5472616e 4 applyPivotTran │ │ │ │ + 0x00d5a800 73666f72 6d287665 63342070 69766f74 sform(vec4 pivot │ │ │ │ + 0x00d5a810 2c206d61 74342070 69766f74 5472616e , mat4 pivotTran │ │ │ │ + 0x00d5a820 73666f72 6d2c2066 6c6f6174 20706976 sform, float piv │ │ │ │ + 0x00d5a830 6f745265 616c5a29 200a2020 7b200a20 otRealZ) . { . │ │ │ │ + 0x00d5a840 20202076 65633420 7472616e 73666f72 vec4 transfor │ │ │ │ + 0x00d5a850 6d656450 69766f74 203d2070 69766f74 medPivot = pivot │ │ │ │ + 0x00d5a860 3b200a20 20202066 6c6f6174 2077203d ; . float w = │ │ │ │ + 0x00d5a870 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ + 0x00d5a880 742e773b 200a2020 20207472 616e7366 t.w; . transf │ │ │ │ + 0x00d5a890 6f726d65 64506976 6f742e78 7977203d ormedPivot.xyw = │ │ │ │ + 0x00d5a8a0 20287069 766f7454 72616e73 666f726d (pivotTransform │ │ │ │ + 0x00d5a8b0 202a2076 65633428 7472616e 73666f72 * vec4(transfor │ │ │ │ + 0x00d5a8c0 6d656450 69766f74 2e78792c 20706976 medPivot.xy, piv │ │ │ │ + 0x00d5a8d0 6f745265 616c5a2c 20772929 2e787977 otRealZ, w)).xyw │ │ │ │ + 0x00d5a8e0 3b200a20 20202074 72616e73 666f726d ; . transform │ │ │ │ + 0x00d5a8f0 65645069 766f742e 7a202a3d 20747261 edPivot.z *= tra │ │ │ │ + 0x00d5a900 6e73666f 726d6564 5069766f 742e7720 nsformedPivot.w │ │ │ │ + 0x00d5a910 2f20773b 200a2020 23696664 65662056 / w; . #ifdef V │ │ │ │ + 0x00d5a920 554c4b41 4e200a20 20202074 72616e73 ULKAN . trans │ │ │ │ + 0x00d5a930 666f726d 65645069 766f742e 79203d20 formedPivot.y = │ │ │ │ + 0x00d5a940 2d747261 6e73666f 726d6564 5069766f -transformedPivo │ │ │ │ + 0x00d5a950 742e793b 200a2020 20207472 616e7366 t.y; . transf │ │ │ │ + 0x00d5a960 6f726d65 64506976 6f742e7a 203d2028 ormedPivot.z = ( │ │ │ │ + 0x00d5a970 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ + 0x00d5a980 2e7a2020 2b207472 616e7366 6f726d65 .z + transforme │ │ │ │ + 0x00d5a990 64506976 6f742e77 29202f20 322e303b dPivot.w) / 2.0; │ │ │ │ + 0x00d5a9a0 200a2020 23656e64 6966200a 20202020 . #endif . │ │ │ │ + 0x00d5a9b0 72657475 726e2074 72616e73 666f726d return transform │ │ │ │ + 0x00d5a9c0 65645069 766f743b 200a2020 7d200a20 edPivot; . } . │ │ │ │ + 0x00d5a9d0 20766563 34206170 706c7942 696c6c62 vec4 applyBillb │ │ │ │ + 0x00d5a9e0 6f617264 5069766f 74547261 6e73666f oardPivotTransfo │ │ │ │ + 0x00d5a9f0 726d2876 65633420 7069766f 742c206d rm(vec4 pivot, m │ │ │ │ + 0x00d5aa00 61743420 7069766f 74547261 6e73666f at4 pivotTransfo │ │ │ │ + 0x00d5aa10 726d2c20 666c6f61 74207069 766f7452 rm, float pivotR │ │ │ │ + 0x00d5aa20 65616c5a 2c207665 6332206f 66667365 ealZ, vec2 offse │ │ │ │ + 0x00d5aa30 7429200a 20207b20 0a202020 20666c6f t) . { . flo │ │ │ │ + 0x00d5aa40 6174206c 6f676963 5a203d20 7069766f at logicZ = pivo │ │ │ │ + 0x00d5aa50 742e7a20 2f207069 766f742e 773b200a t.z / pivot.w; . │ │ │ │ + 0x00d5aa60 20202020 76656334 20747261 6e73666f vec4 transfo │ │ │ │ + 0x00d5aa70 726d6564 5069766f 74203d20 7069766f rmedPivot = pivo │ │ │ │ + 0x00d5aa80 74547261 6e73666f 726d202a 20766563 tTransform * vec │ │ │ │ + 0x00d5aa90 34287069 766f742e 78792c20 7069766f 4(pivot.xy, pivo │ │ │ │ + 0x00d5aaa0 74526561 6c5a2c20 7069766f 742e7729 tRealZ, pivot.w) │ │ │ │ + 0x00d5aab0 3b200a20 20202076 65633420 7363616c ; . vec4 scal │ │ │ │ + 0x00d5aac0 65203d20 7069766f 74547261 6e73666f e = pivotTransfo │ │ │ │ + 0x00d5aad0 726d202a 20766563 3428312e 302c202d rm * vec4(1.0, - │ │ │ │ + 0x00d5aae0 312e302c 20302e30 2c20312e 30293b20 1.0, 0.0, 1.0); │ │ │ │ + 0x00d5aaf0 0a202020 20766563 3420706f 73697469 . vec4 positi │ │ │ │ + 0x00d5ab00 6f6e203d 20766563 34287472 616e7366 on = vec4(transf │ │ │ │ + 0x00d5ab10 6f726d65 64506976 6f742e78 79202f20 ormedPivot.xy / │ │ │ │ + 0x00d5ab20 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ + 0x00d5ab30 2e772c20 6c6f6769 635a2c20 312e3029 .w, logicZ, 1.0) │ │ │ │ + 0x00d5ab40 202b2076 65633428 6f666673 6574202f + vec4(offset / │ │ │ │ + 0x00d5ab50 20736361 6c652e77 202a2073 63616c65 scale.w * scale │ │ │ │ + 0x00d5ab60 2e782c20 302e302c 20302e30 293b200a .x, 0.0, 0.0); . │ │ │ │ + 0x00d5ab70 20202369 66646566 2056554c 4b414e20 #ifdef VULKAN │ │ │ │ + 0x00d5ab80 0a202020 20706f73 6974696f 6e2e7920 . position.y │ │ │ │ + 0x00d5ab90 3d202d70 6f736974 696f6e2e 793b200a = -position.y; . │ │ │ │ + 0x00d5aba0 20202020 706f7369 74696f6e 2e7a203d position.z = │ │ │ │ + 0x00d5abb0 2028706f 73697469 6f6e2e7a 20202b20 (position.z + │ │ │ │ + 0x00d5abc0 706f7369 74696f6e 2e772920 2f20322e position.w) / 2. │ │ │ │ + 0x00d5abd0 303b200a 20202365 6e646966 200a2020 0; . #endif . │ │ │ │ + 0x00d5abe0 20207265 7475726e 20706f73 6974696f return positio │ │ │ │ + 0x00d5abf0 6e3b200a 20207d20 0a202076 65633220 n; . } . vec2 │ │ │ │ + 0x00d5ac00 63616c63 4c696e65 5472616e 73666f72 calcLineTransfor │ │ │ │ + 0x00d5ac10 6d656441 78697350 6f732876 65633220 medAxisPos(vec2 │ │ │ │ + 0x00d5ac20 6f726967 696e616c 41786973 506f732c originalAxisPos, │ │ │ │ + 0x00d5ac30 20766563 32207368 69667465 64506f73 vec2 shiftedPos │ │ │ │ + 0x00d5ac40 2c206d61 7434206d 6f64656c 56696577 , mat4 modelView │ │ │ │ + 0x00d5ac50 2c20666c 6f617420 68616c66 57696474 , float halfWidt │ │ │ │ + 0x00d5ac60 6829200a 20207b20 0a202020 20766563 h) . { . vec │ │ │ │ + 0x00d5ac70 32207020 3d202876 65633428 73686966 2 p = (vec4(shif │ │ │ │ + 0x00d5ac80 74656450 6f732c20 302e302c 20312e30 tedPos, 0.0, 1.0 │ │ │ │ + 0x00d5ac90 29202a20 6d6f6465 6c566965 77292e78 ) * modelView).x │ │ │ │ + 0x00d5aca0 793b200a 20202020 76656332 2064203d y; . vec2 d = │ │ │ │ + 0x00d5acb0 2070202d 206f7269 67696e61 6c417869 p - originalAxi │ │ │ │ + 0x00d5acc0 73506f73 3b200a20 20202069 66202864 sPos; . if (d │ │ │ │ + 0x00d5acd0 6f742864 2c206429 20213d20 302e3029 ot(d, d) != 0.0) │ │ │ │ + 0x00d5ace0 200a2020 20202020 72657475 726e206f . return o │ │ │ │ + 0x00d5acf0 72696769 6e616c41 78697350 6f73202b riginalAxisPos + │ │ │ │ + 0x00d5ad00 206e6f72 6d616c69 7a652864 29202a20 normalize(d) * │ │ │ │ + 0x00d5ad10 68616c66 57696474 683b200a 20202020 halfWidth; . │ │ │ │ + 0x00d5ad20 656c7365 200a2020 20202020 72657475 else . retu │ │ │ │ + 0x00d5ad30 726e206f 72696769 6e616c41 78697350 rn originalAxisP │ │ │ │ + 0x00d5ad40 6f733b20 0a20207d 200a2020 766f6964 os; . } . void │ │ │ │ + 0x00d5ad50 206d6169 6e282920 0a20207b 200a2020 main() . { . │ │ │ │ + 0x00d5ad60 2020676c 5f506f73 6974696f 6e203d20 gl_Position = │ │ │ │ + 0x00d5ad70 76656334 28615f70 6f736974 696f6e2c vec4(a_position, │ │ │ │ + 0x00d5ad80 20302c20 31293b20 0a202023 69666465 0, 1); . #ifde │ │ │ │ + 0x00d5ad90 66205655 4c4b414e 200a2020 2020676c f VULKAN . gl │ │ │ │ + 0x00d5ada0 5f506f73 6974696f 6e2e7920 3d202d67 _Position.y = -g │ │ │ │ + 0x00d5adb0 6c5f506f 73697469 6f6e2e79 3b200a20 l_Position.y; . │ │ │ │ + 0x00d5adc0 20202067 6c5f506f 73697469 6f6e2e7a gl_Position.z │ │ │ │ + 0x00d5add0 203d2028 676c5f50 6f736974 696f6e2e = (gl_Position. │ │ │ │ + 0x00d5ade0 7a20202b 20676c5f 506f7369 74696f6e z + gl_Position │ │ │ │ + 0x00d5adf0 2e772920 2a20302e 353b200a 20202365 .w) * 0.5; . #e │ │ │ │ + 0x00d5ae00 6e646966 200a2020 7d200a00 00000000 ndif . } ...... │ │ │ │ + 0x00d5ae10 00000000 00000000 00000000 00000000 ................ │ │ │ │ + 0x00d5ae20 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d5ae30 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d5ae40 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d5ae50 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d5ae60 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d5ae70 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d5ae80 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d5ae90 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d5aea0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d5aeb0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d5aec0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d5aed0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d5aee0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d5aef0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d5af00 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d5af10 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d5af20 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d5af30 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d5af40 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d5af50 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d5af60 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d5af70 63322076 5f746578 436f6f72 64733b20 c2 v_texCoords; │ │ │ │ + 0x00d5af80 0a202069 6e207665 63342076 5f636f6c . in vec4 v_col │ │ │ │ + 0x00d5af90 6f723b20 0a20206f 75742076 65633420 or; . out vec4 │ │ │ │ + 0x00d5afa0 765f4672 6167436f 6c6f723b 200a2020 v_FragColor; . │ │ │ │ + 0x00d5afb0 756e6966 6f726d20 73616d70 6c657232 uniform sampler2 │ │ │ │ + 0x00d5afc0 4420755f 636f6c6f 72546578 3b200a20 D u_colorTex; . │ │ │ │ + 0x00d5afd0 20636f6e 73742066 6c6f6174 206b5368 const float kSh │ │ │ │ + 0x00d5afe0 61706543 6f6f7264 5363616c 6172203d apeCoordScalar = │ │ │ │ + 0x00d5aff0 20313030 302e303b 200a2020 766f6964 1000.0; . void │ │ │ │ + 0x00d5b000 206d6169 6e282920 0a20207b 200a2020 main() . { . │ │ │ │ + 0x00d5b010 20204c4f 575f5020 76656334 20636f6c LOW_P vec4 col │ │ │ │ + 0x00d5b020 6f72203d 20746578 74757265 28755f63 or = texture(u_c │ │ │ │ + 0x00d5b030 6f6c6f72 5465782c 20765f74 6578436f olorTex, v_texCo │ │ │ │ + 0x00d5b040 6f726473 293b200a 20202020 765f4672 ords); . v_Fr │ │ │ │ + 0x00d5b050 6167436f 6c6f7220 3d20636f 6c6f7220 agColor = color │ │ │ │ + 0x00d5b060 2a20765f 636f6c6f 723b200a 20207d20 * v_color; . } │ │ │ │ + 0x00d5b070 0a000000 00000000 00000000 00000000 ................ │ │ │ │ + 0x00d5b080 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d5b090 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d5b0a0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d5b0b0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d5b0c0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d5b0d0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d5b0e0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d5b0f0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d5b100 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d5b110 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d5b120 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d5b130 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d5b140 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d5b150 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d5b160 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d5b170 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d5b180 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d5b190 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d5b1a0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d5b1b0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d5b1c0 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d5b1d0 63322061 5f706f73 6974696f 6e3b200a c2 a_position; . │ │ │ │ + 0x00d5b1e0 2020696e 20766563 3220615f 74657843 in vec2 a_texC │ │ │ │ + 0x00d5b1f0 6f6f7264 733b200a 2020696e 20766563 oords; . in vec │ │ │ │ + 0x00d5b200 3420615f 636f6c6f 723b200a 20206f75 4 a_color; . ou │ │ │ │ + 0x00d5b210 74207665 63322076 5f746578 436f6f72 t vec2 v_texCoor │ │ │ │ + 0x00d5b220 64733b20 0a20206f 75742076 65633420 ds; . out vec4 │ │ │ │ + 0x00d5b230 765f636f 6c6f723b 200a2020 756e6966 v_color; . unif │ │ │ │ + 0x00d5b240 6f726d20 6d617434 20755f70 726f6a65 orm mat4 u_proje │ │ │ │ + 0x00d5b250 6374696f 6e3b200a 2020636f 6e737420 ction; . const │ │ │ │ + 0x00d5b260 666c6f61 74206b53 68617065 436f6f72 float kShapeCoor │ │ │ │ + 0x00d5b270 64536361 6c617220 3d203130 30302e30 dScalar = 1000.0 │ │ │ │ + 0x00d5b280 3b200a20 20766563 34206170 706c7950 ; . vec4 applyP │ │ │ │ + 0x00d5b290 69766f74 5472616e 73666f72 6d287665 ivotTransform(ve │ │ │ │ + 0x00d5b2a0 63342070 69766f74 2c206d61 74342070 c4 pivot, mat4 p │ │ │ │ + 0x00d5b2b0 69766f74 5472616e 73666f72 6d2c2066 ivotTransform, f │ │ │ │ + 0x00d5b2c0 6c6f6174 20706976 6f745265 616c5a29 loat pivotRealZ) │ │ │ │ + 0x00d5b2d0 200a2020 7b200a20 20202076 65633420 . { . vec4 │ │ │ │ + 0x00d5b2e0 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ + 0x00d5b2f0 203d2070 69766f74 3b200a20 20202066 = pivot; . f │ │ │ │ + 0x00d5b300 6c6f6174 2077203d 20747261 6e73666f loat w = transfo │ │ │ │ + 0x00d5b310 726d6564 5069766f 742e773b 200a2020 rmedPivot.w; . │ │ │ │ + 0x00d5b320 20207472 616e7366 6f726d65 64506976 transformedPiv │ │ │ │ + 0x00d5b330 6f742e78 7977203d 20287069 766f7454 ot.xyw = (pivotT │ │ │ │ + 0x00d5b340 72616e73 666f726d 202a2076 65633428 ransform * vec4( │ │ │ │ + 0x00d5b350 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ + 0x00d5b360 2e78792c 20706976 6f745265 616c5a2c .xy, pivotRealZ, │ │ │ │ + 0x00d5b370 20772929 2e787977 3b200a20 20202074 w)).xyw; . t │ │ │ │ + 0x00d5b380 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ + 0x00d5b390 7a202a3d 20747261 6e73666f 726d6564 z *= transformed │ │ │ │ + 0x00d5b3a0 5069766f 742e7720 2f20773b 200a2020 Pivot.w / w; . │ │ │ │ + 0x00d5b3b0 23696664 65662056 554c4b41 4e200a20 #ifdef VULKAN . │ │ │ │ + 0x00d5b3c0 20202074 72616e73 666f726d 65645069 transformedPi │ │ │ │ + 0x00d5b3d0 766f742e 79203d20 2d747261 6e73666f vot.y = -transfo │ │ │ │ + 0x00d5b3e0 726d6564 5069766f 742e793b 200a2020 rmedPivot.y; . │ │ │ │ + 0x00d5b3f0 20207472 616e7366 6f726d65 64506976 transformedPiv │ │ │ │ + 0x00d5b400 6f742e7a 203d2028 7472616e 73666f72 ot.z = (transfor │ │ │ │ + 0x00d5b410 6d656450 69766f74 2e7a2020 2b207472 medPivot.z + tr │ │ │ │ + 0x00d5b420 616e7366 6f726d65 64506976 6f742e77 ansformedPivot.w │ │ │ │ + 0x00d5b430 29202f20 322e303b 200a2020 23656e64 ) / 2.0; . #end │ │ │ │ + 0x00d5b440 6966200a 20202020 72657475 726e2074 if . return t │ │ │ │ + 0x00d5b450 72616e73 666f726d 65645069 766f743b ransformedPivot; │ │ │ │ + 0x00d5b460 200a2020 7d200a20 20766563 34206170 . } . vec4 ap │ │ │ │ + 0x00d5b470 706c7942 696c6c62 6f617264 5069766f plyBillboardPivo │ │ │ │ + 0x00d5b480 74547261 6e73666f 726d2876 65633420 tTransform(vec4 │ │ │ │ + 0x00d5b490 7069766f 742c206d 61743420 7069766f pivot, mat4 pivo │ │ │ │ + 0x00d5b4a0 74547261 6e73666f 726d2c20 666c6f61 tTransform, floa │ │ │ │ + 0x00d5b4b0 74207069 766f7452 65616c5a 2c207665 t pivotRealZ, ve │ │ │ │ + 0x00d5b4c0 6332206f 66667365 7429200a 20207b20 c2 offset) . { │ │ │ │ + 0x00d5b4d0 0a202020 20666c6f 6174206c 6f676963 . float logic │ │ │ │ + 0x00d5b4e0 5a203d20 7069766f 742e7a20 2f207069 Z = pivot.z / pi │ │ │ │ + 0x00d5b4f0 766f742e 773b200a 20202020 76656334 vot.w; . vec4 │ │ │ │ + 0x00d5b500 20747261 6e73666f 726d6564 5069766f transformedPivo │ │ │ │ + 0x00d5b510 74203d20 7069766f 74547261 6e73666f t = pivotTransfo │ │ │ │ + 0x00d5b520 726d202a 20766563 34287069 766f742e rm * vec4(pivot. │ │ │ │ + 0x00d5b530 78792c20 7069766f 74526561 6c5a2c20 xy, pivotRealZ, │ │ │ │ + 0x00d5b540 7069766f 742e7729 3b200a20 20202076 pivot.w); . v │ │ │ │ + 0x00d5b550 65633420 7363616c 65203d20 7069766f ec4 scale = pivo │ │ │ │ + 0x00d5b560 74547261 6e73666f 726d202a 20766563 tTransform * vec │ │ │ │ + 0x00d5b570 3428312e 302c202d 312e302c 20302e30 4(1.0, -1.0, 0.0 │ │ │ │ + 0x00d5b580 2c20312e 30293b20 0a202020 20766563 , 1.0); . vec │ │ │ │ + 0x00d5b590 3420706f 73697469 6f6e203d 20766563 4 position = vec │ │ │ │ + 0x00d5b5a0 34287472 616e7366 6f726d65 64506976 4(transformedPiv │ │ │ │ + 0x00d5b5b0 6f742e78 79202f20 7472616e 73666f72 ot.xy / transfor │ │ │ │ + 0x00d5b5c0 6d656450 69766f74 2e772c20 6c6f6769 medPivot.w, logi │ │ │ │ + 0x00d5b5d0 635a2c20 312e3029 202b2076 65633428 cZ, 1.0) + vec4( │ │ │ │ + 0x00d5b5e0 6f666673 6574202f 20736361 6c652e77 offset / scale.w │ │ │ │ + 0x00d5b5f0 202a2073 63616c65 2e782c20 302e302c * scale.x, 0.0, │ │ │ │ + 0x00d5b600 20302e30 293b200a 20202369 66646566 0.0); . #ifdef │ │ │ │ + 0x00d5b610 2056554c 4b414e20 0a202020 20706f73 VULKAN . pos │ │ │ │ + 0x00d5b620 6974696f 6e2e7920 3d202d70 6f736974 ition.y = -posit │ │ │ │ + 0x00d5b630 696f6e2e 793b200a 20202020 706f7369 ion.y; . posi │ │ │ │ + 0x00d5b640 74696f6e 2e7a203d 2028706f 73697469 tion.z = (positi │ │ │ │ + 0x00d5b650 6f6e2e7a 20202b20 706f7369 74696f6e on.z + position │ │ │ │ + 0x00d5b660 2e772920 2f20322e 303b200a 20202365 .w) / 2.0; . #e │ │ │ │ + 0x00d5b670 6e646966 200a2020 20207265 7475726e ndif . return │ │ │ │ + 0x00d5b680 20706f73 6974696f 6e3b200a 20207d20 position; . } │ │ │ │ + 0x00d5b690 0a202076 65633220 63616c63 4c696e65 . vec2 calcLine │ │ │ │ + 0x00d5b6a0 5472616e 73666f72 6d656441 78697350 TransformedAxisP │ │ │ │ + 0x00d5b6b0 6f732876 65633220 6f726967 696e616c os(vec2 original │ │ │ │ + 0x00d5b6c0 41786973 506f732c 20766563 32207368 AxisPos, vec2 sh │ │ │ │ + 0x00d5b6d0 69667465 64506f73 2c206d61 7434206d iftedPos, mat4 m │ │ │ │ + 0x00d5b6e0 6f64656c 56696577 2c20666c 6f617420 odelView, float │ │ │ │ + 0x00d5b6f0 68616c66 57696474 6829200a 20207b20 halfWidth) . { │ │ │ │ + 0x00d5b700 0a202020 20766563 32207020 3d202876 . vec2 p = (v │ │ │ │ + 0x00d5b710 65633428 73686966 74656450 6f732c20 ec4(shiftedPos, │ │ │ │ + 0x00d5b720 302e302c 20312e30 29202a20 6d6f6465 0.0, 1.0) * mode │ │ │ │ + 0x00d5b730 6c566965 77292e78 793b200a 20202020 lView).xy; . │ │ │ │ + 0x00d5b740 76656332 2064203d 2070202d 206f7269 vec2 d = p - ori │ │ │ │ + 0x00d5b750 67696e61 6c417869 73506f73 3b200a20 ginalAxisPos; . │ │ │ │ + 0x00d5b760 20202069 66202864 6f742864 2c206429 if (dot(d, d) │ │ │ │ + 0x00d5b770 20213d20 302e3029 200a2020 20202020 != 0.0) . │ │ │ │ + 0x00d5b780 72657475 726e206f 72696769 6e616c41 return originalA │ │ │ │ + 0x00d5b790 78697350 6f73202b 206e6f72 6d616c69 xisPos + normali │ │ │ │ + 0x00d5b7a0 7a652864 29202a20 68616c66 57696474 ze(d) * halfWidt │ │ │ │ + 0x00d5b7b0 683b200a 20202020 656c7365 200a2020 h; . else . │ │ │ │ + 0x00d5b7c0 20202020 72657475 726e206f 72696769 return origi │ │ │ │ + 0x00d5b7d0 6e616c41 78697350 6f733b20 0a20207d nalAxisPos; . } │ │ │ │ + 0x00d5b7e0 200a2020 766f6964 206d6169 6e282920 . void main() │ │ │ │ + 0x00d5b7f0 0a20207b 200a2020 2020765f 74657843 . { . v_texC │ │ │ │ + 0x00d5b800 6f6f7264 73203d20 615f7465 78436f6f oords = a_texCoo │ │ │ │ + 0x00d5b810 7264733b 200a2020 2020765f 636f6c6f rds; . v_colo │ │ │ │ + 0x00d5b820 72203d20 615f636f 6c6f723b 200a2020 r = a_color; . │ │ │ │ + 0x00d5b830 2020676c 5f506f73 6974696f 6e203d20 gl_Position = │ │ │ │ + 0x00d5b840 76656334 28615f70 6f736974 696f6e2c vec4(a_position, │ │ │ │ + 0x00d5b850 20302c20 3129202a 20755f70 726f6a65 0, 1) * u_proje │ │ │ │ + 0x00d5b860 6374696f 6e3b200a 20202369 66646566 ction; . #ifdef │ │ │ │ + 0x00d5b870 2056554c 4b414e20 0a202020 20676c5f VULKAN . gl_ │ │ │ │ + 0x00d5b880 506f7369 74696f6e 2e79203d 202d676c Position.y = -gl │ │ │ │ + 0x00d5b890 5f506f73 6974696f 6e2e793b 200a2020 _Position.y; . │ │ │ │ + 0x00d5b8a0 2020676c 5f506f73 6974696f 6e2e7a20 gl_Position.z │ │ │ │ + 0x00d5b8b0 3d202867 6c5f506f 73697469 6f6e2e7a = (gl_Position.z │ │ │ │ + 0x00d5b8c0 20202b20 676c5f50 6f736974 696f6e2e + gl_Position. │ │ │ │ + 0x00d5b8d0 7729202a 20302e35 3b200a20 2023656e w) * 0.5; . #en │ │ │ │ + 0x00d5b8e0 64696620 0a20207d 200a0000 00000000 dif . } ....... │ │ │ │ + 0x00d5b8f0 00000000 00000000 00000000 00000000 ................ │ │ │ │ + 0x00d5b900 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d5b910 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d5b920 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d5b930 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d5b940 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d5b950 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d5b960 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d5b970 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d5b980 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d5b990 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d5b9a0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d5b9b0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d5b9c0 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d5b9d0 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d5b9e0 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d5b9f0 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d5ba00 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d5ba10 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d5ba20 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d5ba30 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d5ba40 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d5ba50 63322076 5f636f6c 6f725465 78436f6f c2 v_colorTexCoo │ │ │ │ + 0x00d5ba60 7264733b 200a2020 6f757420 76656334 rds; . out vec4 │ │ │ │ + 0x00d5ba70 20765f46 72616743 6f6c6f72 3b200a20 v_FragColor; . │ │ │ │ + 0x00d5ba80 20756e69 666f726d 20666c6f 61742075 uniform float u │ │ │ │ + 0x00d5ba90 5f6f7061 63697479 3b200a20 20756e69 _opacity; . uni │ │ │ │ + 0x00d5baa0 666f726d 2073616d 706c6572 32442075 form sampler2D u │ │ │ │ + 0x00d5bab0 5f636f6c 6f725465 783b200a 2020636f _colorTex; . co │ │ │ │ + 0x00d5bac0 6e737420 666c6f61 74206b53 68617065 nst float kShape │ │ │ │ + 0x00d5bad0 436f6f72 64536361 6c617220 3d203130 CoordScalar = 10 │ │ │ │ + 0x00d5bae0 30302e30 3b200a20 20766f69 64206d61 00.0; . void ma │ │ │ │ + 0x00d5baf0 696e2829 200a2020 7b200a20 20202076 in() . { . v │ │ │ │ + 0x00d5bb00 65633420 66696e61 6c436f6c 6f72203d ec4 finalColor = │ │ │ │ + 0x00d5bb10 20746578 74757265 28755f63 6f6c6f72 texture(u_color │ │ │ │ + 0x00d5bb20 5465782c 20765f63 6f6c6f72 54657843 Tex, v_colorTexC │ │ │ │ + 0x00d5bb30 6f6f7264 73293b20 0a202020 2066696e oords); . fin │ │ │ │ + 0x00d5bb40 616c436f 6c6f722e 61202a3d 20755f6f alColor.a *= u_o │ │ │ │ + 0x00d5bb50 70616369 74793b20 0a202020 20765f46 pacity; . v_F │ │ │ │ + 0x00d5bb60 72616743 6f6c6f72 203d2066 696e616c ragColor = final │ │ │ │ + 0x00d5bb70 436f6c6f 723b200a 20207d20 0a000000 Color; . } .... │ │ │ │ + 0x00d5bb80 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d5bb90 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d5bba0 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d5bbb0 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d5bbc0 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d5bbd0 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d5bbe0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d5bbf0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d5bc00 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d5bc10 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d5bc20 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d5bc30 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d5bc40 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d5bc50 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d5bc60 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d5bc70 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d5bc80 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d5bc90 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d5bca0 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d5bcb0 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d5bcc0 2023656e 64696620 0a202023 69666465 #endif . #ifde │ │ │ │ + 0x00d5bcd0 6620454e 41424c45 5f565446 200a2020 f ENABLE_VTF . │ │ │ │ + 0x00d5bce0 696e204c 4f575f50 20766563 3420765f in LOW_P vec4 v_ │ │ │ │ + 0x00d5bcf0 636f6c6f 723b200a 20202365 6c736520 color; . #else │ │ │ │ + 0x00d5bd00 0a202069 6e207665 63322076 5f636f6c . in vec2 v_col │ │ │ │ + 0x00d5bd10 6f725465 78436f6f 72643b20 0a202075 orTexCoord; . u │ │ │ │ + 0x00d5bd20 6e69666f 726d2073 616d706c 65723244 niform sampler2D │ │ │ │ + 0x00d5bd30 20755f63 6f6c6f72 5465783b 200a2020 u_colorTex; . │ │ │ │ + 0x00d5bd40 23656e64 6966200a 2020696e 20766563 #endif . in vec │ │ │ │ + 0x00d5bd50 3220765f 6d61736b 54657843 6f6f7264 2 v_maskTexCoord │ │ │ │ + 0x00d5bd60 3b200a20 206f7574 20766563 3420765f ; . out vec4 v_ │ │ │ │ + 0x00d5bd70 46726167 436f6c6f 723b200a 2020756e FragColor; . un │ │ │ │ + 0x00d5bd80 69666f72 6d206d61 74342075 5f6d6f64 iform mat4 u_mod │ │ │ │ + 0x00d5bd90 656c5669 65773b20 0a202075 6e69666f elView; . unifo │ │ │ │ + 0x00d5bda0 726d206d 61743420 755f7072 6f6a6563 rm mat4 u_projec │ │ │ │ + 0x00d5bdb0 74696f6e 3b200a20 20756e69 666f726d tion; . uniform │ │ │ │ + 0x00d5bdc0 20766563 3220755f 636f6e74 72617374 vec2 u_contrast │ │ │ │ + 0x00d5bdd0 47616d6d 613b200a 2020756e 69666f72 Gamma; . unifor │ │ │ │ + 0x00d5bde0 6d207665 63322075 5f706f73 6974696f m vec2 u_positio │ │ │ │ + 0x00d5bdf0 6e3b200a 2020756e 69666f72 6d20666c n; . uniform fl │ │ │ │ + 0x00d5be00 6f617420 755f6973 4f75746c 696e6550 oat u_isOutlineP │ │ │ │ + 0x00d5be10 6173733b 200a2020 756e6966 6f726d20 ass; . uniform │ │ │ │ + 0x00d5be20 666c6f61 7420755f 6f706163 6974793b float u_opacity; │ │ │ │ + 0x00d5be30 200a2020 756e6966 6f726d20 666c6f61 . uniform floa │ │ │ │ + 0x00d5be40 7420755f 6c656e67 74683b20 0a202075 t u_length; . u │ │ │ │ + 0x00d5be50 6e69666f 726d2073 616d706c 65723244 niform sampler2D │ │ │ │ + 0x00d5be60 20755f6d 61736b54 65783b20 0a202063 u_maskTex; . c │ │ │ │ + 0x00d5be70 6f6e7374 20666c6f 6174206b 53686170 onst float kShap │ │ │ │ + 0x00d5be80 65436f6f 72645363 616c6172 203d2031 eCoordScalar = 1 │ │ │ │ + 0x00d5be90 3030302e 303b200a 2020766f 6964206d 000.0; . void m │ │ │ │ + 0x00d5bea0 61696e28 29200a20 207b200a 20202369 ain() . { . #i │ │ │ │ + 0x00d5beb0 66646566 20454e41 424c455f 56544620 fdef ENABLE_VTF │ │ │ │ + 0x00d5bec0 0a202020 204c4f57 5f502076 65633420 . LOW_P vec4 │ │ │ │ + 0x00d5bed0 676c7970 68436f6c 6f72203d 20765f63 glyphColor = v_c │ │ │ │ + 0x00d5bee0 6f6c6f72 3b200a20 2023656c 7365200a olor; . #else . │ │ │ │ + 0x00d5bef0 20202020 4c4f575f 50207665 63342067 LOW_P vec4 g │ │ │ │ + 0x00d5bf00 6c797068 436f6c6f 72203d20 74657874 lyphColor = text │ │ │ │ + 0x00d5bf10 75726528 755f636f 6c6f7254 65782c20 ure(u_colorTex, │ │ │ │ + 0x00d5bf20 765f636f 6c6f7254 6578436f 6f726429 v_colorTexCoord) │ │ │ │ + 0x00d5bf30 3b200a20 2023656e 64696620 0a202020 ; . #endif . │ │ │ │ + 0x00d5bf40 20666c6f 61742064 69737420 3d207465 float dist = te │ │ │ │ + 0x00d5bf50 78747572 6528755f 6d61736b 5465782c xture(u_maskTex, │ │ │ │ + 0x00d5bf60 20765f6d 61736b54 6578436f 6f726429 v_maskTexCoord) │ │ │ │ + 0x00d5bf70 2e723b20 0a202020 20666c6f 61742061 .r; . float a │ │ │ │ + 0x00d5bf80 6c706861 203d2073 6d6f6f74 68737465 lpha = smoothste │ │ │ │ + 0x00d5bf90 7028755f 636f6e74 72617374 47616d6d p(u_contrastGamm │ │ │ │ + 0x00d5bfa0 612e7820 2d20755f 636f6e74 72617374 a.x - u_contrast │ │ │ │ + 0x00d5bfb0 47616d6d 612e792c 20755f63 6f6e7472 Gamma.y, u_contr │ │ │ │ + 0x00d5bfc0 61737447 616d6d61 2e78202b 20755f63 astGamma.x + u_c │ │ │ │ + 0x00d5bfd0 6f6e7472 61737447 616d6d61 2e792c20 ontrastGamma.y, │ │ │ │ + 0x00d5bfe0 64697374 29202a20 755f6f70 61636974 dist) * u_opacit │ │ │ │ + 0x00d5bff0 793b200a 20202020 676c7970 68436f6c y; . glyphCol │ │ │ │ + 0x00d5c000 6f722e61 202a3d20 616c7068 613b200a or.a *= alpha; . │ │ │ │ + 0x00d5c010 20202020 765f4672 6167436f 6c6f7220 v_FragColor │ │ │ │ + 0x00d5c020 3d20676c 79706843 6f6c6f72 3b200a20 = glyphColor; . │ │ │ │ + 0x00d5c030 207d200a 00000000 00000000 00000000 } ............. │ │ │ │ + 0x00d5c040 20202023 69666465 6620474c 5f455320 #ifdef GL_ES │ │ │ │ + 0x00d5c050 0a202020 20236966 64656620 474c5f46 . #ifdef GL_F │ │ │ │ + 0x00d5c060 5241474d 454e545f 50524543 4953494f RAGMENT_PRECISIO │ │ │ │ + 0x00d5c070 4e5f4849 4748200a 20202020 20202364 N_HIGH . #d │ │ │ │ + 0x00d5c080 6566696e 65204d41 58505245 43206869 efine MAXPREC hi │ │ │ │ + 0x00d5c090 67687020 0a202020 2023656c 7365200a ghp . #else . │ │ │ │ + 0x00d5c0a0 20202020 20202364 6566696e 65204d41 #define MA │ │ │ │ + 0x00d5c0b0 58505245 43206d65 6469756d 70200a20 XPREC mediump . │ │ │ │ + 0x00d5c0c0 20202023 656e6469 66200a20 20202070 #endif . p │ │ │ │ + 0x00d5c0d0 72656369 73696f6e 204d4158 50524543 recision MAXPREC │ │ │ │ + 0x00d5c0e0 20666c6f 61743b20 0a202020 20236465 float; . #de │ │ │ │ + 0x00d5c0f0 66696e65 204c4f57 5f50206c 6f777020 fine LOW_P lowp │ │ │ │ + 0x00d5c100 0a202020 20236465 66696e65 204d4544 . #define MED │ │ │ │ + 0x00d5c110 49554d5f 50206d65 6469756d 70200a20 IUM_P mediump . │ │ │ │ + 0x00d5c120 20202023 64656669 6e652048 4947485f #define HIGH_ │ │ │ │ + 0x00d5c130 50206869 67687020 0a202023 656c7365 P highp . #else │ │ │ │ + 0x00d5c140 200a2020 20202364 6566696e 65204c4f . #define LO │ │ │ │ + 0x00d5c150 575f5020 0a202020 20236465 66696e65 W_P . #define │ │ │ │ + 0x00d5c160 204d4544 49554d5f 50200a20 20202023 MEDIUM_P . # │ │ │ │ + 0x00d5c170 64656669 6e652048 4947485f 50200a20 define HIGH_P . │ │ │ │ + 0x00d5c180 2023656e 64696620 0a202069 6e207665 #endif . in ve │ │ │ │ + 0x00d5c190 63322061 5f6e6f72 6d616c3b 200a2020 c2 a_normal; . │ │ │ │ + 0x00d5c1a0 696e2076 65633220 615f636f 6c6f7254 in vec2 a_colorT │ │ │ │ + 0x00d5c1b0 6578436f 6f726473 3b200a20 206f7574 exCoords; . out │ │ │ │ + 0x00d5c1c0 20766563 3220765f 636f6c6f 72546578 vec2 v_colorTex │ │ │ │ + 0x00d5c1d0 436f6f72 64733b20 0a202075 6e69666f Coords; . unifo │ │ │ │ + 0x00d5c1e0 726d206d 61743420 755f6d6f 64656c56 rm mat4 u_modelV │ │ │ │ + 0x00d5c1f0 6965773b 200a2020 756e6966 6f726d20 iew; . uniform │ │ │ │ + 0x00d5c200 6d617434 20755f70 726f6a65 6374696f mat4 u_projectio │ │ │ │ + 0x00d5c210 6e3b200a 2020756e 69666f72 6d206d61 n; . uniform ma │ │ │ │ + 0x00d5c220 74342075 5f706976 6f745472 616e7366 t4 u_pivotTransf │ │ │ │ + 0x00d5c230 6f726d3b 200a2020 756e6966 6f726d20 orm; . uniform │ │ │ │ + 0x00d5c240 76656334 20755f70 6f736974 696f6e3b vec4 u_position; │ │ │ │ + 0x00d5c250 200a2020 756e6966 6f726d20 76656332 . uniform vec2 │ │ │ │ + 0x00d5c260 20755f6c 696e6550 6172616d 733b200a u_lineParams; . │ │ │ │ + 0x00d5c270 2020756e 69666f72 6d20666c 6f617420 uniform float │ │ │ │ + 0x00d5c280 755f6163 63757261 63793b20 0a202075 u_accuracy; . u │ │ │ │ + 0x00d5c290 6e69666f 726d2066 6c6f6174 20755f7a niform float u_z │ │ │ │ + 0x00d5c2a0 5363616c 653b200a 2020756e 69666f72 Scale; . unifor │ │ │ │ + 0x00d5c2b0 6d20666c 6f617420 755f6f70 61636974 m float u_opacit │ │ │ │ + 0x00d5c2c0 793b200a 2020756e 69666f72 6d20666c y; . uniform fl │ │ │ │ + 0x00d5c2d0 6f617420 755f617a 696d7574 3b200a20 oat u_azimut; . │ │ │ │ + 0x00d5c2e0 20636f6e 73742066 6c6f6174 206b5368 const float kSh │ │ │ │ + 0x00d5c2f0 61706543 6f6f7264 5363616c 6172203d apeCoordScalar = │ │ │ │ + 0x00d5c300 20313030 302e303b 200a2020 76656334 1000.0; . vec4 │ │ │ │ + 0x00d5c310 20617070 6c795069 766f7454 72616e73 applyPivotTrans │ │ │ │ + 0x00d5c320 666f726d 28766563 34207069 766f742c form(vec4 pivot, │ │ │ │ + 0x00d5c330 206d6174 34207069 766f7454 72616e73 mat4 pivotTrans │ │ │ │ + 0x00d5c340 666f726d 2c20666c 6f617420 7069766f form, float pivo │ │ │ │ + 0x00d5c350 74526561 6c5a2920 0a20207b 200a2020 tRealZ) . { . │ │ │ │ + 0x00d5c360 20207665 63342074 72616e73 666f726d vec4 transform │ │ │ │ + 0x00d5c370 65645069 766f7420 3d207069 766f743b edPivot = pivot; │ │ │ │ + 0x00d5c380 200a2020 2020666c 6f617420 77203d20 . float w = │ │ │ │ 0x00d5c390 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ - 0x00d5c3a0 3b200a20 207d200a 20207665 63342061 ; . } . vec4 a │ │ │ │ - 0x00d5c3b0 70706c79 42696c6c 626f6172 64506976 pplyBillboardPiv │ │ │ │ - 0x00d5c3c0 6f745472 616e7366 6f726d28 76656334 otTransform(vec4 │ │ │ │ - 0x00d5c3d0 20706976 6f742c20 6d617434 20706976 pivot, mat4 piv │ │ │ │ - 0x00d5c3e0 6f745472 616e7366 6f726d2c 20666c6f otTransform, flo │ │ │ │ - 0x00d5c3f0 61742070 69766f74 5265616c 5a2c2076 at pivotRealZ, v │ │ │ │ - 0x00d5c400 65633220 6f666673 65742920 0a20207b ec2 offset) . { │ │ │ │ - 0x00d5c410 200a2020 2020666c 6f617420 6c6f6769 . float logi │ │ │ │ - 0x00d5c420 635a203d 20706976 6f742e7a 202f2070 cZ = pivot.z / p │ │ │ │ - 0x00d5c430 69766f74 2e773b20 0a202020 20766563 ivot.w; . vec │ │ │ │ - 0x00d5c440 34207472 616e7366 6f726d65 64506976 4 transformedPiv │ │ │ │ - 0x00d5c450 6f74203d 20706976 6f745472 616e7366 ot = pivotTransf │ │ │ │ - 0x00d5c460 6f726d20 2a207665 63342870 69766f74 orm * vec4(pivot │ │ │ │ - 0x00d5c470 2e78792c 20706976 6f745265 616c5a2c .xy, pivotRealZ, │ │ │ │ - 0x00d5c480 20706976 6f742e77 293b200a 20202020 pivot.w); . │ │ │ │ - 0x00d5c490 76656334 20736361 6c65203d 20706976 vec4 scale = piv │ │ │ │ - 0x00d5c4a0 6f745472 616e7366 6f726d20 2a207665 otTransform * ve │ │ │ │ - 0x00d5c4b0 63342831 2e302c20 2d312e30 2c20302e c4(1.0, -1.0, 0. │ │ │ │ - 0x00d5c4c0 302c2031 2e30293b 200a2020 20207665 0, 1.0); . ve │ │ │ │ - 0x00d5c4d0 63342070 6f736974 696f6e20 3d207665 c4 position = ve │ │ │ │ - 0x00d5c4e0 63342874 72616e73 666f726d 65645069 c4(transformedPi │ │ │ │ - 0x00d5c4f0 766f742e 7879202f 20747261 6e73666f vot.xy / transfo │ │ │ │ - 0x00d5c500 726d6564 5069766f 742e772c 206c6f67 rmedPivot.w, log │ │ │ │ - 0x00d5c510 69635a2c 20312e30 29202b20 76656334 icZ, 1.0) + vec4 │ │ │ │ - 0x00d5c520 286f6666 73657420 2f207363 616c652e (offset / scale. │ │ │ │ - 0x00d5c530 77202a20 7363616c 652e782c 20302e30 w * scale.x, 0.0 │ │ │ │ - 0x00d5c540 2c20302e 30293b20 0a202023 69666465 , 0.0); . #ifde │ │ │ │ - 0x00d5c550 66205655 4c4b414e 200a2020 2020706f f VULKAN . po │ │ │ │ - 0x00d5c560 73697469 6f6e2e79 203d202d 706f7369 sition.y = -posi │ │ │ │ - 0x00d5c570 74696f6e 2e793b20 0a202020 20706f73 tion.y; . pos │ │ │ │ - 0x00d5c580 6974696f 6e2e7a20 3d202870 6f736974 ition.z = (posit │ │ │ │ - 0x00d5c590 696f6e2e 7a20202b 20706f73 6974696f ion.z + positio │ │ │ │ - 0x00d5c5a0 6e2e7729 202f2032 2e303b20 0a202023 n.w) / 2.0; . # │ │ │ │ - 0x00d5c5b0 656e6469 66200a20 20202072 65747572 endif . retur │ │ │ │ - 0x00d5c5c0 6e20706f 73697469 6f6e3b20 0a20207d n position; . } │ │ │ │ - 0x00d5c5d0 200a2020 76656332 2063616c 634c696e . vec2 calcLin │ │ │ │ - 0x00d5c5e0 65547261 6e73666f 726d6564 41786973 eTransformedAxis │ │ │ │ - 0x00d5c5f0 506f7328 76656332 206f7269 67696e61 Pos(vec2 origina │ │ │ │ - 0x00d5c600 6c417869 73506f73 2c207665 63322073 lAxisPos, vec2 s │ │ │ │ - 0x00d5c610 68696674 6564506f 732c206d 61743420 hiftedPos, mat4 │ │ │ │ - 0x00d5c620 6d6f6465 6c566965 772c2066 6c6f6174 modelView, float │ │ │ │ - 0x00d5c630 2068616c 66576964 74682920 0a20207b halfWidth) . { │ │ │ │ - 0x00d5c640 200a2020 20207665 63322070 203d2028 . vec2 p = ( │ │ │ │ - 0x00d5c650 76656334 28736869 66746564 506f732c vec4(shiftedPos, │ │ │ │ - 0x00d5c660 20302e30 2c20312e 3029202a 206d6f64 0.0, 1.0) * mod │ │ │ │ - 0x00d5c670 656c5669 6577292e 78793b20 0a202020 elView).xy; . │ │ │ │ - 0x00d5c680 20766563 32206420 3d207020 2d206f72 vec2 d = p - or │ │ │ │ - 0x00d5c690 6967696e 616c4178 6973506f 733b200a iginalAxisPos; . │ │ │ │ - 0x00d5c6a0 20202020 69662028 646f7428 642c2064 if (dot(d, d │ │ │ │ - 0x00d5c6b0 2920213d 20302e30 29200a20 20202020 ) != 0.0) . │ │ │ │ - 0x00d5c6c0 20726574 75726e20 6f726967 696e616c return original │ │ │ │ - 0x00d5c6d0 41786973 506f7320 2b206e6f 726d616c AxisPos + normal │ │ │ │ - 0x00d5c6e0 697a6528 6429202a 2068616c 66576964 ize(d) * halfWid │ │ │ │ - 0x00d5c6f0 74683b20 0a202020 20656c73 65200a20 th; . else . │ │ │ │ - 0x00d5c700 20202020 20726574 75726e20 6f726967 return orig │ │ │ │ - 0x00d5c710 696e616c 41786973 506f733b 200a2020 inalAxisPos; . │ │ │ │ - 0x00d5c720 7d200a20 20766f69 64206d61 696e2829 } . void main() │ │ │ │ - 0x00d5c730 200a2020 7b200a20 20202076 65633220 . { . vec2 │ │ │ │ - 0x00d5c740 6e6f726d 616c203d 20615f6e 6f726d61 normal = a_norma │ │ │ │ - 0x00d5c750 6c416e64 416e696d 6174654f 725a2e78 lAndAnimateOrZ.x │ │ │ │ - 0x00d5c760 793b200a 20202020 69662028 615f6e6f y; . if (a_no │ │ │ │ - 0x00d5c770 726d616c 416e6441 6e696d61 74654f72 rmalAndAnimateOr │ │ │ │ - 0x00d5c780 5a2e7a20 3e20302e 3029200a 20202020 Z.z > 0.0) . │ │ │ │ - 0x00d5c790 20206e6f 726d616c 203d2075 5f696e74 normal = u_int │ │ │ │ - 0x00d5c7a0 6572706f 6c617469 6f6e202a 206e6f72 erpolation * nor │ │ │ │ - 0x00d5c7b0 6d616c3b 200a2020 20207665 63342070 mal; . vec4 p │ │ │ │ - 0x00d5c7c0 69766f74 203d2076 65633428 615f706f ivot = vec4(a_po │ │ │ │ - 0x00d5c7d0 73697469 6f6e2c20 312e3029 202a2075 sition, 1.0) * u │ │ │ │ - 0x00d5c7e0 5f6d6f64 656c5669 65773b20 0a202020 _modelView; . │ │ │ │ - 0x00d5c7f0 20766563 34206f66 66736574 203d2076 vec4 offset = v │ │ │ │ - 0x00d5c800 65633428 6e6f726d 616c2c20 302e302c ec4(normal, 0.0, │ │ │ │ - 0x00d5c810 20302e30 29202a20 755f7072 6f6a6563 0.0) * u_projec │ │ │ │ - 0x00d5c820 74696f6e 3b200a20 20202076 65633420 tion; . vec4 │ │ │ │ - 0x00d5c830 70726f6a 65637465 64506976 6f74203d projectedPivot = │ │ │ │ - 0x00d5c840 20706976 6f74202a 20755f70 726f6a65 pivot * u_proje │ │ │ │ - 0x00d5c850 6374696f 6e3b200a 20202020 676c5f50 ction; . gl_P │ │ │ │ - 0x00d5c860 6f736974 696f6e20 3d206170 706c7942 osition = applyB │ │ │ │ - 0x00d5c870 696c6c62 6f617264 5069766f 74547261 illboardPivotTra │ │ │ │ - 0x00d5c880 6e73666f 726d2870 726f6a65 63746564 nsform(projected │ │ │ │ - 0x00d5c890 5069766f 742c2075 5f706976 6f745472 Pivot, u_pivotTr │ │ │ │ - 0x00d5c8a0 616e7366 6f726d2c 20302e30 2c206f66 ansform, 0.0, of │ │ │ │ - 0x00d5c8b0 66736574 2e787929 3b200a20 20202066 fset.xy); . f │ │ │ │ - 0x00d5c8c0 6c6f6174 206e6577 5a203d20 70726f6a loat newZ = proj │ │ │ │ - 0x00d5c8d0 65637465 64506976 6f742e79 202f2070 ectedPivot.y / p │ │ │ │ - 0x00d5c8e0 726f6a65 63746564 5069766f 742e7720 rojectedPivot.w │ │ │ │ - 0x00d5c8f0 2a20302e 35202b20 302e353b 200a2020 * 0.5 + 0.5; . │ │ │ │ - 0x00d5c900 2020676c 5f506f73 6974696f 6e2e7a20 gl_Position.z │ │ │ │ - 0x00d5c910 3d206162 7328615f 6e6f726d 616c416e = abs(a_normalAn │ │ │ │ - 0x00d5c920 64416e69 6d617465 4f725a2e 7a29202a dAnimateOrZ.z) * │ │ │ │ - 0x00d5c930 206e6577 5a20202b 2028312e 30202d20 newZ + (1.0 - │ │ │ │ - 0x00d5c940 61627328 615f6e6f 726d616c 416e6441 abs(a_normalAndA │ │ │ │ - 0x00d5c950 6e696d61 74654f72 5a2e7a29 29202a20 nimateOrZ.z)) * │ │ │ │ - 0x00d5c960 676c5f50 6f736974 696f6e2e 7a3b200a gl_Position.z; . │ │ │ │ - 0x00d5c970 20202020 765f7465 78436f6f 72647320 v_texCoords │ │ │ │ - 0x00d5c980 3d20615f 74657843 6f6f7264 733b200a = a_texCoords; . │ │ │ │ - 0x00d5c990 20202020 765f6d61 736b436f 6c6f7220 v_maskColor │ │ │ │ - 0x00d5c9a0 3d20615f 636f6c6f 723b200a 20207d20 = a_color; . } │ │ │ │ - 0x00d5c9b0 0a000000 00000000 00000000 00000000 ................ │ │ │ │ + 0x00d5c3a0 2e773b20 0a202020 20747261 6e73666f .w; . transfo │ │ │ │ + 0x00d5c3b0 726d6564 5069766f 742e7879 77203d20 rmedPivot.xyw = │ │ │ │ + 0x00d5c3c0 28706976 6f745472 616e7366 6f726d20 (pivotTransform │ │ │ │ + 0x00d5c3d0 2a207665 63342874 72616e73 666f726d * vec4(transform │ │ │ │ + 0x00d5c3e0 65645069 766f742e 78792c20 7069766f edPivot.xy, pivo │ │ │ │ + 0x00d5c3f0 74526561 6c5a2c20 7729292e 7879773b tRealZ, w)).xyw; │ │ │ │ + 0x00d5c400 200a2020 20207472 616e7366 6f726d65 . transforme │ │ │ │ + 0x00d5c410 64506976 6f742e7a 202a3d20 7472616e dPivot.z *= tran │ │ │ │ + 0x00d5c420 73666f72 6d656450 69766f74 2e77202f sformedPivot.w / │ │ │ │ + 0x00d5c430 20773b20 0a202023 69666465 66205655 w; . #ifdef VU │ │ │ │ + 0x00d5c440 4c4b414e 200a2020 20207472 616e7366 LKAN . transf │ │ │ │ + 0x00d5c450 6f726d65 64506976 6f742e79 203d202d ormedPivot.y = - │ │ │ │ + 0x00d5c460 7472616e 73666f72 6d656450 69766f74 transformedPivot │ │ │ │ + 0x00d5c470 2e793b20 0a202020 20747261 6e73666f .y; . transfo │ │ │ │ + 0x00d5c480 726d6564 5069766f 742e7a20 3d202874 rmedPivot.z = (t │ │ │ │ + 0x00d5c490 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ + 0x00d5c4a0 7a20202b 20747261 6e73666f 726d6564 z + transformed │ │ │ │ + 0x00d5c4b0 5069766f 742e7729 202f2032 2e303b20 Pivot.w) / 2.0; │ │ │ │ + 0x00d5c4c0 0a202023 656e6469 66200a20 20202072 . #endif . r │ │ │ │ + 0x00d5c4d0 65747572 6e207472 616e7366 6f726d65 eturn transforme │ │ │ │ + 0x00d5c4e0 64506976 6f743b20 0a20207d 200a2020 dPivot; . } . │ │ │ │ + 0x00d5c4f0 76656334 20617070 6c794269 6c6c626f vec4 applyBillbo │ │ │ │ + 0x00d5c500 61726450 69766f74 5472616e 73666f72 ardPivotTransfor │ │ │ │ + 0x00d5c510 6d287665 63342070 69766f74 2c206d61 m(vec4 pivot, ma │ │ │ │ + 0x00d5c520 74342070 69766f74 5472616e 73666f72 t4 pivotTransfor │ │ │ │ + 0x00d5c530 6d2c2066 6c6f6174 20706976 6f745265 m, float pivotRe │ │ │ │ + 0x00d5c540 616c5a2c 20766563 32206f66 66736574 alZ, vec2 offset │ │ │ │ + 0x00d5c550 29200a20 207b200a 20202020 666c6f61 ) . { . floa │ │ │ │ + 0x00d5c560 74206c6f 6769635a 203d2070 69766f74 t logicZ = pivot │ │ │ │ + 0x00d5c570 2e7a202f 20706976 6f742e77 3b200a20 .z / pivot.w; . │ │ │ │ + 0x00d5c580 20202076 65633420 7472616e 73666f72 vec4 transfor │ │ │ │ + 0x00d5c590 6d656450 69766f74 203d2070 69766f74 medPivot = pivot │ │ │ │ + 0x00d5c5a0 5472616e 73666f72 6d202a20 76656334 Transform * vec4 │ │ │ │ + 0x00d5c5b0 28706976 6f742e78 792c2070 69766f74 (pivot.xy, pivot │ │ │ │ + 0x00d5c5c0 5265616c 5a2c2070 69766f74 2e77293b RealZ, pivot.w); │ │ │ │ + 0x00d5c5d0 200a2020 20207665 63342073 63616c65 . vec4 scale │ │ │ │ + 0x00d5c5e0 203d2070 69766f74 5472616e 73666f72 = pivotTransfor │ │ │ │ + 0x00d5c5f0 6d202a20 76656334 28312e30 2c202d31 m * vec4(1.0, -1 │ │ │ │ + 0x00d5c600 2e302c20 302e302c 20312e30 293b200a .0, 0.0, 1.0); . │ │ │ │ + 0x00d5c610 20202020 76656334 20706f73 6974696f vec4 positio │ │ │ │ + 0x00d5c620 6e203d20 76656334 28747261 6e73666f n = vec4(transfo │ │ │ │ + 0x00d5c630 726d6564 5069766f 742e7879 202f2074 rmedPivot.xy / t │ │ │ │ + 0x00d5c640 72616e73 666f726d 65645069 766f742e ransformedPivot. │ │ │ │ + 0x00d5c650 772c206c 6f676963 5a2c2031 2e302920 w, logicZ, 1.0) │ │ │ │ + 0x00d5c660 2b207665 6334286f 66667365 74202f20 + vec4(offset / │ │ │ │ + 0x00d5c670 7363616c 652e7720 2a207363 616c652e scale.w * scale. │ │ │ │ + 0x00d5c680 782c2030 2e302c20 302e3029 3b200a20 x, 0.0, 0.0); . │ │ │ │ + 0x00d5c690 20236966 64656620 56554c4b 414e200a #ifdef VULKAN . │ │ │ │ + 0x00d5c6a0 20202020 706f7369 74696f6e 2e79203d position.y = │ │ │ │ + 0x00d5c6b0 202d706f 73697469 6f6e2e79 3b200a20 -position.y; . │ │ │ │ + 0x00d5c6c0 20202070 6f736974 696f6e2e 7a203d20 position.z = │ │ │ │ + 0x00d5c6d0 28706f73 6974696f 6e2e7a20 202b2070 (position.z + p │ │ │ │ + 0x00d5c6e0 6f736974 696f6e2e 7729202f 20322e30 osition.w) / 2.0 │ │ │ │ + 0x00d5c6f0 3b200a20 2023656e 64696620 0a202020 ; . #endif . │ │ │ │ + 0x00d5c700 20726574 75726e20 706f7369 74696f6e return position │ │ │ │ + 0x00d5c710 3b200a20 207d200a 20207665 63322063 ; . } . vec2 c │ │ │ │ + 0x00d5c720 616c634c 696e6554 72616e73 666f726d alcLineTransform │ │ │ │ + 0x00d5c730 65644178 6973506f 73287665 6332206f edAxisPos(vec2 o │ │ │ │ + 0x00d5c740 72696769 6e616c41 78697350 6f732c20 riginalAxisPos, │ │ │ │ + 0x00d5c750 76656332 20736869 66746564 506f732c vec2 shiftedPos, │ │ │ │ + 0x00d5c760 206d6174 34206d6f 64656c56 6965772c mat4 modelView, │ │ │ │ + 0x00d5c770 20666c6f 61742068 616c6657 69647468 float halfWidth │ │ │ │ + 0x00d5c780 29200a20 207b200a 20202020 76656332 ) . { . vec2 │ │ │ │ + 0x00d5c790 2070203d 20287665 63342873 68696674 p = (vec4(shift │ │ │ │ + 0x00d5c7a0 6564506f 732c2030 2e302c20 312e3029 edPos, 0.0, 1.0) │ │ │ │ + 0x00d5c7b0 202a206d 6f64656c 56696577 292e7879 * modelView).xy │ │ │ │ + 0x00d5c7c0 3b200a20 20202076 65633220 64203d20 ; . vec2 d = │ │ │ │ + 0x00d5c7d0 70202d20 6f726967 696e616c 41786973 p - originalAxis │ │ │ │ + 0x00d5c7e0 506f733b 200a2020 20206966 2028646f Pos; . if (do │ │ │ │ + 0x00d5c7f0 7428642c 20642920 213d2030 2e302920 t(d, d) != 0.0) │ │ │ │ + 0x00d5c800 0a202020 20202072 65747572 6e206f72 . return or │ │ │ │ + 0x00d5c810 6967696e 616c4178 6973506f 73202b20 iginalAxisPos + │ │ │ │ + 0x00d5c820 6e6f726d 616c697a 65286429 202a2068 normalize(d) * h │ │ │ │ + 0x00d5c830 616c6657 69647468 3b200a20 20202065 alfWidth; . e │ │ │ │ + 0x00d5c840 6c736520 0a202020 20202072 65747572 lse . retur │ │ │ │ + 0x00d5c850 6e206f72 6967696e 616c4178 6973506f n originalAxisPo │ │ │ │ + 0x00d5c860 733b200a 20207d20 0a202076 6f696420 s; . } . void │ │ │ │ + 0x00d5c870 6d61696e 2829200a 20207b20 0a202020 main() . { . │ │ │ │ + 0x00d5c880 20766563 3420706f 73697469 6f6e203d vec4 position = │ │ │ │ + 0x00d5c890 20766563 3428755f 706f7369 74696f6e vec4(u_position │ │ │ │ + 0x00d5c8a0 2e78792c 20302e30 2c20312e 3029202a .xy, 0.0, 1.0) * │ │ │ │ + 0x00d5c8b0 20755f6d 6f64656c 56696577 3b200a20 u_modelView; . │ │ │ │ + 0x00d5c8c0 20202076 65633420 6e6f726d 616c203d vec4 normal = │ │ │ │ + 0x00d5c8d0 20766563 3428615f 6e6f726d 616c202a vec4(a_normal * │ │ │ │ + 0x00d5c8e0 20755f61 63637572 6163792c 20302e30 u_accuracy, 0.0 │ │ │ │ + 0x00d5c8f0 2c20302e 30293b20 0a202020 20706f73 , 0.0); . pos │ │ │ │ + 0x00d5c900 6974696f 6e203d20 28706f73 6974696f ition = (positio │ │ │ │ + 0x00d5c910 6e202b20 6e6f726d 616c2920 2a20755f n + normal) * u_ │ │ │ │ + 0x00d5c920 70726f6a 65637469 6f6e3b20 0a202020 projection; . │ │ │ │ + 0x00d5c930 20676c5f 506f7369 74696f6e 203d2061 gl_Position = a │ │ │ │ + 0x00d5c940 70706c79 5069766f 74547261 6e73666f pplyPivotTransfo │ │ │ │ + 0x00d5c950 726d2870 6f736974 696f6e2c 20755f70 rm(position, u_p │ │ │ │ + 0x00d5c960 69766f74 5472616e 73666f72 6d2c2075 ivotTransform, u │ │ │ │ + 0x00d5c970 5f706f73 6974696f 6e2e7a20 2a20755f _position.z * u_ │ │ │ │ + 0x00d5c980 7a536361 6c65293b 200a2020 2020765f zScale); . v_ │ │ │ │ + 0x00d5c990 636f6c6f 72546578 436f6f72 6473203d colorTexCoords = │ │ │ │ + 0x00d5c9a0 20615f63 6f6c6f72 54657843 6f6f7264 a_colorTexCoord │ │ │ │ + 0x00d5c9b0 733b200a 20207d20 0a000000 00000000 s; . } ........ │ │ │ │ 0x00d5c9c0 4e326470 31304770 7550726f 6772616d N2dp10GpuProgram │ │ │ │ 0x00d5c9d0 45000000 00000000 00000000 00000000 E............... │ │ │ │ 0x00d5c9e0 4e336770 75313950 726f6772 616d5061 N3gpu19ProgramPa │ │ │ │ 0x00d5c9f0 72616d73 53657474 65724500 00000000 ramsSetterE..... │ │ │ │ 0x00d5ca00 4e336770 75323147 4c50726f 6772616d N3gpu21GLProgram │ │ │ │ 0x00d5ca10 50617261 6d735365 74746572 45000000 ParamsSetterE... │ │ │ │ 0x00d5ca20 4e336770 75313150 726f6772 616d506f N3gpu11ProgramPo │ │ │ ├── readelf --wide --decompress --hex-dump=.gnu_debuglink {} │ │ │ │ @@ -1,7 +1,7 @@ │ │ │ │ │ │ │ │ Hex dump of section '.gnu_debuglink': │ │ │ │ - 0x00000000 64353935 30666230 62646136 66356564 d5950fb0bda6f5ed │ │ │ │ - 0x00000010 32323336 62323165 36313536 63373263 2236b21e6156c72c │ │ │ │ - 0x00000020 39316339 33662e64 65627567 00000000 91c93f.debug.... │ │ │ │ - 0x00000030 6c823c45 l.