@openglobus/og 0.10.4 → 0.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (172) hide show
  1. package/css/og.css +1 -1
  2. package/package.json +11 -9
  3. package/src/og/Extent.js +274 -273
  4. package/src/og/Globe.js +11 -3
  5. package/src/og/LonLat.js +152 -146
  6. package/src/og/Popup.js +2 -1
  7. package/src/og/camera/PlanetCamera.js +112 -38
  8. package/src/og/control/EarthNavigation.js +259 -0
  9. package/src/og/control/MouseNavigation.js +68 -40
  10. package/src/og/entity/EntityCollection.js +1 -1
  11. package/src/og/entity/LabelHandler.js +366 -74
  12. package/src/og/entity/Polyline.js +3 -2
  13. package/src/og/layer/CanvasTiles.js +32 -30
  14. package/src/og/layer/KML.js +159 -0
  15. package/src/og/layer/Vector.js +5 -0
  16. package/src/og/layer/index.js +2 -1
  17. package/src/og/math/Vec2.js +448 -448
  18. package/src/og/math/Vec3.js +759 -757
  19. package/src/og/math/Vec4.js +216 -215
  20. package/src/og/quadTree/Node.js +67 -13
  21. package/src/og/renderer/RendererEvents.js +21 -16
  22. package/src/og/scene/Planet.js +25 -10
  23. package/src/og/segment/Segment.js +3 -3
  24. package/src/og/segment/SegmentLonLat.js +7 -0
  25. package/src/og/terrain/GlobusTerrain.js +4 -0
  26. package/src/og/utils/FontAtlas.js +1 -0
  27. package/src/og/utils/GeoImageCreator.js +123 -121
  28. package/src/og/utils/Loader.js +81 -80
  29. package/src/og/utils/NormalMapCreator.js +320 -318
  30. package/src/og/utils/VectorTileCreator.js +251 -250
  31. package/src/og/webgl/Framebuffer.js +265 -264
  32. package/src/og/webgl/Handler.js +1022 -1001
  33. package/src/og/webgl/Multisample.js +169 -168
  34. package/src/og/webgl/ProgramController.js +113 -112
  35. package/types/Clock.d.ts +90 -0
  36. package/types/Deferred.d.ts +6 -0
  37. package/types/Events.d.ts +73 -0
  38. package/types/Extent.d.ts +162 -0
  39. package/types/Globe.d.ts +80 -0
  40. package/types/ImageCanvas.d.ts +121 -0
  41. package/types/Lock.d.ts +12 -0
  42. package/types/LonLat.d.ts +108 -0
  43. package/types/Popup.d.ts +38 -0
  44. package/types/QueueArray.d.ts +15 -0
  45. package/types/Rectangle.d.ts +74 -0
  46. package/types/Stack.d.ts +15 -0
  47. package/types/ajax.d.ts +24 -0
  48. package/types/arial.d.ts +48 -0
  49. package/types/astro/astro.d.ts +38 -0
  50. package/types/astro/earth.d.ts +6 -0
  51. package/types/astro/jd.d.ts +254 -0
  52. package/types/bv/Box.d.ts +25 -0
  53. package/types/bv/Sphere.d.ts +32 -0
  54. package/types/bv/index.d.ts +3 -0
  55. package/types/camera/Camera.d.ts +303 -0
  56. package/types/camera/Frustum.d.ts +129 -0
  57. package/types/camera/PlanetCamera.d.ts +222 -0
  58. package/types/camera/index.d.ts +3 -0
  59. package/types/cons.d.ts +40 -0
  60. package/types/control/CompassButton.d.ts +17 -0
  61. package/types/control/Control.d.ts +101 -0
  62. package/types/control/DebugInfo.d.ts +16 -0
  63. package/types/control/EarthCoordinates.d.ts +47 -0
  64. package/types/control/GeoImageDragControl.d.ts +6 -0
  65. package/types/control/KeyboardNavigation.d.ts +22 -0
  66. package/types/control/LayerSwitcher.d.ts +23 -0
  67. package/types/control/Lighting.d.ts +16 -0
  68. package/types/control/ScaleControl.d.ts +22 -0
  69. package/types/control/ShowFps.d.ts +12 -0
  70. package/types/control/SimpleNavigation.d.ts +28 -0
  71. package/types/control/Sun.d.ts +52 -0
  72. package/types/control/ToggleWireframe.d.ts +12 -0
  73. package/types/control/ZoomControl.d.ts +28 -0
  74. package/types/control/index.d.ts +15 -0
  75. package/types/ellipsoid/Ellipsoid.d.ts +142 -0
  76. package/types/ellipsoid/index.d.ts +3 -0
  77. package/types/ellipsoid/wgs84.d.ts +5 -0
  78. package/types/entity/BaseBillboard.d.ts +208 -0
  79. package/types/entity/Billboard.d.ts +94 -0
  80. package/types/entity/BillboardHandler.d.ts +74 -0
  81. package/types/entity/Entity.d.ts +330 -0
  82. package/types/entity/EntityCollection.d.ts +303 -0
  83. package/types/entity/Geometry.d.ts +72 -0
  84. package/types/entity/GeometryHandler.d.ts +76 -0
  85. package/types/entity/Label.d.ts +194 -0
  86. package/types/entity/LabelHandler.d.ts +24 -0
  87. package/types/entity/PointCloud.d.ts +174 -0
  88. package/types/entity/PointCloudHandler.d.ts +38 -0
  89. package/types/entity/Polyline.d.ts +303 -0
  90. package/types/entity/PolylineHandler.d.ts +18 -0
  91. package/types/entity/Ray.d.ts +123 -0
  92. package/types/entity/RayHandler.d.ts +67 -0
  93. package/types/entity/ShapeHandler.d.ts +22 -0
  94. package/types/entity/Strip.d.ts +118 -0
  95. package/types/entity/StripHandler.d.ts +38 -0
  96. package/types/entity/index.d.ts +8 -0
  97. package/types/index.core.d.ts +65 -0
  98. package/types/index.d.ts +45 -0
  99. package/types/index.webgl.d.ts +7 -0
  100. package/types/inherits.d.ts +4 -0
  101. package/types/input/input.d.ts +34 -0
  102. package/types/layer/BaseGeoImage.d.ts +106 -0
  103. package/types/layer/CanvasTiles.d.ts +75 -0
  104. package/types/layer/GeoImage.d.ts +65 -0
  105. package/types/layer/GeoTexture2d.d.ts +8 -0
  106. package/types/layer/GeoVideo.d.ts +80 -0
  107. package/types/layer/KML.d.ts +58 -0
  108. package/types/layer/WMS.d.ts +66 -0
  109. package/types/layer/XYZ.d.ts +126 -0
  110. package/types/layer/index.d.ts +10 -0
  111. package/types/light/LightSource.d.ts +177 -0
  112. package/types/math/Mat3.d.ts +53 -0
  113. package/types/math/Mat4.d.ts +157 -0
  114. package/types/math/Plane.d.ts +17 -0
  115. package/types/math/Vec2.d.ts +308 -0
  116. package/types/math/Vec3.d.ts +459 -0
  117. package/types/math/Vec4.d.ts +161 -0
  118. package/types/math/coder.d.ts +42 -0
  119. package/types/math/index.d.ts +11 -0
  120. package/types/math.d.ts +261 -0
  121. package/types/mercator.d.ts +92 -0
  122. package/types/proj/EPSG3857.d.ts +5 -0
  123. package/types/proj/EPSG4326.d.ts +5 -0
  124. package/types/quadTree/quadTree.d.ts +40 -0
  125. package/types/renderer/RendererEvents.d.ts +230 -0
  126. package/types/res/images.d.ts +3 -0
  127. package/types/scene/Axes.d.ts +11 -0
  128. package/types/scene/BaseNode.d.ts +60 -0
  129. package/types/scene/Planet.d.ts +572 -0
  130. package/types/scene/RenderNode.d.ts +143 -0
  131. package/types/scene/SkyBox.d.ts +10 -0
  132. package/types/scene/index.d.ts +4 -0
  133. package/types/segment/segmentHelper.d.ts +13 -0
  134. package/types/shaders/billboard.d.ts +3 -0
  135. package/types/shaders/depth.d.ts +2 -0
  136. package/types/shaders/drawnode.d.ts +7 -0
  137. package/types/shaders/label.d.ts +4 -0
  138. package/types/shaders/pointCloud.d.ts +2 -0
  139. package/types/shaders/polyline.d.ts +3 -0
  140. package/types/shaders/ray.d.ts +2 -0
  141. package/types/shaders/screenFrame.d.ts +2 -0
  142. package/types/shaders/shape.d.ts +4 -0
  143. package/types/shaders/skybox.d.ts +2 -0
  144. package/types/shaders/toneMapping.d.ts +2 -0
  145. package/types/shapes/BaseShape.d.ts +247 -0
  146. package/types/shapes/Sphere.d.ts +41 -0
  147. package/types/terrain/BilTerrain.d.ts +8 -0
  148. package/types/terrain/EmptyTerrain.d.ts +72 -0
  149. package/types/terrain/Geoid.d.ts +26 -0
  150. package/types/terrain/GlobusTerrain.d.ts +153 -0
  151. package/types/terrain/MapboxTerrain.d.ts +8 -0
  152. package/types/terrain/index.d.ts +5 -0
  153. package/types/utils/FontAtlas.d.ts +14 -0
  154. package/types/utils/GeoImageCreator.d.ts +29 -0
  155. package/types/utils/ImagesCacheManager.d.ts +10 -0
  156. package/types/utils/Loader.d.ts +25 -0
  157. package/types/utils/NormalMapCreator.d.ts +39 -0
  158. package/types/utils/PlainSegmentWorker.d.ts +10 -0
  159. package/types/utils/TerrainWorker.d.ts +9 -0
  160. package/types/utils/TextureAtlas.d.ts +111 -0
  161. package/types/utils/VectorTileCreator.d.ts +16 -0
  162. package/types/utils/colorTable.d.ts +143 -0
  163. package/types/utils/earcut.d.ts +6 -0
  164. package/types/utils/shared.d.ts +230 -0
  165. package/types/webgl/Framebuffer.d.ts +135 -0
  166. package/types/webgl/Handler.d.ts +372 -0
  167. package/types/webgl/Multisample.d.ts +89 -0
  168. package/types/webgl/Program.d.ts +155 -0
  169. package/types/webgl/ProgramController.d.ts +84 -0
  170. package/types/webgl/callbacks.d.ts +1 -0
  171. package/types/webgl/index.d.ts +6 -0
  172. package/types/webgl/types.d.ts +2 -0
