File: connector.vs

package info (click to toggle)
pymol 2.4.0%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 43,312 kB
  • sloc: cpp: 480,106; python: 79,860; ansic: 28,343; javascript: 6,792; sh: 47; makefile: 30; csh: 8
file content (99 lines) | stat: -rw-r--r-- 3,855 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99

attribute vec4 a_target_pt3d;
attribute vec4 a_center_pt3d;
attribute vec3 a_indentFactor;
attribute vec3 a_screenWorldOffset;
attribute vec2 a_textSize;
attribute vec4 a_Color;
attribute float a_relative_mode;
attribute float a_draw_flags;
attribute vec4 a_bkgrd_color;
attribute float a_rel_ext_length;
attribute float a_con_width;

varying vec4 COLORIn;

#ifdef use_geometry_shaders
varying vec4 a_center;
varying vec4 a_target;
varying vec2 a_textSizeIn;
varying vec3 a_screenWorldOffsetIn;
varying vec2 a_indentFactorIn;
varying float a_relative_modeIn;
varying float a_draw_flagsIn;
varying vec4 a_bkgrd_colorIn;
varying float a_rel_ext_lengthIn;
varying float a_con_widthIn;
varying vec4 COLOR;
varying float lineEdge;
varying float aaCutoff;
#else
attribute float a_isCenterPt;
#endif

varying vec3 NORMAL;
varying float fog;
varying vec2 bgTextureLookup;

#define E 2.718281828459045

uniform vec2 screenSize;
uniform float screenOriginVertexScale;
uniform float labelTextureSize;
uniform float front;
uniform float clipRange;
float PI = 3.14159265358979323846264;

#include connector.shared


vec4 getGLPosition(vec4 endpointOnBBX, vec4 transformedTarget, vec4 endpointExtendedOffBBX, float connector_mode_2_4){
#ifdef use_geometry_shaders
  float a_isCenterPt = 1.;
#endif
  float isExtended = step(1.5, a_isCenterPt);
  float isTarget = (1.-isExtended) * step(.5, a_isCenterPt );
  float isCenter = (1.-isTarget) * (1.-isExtended);
  return connector_mode_2_4 * ( (isCenter * endpointOnBBX) + (isTarget * transformedTarget) + (isExtended * endpointExtendedOffBBX)) + 
    	 (1.-connector_mode_2_4) * ( (step(.5,a_isCenterPt) * endpointOnBBX) + (1.-step(.5,a_isCenterPt)) * transformedTarget);
}

void main()
{
#ifdef use_geometry_shaders
  a_center = a_center_pt3d ;
  a_target = a_target_pt3d ;
  a_textSizeIn = a_textSize;
  a_screenWorldOffsetIn = a_screenWorldOffset;
  a_indentFactorIn = a_indentFactor.xy;
  gl_Position = a_center_pt3d ;
  a_relative_modeIn = a_relative_mode;
  a_draw_flagsIn = a_draw_flags;
  a_bkgrd_colorIn = a_bkgrd_color;
  a_rel_ext_lengthIn = a_rel_ext_length;
  a_con_widthIn = a_con_width;
#else
  NORMAL = vec3(0.,0.,1.);

  vec4 transformedCenter, transformedTarget;
  vec2 textSizeInScreen, offset, drawVector;
  float doNotDraw, isProjected, zValue, zTarget;
  float connector_mode_0, connector_mode_1, connector_mode_2, connector_mode_3, connector_mode_4, drawBackgroundOutline, drawBackground, drawConnector, connector_mode_2_4 ;
  getDrawFlags(a_draw_flags, connector_mode_0, connector_mode_1, connector_mode_2, connector_mode_3, connector_mode_4, drawBackgroundOutline, drawBackground, drawConnector);
  connector_mode_2_4 = connector_mode_2 + connector_mode_4;
  calculatePreConnectorInfo(a_center_pt3d, a_target_pt3d, a_textSize, a_indentFactor.xy, a_screenWorldOffset, transformedCenter, transformedTarget, textSizeInScreen, offset, drawVector, doNotDraw, a_relative_mode, isProjected, zValue, a_con_width, zTarget);
  vec4 endpointOnBBX, endpointExtendedOffBBX;
  calculateConnectorInfo(a_center_pt3d, textSizeInScreen, a_textSize, drawVector, offset, fog, transformedCenter, transformedTarget, endpointOnBBX, endpointExtendedOffBBX, connector_mode_0, connector_mode_1, connector_mode_2, connector_mode_3, connector_mode_4, a_rel_ext_length, isProjected, zValue);

  // if the zValue is not within the clipping planes, then set the transformedTarget z
  // to the zValue as well, to make sure that the connector doesn't get drawn
  float withinView = step(zValue, 1.) * step(-1., zValue);
  transformedTarget.z = withinView * transformedTarget.z + (1.-withinView) * zValue;

  gl_Position = (1.-doNotDraw) * getGLPosition(endpointOnBBX, transformedTarget, endpointExtendedOffBBX, connector_mode_2_4);
  bgTextureLookup = (gl_Position.xy/gl_Position.w) / 2.0 + 0.5;
#endif

  COLORIn = a_Color;

}