-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathCore_Renderer.js.html
executable file
·368 lines (294 loc) · 41.2 KB
/
Core_Renderer.js.html
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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Core/Renderer.js - Documentation</title>
<script src="scripts/prettify/prettify.js"></script>
<script src="scripts/prettify/lang-css.js"></script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc.css">
</head>
<body>
<input type="checkbox" id="nav-trigger" class="nav-trigger" />
<label for="nav-trigger" class="navicon-button x">
<div class="navicon"></div>
</label>
<label for="nav-trigger" class="overlay"></label>
<nav>
<h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="Lore.AABB.html">AABB</a><ul class='methods'><li data-type='method'><a href="Lore.AABB.html#.clone">clone</a></li><li data-type='method'><a href="Lore.AABB.html#.fromPoints">fromPoints</a></li><li data-type='method'><a href="Lore.AABB.html#.getCorners">getCorners</a></li><li data-type='method'><a href="Lore.AABB.html#cylinderTest">cylinderTest</a></li><li data-type='method'><a href="Lore.AABB.html#distanceFromCenterToPointSq">distanceFromCenterToPointSq</a></li><li data-type='method'><a href="Lore.AABB.html#distanceToPointSq">distanceToPointSq</a></li><li data-type='method'><a href="Lore.AABB.html#getLocCode">getLocCode</a></li><li data-type='method'><a href="Lore.AABB.html#rayTest">rayTest</a></li><li data-type='method'><a href="Lore.AABB.html#setLocCode">setLocCode</a></li><li data-type='method'><a href="Lore.AABB.html#testAABB">testAABB</a></li><li data-type='method'><a href="Lore.AABB.html#updateDimensions">updateDimensions</a></li></ul></li><li><a href="Lore.Attribute.html">Attribute</a><ul class='methods'><li data-type='method'><a href="Lore.Attribute.html#bind">bind</a></li><li data-type='method'><a href="Lore.Attribute.html#createBuffer">createBuffer</a></li><li data-type='method'><a href="Lore.Attribute.html#getGlType">getGlType</a></li><li data-type='method'><a href="Lore.Attribute.html#getW">getW</a></li><li data-type='method'><a href="Lore.Attribute.html#getX">getX</a></li><li data-type='method'><a href="Lore.Attribute.html#getY">getY</a></li><li data-type='method'><a href="Lore.Attribute.html#getZ">getZ</a></li><li data-type='method'><a href="Lore.Attribute.html#setFromVector">setFromVector</a></li><li data-type='method'><a href="Lore.Attribute.html#setFromVectorArray">setFromVectorArray</a></li><li data-type='method'><a href="Lore.Attribute.html#setW">setW</a></li><li data-type='method'><a href="Lore.Attribute.html#setX">setX</a></li><li data-type='method'><a href="Lore.Attribute.html#setY">setY</a></li><li data-type='method'><a href="Lore.Attribute.html#setZ">setZ</a></li><li data-type='method'><a href="Lore.Attribute.html#update">update</a></li></ul></li><li><a href="Lore.CameraBase.html">CameraBase</a><ul class='methods'><li data-type='method'><a href="Lore.CameraBase.html#getProjectionMatrix">getProjectionMatrix</a></li><li data-type='method'><a href="Lore.CameraBase.html#getViewMatrix">getViewMatrix</a></li><li data-type='method'><a href="Lore.CameraBase.html#init">init</a></li><li data-type='method'><a href="Lore.CameraBase.html#sceneToScreen">sceneToScreen</a></li><li data-type='method'><a href="Lore.CameraBase.html#setLookAt">setLookAt</a></li><li data-type='method'><a href="Lore.CameraBase.html#updateProjectionMatrix">updateProjectionMatrix</a></li><li data-type='method'><a href="Lore.CameraBase.html#updateViewMatrix">updateViewMatrix</a></li><li data-type='method'><a href="Lore.CameraBase.html#updateViewport">updateViewport</a></li></ul></li><li><a href="Lore.Color.html">Color</a><ul class='methods'><li data-type='method'><a href="Lore.Color.html#.fromHex">fromHex</a></li><li data-type='method'><a href="Lore.Color.html#.gdbHueShift">gdbHueShift</a></li><li data-type='method'><a href="Lore.Color.html#.hslToHex">hslToHex</a></li><li data-type='method'><a href="Lore.Color.html#.hslToRgb">hslToRgb</a></li><li data-type='method'><a href="Lore.Color.html#.hueToRgb">hueToRgb</a></li><li data-type='method'><a href="Lore.Color.html#.rgbToHsl">rgbToHsl</a></li><li data-type='method'><a href="Lore.Color.html#set">set</a></li></ul></li><li><a href="Lore.ControlsBase.html">ControlsBase</a><ul class='methods'><li data-type='method'><a href="Lore.ControlsBase.html#addEventListener">addEventListener</a></li><li data-type='method'><a href="Lore.ControlsBase.html#getLookAt">getLookAt</a></li><li data-type='method'><a href="Lore.ControlsBase.html#initWebVR">initWebVR</a></li><li data-type='method'><a href="Lore.ControlsBase.html#raiseEvent">raiseEvent</a></li><li data-type='method'><a href="Lore.ControlsBase.html#removeEventListener">removeEventListener</a></li><li data-type='method'><a href="Lore.ControlsBase.html#setLookAt">setLookAt</a></li><li data-type='method'><a href="Lore.ControlsBase.html#update">update</a></li></ul></li><li><a href="Lore.CoordinatesHelper.html">CoordinatesHelper</a><ul class='methods'><li data-type='method'><a href="Lore.CoordinatesHelper.html#init">init</a></li></ul></li><li><a href="Lore.CsvFileReader.html">CsvFileReader</a><ul class='methods'><li data-type='method'><a href="Lore.CsvFileReader.html#loaded">loaded</a></li></ul></li><li><a href="Lore.FileReaderBase.html">FileReaderBase</a><ul class='methods'><li data-type='method'><a href="Lore.FileReaderBase.html#addEventListener">addEventListener</a></li><li data-type='method'><a href="Lore.FileReaderBase.html#loaded">loaded</a></li><li data-type='method'><a href="Lore.FileReaderBase.html#raiseEvent">raiseEvent</a></li></ul></li><li><a href="Lore.FilterBase.html">FilterBase</a><ul class='methods'><li data-type='method'><a href="Lore.FilterBase.html#.isVisible">isVisible</a></li><li data-type='method'><a href="Lore.FilterBase.html#filter">filter</a></li><li data-type='method'><a href="Lore.FilterBase.html#getGeometry">getGeometry</a></li><li data-type='method'><a href="Lore.FilterBase.html#reset">reset</a></li><li data-type='method'><a href="Lore.FilterBase.html#setGeometry">setGeometry</a></li></ul></li><li><a href="Lore.FirstPersonControls.html">FirstPersonControls</a><ul class='methods'><li data-type='method'><a href="Lore.FirstPersonControls.html#update">update</a></li></ul></li><li><a href="Lore.Geometry.html">Geometry</a></li><li><a href="Lore.Graph.html">Graph</a><ul class='methods'><li data-type='method'><a href="Lore.Graph.html#.fromEdgeList">fromEdgeList</a></li><li data-type='method'><a href="Lore.Graph.html#forceLayout">forceLayout</a></li><li data-type='method'><a href="Lore.Graph.html#getDistanceMatrix">getDistanceMatrix</a></li><li data-type='method'><a href="Lore.Graph.html#getEdgeList">getEdgeList</a></li><li data-type='method'><a href="Lore.Graph.html#getUnweightedAdjacencyMatrix">getUnweightedAdjacencyMatrix</a></li><li data-type='method'><a href="Lore.Graph.html#kkLayout">kkLayout</a></li></ul></li><li><a href="Lore.HelperBase.html">HelperBase</a><ul class='methods'><li data-type='method'><a href="Lore.HelperBase.html#destruct">destruct</a></li><li data-type='method'><a href="Lore.HelperBase.html#draw">draw</a></li><li data-type='method'><a href="Lore.HelperBase.html#getAttribute">getAttribute</a></li><li data-type='method'><a href="Lore.HelperBase.html#setAttribute">setAttribute</a></li><li data-type='method'><a href="Lore.HelperBase.html#updateAttribute">updateAttribute</a></li><li data-type='method'><a href="Lore.HelperBase.html#updateAttributeAll">updateAttributeAll</a></li></ul></li><li><a href="Lore.InRangeFilter.html">InRangeFilter</a><ul class='methods'><li data-type='method'><a href="Lore.InRangeFilter.html#filter">filter</a></li><li data-type='method'><a href="Lore.InRangeFilter.html#getMax">getMax</a></li><li data-type='method'><a href="Lore.InRangeFilter.html#getMin">getMin</a></li><li data-type='method'><a href="Lore.InRangeFilter.html#reset">reset</a></li><li data-type='method'><a href="Lore.InRangeFilter.html#setMax">setMax</a></li><li data-type='method'><a href="Lore.InRangeFilter.html#setMin">setMin</a></li></ul></li><li><a href="Lore.Matrix3f.html">Matrix3f</a><ul class='methods'><li data-type='method'><a href="Lore.Matrix3f.html#clone">clone</a></li><li data-type='method'><a href="Lore.Matrix3f.html#equals">equals</a></li></ul></li><li><a href="Lore.Matrix4f.html">Matrix4f</a><ul class='methods'><li data-type='method'><a href="Lore.Matrix4f.html#.compose">compose</a></li><li data-type='method'><a href="Lore.Matrix4f.html#.fromQuaternion">fromQuaternion</a></li><li data-type='method'><a href="Lore.Matrix4f.html#.invert">invert</a></li><li data-type='method'><a href="Lore.Matrix4f.html#.lookAt">lookAt</a></li><li data-type='method'><a href="Lore.Matrix4f.html#.multiply">multiply</a></li><li data-type='method'><a href="Lore.Matrix4f.html#clone">clone</a></li><li data-type='method'><a href="Lore.Matrix4f.html#compose">compose</a></li><li data-type='method'><a href="Lore.Matrix4f.html#decompose">decompose</a></li><li data-type='method'><a href="Lore.Matrix4f.html#determinant">determinant</a></li><li data-type='method'><a href="Lore.Matrix4f.html#equals">equals</a></li><li data-type='method'><a href="Lore.Matrix4f.html#invert">invert</a></li><li data-type='method'><a href="Lore.Matrix4f.html#multiplyA">multiplyA</a></li><li data-type='method'><a href="Lore.Matrix4f.html#multiplyB">multiplyB</a></li><li data-type='method'><a href="Lore.Matrix4f.html#scale">scale</a></li><li data-type='method'><a href="Lore.Matrix4f.html#set">set</a></li><li data-type='method'><a href="Lore.Matrix4f.html#setPosition">setPosition</a></li><li data-type='method'><a href="Lore.Matrix4f.html#setRotation">setRotation</a></li><li data-type='method'><a href="Lore.Matrix4f.html#toString">toString</a></li></ul></li><li><a href="Lore.MatrixFileReader.html">MatrixFileReader</a><ul class='methods'><li data-type='method'><a href="Lore.MatrixFileReader.html#loaded">loaded</a></li></ul></li><li><a href="Lore.Node.html">Node</a><ul class='methods'><li data-type='method'><a href="Lore.Node.html#.createGUID">createGUID</a></li><li data-type='method'><a href="Lore.Node.html#applyMatrix">applyMatrix</a></li><li data-type='method'><a href="Lore.Node.html#getForwardVector">getForwardVector</a></li><li data-type='method'><a href="Lore.Node.html#getModelMatrix">getModelMatrix</a></li><li data-type='method'><a href="Lore.Node.html#getRightVector">getRightVector</a></li><li data-type='method'><a href="Lore.Node.html#getRotationMatrix">getRotationMatrix</a></li><li data-type='method'><a href="Lore.Node.html#getUpVector">getUpVector</a></li><li data-type='method'><a href="Lore.Node.html#rotate">rotate</a></li><li data-type='method'><a href="Lore.Node.html#rotateX">rotateX</a></li><li data-type='method'><a href="Lore.Node.html#rotateY">rotateY</a></li><li data-type='method'><a href="Lore.Node.html#rotateZ">rotateZ</a></li><li data-type='method'><a href="Lore.Node.html#setRotation">setRotation</a></li><li data-type='method'><a href="Lore.Node.html#setTranslation">setTranslation</a></li><li data-type='method'><a href="Lore.Node.html#translateOnAxis">translateOnAxis</a></li><li data-type='method'><a href="Lore.Node.html#translateX">translateX</a></li><li data-type='method'><a href="Lore.Node.html#translateY">translateY</a></li><li data-type='method'><a href="Lore.Node.html#translateZ">translateZ</a></li><li data-type='method'><a href="Lore.Node.html#update">update</a></li></ul></li><li><a href="Lore.Octree.html">Octree</a><ul class='methods'><li data-type='method'><a href="Lore.Octree.html#.clone">clone</a></li><li data-type='method'><a href="Lore.Octree.html#.concatTypedArrays">concatTypedArrays</a></li><li data-type='method'><a href="Lore.Octree.html#.mergeCellDistances">mergeCellDistances</a></li><li data-type='method'><a href="Lore.Octree.html#.mergePointDistances">mergePointDistances</a></li><li data-type='method'><a href="Lore.Octree.html#build">build</a></li><li data-type='method'><a href="Lore.Octree.html#cellDistancesSq">cellDistancesSq</a></li><li data-type='method'><a href="Lore.Octree.html#expandNeighbourhood">expandNeighbourhood</a></li><li data-type='method'><a href="Lore.Octree.html#generateLocCode">generateLocCode</a></li><li data-type='method'><a href="Lore.Octree.html#getCellDistancesToPoint">getCellDistancesToPoint</a></li><li data-type='method'><a href="Lore.Octree.html#getCenters">getCenters</a></li><li data-type='method'><a href="Lore.Octree.html#getClosestBox">getClosestBox</a></li><li data-type='method'><a href="Lore.Octree.html#getClosestBoxFromCenter">getClosestBoxFromCenter</a></li><li data-type='method'><a href="Lore.Octree.html#getClosestPoint">getClosestPoint</a></li><li data-type='method'><a href="Lore.Octree.html#getDepth">getDepth</a></li><li data-type='method'><a href="Lore.Octree.html#getFarthestBox">getFarthestBox</a></li><li data-type='method'><a href="Lore.Octree.html#getFarthestPoint">getFarthestPoint</a></li><li data-type='method'><a href="Lore.Octree.html#getLocCodes">getLocCodes</a></li><li data-type='method'><a href="Lore.Octree.html#getNeighbours">getNeighbours</a></li><li data-type='method'><a href="Lore.Octree.html#getParent">getParent</a></li><li data-type='method'><a href="Lore.Octree.html#kNearestNeighbours">kNearestNeighbours</a></li><li data-type='method'><a href="Lore.Octree.html#pointDistancesSq">pointDistancesSq</a></li><li data-type='method'><a href="Lore.Octree.html#raySearch">raySearch</a></li><li data-type='method'><a href="Lore.Octree.html#traverse">traverse</a></li><li data-type='method'><a href="Lore.Octree.html#traverseIf">traverseIf</a></li></ul></li><li><a href="Lore.OctreeHelper.html">OctreeHelper</a><ul class='methods'><li data-type='method'><a href="Lore.OctreeHelper.html#addEventListener">addEventListener</a></li><li data-type='method'><a href="Lore.OctreeHelper.html#addSelected">addSelected</a></li><li data-type='method'><a href="Lore.OctreeHelper.html#clearSelected">clearSelected</a></li><li data-type='method'><a href="Lore.OctreeHelper.html#destruct">destruct</a></li><li data-type='method'><a href="Lore.OctreeHelper.html#drawBoxes">drawBoxes</a></li><li data-type='method'><a href="Lore.OctreeHelper.html#drawCenters">drawCenters</a></li><li data-type='method'><a href="Lore.OctreeHelper.html#getIntersections">getIntersections</a></li><li data-type='method'><a href="Lore.OctreeHelper.html#getScreenPosition">getScreenPosition</a></li><li data-type='method'><a href="Lore.OctreeHelper.html#hide">hide</a></li><li data-type='method'><a href="Lore.OctreeHelper.html#init">init</a></li><li data-type='method'><a href="Lore.OctreeHelper.html#raiseEvent">raiseEvent</a></li><li data-type='method'><a href="Lore.OctreeHelper.html#rayIntersections">rayIntersections</a></li><li data-type='method'><a href="Lore.OctreeHelper.html#removeSelected">removeSelected</a></li><li data-type='method'><a href="Lore.OctreeHelper.html#selectedContains">selectedContains</a></li><li data-type='method'><a href="Lore.OctreeHelper.html#selectHovered">selectHovered</a></li><li data-type='method'><a href="Lore.OctreeHelper.html#setHovered">setHovered</a></li><li data-type='method'><a href="Lore.OctreeHelper.html#setPointSizeFromZoom">setPointSizeFromZoom</a></li><li data-type='method'><a href="Lore.OctreeHelper.html#setThreshold">setThreshold</a></li><li data-type='method'><a href="Lore.OctreeHelper.html#showCenters">showCenters</a></li><li data-type='method'><a href="Lore.OctreeHelper.html#showCubes">showCubes</a></li></ul></li><li><a href="Lore.OrbitalControls.html">OrbitalControls</a><ul class='methods'><li data-type='method'><a href="Lore.OrbitalControls.html#limitRotationToHorizon">limitRotationToHorizon</a></li><li data-type='method'><a href="Lore.OrbitalControls.html#setBackView">setBackView</a></li><li data-type='method'><a href="Lore.OrbitalControls.html#setBottomView">setBottomView</a></li><li data-type='method'><a href="Lore.OrbitalControls.html#setFreeView">setFreeView</a></li><li data-type='method'><a href="Lore.OrbitalControls.html#setFrontView">setFrontView</a></li><li data-type='method'><a href="Lore.OrbitalControls.html#setLeftView">setLeftView</a></li><li data-type='method'><a href="Lore.OrbitalControls.html#setRadius">setRadius</a></li><li data-type='method'><a href="Lore.OrbitalControls.html#setRightView">setRightView</a></li><li data-type='method'><a href="Lore.OrbitalControls.html#setTopView">setTopView</a></li><li data-type='method'><a href="Lore.OrbitalControls.html#setView">setView</a></li><li data-type='method'><a href="Lore.OrbitalControls.html#setZoom">setZoom</a></li><li data-type='method'><a href="Lore.OrbitalControls.html#update">update</a></li><li data-type='method'><a href="Lore.OrbitalControls.html#zoomIn">zoomIn</a></li><li data-type='method'><a href="Lore.OrbitalControls.html#zoomOut">zoomOut</a></li></ul></li><li><a href="Lore.OrthographicCamera.html">OrthographicCamera</a><ul class='methods'><li data-type='method'><a href="Lore.OrthographicCamera.html#updateProjectionMatrix">updateProjectionMatrix</a></li><li data-type='method'><a href="Lore.OrthographicCamera.html#updateViewport">updateViewport</a></li></ul></li><li><a href="Lore.PerspectiveCamera.html">PerspectiveCamera</a><ul class='methods'><li data-type='method'><a href="Lore.PerspectiveCamera.html#updateProjectionMatrix">updateProjectionMatrix</a></li><li data-type='method'><a href="Lore.PerspectiveCamera.html#updateViewport">updateViewport</a></li></ul></li><li><a href="Lore.PointHelper.html">PointHelper</a><ul class='methods'><li data-type='method'><a href="Lore.PointHelper.html#addFilter">addFilter</a></li><li data-type='method'><a href="Lore.PointHelper.html#getCenter">getCenter</a></li><li data-type='method'><a href="Lore.PointHelper.html#getCutoff">getCutoff</a></li><li data-type='method'><a href="Lore.PointHelper.html#getDimensions">getDimensions</a></li><li data-type='method'><a href="Lore.PointHelper.html#getFilter">getFilter</a></li><li data-type='method'><a href="Lore.PointHelper.html#getHue">getHue</a></li><li data-type='method'><a href="Lore.PointHelper.html#getMaxLength">getMaxLength</a></li><li data-type='method'><a href="Lore.PointHelper.html#getMaxRadius">getMaxRadius</a></li><li data-type='method'><a href="Lore.PointHelper.html#getPointScale">getPointScale</a></li><li data-type='method'><a href="Lore.PointHelper.html#getPointSize">getPointSize</a></li><li data-type='method'><a href="Lore.PointHelper.html#getPosition">getPosition</a></li><li data-type='method'><a href="Lore.PointHelper.html#getSaturation">getSaturation</a></li><li data-type='method'><a href="Lore.PointHelper.html#getSize">getSize</a></li><li data-type='method'><a href="Lore.PointHelper.html#initPointSize">initPointSize</a></li><li data-type='method'><a href="Lore.PointHelper.html#removeFilter">removeFilter</a></li><li data-type='method'><a href="Lore.PointHelper.html#setColors">setColors</a></li><li data-type='method'><a href="Lore.PointHelper.html#setCutoff">setCutoff</a></li><li data-type='method'><a href="Lore.PointHelper.html#setFogDistance">setFogDistance</a></li><li data-type='method'><a href="Lore.PointHelper.html#setHSS">setHSS</a></li><li data-type='method'><a href="Lore.PointHelper.html#setHSSFromArrays">setHSSFromArrays</a></li><li data-type='method'><a href="Lore.PointHelper.html#setHue">setHue</a></li><li data-type='method'><a href="Lore.PointHelper.html#setPointScale">setPointScale</a></li><li data-type='method'><a href="Lore.PointHelper.html#setPointSize">setPointSize</a></li><li data-type='method'><a href="Lore.PointHelper.html#setPositions">setPositions</a></li><li data-type='method'><a href="Lore.PointHelper.html#setPositionsXYZ">setPositionsXYZ</a></li><li data-type='method'><a href="Lore.PointHelper.html#setPositionsXYZHSS">setPositionsXYZHSS</a></li><li data-type='method'><a href="Lore.PointHelper.html#setRGB">setRGB</a></li><li data-type='method'><a href="Lore.PointHelper.html#setSaturation">setSaturation</a></li><li data-type='method'><a href="Lore.PointHelper.html#setSize">setSize</a></li><li data-type='method'><a href="Lore.PointHelper.html#updateColor">updateColor</a></li><li data-type='method'><a href="Lore.PointHelper.html#updateColors">updateColors</a></li><li data-type='method'><a href="Lore.PointHelper.html#updateHue">updateHue</a></li><li data-type='method'><a href="Lore.PointHelper.html#updatePointSize">updatePointSize</a></li></ul></li><li><a href="Lore.ProjectionMatrix.html">ProjectionMatrix</a><ul class='methods'><li data-type='method'><a href="Lore.ProjectionMatrix.html#setOrthographic">setOrthographic</a></li><li data-type='method'><a href="Lore.ProjectionMatrix.html#setPerspective">setPerspective</a></li></ul></li><li><a href="Lore.Quaternion.html">Quaternion</a><ul class='methods'><li data-type='method'><a href="Lore.Quaternion.html#.add">add</a></li><li data-type='method'><a href="Lore.Quaternion.html#.conjugate">conjugate</a></li><li data-type='method'><a href="Lore.Quaternion.html#.dot">dot</a></li><li data-type='method'><a href="Lore.Quaternion.html#.fromMatrix">fromMatrix</a></li><li data-type='method'><a href="Lore.Quaternion.html#.inverse">inverse</a></li><li data-type='method'><a href="Lore.Quaternion.html#.multiply">multiply</a></li><li data-type='method'><a href="Lore.Quaternion.html#.multiplyScalar">multiplyScalar</a></li><li data-type='method'><a href="Lore.Quaternion.html#.normalize">normalize</a></li><li data-type='method'><a href="Lore.Quaternion.html#.slerp">slerp</a></li><li data-type='method'><a href="Lore.Quaternion.html#.subtract">subtract</a></li><li data-type='method'><a href="Lore.Quaternion.html#add">add</a></li><li data-type='method'><a href="Lore.Quaternion.html#clone">clone</a></li><li data-type='method'><a href="Lore.Quaternion.html#conjugate">conjugate</a></li><li data-type='method'><a href="Lore.Quaternion.html#dot">dot</a></li><li data-type='method'><a href="Lore.Quaternion.html#equals">equals</a></li><li data-type='method'><a href="Lore.Quaternion.html#getW">getW</a></li><li data-type='method'><a href="Lore.Quaternion.html#getX">getX</a></li><li data-type='method'><a href="Lore.Quaternion.html#getY">getY</a></li><li data-type='method'><a href="Lore.Quaternion.html#getZ">getZ</a></li><li data-type='method'><a href="Lore.Quaternion.html#inverse">inverse</a></li><li data-type='method'><a href="Lore.Quaternion.html#length">length</a></li><li data-type='method'><a href="Lore.Quaternion.html#lengthSq">lengthSq</a></li><li data-type='method'><a href="Lore.Quaternion.html#lookAt">lookAt</a></li><li data-type='method'><a href="Lore.Quaternion.html#multiplyA">multiplyA</a></li><li data-type='method'><a href="Lore.Quaternion.html#multiplyB">multiplyB</a></li><li data-type='method'><a href="Lore.Quaternion.html#multiplyScalar">multiplyScalar</a></li><li data-type='method'><a href="Lore.Quaternion.html#normalize">normalize</a></li><li data-type='method'><a href="Lore.Quaternion.html#rotateX">rotateX</a></li><li data-type='method'><a href="Lore.Quaternion.html#rotateY">rotateY</a></li><li data-type='method'><a href="Lore.Quaternion.html#rotateZ">rotateZ</a></li><li data-type='method'><a href="Lore.Quaternion.html#set">set</a></li><li data-type='method'><a href="Lore.Quaternion.html#setFromAxisAngle">setFromAxisAngle</a></li><li data-type='method'><a href="Lore.Quaternion.html#setFromMatrix">setFromMatrix</a></li><li data-type='method'><a href="Lore.Quaternion.html#setFromUnitVectors">setFromUnitVectors</a></li><li data-type='method'><a href="Lore.Quaternion.html#setW">setW</a></li><li data-type='method'><a href="Lore.Quaternion.html#setX">setX</a></li><li data-type='method'><a href="Lore.Quaternion.html#setY">setY</a></li><li data-type='method'><a href="Lore.Quaternion.html#setZ">setZ</a></li><li data-type='method'><a href="Lore.Quaternion.html#subtract">subtract</a></li><li data-type='method'><a href="Lore.Quaternion.html#toRotationMatrix">toRotationMatrix</a></li><li data-type='method'><a href="Lore.Quaternion.html#toString">toString</a></li></ul></li><li><a href="Lore.RadixSort.html">RadixSort</a><ul class='methods'><li data-type='method'><a href="Lore.RadixSort.html#initHistograms">initHistograms</a></li><li data-type='method'><a href="Lore.RadixSort.html#lsbPass">lsbPass</a></li><li data-type='method'><a href="Lore.RadixSort.html#msbPass">msbPass</a></li><li data-type='method'><a href="Lore.RadixSort.html#pass">pass</a></li><li data-type='method'><a href="Lore.RadixSort.html#sort">sort</a></li></ul></li><li><a href="Lore.Ray.html">Ray</a><ul class='methods'><li data-type='method'><a href="Lore.Ray.html#applyProjection">applyProjection</a></li><li data-type='method'><a href="Lore.Ray.html#closestPointToPoint">closestPointToPoint</a></li><li data-type='method'><a href="Lore.Ray.html#copyFrom">copyFrom</a></li><li data-type='method'><a href="Lore.Ray.html#distanceSqToPoint">distanceSqToPoint</a></li></ul></li><li><a href="Lore.Raycaster.html">Raycaster</a><ul class='methods'><li data-type='method'><a href="Lore.Raycaster.html#set">set</a></li></ul></li><li><a href="Lore.Renderer.html">Renderer</a><ul class='methods'><li data-type='method'><a href="Lore.Renderer.html#animate">animate</a></li><li data-type='method'><a href="Lore.Renderer.html#createGeometry">createGeometry</a></li><li data-type='method'><a href="Lore.Renderer.html#disableContextMenu">disableContextMenu</a></li><li data-type='method'><a href="Lore.Renderer.html#getDevicePixelRatio">getDevicePixelRatio</a></li><li data-type='method'><a href="Lore.Renderer.html#getHeight">getHeight</a></li><li data-type='method'><a href="Lore.Renderer.html#getWidth">getWidth</a></li><li data-type='method'><a href="Lore.Renderer.html#init">init</a></li><li data-type='method'><a href="Lore.Renderer.html#setClearColor">setClearColor</a></li><li data-type='method'><a href="Lore.Renderer.html#setMaxFps">setMaxFps</a></li><li data-type='method'><a href="Lore.Renderer.html#updateViewport">updateViewport</a></li></ul></li><li><a href="Lore.Shader.html">Shader</a></li><li><a href="Lore.SphericalCoords.html">SphericalCoords</a><ul class='methods'><li data-type='method'><a href="Lore.SphericalCoords.html#clone">clone</a></li><li data-type='method'><a href="Lore.SphericalCoords.html#limit">limit</a></li><li data-type='method'><a href="Lore.SphericalCoords.html#secure">secure</a></li><li data-type='method'><a href="Lore.SphericalCoords.html#set">set</a></li><li data-type='method'><a href="Lore.SphericalCoords.html#setFromVector">setFromVector</a></li><li data-type='method'><a href="Lore.SphericalCoords.html#toString">toString</a></li></ul></li><li><a href="Lore.Statistics.html">Statistics</a><ul class='methods'><li data-type='method'><a href="Lore.Statistics.html#.getPercentile">getPercentile</a></li><li data-type='method'><a href="Lore.Statistics.html#.normalize">normalize</a></li><li data-type='method'><a href="Lore.Statistics.html#.normalizeNoOutliers">normalizeNoOutliers</a></li><li data-type='method'><a href="Lore.Statistics.html#.randomNormal">randomNormal</a></li><li data-type='method'><a href="Lore.Statistics.html#.randomNormalInRange">randomNormalInRange</a></li><li data-type='method'><a href="Lore.Statistics.html#.randomNormalScaled">randomNormalScaled</a></li><li data-type='method'><a href="Lore.Statistics.html#.scale">scale</a></li><li data-type='method'><a href="Lore.Statistics.html#.transpose2dArray">transpose2dArray</a></li></ul></li><li><a href="Lore.Tree.html">Tree</a><ul class='methods'><li data-type='method'><a href="Lore.Tree.html#.fromEdgeList">fromEdgeList</a></li><li data-type='method'><a href="Lore.Tree.html#layout">layout</a></li></ul></li><li><a href="Lore.Uniform.html">Uniform</a><ul class='methods'><li data-type='method'><a href="Lore.Uniform.html#.Set">Set</a></li><li data-type='method'><a href="Lore.Uniform.html#setValue">setValue</a></li></ul></li><li><a href="Lore.Utils.html">Utils</a><ul class='methods'><li data-type='method'><a href="Lore.Utils.html#.arrayContains">arrayContains</a></li><li data-type='method'><a href="Lore.Utils.html#.concatTypedArrays">concatTypedArrays</a></li><li data-type='method'><a href="Lore.Utils.html#.extend">extend</a></li><li data-type='method'><a href="Lore.Utils.html#.isFloat">isFloat</a></li><li data-type='method'><a href="Lore.Utils.html#.isInt">isInt</a></li><li data-type='method'><a href="Lore.Utils.html#.jsonp">jsonp</a></li><li data-type='method'><a href="Lore.Utils.html#.mergePointDistances">mergePointDistances</a></li><li data-type='method'><a href="Lore.Utils.html#.msb">msb</a></li></ul></li><li><a href="Lore.Vector3f.html">Vector3f</a><ul class='methods'><li data-type='method'><a href="Lore.Vector3f.html#.add">add</a></li><li data-type='method'><a href="Lore.Vector3f.html#.cross">cross</a></li><li data-type='method'><a href="Lore.Vector3f.html#.divide">divide</a></li><li data-type='method'><a href="Lore.Vector3f.html#.divideScalar">divideScalar</a></li><li data-type='method'><a href="Lore.Vector3f.html#.dot">dot</a></li><li data-type='method'><a href="Lore.Vector3f.html#.forward">forward</a></li><li data-type='method'><a href="Lore.Vector3f.html#.multiply">multiply</a></li><li data-type='method'><a href="Lore.Vector3f.html#.multiplyScalar">multiplyScalar</a></li><li data-type='method'><a href="Lore.Vector3f.html#.normalize">normalize</a></li><li data-type='method'><a href="Lore.Vector3f.html#.right">right</a></li><li data-type='method'><a href="Lore.Vector3f.html#.subtract">subtract</a></li><li data-type='method'><a href="Lore.Vector3f.html#.up">up</a></li><li data-type='method'><a href="Lore.Vector3f.html#add">add</a></li><li data-type='method'><a href="Lore.Vector3f.html#applyProjection">applyProjection</a></li><li data-type='method'><a href="Lore.Vector3f.html#applyQuaternion">applyQuaternion</a></li><li data-type='method'><a href="Lore.Vector3f.html#clone">clone</a></li><li data-type='method'><a href="Lore.Vector3f.html#copyFrom">copyFrom</a></li><li data-type='method'><a href="Lore.Vector3f.html#cross">cross</a></li><li data-type='method'><a href="Lore.Vector3f.html#distanceTo">distanceTo</a></li><li data-type='method'><a href="Lore.Vector3f.html#distanceToSq">distanceToSq</a></li><li data-type='method'><a href="Lore.Vector3f.html#divide">divide</a></li><li data-type='method'><a href="Lore.Vector3f.html#divideScalar">divideScalar</a></li><li data-type='method'><a href="Lore.Vector3f.html#dot">dot</a></li><li data-type='method'><a href="Lore.Vector3f.html#equals">equals</a></li><li data-type='method'><a href="Lore.Vector3f.html#getX">getX</a></li><li data-type='method'><a href="Lore.Vector3f.html#getY">getY</a></li><li data-type='method'><a href="Lore.Vector3f.html#getZ">getZ</a></li><li data-type='method'><a href="Lore.Vector3f.html#length">length</a></li><li data-type='method'><a href="Lore.Vector3f.html#lengthSq">lengthSq</a></li><li data-type='method'><a href="Lore.Vector3f.html#multiply">multiply</a></li><li data-type='method'><a href="Lore.Vector3f.html#multiplyScalar">multiplyScalar</a></li><li data-type='method'><a href="Lore.Vector3f.html#normalize">normalize</a></li><li data-type='method'><a href="Lore.Vector3f.html#project">project</a></li><li data-type='method'><a href="Lore.Vector3f.html#set">set</a></li><li data-type='method'><a href="Lore.Vector3f.html#setFromSphericalCoords">setFromSphericalCoords</a></li><li data-type='method'><a href="Lore.Vector3f.html#setLength">setLength</a></li><li data-type='method'><a href="Lore.Vector3f.html#setX">setX</a></li><li data-type='method'><a href="Lore.Vector3f.html#setY">setY</a></li><li data-type='method'><a href="Lore.Vector3f.html#setZ">setZ</a></li><li data-type='method'><a href="Lore.Vector3f.html#subtract">subtract</a></li><li data-type='method'><a href="Lore.Vector3f.html#toDirection">toDirection</a></li><li data-type='method'><a href="Lore.Vector3f.html#toString">toString</a></li><li data-type='method'><a href="Lore.Vector3f.html#unproject">unproject</a></li></ul></li></ul><h3>Global</h3><ul><li><a href="global.html#Lore">Lore</a></li></ul>
</nav>
<div id="main">
<h1 class="page-title">Core/Renderer.js</h1>
<section>
<article>
<pre class="prettyprint source linenums"><code>/**
* A class representing the WebGL renderer.
*
* @property {Object} opts An object containing options.
* @property {Lore.CameraBase} camera The camera associated with this renderer.
* @property {Lore.ControlsBase} controls The controls associated with this renderer.
*/
Lore.Renderer = class Renderer {
/**
* Creates an instance of Renderer.
* @param {String} targetId The id of a canvas element.
* @param {any} options The options.
*/
constructor(targetId, options) {
this.defaults = {
antialiasing: true,
verbose: false,
fpsElement: document.getElementById('fps'),
clearColor: Lore.Color.fromHex('#000000'),
clearDepth: 1.0,
radius: 500,
center: new Lore.Vector3f(),
enableDepthTest: true,
enableTransparency: false
}
this.opts = Lore.Utils.extend(true, this.defaults, options);
this.canvas = document.getElementById(targetId);
this.webgl2 = true;
this.parent = this.canvas.parentElement;
this.fps = 0;
this.fpsCount = 0;
this.maxFps = 1000 / 30;
this.devicePixelRatio = this.getDevicePixelRatio();
this.camera = new Lore.OrthographicCamera(this.getWidth() / -2, this.getWidth() / 2, this.getHeight() / 2, this.getHeight() / -2);
// this.camera = new Lore.PerspectiveCamera(25.0, this.getWidth() / this.getHeight());
this.geometries = {};
this.ready = false;
this.gl = null;
this.render = function (camera, geometries) {};
this.effect = null;
this.lastTiming = performance.now();
this.disableContextMenu();
let that = this;
that.init();
// Attach the controls last
let center = options.center ? options.center : new Lore.Vector3f();
this.controls = new Lore.OrbitalControls(that, this.opts.radius || 500, center);
}
/**
* Initialize and start the renderer.
*/
init() {
let _this = this;
let settings = {
antialias: this.opts.antialiasing
};
this.gl = this.canvas.getContext('webgl2', settings) || this.canvas.getContext('experimental-webgl2');
if (!this.gl) {
this.webgl2 = false;
this.gl = this.canvas.getContext('webgl', settings) ||
this.canvas.getContext('experimental-webgl', settings);
}
if (!this.gl) {
console.error('Could not initialize the WebGL context.');
return;
}
let g = this.gl;
if (this.opts.verbose) {
let hasAA = g.getContextAttributes().antialias;
let size = g.getParameter(g.SAMPLES);
console.info('Antialiasing: ' + hasAA + ' (' + size + 'x)');
let highp = g.getShaderPrecisionFormat(g.FRAGMENT_SHADER, g.HIGH_FLOAT);
let hasHighp = highp.precision != 0;
console.info('High precision support: ' + hasHighp);
console.info('WebGL2 supported: ' + this.webgl2);
}
// Extensions
let oes = 'OES_standard_derivatives';
let extOes = g.getExtension(oes);
if (extOes === null) {
console.warn('Could not load extension: ' + oes + '.');
}
let wdb = 'WEBGL_draw_buffers';
let extWdb = g.getExtension(wdb);
if (extWdb === null) {
console.warn('Could not load extension: ' + wdb + '.');
}
let wdt = 'WEBGL_depth_texture';
let extWdt = g.getExtension(wdt);
if (extWdt === null) {
console.warn('Could not load extension: ' + wdt + '.');
}
let fgd = 'EXT_frag_depth';
let extFgd = g.getExtension(fgd);
if (extFgd === null) {
console.warn('Could not load extension: ' + fgd + '.');
}
this.setClearColor(this.opts.clearColor);
// Blending
// if (!this.webgl2) {
if (true) {
g.clearDepth(this.opts.clearDepth);
if (this.opts.enableTransparency) {
g.blendFunc(g.SRC_ALPHA, g.ONE_MINUS_SRC_ALPHA);
g.enable(g.BLEND);
g.disable(g.DEPTH_TEST);
}
else if (this.opts.enableDepthTest) {
g.enable(g.DEPTH_TEST);
g.depthFunc(g.LEQUAL);
if (this.opts.verbose) {
console.log('enable depth test');
}
}
} else {
// Idea, write to fragdepth
// https://www.reddit.com/r/opengl/comments/1fthbc/is_gl_fragdepth_ignored_when_depth_writes_are_off/
g.disable(g.DEPTH_TEST);
g.enable(g.BLEND);
g.blendFuncSeparate(g.SRC_ALPHA, g.ONE_MINUS_SRC_ALPHA, g.ONE, g.ONE_MINUS_SRC_ALPHA);
}
setTimeout(function () {
_this.updateViewport(0, 0, _this.getWidth(), _this.getHeight());
}, 1000);
// Also do it immediately, in case the timeout is not needed
this.updateViewport(0, 0, _this.getWidth(), _this.getHeight());
window.addEventListener('resize', function (event) {
let width = _this.getWidth();
let height = _this.getHeight();
_this.updateViewport(0, 0, width, height);
});
// Init effect(s)
this.effect = new Lore.Effect(this, 'fxaaEffect');
this.ready = true;
this.animate();
}
/**
* Disables the context menu on the canvas element.
*/
disableContextMenu() {
// Disable context menu on right click
this.canvas.addEventListener('contextmenu', function (e) {
if (e.button === 2) {
e.preventDefault();
return false;
}
});
}
/**
* Sets the clear color of this renderer.
*
* @param {Lore.Color} color The clear color.
*/
setClearColor(color) {
this.opts.clearColor = color;
let cc = this.opts.clearColor.components;
this.gl.clearColor(cc[0], cc[1], cc[2], cc[3]);
}
/**
* Get the actual width of the canvas.
*
* @returns {Number} The width of the canvas.
*/
getWidth() {
return this.canvas.offsetWidth;
}
/**
* Get the actual height of the canvas.
*
* @returns {Number} The height of the canvas.
*/
getHeight() {
return this.canvas.offsetHeight;
}
/**
* Update the viewport. Should be called when the canvas is resized.
*
* @param {Number} x The horizontal offset of the viewport.
* @param {Number} y The vertical offset of the viewport.
* @param {Number} width The width of the viewport.
* @param {Number} height The height of the viewport.
*/
updateViewport(x, y, width, height) {
// width *= this.devicePixelRatio;
// height *= this.devicePixelRatio;
this.canvas.width = width;
this.canvas.height = height;
this.gl.viewport(x, y, width, height);
this.camera.updateViewport(width, height);
this.camera.updateProjectionMatrix();
// Also reinit the buffers and textures for the effect(s)
this.effect = new Lore.Effect(this, 'fxaaEffect');
this.effect.shader.uniforms.resolution.setValue([width, height]);
}
/**
* The main rendering loop.
*/
animate() {
let that = this;
setTimeout(function () {
requestAnimationFrame(function () {
that.animate();
});
}, this.maxFps);
if (this.opts.fpsElement) {
let now = performance.now();
let delta = now - this.lastTiming;
this.lastTiming = now;
if (this.fpsCount < 10) {
this.fps += Math.round(1000.0 / delta);
this.fpsCount++;
} else {//
this.opts.fpsElement.innerHTML = Math.round(this.fps / this.fpsCount);
this.fpsCount = 0;
this.fps = 0;
}
}
// this.effect.bind();
this.gl.clear(this.gl.COLOR_BUFFER_BIT | this.gl.DEPTH_BUFFER_BIT);
// this.gl.clear(this.gl.COLOR_BUFFER_BIT);
this.render(this.camera, this.geometries);
// this.effect.unbind();
this.camera.isProjectionMatrixStale = false;
this.camera.isViewMatrixStale = false;
}
/**
* Creates and adds a geometry to the scene graph.
*
* @param {String} name The name of the geometry.
* @param {String} shaderName The name of the shader used to render the geometry.
* @returns {Lore.Geometry} The created geometry.
*/
createGeometry(name, shaderName) {
let shader = Lore.getShader(shaderName);
shader.init(this.gl, this.webgl2);
let geometry = new Lore.Geometry(name, this.gl, shader);
this.geometries[name] = geometry;
return geometry;
}
/**
* Set the maximum frames per second of this renderer.
*
* @param {Number} fps Maximum frames per second.
*/
setMaxFps(fps) {
this.maxFps = 1000 / fps;
}
/**
* Get the device pixel ratio.
*
* @returns {Number} The device pixel ratio.
*/
getDevicePixelRatio() {
return window.devicePixelRatio || 1;
}
}
</code></pre>
</article>
</section>
</div>
<br class="clear">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> on Tue Apr 24 2018 17:59:04 GMT+0200 (W. Europe Summer Time) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
</footer>
<script>prettyPrint();</script>
<script src="scripts/linenumber.js"></script>
</body>
</html>