@@ -15,217 +15,218 @@
15
15
  * @param {String} [options.depthComponent="DEPTH_COMPONENT16"] - Specifies depth buffer size.
16
16
  * @param {Boolean} [options.useDepth] - Using depth buffer during the rendering.
17
17
  */
18
- const Multisample = function (handler, options) {
18
+ export class Multisample {
19
19
 
20
- options = options || {};
20
+ constructor(handler, options) {
21
21
 
22
- /**
23
- * WebGL handler.
24
- * @public
25
- * @type {og.webgl.Handler}
26
- */
27
- this.handler = handler;
22
+ options = options || {};
28
23
 
29
- this._internalFormat = options.internalFormat ? options.internalFormat.toUpperCase() : "RGBA8";
24
+ /**
25
+ * WebGL handler.
26
+ * @public
27
+ * @type {og.webgl.Handler}
28
+ */
29
+ this.handler = handler;
30
30
 
31
- /**
32
- * Framebuffer object.
33
- * @private
34
- * @type {Object}
35
- */
36
- this._fbo = null;
31
+ this._internalFormat = options.internalFormat ? options.internalFormat.toUpperCase() : "RGBA8";
37
32
 
38
- /**
39
- * Renderbuffer object.
40
- * @private
41
- * @type {Object}
42
- */
43
- this._depthRenderbuffer = null;
33
+ /**
34
+ * Framebuffer object.
35
+ * @private
36
+ * @type {Object}
37
+ */
38
+ this._fbo = null;
44
39
 
45
- /**
46
- * Framebuffer width.
47
- * @private
48
- * @type {number}
49
- */
50
- this._width = options.width || handler.canvas.width;
40
+ /**
41
+ * Renderbuffer object.
42
+ * @private
43
+ * @type {Object}
44
+ */
45
+ this._depthRenderbuffer = null;
51
46
 
52
- /**
53
- * Framebuffer width.
54
- * @private
55
- * @type {number}
56
- */
57
- this._height = options.height || handler.canvas.height;
47
+ /**
48
+ * Framebuffer width.
49
+ * @private
50
+ * @type {number}
51
+ */
52
+ this._width = options.width || handler.canvas.width;
58
53
 
59
- this._msaa = options.msaa != undefined ? options.msaa : 4;
54
+ /**
55
+ * Framebuffer width.
56
+ * @private
57
+ * @type {number}
58
+ */
59
+ this._height = options.height || handler.canvas.height;
60
60
 
61
- this._useDepth = options.useDepth != undefined ? options.useDepth : true;
61
+ this._msaa = options.msaa != undefined ? options.msaa : 4;
62
62
 
63
- this._depthComponent = options.depthComponent != undefined ? options.depthComponent : "DEPTH_COMPONENT16";
63
+ this._useDepth = options.useDepth != undefined ? options.useDepth : true;
64
64
 
65
- /**
66
- * Framebuffer activity.
67
- * @private
68
- * @type {boolean}
69
- */
70
- this._active = false;
65
+ this._depthComponent = options.depthComponent != undefined ? options.depthComponent : "DEPTH_COMPONENT16";
71
66
 
72
- this._size = options.size || 1;
67
+ /**
68
+ * Framebuffer activity.
69
+ * @private
70
+ * @type {boolean}
71
+ */
72
+ this._active = false;
73
73
 
74
- this._filter = options.filter || "NEAREST";
74
+ this._size = options.size || 1;
75
75
 
76
- this._glFilter = null;
76
+ this._filter = options.filter || "NEAREST";
77
77
 
78
- this.renderbuffers = new Array(this._size);
79
- };
78
+ this._glFilter = null;
80
79
 
81
- Multisample.prototype.destroy = function () {
82
- var gl = this.handler.gl;
80
+ this.renderbuffers = new Array(this._size);
81
+ };
83
82
 
84
- for (var i = 0; i < this.renderbuffers.length; i++) {
85
- gl.deleteRenderbuffer(this.renderbuffers[i]);
86
- }
87
- this.renderbuffers = new Array(this._size);
83
+ destroy() {
84
+ var gl = this.handler.gl;
88
85
 
89
- gl.deleteFramebuffer(this._fbo);
90
- gl.deleteRenderbuffer(this._depthRenderbuffer);
86
+ for (var i = 0; i < this.renderbuffers.length; i++) {
87
+ gl.deleteRenderbuffer(this.renderbuffers[i]);
88
+ }
89
+ this.renderbuffers = new Array(this._size);
91
90
 
92
- this._depthRenderbuffer = null;
93
- this._fbo = null;
91
+ gl.deleteFramebuffer(this._fbo);
92
+ gl.deleteRenderbuffer(this._depthRenderbuffer);
94
93
 
95
- this._active = false;
96
- };
94
+ this._depthRenderbuffer = null;
95
+ this._fbo = null;
97
96
 
98
- /**
99
- * Framebuffer initialization.
100
- * @private
101
- */
102
- Multisample.prototype.init = function () {
97
+ this._active = false;
98
+ };
103
99
 
104
- var gl = this.handler.gl;
100
+ /**
101
+ * Framebuffer initialization.
102
+ * @private
103
+ */
104
+ init() {
105
105
 
106
- this._glFilter = gl[this._filter];
106
+ var gl = this.handler.gl;
107
107
 
108
- this._fbo = gl.createFramebuffer();
108
+ this._glFilter = gl[this._filter];
109
109
 
110
- gl.bindFramebuffer(gl.FRAMEBUFFER, this._fbo);
110
+ this._fbo = gl.createFramebuffer();
111
111
 
112
- let colorAttachments = [];
113
- for (var i = 0; i < this.renderbuffers.length; i++) {
114
- let rb = gl.createRenderbuffer();
115
- gl.bindRenderbuffer(gl.RENDERBUFFER, rb);
116
- gl.renderbufferStorageMultisample(gl.RENDERBUFFER, this._msaa, gl[this._internalFormat], this._width, this._height);
117
- gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + i, gl.RENDERBUFFER, rb);
118
- colorAttachments.push(gl.COLOR_ATTACHMENT0 + i);
119
- this.renderbuffers[i] = rb;
120
- gl.bindRenderbuffer(gl.RENDERBUFFER, null);
121
- }
122
- gl.drawBuffers(colorAttachments);
112
+ gl.bindFramebuffer(gl.FRAMEBUFFER, this._fbo);
123
113
 
124
- if (this._useDepth) {
125
- this._depthRenderbuffer = gl.createRenderbuffer();
126
- gl.bindRenderbuffer(gl.RENDERBUFFER, this._depthRenderbuffer);
127
- gl.renderbufferStorageMultisample(gl.RENDERBUFFER, this._msaa, gl[this._depthComponent], this._width, this._height);
128
- gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.RENDERBUFFER, this._depthRenderbuffer);
129
- gl.bindRenderbuffer(gl.RENDERBUFFER, null);
130
- }
114
+ let colorAttachments = [];
115
+ for (var i = 0; i < this.renderbuffers.length; i++) {
116
+ let rb = gl.createRenderbuffer();
117
+ gl.bindRenderbuffer(gl.RENDERBUFFER, rb);
118
+ gl.renderbufferStorageMultisample(gl.RENDERBUFFER, this._msaa, gl[this._internalFormat], this._width, this._height);
119
+ gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + i, gl.RENDERBUFFER, rb);
120
+ colorAttachments.push(gl.COLOR_ATTACHMENT0 + i);
121
+ this.renderbuffers[i] = rb;
122
+ gl.bindRenderbuffer(gl.RENDERBUFFER, null);
123
+ }
124
+ gl.drawBuffers(colorAttachments);
131
125
 
