-
Notifications
You must be signed in to change notification settings - Fork 53
/
CHANGELOG
470 lines (310 loc) · 19.4 KB
/
CHANGELOG
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
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
GLVis visualization tool
_/_/_/ _/ _/ _/ _/
_/ _/ _/ _/ _/_/_/
_/ _/_/ _/ _/ _/ _/ _/_/
_/ _/ _/ _/ _/ _/ _/_/
_/_/_/ _/_/_/_/ _/ _/ _/_/_/
https://glvis.org
Version 4.3.3 (development)
===========================
- Added more flexible representations for color palette and textures, enabling
specification at both compile and run time. Run time palettes are specified
with a file and the command line argument -pal <palette_filename>.
- Added 78 new optional color-vision deficiency friendly and perceptually
uniform color palettes. See the files share/palettes-crameri.txt and
share/palettes-cet.txt.
- Palettes can now also be specified with explicit alpha channels. See the
example file share/palettes-variable-opacity.txt.
- Fixed a bug where discrete textures would not repeat.
Version 4.3.2 released on Sep 27, 2024
======================================
- Fixed the Mac binary build in GitHub CI and provided a signed and notarized
version for download from the website.
- Fixed handling of key press events to work with localized layouts and enable
key translation with 'AltGr'.
- Updated JavaScript bindings to fix issues in glvis-js and pyglvis, and added
support for quadrature data visualization.
- Fixed visualization of 1D data and added a regression test.
- Miscellaneous CI improvements including: generating image diffs for tests,
set `fail-fast: false` so that tests always run, rename artifacts to help
avoid confusion, code-cleanup/light refactoring.
Version 4.3 released on Aug 7, 2024
===================================
- Added visualization of quadrature data (QuadratureFunction in MFEM). Both
loading from file, with the new command line argument '-q', or from a socket
stream, with the keyword 'quadrature', are supported. Three visualization
options are provided: piece-wise constants on a refined mesh (LOR), L2 field
with DOFs collocated (interpolation), or projection to discontinuous elements
(L2 projection). Use 'Q' to switch between them. High-order quadrature data is
supported only for tensor finite elements with the first two options. With the
first option, only the mesh lines of the original mesh are visualized. This
feature is also supported for the element-wise cutting plane in 3D (cplane=2).
- The GLVis auto refinement algorithm now takes into account the order of the
data (mesh and grid function). The new refinement is chosen to be sufficient
for resolving the curvature of the data, but only if we can do that with less
than 2M vertices and 16 refinements. Otherwise, we print a warning and the
user may still need to press 'o' to fully resolve the data. For more details,
see the section Auto-refinement in README.md.
- Added option to specify the floating point number formatting in GLVis axes and
colorbar. Use 'Alt+a' for the axes and 'Alt+c' for the colorbar. Formatting
can also be specified in socket stream or glvis script with axis_numberformat
or colorbar_numberformat, followed by a C-like formatting string, for example
"colorbar_numberformat '%+06.1f'".
- Added a building option for setting the default font size.
- Added support for scalar integral finite elements, where calculation of the
surface normals was not implemented and was crashing GLVis. The normals are
approximately calculated from the point-wise projected value-based elements.
- Added two new modes for visualization of vector fields in 2D, placing the
arrows above the plotted surface and using a single color.
- Added support to visualize solutions on 1D elements embedded in 2D and 3D.
- Significantly improved memory usage.
- Various other bugfixes and improvements.
Version 4.2 released on May 23, 2022
====================================
- Added 3D scene export to glTF format (https://www.khronos.org/gltf) which is
bound to the key 'G'. This can be used to import GLVis scenes for rendering in
Blender, as well as for augmented reality, see https://modelviewer.dev/editor.
- Added the option to cut a portion of the interiors of 3D faces to expose more
of the mesh. Useful as an alternative to transparency. See keys Ctrl+F3/F4.
- Added a third mode to keys 'b'/'B' in 2D to display the mesh boundary colored
by boundary element attribute.
- Support for visualization of pyramid-shaped elements.
- An edge numbering option is now available in 2D.
- In 2D, save and restore solution's value range when using keys 'e' and 'b'.
- Mac and Windows binaries are now automatically built with GitHub actions CI.
- The command-line option -mac was renamed to -save.
- Various other bugfixes and improvements.
Version 4.1, released on Aug 31, 2021
=====================================
- Use threads in server mode for window creation and session management instead
of fork(). This resolves issues with the GLVis server mode on macOS. It also
allows for closing all open GLVis server windows by Ctrl-C in the terminal.
- Preliminary support for interactive inline GLVis plots in Python Jupyter
Notebooks with https://github.com/glvis/pyglvis and C++ Jupyter Notebooks with
https://github.com/glvis/xeus-glvis.
- Added support for native builds on Windows with CMake.
- Added support for native Mac application bundle with "make app". The resulting
app can be double-clicked, added to the Dock, etc.
- Added screenshots support to the JavaScript/web version (key 'S').
- Enabled support for WebGL 2, when available. This enables, among other
features, support for controllable multisampling via framebuffers.
- Refactored rendering components, including palette and shader handling.
- Replaced pthreads and POSIX-specific code with C++11 standard thread library.
- Added a new regression test suite based on generated screenshots of stream
files. See the README in the tests/ directory for more details. Note that this
requires a git submodule for the baseline images, which are located in the
separate https://github.com/glvis/data repository.
- Various bugfixes and improvements related to the JavaScript version, vertex
numbering, script handling, screenshots, HiDPI support, and more.
Version 4.0, released on Dec 11, 2020
=====================================
Starting with this version, the GLVis open source license is changed to BSD-3.
Unlike previous GLVis releases, this version requires a C++11 compiler.
- Major overhaul and modernization of the GLVis rendering and window management,
replacing X Windows with SDL for platform-native window and event handling.
This enables OpenGL 3+ support and HiDPI support on Mac OS X.
- Two rendering backends are included: one for legacy OpenGL contexts without
support for shaders, and one with full support for modern OpenGL 3 features.
The modern OpenGL context is preferred by default; a new command-line argument
"-oldgl" can be used to request the legacy backend.
- Preliminary support for building GLVis to JavaScript/WebAssembly using
Emscripten, see https://github.com/GLVis/glvis-js.
- Documented project workflow and provided contribution guidelines in the new
top-level file, CONTRIBUTING.md.
- Added several perceptually uniform colormaps "turbo", "viridis", "plasma",
"fusion", "iceburn", "viola", "pride" and "ocean" from
* Google AI: https://ai.googleblog.com/2019/08/turbo-improved-rainbow-colormap-for.html
* Matplotlib: https://bids.github.io/colormap/
* CMasher: https://github.com/1313e/CMasher
- Added support for visualization of the element ordering curve with 'Ctrl+o'.
- Keystroke changes: cutting plane in 2D is now toggled with 'i' instead of 'w',
and 2D element subdivision is controlled with 'o/O' instead of 'i/I'. These
are the same as the corresponding keystrokes in 3D.
- Improved the 3D cutting plane algorithm for curved elements. The key 'I' can
be used to switch to the previous (faster) algorithm which is suitable for
meshes with planar faces.
- Updated to support the display and slicing of meshes with wedge elements.
- Improved the opening of parallel meshes/solutions.
- Transparency and printing in textured coloring modes is now supported, and
no-texture coloring has been removed as a result.
- FreeType is now a required dependency and text on screen is rendered using a
texture atlas.
- Replaced the "deep sea" palette with "ocean". Added new palette: gray.
- Added the ability to discretize a palette, i.e. to use just a prescribed
number of its colors, see the new "number of colors" input of the F6 key.
- Added new script and socket command: "palette_repeat" which can be used to
repeat and reverse/flip the palette - controls the same parameter as the first
prompt after pressing the F6 key in the GLVis window.
- Added a key for setting the bounding box from the terminal (Shift+F7).
Version 3.4, released on May 29, 2018
=====================================
- When enabled, secure sockets (based on GnuTLS) now use authentication based on
X.509 certificates. A new set of X.509 client/server keys can be generated
with the updated version of the script 'glvis-keygen.sh'.
- Added capability to show element and vertex numbering in 2D (key 'n').
- Added support for reading mesh and solution from the same file.
- Added a CMake build system.
- Added 10 new color palettes which can now be switched both forwards and
backwards with the 'p' and 'P' keys respectively.
- Allow multi-screen window managers to redraw on current screen.
- Printing to PDF is now done with 'Ctrl+p' (replacing 'P').
- Default multisampling linewidth for Macs is now 0.01 (seems to work better).
On other platforms the default remains 1.4.
Version 3.3, released on Jan 28, 2017
=====================================
- Added the ability to change the axis labels displayed with the coordinate
cross in the lower left corner. They can be set with the new 'axis_labels'
socket command, for example: sol_sock << "axis_labels 'u' 'v' 'w'\n";
- With the corresponding version of MFEM, GLVis now supports gz-compressed
files and socket streams.
Version 3.2, released on Jun 30, 2016
=====================================
- Added support for secure socket connections based on the GnuTLS library
through MFEM. This option may be useful in multi-user environment to prevent
users from sending/receiving visualization data to/from other users. See
INSTALL for setup instructions.
- Added an optional caption at the top of the GLVis window. This can be set in
several different ways: through a command-line parameter (-c|--plot-caption),
a socket command (plot_caption), a GLVis script command (plot_caption) or the
'C' keystroke.
The caption is displayed as one of the states of the colorbar (key 'c') which
now has 3 modes: no colorbar & no caption; colorbar & caption; colorbar & no
caption. With empty caption, 'c' works the same as before.
For vector fields, the current vector-to-scalar function is added to the
caption in parenthesis. Similarly, for 2D scalar fields, the "surface
elements mode" (attached to the 'e' key) is added to the caption.
- Improved the handling of the "keys" command in GLVis scripts and socket
connections.
- Added "scale" and "translate" script commands.
Version 3.1, released on Feb 5, 2016
====================================
- Moved GLVis from Google Code to GitHub. New website: http://glvis.org.
- Formatted the code with Artistic Style, see the "make style" target.
- Added 'help', 'distclean', 'install' and 'status'/'info' targets to the GLVis
makefile. The default install directory is ./bin. That can be overwritten with
"make install PREFIX=<dir>".
- With the corresponding version of MFEM, GLVis now supports the visualization
of non-conforming meshes and grid functions.
- Added support for visualizing vector fields on surface meshes, and for element
shrinking (F3/F4) of surface meshes.
- The 'P' key now prints in PDF instead of EPS format. The output still has
some deficiencies, so 'P' is recommended only if vector format is necessary.
For quick screenshots (e.g. for a talk), the 'S' key is preferable.
- Added a command-line option (-d | --pad-digits), to set the number of digits
used for processor ranks in file names.
- Added a command-line option (-grt | -geom_ref_type) to refine the geometry
using the Gauss-Lobatto instead of uniform points.
- In 2D, added keys that in addition to 'b', can cycle through the boundary
attributes: shift+f9 (forward) and shift-f10 (backward); added visualization
of element attributes as another state of the 'e' key.
- New socket command, window_geometry, can be used to arrange the visualization
window on the screen
- Various other small fixes and styling updates.
Version 3.0, released on Jan 26, 2015
=====================================
- Updated the makefile to use the new build system in MFEM, so GLVis can now be
built from any (serial or parallel) MFEM build.
- Support for saving screenshots directly in png format using libpng. Enabled
by default with "USE_LIBPNG = YES" in the makefile.
- Support for antialiased fonts using the freetype library. Enabled by default
with "USE_FREETYPE = YES" in the makefile (the options "FT_OPTS_YES" and
"FT_LIBS_YES" may need to be adjusted). The font is determined at runtime from
a list of fontconfig patterns: fc_font_patterns in lib/aux_vis.cpp. It can
also be specified on the command line, e.g. "-fn Ubuntu-15".
- Improved level surfaces to support hexahedral elements and to better represent
high-order grid-functions and curved meshes using element subdivision.
- Added support for 1D meshes + solutions, visualized in 2D via extrusion in
y-direction. The z-axis is scaled relative to the x-axis.
- Added support for surface meshes (2D meshes in 3 space dimensions).
- Added new (input stream) command, "autopause <int value>" that will stop (when
turned on) the interpretation of the input stream after every mesh + solution
update. Autopause can also be toggled using the "Control+Space" key.
- When visualizing a GridFunction from a socket, script, or the command line
GLVis will now enable the subdivision mode ("f" key) and select subdivision
factor (using the new AutoRefine method) depending on the number of elements
(2D) or number of boundary elements (3D) in the mesh.
- Additional stream command support. Most of the script commands are supported
including taking screenshots.
- New camera manipulation using Ctrl, the middle mouse button, and optionally
Shift and Alt.
- Significantly improved logarithmic scaling mode (key "L").
- Improved visualization of smoothed (antialiased) lines without multisampling.
- Switched to MFEM's OptionParser class for command line arguments parsing.
- Various small fixes and styling updates.
Version 2.0, released on Nov 18, 2011
=====================================
- Extended GLVis to allow visualization of parallel meshes and grid functions.
For data saved in separate files, the format is:
glvis -np <#proc> -m <mesh_prefix> [-g <grid_function_prefix>]
The file names are obtained from the prefix by appending '.' followed by a
6-digit processor/subdomain number padded with 0's. The related (obsolete)
option -par3d was removed.
For results send by separate socket connections from each processor, the
format just adds the prefix: "parallel <#proc> <myid>" (see the parallel
MFEM examples).
The corresponding GLVis script command is "psolution <num_proc> <mesh_prefix>
<attr_flag> <solution_prefix>", where <attr_flag> controls if the boundary
attributes should be replaced with the processor number or if they should be
kept unchanged (this option is also available from the command line as '-a').
In all cases, GLVis will stitch the parallel results to show the global mesh
and solution, but the subdomain data can still be examined through the F3/F4,
F8, F9/F10 and F11/F12 keystrokes.
- Added the ability to directly visualize 3D VectorFiniteElement-based grid
functions (e.g. from a Nedelec or a Raviart-Thomas space), by an internal
projection onto the discontinuous piece-wise polynomial space of the
appropriate order.
- Added new bounding box visualization mode (fourth state for the 'a' key) using
red, green, blue colored main axes and dashed box.
- Added support for dynamic mesh and solution (grid function) update over
sockets based on MFEM's new socket communication classes socketserver and
socketstream. Both serial and parallel codes can use this capability.
- Switched to GLX 1.3 compatible mode selection and window creation. The old GLX
calls are still available when GLVis is compiled with -DGLVIS_GLX10. The new
functions allow for multisampling on Macs with ATI cards, though the X11
server on OS X Snow Leopard gives a warning that "GLX 1.3 is not supported",
but works fine in practice.
- Added functionality allowing GLVis to handle modifier+key input. As a first
application, control + arrow keys can be used now to translate the view.
- Improved the handling of the boundary in 2D ('b' key) for curved meshes.
- The palettes can now be flipped by specifying a negative value for the number
of times the palette is repeated (F6 key).
- Provided workaround for a bug in the NVIDIA driver on some 64 bit systems,
where glX calls after a fork() close file descriptor 0.
- Various small fixes and styling updates.
Version 1.2, released on Apr 8, 2011
====================================
- If build with mfem version 1.2 (or later), glvis now supports unstructured
meshes in VTK format, including quadratic curvilinear meshes.
- When viewing 3D vector field, 'F' will cycle the displayed scalar function
between magnitude, x-component, y-component and z-component.
- Added a new command line option: '-gc' allowing visualization of a single
component of a GridFunction, e.g: glvis -m mesh -g sol -gc 0. This is useful
for grid functions describing tensors.
- Ensured that the shrinking of elements (F3/F4) and material subdomains
(F11/F12) work in 2D/3D, with scalar/vector plots and on curved meshes. The
latter are useful, in particular, to visualize the subdomains corresponding to
different processors in a mfem parallel run.
- The palette update (key 'p') when using texture is now instantaneous.
- Added a new script command: toggle_attributes.
- Added a new palette: calewhite, from VisIt.
- Various small fixes and styling updates.
Version 1.1, released on Sep 13, 2010
=====================================
- Anti-aliasing (key 'A') now uses the OpenGL ARB_multisample extension (when
available). By default, 4x multisampling is used. See file lib/tk.cpp. This
value can be changed by setting GLVIS_MULTISAMPLE during compilation.
- When drawing subdivided elements, the real normals are now used (at least in
some cases) to smooth the appearance inside the element, i.e. the surface in
2D and the (curved) boundary in 3D.
- Enabled the shrinking of elements (F3/F4) and material subdomains (F11/F12)
for 3D meshes saved using Mesh::PrintWithPartitioning(). This allows for
better visualization of the interior of the mesh.
- Improved the hex-cutting algorithm to handle all cases of non-flat faces.
- Scripts now work with scalar 3D mesh/solution.
- Changed the makefile to recompile only files that have been changed and to
allow 'make -j'.
- Various small fixes and styling updates.
Version 1.0, released on Jul 21, 2010
=====================================
- Uploaded to http://glvis.googlecode.com.
- Initial release.