132
- gl.bindFramebuffer(gl.FRAMEBUFFER, null);
126
+ if (this._useDepth) {
127
+ this._depthRenderbuffer = gl.createRenderbuffer();
128
+ gl.bindRenderbuffer(gl.RENDERBUFFER, this._depthRenderbuffer);
129
+ gl.renderbufferStorageMultisample(gl.RENDERBUFFER, this._msaa, gl[this._depthComponent], this._width, this._height);
130
+ gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.RENDERBUFFER, this._depthRenderbuffer);
131
+ gl.bindRenderbuffer(gl.RENDERBUFFER, null);
132
+ }
133
133
 
134
- return this;
135
- };
134
+ gl.bindFramebuffer(gl.FRAMEBUFFER, null);
136
135
 
137
- Multisample.prototype.blitTo = function (framebuffer, attachmentIndex = 0) {
136
+ return this;
137
+ };
138
138
 
139
- let gl = this.handler.gl;
139
+ blitTo(framebuffer, attachmentIndex = 0) {
140
140
 
141
- gl.bindFramebuffer(gl.READ_FRAMEBUFFER, this._fbo);
142
- gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, framebuffer._fbo);
143
- gl.readBuffer(gl.COLOR_ATTACHMENT0 + attachmentIndex);
141
+ let gl = this.handler.gl;
144
142
 
145
- gl.clearBufferfv(gl.COLOR, 0, [0.0, 0.0, 0.0, 1.0]);
143
+ gl.bindFramebuffer(gl.READ_FRAMEBUFFER, this._fbo);
144
+ gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, framebuffer._fbo);
145
+ gl.readBuffer(gl.COLOR_ATTACHMENT0 + attachmentIndex);
146
146
 
147
- gl.blitFramebuffer(
148
- 0, 0, this._width, this._height,
149
- 0, 0, framebuffer._width, framebuffer._height,
150
- gl.COLOR_BUFFER_BIT, this._glFilter
151
- );
147
+ gl.clearBufferfv(gl.COLOR, 0, [0.0, 0.0, 0.0, 1.0]);
152
148
 
153
- gl.bindFramebuffer(gl.FRAMEBUFFER, null);
154
- gl.bindFramebuffer(gl.READ_FRAMEBUFFER, null);
155
- gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, null);
156
- };
149
+ gl.blitFramebuffer(
150
+ 0, 0, this._width, this._height,
151
+ 0, 0, framebuffer._width, framebuffer._height,
152
+ gl.COLOR_BUFFER_BIT, this._glFilter
153
+ );
157
154
 
158
- /**
159
- * Sets framebuffer viewport size.
160
- * @public
161
- * @param {number} width - Framebuffer width.
162
- * @param {number} height - Framebuffer height.
163
- */
164
- Multisample.prototype.setSize = function (width, height, forceDestroy) {
165
- this._width = width;
166
- this._height = height;
155
+ gl.bindFramebuffer(gl.FRAMEBUFFER, null);
156
+ gl.bindFramebuffer(gl.READ_FRAMEBUFFER, null);
157
+ gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, null);
158
+ };
167
159
 
168
- if (this._active) {
169
- this.handler.gl.viewport(0, 0, this._width, this._height);
170
- }
160
+ /**
161
+ * Sets framebuffer viewport size.
162
+ * @public
163
+ * @param {number} width - Framebuffer width.
164
+ * @param {number} height - Framebuffer height.
165
+ */
166
+ setSize(width, height, forceDestroy) {
167
+ this._width = width;
168
+ this._height = height;
171
169
 
172
- if (this._useDepth || forceDestroy) {
173
- this.destroy();
174
- this.init();
175
- }
176
- };
170
+ if (this._active) {
171
+ this.handler.gl.viewport(0, 0, this._width, this._height);
172
+ }
177
173
 
178
- /**
179
- * Returns framebuffer completed.
180
- * @public
181
- * @returns {boolean} -
182
- */
183
- Multisample.prototype.isComplete = function () {
184
- var gl = this.handler.gl;
185
- if (gl.checkFramebufferStatus(gl.FRAMEBUFFER) === gl.FRAMEBUFFER_COMPLETE) {
186
- return true;
187
- }
188
- return false;
189
- };
174
+ if (this._useDepth || forceDestroy) {
175
+ this.destroy();
176
+ this.init();
177
+ }
178
+ };
190
179
 
191
- /**
192
- * Activate framebuffer frame to draw.
193
- * @public
194
- * @returns {og.webgl.Framebuffer} Returns Current framebuffer.
195
- */
196
- Multisample.prototype.activate = function () {
197
- var gl = this.handler.gl;
198
- gl.bindFramebuffer(gl.FRAMEBUFFER, null);
199
- gl.bindFramebuffer(gl.FRAMEBUFFER, this._fbo);
200
- gl.viewport(0, 0, this._width, this._height);
201
- this._active = true;
202
- var c = this.handler.framebufferStack.current().data;
203
- c && (c._active = false);
204
- this.handler.framebufferStack.push(this);
205
- return this;
206
- };
180
+ /**
181
+ * Returns framebuffer completed.
182
+ * @public
183
+ * @returns {boolean} -
184
+ */
185
+ isComplete() {
186
+ var gl = this.handler.gl;
187
+ if (gl.checkFramebufferStatus(gl.FRAMEBUFFER) === gl.FRAMEBUFFER_COMPLETE) {
188
+ return true;
189
+ }
190
+ return false;
191
+ };
207
192
 
208
- /**
209
- * Deactivate framebuffer frame.
210
- * @public
211
- */
212
- Multisample.prototype.deactivate = function () {
213
- var h = this.handler,
214
- gl = h.gl;
193
+ /**
194
+ * Activate framebuffer frame to draw.
195
+ * @public
196
+ * @returns {og.webgl.Framebuffer} Returns Current framebuffer.
197
+ */
198
+ activate() {
199
+ var gl = this.handler.gl;
200
+ gl.bindFramebuffer(gl.FRAMEBUFFER, null);
201
+ gl.bindFramebuffer(gl.FRAMEBUFFER, this._fbo);
202
+ gl.viewport(0, 0, this._width, this._height);
203
+ this._active = true;
204
+ var c = this.handler.framebufferStack.current().data;
205
+ c && (c._active = false);
206
+ this.handler.framebufferStack.push(this);
207
+ return this;
208
+ };
215
209
 
216
- //Q: check for this._useDepth ?
210
+ /**
211
+ * Deactivate framebuffer frame.
212
+ * @public
213
+ */
214
+ deactivate() {
215
+ var h = this.handler,
216
+ gl = h.gl;
217
217
 
218
- gl.bindFramebuffer(gl.FRAMEBUFFER, null);
219
- this._active = false;
218
+ //Q: check for this._useDepth ?
220
219
 
221
- var f = this.handler.framebufferStack.popPrev();
220
+ gl.bindFramebuffer(gl.FRAMEBUFFER, null);
221
+ this._active = false;
222
222
 
223
- if (f) {
224
- gl.bindFramebuffer(gl.FRAMEBUFFER, f._fbo);
225
- gl.viewport(0, 0, f._width, f._height);
226
- } else {
227
- gl.viewport(0, 0, h.canvas.width, h.canvas.height);
228
- }
229
- };
223
+ var f = this.handler.framebufferStack.popPrev();
230
224
 
231
- export { Multisample };
225
+ if (f) {
226
+ gl.bindFramebuffer(gl.FRAMEBUFFER, f._fbo);
227
+ gl.viewport(0, 0, f._width, f._height);
228
+ } else {
229
+ gl.viewport(0, 0, h.canvas.width, h.canvas.height);
230
+ }
231
+ };
232
+ }
@@ -8,131 +8,132 @@
8
8
  * @param {og.webgl.Handler} handler - Handler.
9
9
  * @param {og.webgl.Program} program - Shader program.
10
10
  */
11
- const ProgramController = function (handler, program) {
11
+ export class ProgramController {
12
+
13
+ constructor(handler, program) {
14
+
15
+ /**
16
+ * Shader program.
17
+ * @private
18
+ * @type {og.webgl.Program}
19
+ */
20
+ this._program = program;
21
+
22
+ /**
23
+ * Handler.
24
+ * @private
25
+ * @type {og.webgl.Handler}
26
+ */
27
+ this._handler = handler;
28
+
29
+ /**
30
+ * Program current frame activation flag.
31
+ * @private
32
+ * @type {boolean}
33
+ */
34
+ this._activated = false;
35
+ };
12
36
 
13
37
  /**
14
- * Shader program.
15
- * @private
16
- * @type {og.webgl.Program}
38
+ * Lazy create program call.
39
+ * @public
17
40
  */
18
- this._program = program;
41
+ initialize() {
42
+ this._program.createProgram(this._handler.gl);
43
+ };
19
44
 
20
45
  /**
21
- * Handler.
22
- * @private
23
- * @type {og.webgl.Handler}
46
+ * Returns controller's shader program.
47
+ * @public
48
+ * @return {og.webgl.Program} -
24
49
  */
25
- this._handler = handler;
50
+ getProgram() {
51
+ return this._program;
52
+ };
26
53
 
27
54
  /**
28
- * Program current frame activation flag.
29
- * @private
30
- * @type {boolean}
55
+ * Activates current shader program.
56
+ * @public
57
+ * @returns {ProgramController} -
31
58
  */
32
- this._activated = false;
33
- };
34
-
35
- /**
36
- * Lazy create program call.
37
- * @public
38
- */
39
- ProgramController.prototype.initialize = function () {
40
- this._program.createProgram(this._handler.gl);
41
- };
42
-
43
- /**
44
- * Returns controller's shader program.
45
- * @public
46
- * @return {og.webgl.Program} -
47
- */
48
- ProgramController.prototype.getProgram = function () {
49
- return this._program;
50
- };
51
-
52
- /**
53
- * Activates current shader program.
54
- * @public
55
- * @returns {ProgramController} -
56
- */
57
- ProgramController.prototype.activate = function () {
58
- if (!this._activated) {
59
- this._handler.activeProgram.deactivate();
60
- this._handler.activeProgram = this;
61
- var p = this._program;
62
- this._activated = true;
63
- p.enableAttribArrays();
64
- p.use();
65
- }
66
- return this;
67
- };
68
-
69
- /**
70
- * Remove program from handler
71
- * @public
72
- */
73
- ProgramController.prototype.remove = function () {
74
- var p = this._handler.programs;
75
- if (p[this._program.name]) {
76
- if (this._activated) {
77
- this.deactivate();
59
+ activate() {
60
+ if (!this._activated) {
61
+ this._handler.activeProgram.deactivate();
62
+ this._handler.activeProgram = this;
63
+ var p = this._program;
64
+ this._activated = true;
65
+ p.enableAttribArrays();
66
+ p.use();
78
67
  }
79
- this._program.delete();
80
- p[this._program.name] = null;
81
- delete p[this._program.name];
82
- }
83
- };
68
+ return this;
69
+ };
84
70
 
85
- /**
86
- * Deactivate shader program. This is not necessary while activae function used.
87
- * @public
88
- */
89
- ProgramController.prototype.deactivate = function () {
90
- this._program.disableAttribArrays();
91
- this._activated = false;
92
- };
71
+ /**
72
+ * Remove program from handler
73
+ * @public
74
+ */
75
+ remove() {
76
+ var p = this._handler.programs;
77
+ if (p[this._program.name]) {
78
+ if (this._activated) {
79
+ this.deactivate();
80
+ }
81
+ this._program.delete();
82
+ p[this._program.name] = null;
83
+ delete p[this._program.name];
84
+ }
85
+ };
93
86
 
94
- /**
95
- * Returns program activity.
96
- * @public
97
- * @return {boolean} -
98
- */
99
- ProgramController.prototype.isActive = function () {
100
- return this._activated;
101
- };
87
+ /**
88
+ * Deactivate shader program. This is not necessary while activae function used.
89
+ * @public
90
+ */
91
+ deactivate() {
92
+ this._program.disableAttribArrays();
93
+ this._activated = false;
94
+ };
102
95
 
103
- /**
104
- * Sets program uniforms and attributes values and return controller instance.
105
- * @public
106
- * @param {Object} params - Object with variable name and value like { value: 12, someArray:[1,2,3], uSampler: texture,... }
107
- * @return {og.webgl.ProgramController} -
108
- */
109
- ProgramController.prototype.set = function (params) {
110
- this.activate();
111
- this._program.set(params);
112
- return this;
113
- };
96
+ /**
97
+ * Returns program activity.
98
+ * @public
99
+ * @return {boolean} -
100
+ */
101
+ isActive() {
102
+ return this._activated;
103
+ };
114
104
 
115
- /**
116
- * Draw index buffer with this program.
117
- * @public
118
- * @param {number} mode - Gl draw mode
119
- * @param {WEBGLBuffer} buffer - Buffer to draw.
120
- * @return {og.webgl.ProgramController} Returns current shader controller instance.
121
- */
122
- ProgramController.prototype.drawIndexBuffer = function (mode, buffer) {
123
- this._program.drawIndexBuffer(mode, buffer);
124
- return this;
125
- };
105
+ /**
106
+ * Sets program uniforms and attributes values and return controller instance.
107
+ * @public
108
+ * @param {Object} params - Object with variable name and value like { value: 12, someArray:[1,2,3], uSampler: texture,... }
109
+ * @return {og.webgl.ProgramController} -
110
+ */
111
+ set(params) {
112
+ this.activate();
113
+ this._program.set(params);
114
+ return this;
115
+ };
126
116
 
127
- /**
128
- * Calls Gl drawArray function.
129
- * @param {number} mode - Gl draw mode.
130
- * @param {number} numItems - draw items count.
131
- * @return {og.webgl.ProgramController} Returns current shader controller instance.
132
- */
133
- ProgramController.prototype.drawArrays = function (mode, numItems) {
134
- this._program.drawArrays(mode, numItems);
135
- return this;
136
- };
117
+ /**
118
+ * Draw index buffer with this program.
119
+ * @public
120
+ * @param {number} mode - Gl draw mode
121
+ * @param {WEBGLBuffer} buffer - Buffer to draw.
122
+ * @return {og.webgl.ProgramController} Returns current shader controller instance.
123
+ */
124
+ drawIndexBuffer(mode, buffer) {
125
+ this._program.drawIndexBuffer(mode, buffer);
126
+ return this;
127
+ };
137
128
 
138
- export { ProgramController };
129
+ /**
130
+ * Calls Gl drawArray function.
131
+ * @param {number} mode - Gl draw mode.
132
+ * @param {number} numItems - draw items count.
133
+ * @return {og.webgl.ProgramController} Returns current shader controller instance.
134
+ */
135
+ drawArrays(mode, numItems) {
136
+ this._program.drawArrays(mode, numItems);
137
+ return this;
138
+ };
139
+ }