SlideShare a Scribd company logo
MODERN & INTERACTIVE SCIENTIFIC VISUALIZATION
USING SHADER BASED RENDERING
Nicolas P. Rougier
Luke Campagola - Almar Klein - Cyrille Rossant - Eric Larson
X.Org Developer Conference 2014
Bordeaux, October 8–10
A Bit of Context
The Python Scientific Stack
→ Python, modern computing script language
→ IPython, an advanced Python shell
→ Numpy, powerful numerical arrays objects.
→ Scipy, high-level data processing routines.
→ Matplotlib, 2-D visualization plots
Python
Matplotlib
NumPy
SciPy
IPython
IP[y]:
SymPy
Σ ∫dx
[1
00
1]
SciKits
Versatile, beautiful but... slow !
Matplotlib is a python plotting library, primarily for 2-D plotting, but with some 3-D support,
which produces publication-quality figures in a variety of hardcopy formats and interactive
environments across platforms.
→ Antigrain geometry, High Fidelity 2D Graphics (www.antigrain.com)
→ Ten Simple Rules for Better Figures, Nicolas P. Rougier, Michael Droettboom, Philip E.
Bourne PLoS Computational Biology, Vol. 10, No. 9.
What about OpenGL ?
Powerful, fast but... ugly !
• No decent anti-aliasing
• Only two image filters
• No native text handling
• No markers, no arrows
• No paths, no curves
Proprietary solution
→ Mark Kilgard and Jeff Bolz, GPU-accelerated Path Rendering, ACM Transactions on
Graphics (Proceedings of SIGGRAPH Asia 2012), vol. 31, Num. 6, (2012).
→ OpenVG API, Standard for Vector Graphics Acceleration, Khronos group.
But this can also be fixed freely !
Python/OpenGL frameworks
Rendering framework
• Pyglet
www.pyglet.org
• PyOpenGL
pyopengl.sourceforge.net
• Nodebox for OpenGL
www.cityinabottle.org/nodebox
• PyProcessing
code.google.com/p/pyprocessing
Visualization framework
• mayavi 2 (Enthought)
github.com/enthought/mayavi
• VTK (Kitware)
www.vtk.org
• galry (Cyrille Rossant)
rossant.github.io/galry/
• visvis (Almar Klein)
code.google.com/p/visvis/
• glumpy (Nicolas Rougier)
code.google.com/p/glumpy/
• pyqtgraph (Luke Campagnola)
www.pyqtgraph.org
OpenGL history
ES 1.0 ES 1.1 ES 3.0ES 2.0
1992
1.0
1997
1.1
1998
1.2
2001
1.3
2002
1.4
2003
1.5
2004
2.0
2006
2.1
2008
3.0
2009
3.2
2010
4.1
2011
4.2
2012
4.3
1993
1994
1995
1996
1999
2000
2005
2007
3.1 4.0
3.3
Fixed pipeline
(no shaders)
Programmable pipeline
(vertex/fragment/geometry shaders)
Legacy OpenGL Core Profile
(deprecation model)
Doom (1993) Rage (2011)
OpenGL 4.2 pipeline overview
(could have been worse...)
Around 2000 constants and 1000 functions.
OpenGL ES 2.0 pipeline overview
(openglinsights.com)
Around 350 constants and 150 functions.
Pipeline overview
Data centered
CPU(python)
GPU(shaders)
Raw
Data
Baked
Data
Transformed
Data
Rendered
Data
Critical parts are the baking process and the transfer to GPU memory.
Baking process
Ideal case: no baking
Interpolation, colorization, leveling,
gridding, scaling, lighting, aliasing,
rendering entirely done on GPU.
Hard case: baking depends on transformation
Transparency implies lot of CPU
processing (sorting) or multi-pass
rendering.
Where do we start ?
Scalable Vector Graphics (SVG) 2
Text
Paths
Basic shapes
Painting: Filling, Stroking and Marker Symbols
Clipping, Masking and Compositing
Filter Effects
...
Text rendering
Different techniques
Bitmap, stroke, texture, sdf, vector...
→ Nicolas P. Rougier, Higher Quality 2D Text Rendering, Journal of Computer Graphics
Techniques (JCGT), vol. 2, no. 1, 50-64, 2013.
Higher quality text rendering
Vertical vs Horizontal hinting
No hinting Native hinting Auto hinting Vertical hinting
→ Maxim Shemarev, Texts Rasterization Exposures, An attempt to improve text
rasterization algorithms, 2007
Implementation (github.com/rougier/freetype-gl)
• Subpixel positioning & kerning
• Per pixel gamma correction
• Signed Distance Fields
Dashed stroked polyline
GL line width (fixed pipeline)
• Limited in thickness
• No control over joins and caps
• Deprecated & ugly
GL Stipple (fixed pipeline)
• Limited in pattern
• No control over dash caps
• Deprecated & ugly
Higher quality dashed stroked polyline
Shader based approach
A new method for rendering arbitrary dash patterns along any continuous polyline (smooth
or broken). The proposed method does not tessellate individual dash patterns and allows for
fast and accurate rendering of any user-defined dash pattern and caps
→ Nicolas P. Rougier, Shader-Based Antialiased, Dashed, Stroked Polylines, Journal of
Computer Graphics Techniques (JCGT), vol. 2, no. 2, 105–121, 2013.
Image interpolation & filters
OpenGL offers only nearest and linear filters while much more are needed for scientific
visualization (Hanning, Hamming, Hermite, Kaiser, Quadric, Bicubic, CatRom, Mitchell,
Spline16, Spline36, Gaussian, Bessel, Sinc, Lanczos, Blackman, etc.)
→ Kevin Bjorke, High-Quality Filtering in GPU gems 2 : programming techniques for
high-performance graphics and general-purpose computation / edited by Matt Pharr ;
Randima Fernando (2007).
Grids, markers and arrows
Point based approach
A new method for drawing grids, markers, and arrows using implicit functions such that it is
possible draw pixel-perfect antialiased objects with very good performances.
→ Nicolas P. Rougier, Shader Based Antialiased 2D Grids, Markers, and Arrows, Journal of
Computer Graphics Techniques (JCGT), to appear, 2014.
Still lot of problems ahead...
...but work is in progress
Shader composition
How to define a shader format that allow easy composition/templating ?
Level of details
How to set automatic level of details ?
Very big data
How to render data that doesn’t even fit into GPU memory ?
Complex data transformation
How to handle user-supplied exotic transformation ?
From DesktopGL to WebGL
How to render in browser from a python session ?
...
Conclusion
We do not have to (always) trade quality for speed
10,000 pts - 403 FPS 100,000 pts - 140 FPS 1,000,000 pts - 40 FPS 10,000,000 pts - 1.5 FPS
AntiGrain Geometry
(matplotlib agg backend)
OpenGL AntiGrain
(using dedicated shaders)
AntiGrain Geometry
(matplotlib agg backend)
OpenGL AntiGrain
(using dedicated shaders)
Informations & links
The code is spread in several projects but should be soon integrated in the master vispy
project.
Projects page
• vispy.org
• vispy.org/gallery.html
• glumpy.github.io
• glumpy.github.io/gallery.html
Code repositories
• github.com/vispy/vispy
• github.com/glumpy/glumpy
• github.com/rougier/gl-agg
• github.com/rougier/freetype-gl
Demo pages
• Markers: https://www.shadertoy.com/view/XsXXDX
• Arrows: https://www.shadertoy.com/view/ldlSWj
• Transverse Mercator grid: https://www.shadertoy.com/view/lsSXzm
• Cartesian grid: https://www.shadertoy.com/view/MdSXRm
• Polar grid: https://www.shadertoy.com/view/MsBSRm
Modern OpenGL scientific visualization

More Related Content

What's hot (14)

DOCX
Cs6660 compiler design may june 2017 answer key
appasami
 
PPTX
Programming basic computer
Martial Kouadio
 
PPTX
Algorithm analysis and efficiency
ppts123456
 
PPT
Binary Units
Forrester High School
 
PPTX
Fundamental of CNC machining - Introduction about CNC
Dinesh Kannappan
 
PDF
Chapter 06 boolean algebra
IIUI
 
DOCX
Multiple choice quiz for introductions to computers
Kate Bailey
 
PPTX
Design of Accumulator Unit
Harshad Koshti
 
PPTX
Dijkstra algorithm a dynammic programming approach
Akash Sethiya
 
PPT
Timeline of Computer History
wizbee
 
PPT
Pipelining slides
PrasantaKumarDash2
 
PPTX
Huffman coding
Nazmul Hyder
 
PDF
Smart Spine Posture Detector
IRJET Journal
 
PPT
Identification of ports & cables adapter cards
prakasa mani
 
Cs6660 compiler design may june 2017 answer key
appasami
 
Programming basic computer
Martial Kouadio
 
Algorithm analysis and efficiency
ppts123456
 
Binary Units
Forrester High School
 
Fundamental of CNC machining - Introduction about CNC
Dinesh Kannappan
 
Chapter 06 boolean algebra
IIUI
 
Multiple choice quiz for introductions to computers
Kate Bailey
 
Design of Accumulator Unit
Harshad Koshti
 
Dijkstra algorithm a dynammic programming approach
Akash Sethiya
 
Timeline of Computer History
wizbee
 
Pipelining slides
PrasantaKumarDash2
 
Huffman coding
Nazmul Hyder
 
Smart Spine Posture Detector
IRJET Journal
 
Identification of ports & cables adapter cards
prakasa mani
 

Viewers also liked (10)

PPT
Advanced scientific visualization
Charles Flynt
 
PDF
GPU-accelerated Path Rendering
Mark Kilgard
 
PDF
簡単!OpenGL ES 2.0フラグメントシェーダー
Eiji Kamiya
 
PDF
FiltersでGLSLを楽しく学んじゃおう!
Kazuya Hiruma
 
PPTX
LINE 2016 エンジニアインターン 03
LINE Corporation
 
PPTX
LINE 2016 エンジニアインターン 02
LINE Corporation
 
PPTX
LINE 2016 エンジニアインターン 01
LINE Corporation
 
PDF
Intern2015 01
LINE Corporation
 
PPTX
Introduction to scientific visualization
Open Party
 
PPTX
10 Tips for Better Visualization of Scientific Data
Sercan Ahi
 
Advanced scientific visualization
Charles Flynt
 
GPU-accelerated Path Rendering
Mark Kilgard
 
簡単!OpenGL ES 2.0フラグメントシェーダー
Eiji Kamiya
 
FiltersでGLSLを楽しく学んじゃおう!
Kazuya Hiruma
 
LINE 2016 エンジニアインターン 03
LINE Corporation
 
LINE 2016 エンジニアインターン 02
LINE Corporation
 
LINE 2016 エンジニアインターン 01
LINE Corporation
 
Intern2015 01
LINE Corporation
 
Introduction to scientific visualization
Open Party
 
10 Tips for Better Visualization of Scientific Data
Sercan Ahi
 
Ad

Similar to Modern OpenGL scientific visualization (20)

PDF
Portfolio
Ivan Khomyakov
 
PDF
Dataset creation for Deep Learning-based Geometric Computer Vision problems
PetteriTeikariPhD
 
PPT
GTC 2012: GPU-Accelerated Path Rendering
Mark Kilgard
 
PPTX
Artificial Intelligence in practice - Gerbert Kaandorp - Codemotion Amsterdam...
Codemotion
 
PDF
Hardware Accelerated Machine Learning Solution for Detecting Fraud and Money ...
TigerGraph
 
PPTX
Graphics pipelining
Areena Javed
 
PDF
Python's slippy path and Tao of thick Pandas: give my data, Rrrrr...
Alexey Zinoviev
 
PPTX
cityscapes Semantic Segmentation using FCN, U Net and U Net++.pptx
faizalmistry5
 
PDF
Introduction to Software Defined Visualization (SDVis)
Intel® Software
 
PDF
Scratch to Supercomputers: Bottoms-up Build of Large-scale Computational Lens...
inside-BigData.com
 
PPTX
Presentation NBMP and PCC
Rufael Mekuria
 
PPT
Topic 1 Introduction to Computer Graphics.ppt
VincentOdundo
 
PDF
ScaleGraph - A High-Performance Library for Billion-Scale Graph Analytics
Toyotaro Suzumura
 
PDF
Resume-Aditya Parkhi NCSU_MSCS
aditya140
 
ODP
Vips 4mar09e
guest0f52728
 
PPT
Marek Suplata Projects
guest14f12f
 
PPTX
pydataPointCloud.pptx
Manuel Rodrigo Cabello Malagón
 
PPTX
Data-Centric Parallel Programming
inside-BigData.com
 
PDF
IRJET- 3D Object Recognition of Car Image Detection
IRJET Journal
 
PDF
Machine Learning with JavaScript
Ivo Andreev
 
Portfolio
Ivan Khomyakov
 
Dataset creation for Deep Learning-based Geometric Computer Vision problems
PetteriTeikariPhD
 
GTC 2012: GPU-Accelerated Path Rendering
Mark Kilgard
 
Artificial Intelligence in practice - Gerbert Kaandorp - Codemotion Amsterdam...
Codemotion
 
Hardware Accelerated Machine Learning Solution for Detecting Fraud and Money ...
TigerGraph
 
Graphics pipelining
Areena Javed
 
Python's slippy path and Tao of thick Pandas: give my data, Rrrrr...
Alexey Zinoviev
 
cityscapes Semantic Segmentation using FCN, U Net and U Net++.pptx
faizalmistry5
 
Introduction to Software Defined Visualization (SDVis)
Intel® Software
 
Scratch to Supercomputers: Bottoms-up Build of Large-scale Computational Lens...
inside-BigData.com
 
Presentation NBMP and PCC
Rufael Mekuria
 
Topic 1 Introduction to Computer Graphics.ppt
VincentOdundo
 
ScaleGraph - A High-Performance Library for Billion-Scale Graph Analytics
Toyotaro Suzumura
 
Resume-Aditya Parkhi NCSU_MSCS
aditya140
 
Vips 4mar09e
guest0f52728
 
Marek Suplata Projects
guest14f12f
 
pydataPointCloud.pptx
Manuel Rodrigo Cabello Malagón
 
Data-Centric Parallel Programming
inside-BigData.com
 
IRJET- 3D Object Recognition of Car Image Detection
IRJET Journal
 
Machine Learning with JavaScript
Ivo Andreev
 
Ad

More from Nicolas Rougier (11)

PDF
The Art of Braincrafting
Nicolas Rougier
 
PDF
Neural fields, a cognitive approach
Nicolas Rougier
 
PDF
SIGGRAPH 2018 - Digital typography
Nicolas Rougier
 
PDF
Machine learning
Nicolas Rougier
 
PDF
Open science
Nicolas Rougier
 
PDF
On ne voit que ce que l’on regarde (French)
Nicolas Rougier
 
PDF
Cybercriminalité (French)
Nicolas Rougier
 
PDF
Where is my mind?
Nicolas Rougier
 
PDF
Scientific visualization
Nicolas Rougier
 
PDF
ReScience
Nicolas Rougier
 
PDF
One critic, two actors, one decision
Nicolas Rougier
 
The Art of Braincrafting
Nicolas Rougier
 
Neural fields, a cognitive approach
Nicolas Rougier
 
SIGGRAPH 2018 - Digital typography
Nicolas Rougier
 
Machine learning
Nicolas Rougier
 
Open science
Nicolas Rougier
 
On ne voit que ce que l’on regarde (French)
Nicolas Rougier
 
Cybercriminalité (French)
Nicolas Rougier
 
Where is my mind?
Nicolas Rougier
 
Scientific visualization
Nicolas Rougier
 
ReScience
Nicolas Rougier
 
One critic, two actors, one decision
Nicolas Rougier
 

Recently uploaded (20)

PPTX
Preparation of Experimental Animals.pptx
muralinath2
 
PPTX
Hydrocarbons Pollution. OIL pollutionpptx
AkCreation33
 
PPTX
Hericium erinaceus, also known as lion's mane mushroom
TinaDadkhah1
 
PPTX
Chromium (Cr) based oxidizing reagents.pptx
karnikhimani
 
PPT
1a. Basic Principles of Medical Microbiology Part 2 [Autosaved].ppt
separatedwalk
 
PPT
Grade_9_Science_Atomic_S_t_r_u_cture.ppt
QuintReynoldDoble
 
PPTX
Nanofertilizer: Its potential benefits and associated challenges.pptx
BikramjitDeuri
 
PPTX
ANTIANGINAL DRUGS.pptx m pharm pharmacology
46JaybhayAshwiniHari
 
PPT
1. Basic Principles of Medical Microbiology Part 1.ppt
separatedwalk
 
PDF
study of microbiologically influenced corrosion of 2205 duplex stainless stee...
ahmadfreak180
 
PPTX
Quality control test for plastic & metal.pptx
shrutipandit17
 
PPTX
Nature of Science and the kinds of models used in science
JocelynEvascoRomanti
 
PPTX
Q1_Science 8_Week4-Day 5.pptx science re
AizaRazonado
 
PPTX
Evolution of diet breadth in herbivorus insects.pptx
Mr. Suresh R. Jambagi
 
PPTX
mirna_2025_clase_genética_cinvestav_Dralvarez
Cinvestav
 
PPTX
Pengenalan Sel dan organisasi kehidupanpptx
SuntiEkaprawesti1
 
PPTX
CARBOHYDRATES METABOLSIM, UNIT 2, B Pharm II SEMESTER, BIOCHEMISTRY
ARUN KUMAR
 
PDF
Control and coordination Class 10 Chapter 6
LataHolkar
 
PPTX
Home Garden as a Component of Agroforestry system : A survey-based Study
AkhangshaRoy
 
PPTX
The Obesity Paradox. Friend or Foe ?pptx
drdgd1972
 
Preparation of Experimental Animals.pptx
muralinath2
 
Hydrocarbons Pollution. OIL pollutionpptx
AkCreation33
 
Hericium erinaceus, also known as lion's mane mushroom
TinaDadkhah1
 
Chromium (Cr) based oxidizing reagents.pptx
karnikhimani
 
1a. Basic Principles of Medical Microbiology Part 2 [Autosaved].ppt
separatedwalk
 
Grade_9_Science_Atomic_S_t_r_u_cture.ppt
QuintReynoldDoble
 
Nanofertilizer: Its potential benefits and associated challenges.pptx
BikramjitDeuri
 
ANTIANGINAL DRUGS.pptx m pharm pharmacology
46JaybhayAshwiniHari
 
1. Basic Principles of Medical Microbiology Part 1.ppt
separatedwalk
 
study of microbiologically influenced corrosion of 2205 duplex stainless stee...
ahmadfreak180
 
Quality control test for plastic & metal.pptx
shrutipandit17
 
Nature of Science and the kinds of models used in science
JocelynEvascoRomanti
 
Q1_Science 8_Week4-Day 5.pptx science re
AizaRazonado
 
Evolution of diet breadth in herbivorus insects.pptx
Mr. Suresh R. Jambagi
 
mirna_2025_clase_genética_cinvestav_Dralvarez
Cinvestav
 
Pengenalan Sel dan organisasi kehidupanpptx
SuntiEkaprawesti1
 
CARBOHYDRATES METABOLSIM, UNIT 2, B Pharm II SEMESTER, BIOCHEMISTRY
ARUN KUMAR
 
Control and coordination Class 10 Chapter 6
LataHolkar
 
Home Garden as a Component of Agroforestry system : A survey-based Study
AkhangshaRoy
 
The Obesity Paradox. Friend or Foe ?pptx
drdgd1972
 

Modern OpenGL scientific visualization

  • 1. MODERN & INTERACTIVE SCIENTIFIC VISUALIZATION USING SHADER BASED RENDERING Nicolas P. Rougier Luke Campagola - Almar Klein - Cyrille Rossant - Eric Larson X.Org Developer Conference 2014 Bordeaux, October 8–10
  • 2. A Bit of Context The Python Scientific Stack → Python, modern computing script language → IPython, an advanced Python shell → Numpy, powerful numerical arrays objects. → Scipy, high-level data processing routines. → Matplotlib, 2-D visualization plots Python Matplotlib NumPy SciPy IPython IP[y]: SymPy Σ ∫dx [1 00 1] SciKits Versatile, beautiful but... slow ! Matplotlib is a python plotting library, primarily for 2-D plotting, but with some 3-D support, which produces publication-quality figures in a variety of hardcopy formats and interactive environments across platforms. → Antigrain geometry, High Fidelity 2D Graphics (www.antigrain.com) → Ten Simple Rules for Better Figures, Nicolas P. Rougier, Michael Droettboom, Philip E. Bourne PLoS Computational Biology, Vol. 10, No. 9.
  • 3. What about OpenGL ? Powerful, fast but... ugly ! • No decent anti-aliasing • Only two image filters • No native text handling • No markers, no arrows • No paths, no curves Proprietary solution → Mark Kilgard and Jeff Bolz, GPU-accelerated Path Rendering, ACM Transactions on Graphics (Proceedings of SIGGRAPH Asia 2012), vol. 31, Num. 6, (2012). → OpenVG API, Standard for Vector Graphics Acceleration, Khronos group. But this can also be fixed freely !
  • 4. Python/OpenGL frameworks Rendering framework • Pyglet www.pyglet.org • PyOpenGL pyopengl.sourceforge.net • Nodebox for OpenGL www.cityinabottle.org/nodebox • PyProcessing code.google.com/p/pyprocessing Visualization framework • mayavi 2 (Enthought) github.com/enthought/mayavi • VTK (Kitware) www.vtk.org • galry (Cyrille Rossant) rossant.github.io/galry/ • visvis (Almar Klein) code.google.com/p/visvis/ • glumpy (Nicolas Rougier) code.google.com/p/glumpy/ • pyqtgraph (Luke Campagnola) www.pyqtgraph.org
  • 5. OpenGL history ES 1.0 ES 1.1 ES 3.0ES 2.0 1992 1.0 1997 1.1 1998 1.2 2001 1.3 2002 1.4 2003 1.5 2004 2.0 2006 2.1 2008 3.0 2009 3.2 2010 4.1 2011 4.2 2012 4.3 1993 1994 1995 1996 1999 2000 2005 2007 3.1 4.0 3.3 Fixed pipeline (no shaders) Programmable pipeline (vertex/fragment/geometry shaders) Legacy OpenGL Core Profile (deprecation model) Doom (1993) Rage (2011)
  • 6. OpenGL 4.2 pipeline overview (could have been worse...) Around 2000 constants and 1000 functions.
  • 7. OpenGL ES 2.0 pipeline overview (openglinsights.com) Around 350 constants and 150 functions.
  • 9. Baking process Ideal case: no baking Interpolation, colorization, leveling, gridding, scaling, lighting, aliasing, rendering entirely done on GPU. Hard case: baking depends on transformation Transparency implies lot of CPU processing (sorting) or multi-pass rendering.
  • 10. Where do we start ? Scalable Vector Graphics (SVG) 2 Text Paths Basic shapes Painting: Filling, Stroking and Marker Symbols Clipping, Masking and Compositing Filter Effects ...
  • 11. Text rendering Different techniques Bitmap, stroke, texture, sdf, vector... → Nicolas P. Rougier, Higher Quality 2D Text Rendering, Journal of Computer Graphics Techniques (JCGT), vol. 2, no. 1, 50-64, 2013.
  • 12. Higher quality text rendering Vertical vs Horizontal hinting No hinting Native hinting Auto hinting Vertical hinting → Maxim Shemarev, Texts Rasterization Exposures, An attempt to improve text rasterization algorithms, 2007 Implementation (github.com/rougier/freetype-gl) • Subpixel positioning & kerning • Per pixel gamma correction • Signed Distance Fields
  • 13. Dashed stroked polyline GL line width (fixed pipeline) • Limited in thickness • No control over joins and caps • Deprecated & ugly GL Stipple (fixed pipeline) • Limited in pattern • No control over dash caps • Deprecated & ugly
  • 14. Higher quality dashed stroked polyline Shader based approach A new method for rendering arbitrary dash patterns along any continuous polyline (smooth or broken). The proposed method does not tessellate individual dash patterns and allows for fast and accurate rendering of any user-defined dash pattern and caps → Nicolas P. Rougier, Shader-Based Antialiased, Dashed, Stroked Polylines, Journal of Computer Graphics Techniques (JCGT), vol. 2, no. 2, 105–121, 2013.
  • 15. Image interpolation & filters OpenGL offers only nearest and linear filters while much more are needed for scientific visualization (Hanning, Hamming, Hermite, Kaiser, Quadric, Bicubic, CatRom, Mitchell, Spline16, Spline36, Gaussian, Bessel, Sinc, Lanczos, Blackman, etc.) → Kevin Bjorke, High-Quality Filtering in GPU gems 2 : programming techniques for high-performance graphics and general-purpose computation / edited by Matt Pharr ; Randima Fernando (2007).
  • 16. Grids, markers and arrows Point based approach A new method for drawing grids, markers, and arrows using implicit functions such that it is possible draw pixel-perfect antialiased objects with very good performances. → Nicolas P. Rougier, Shader Based Antialiased 2D Grids, Markers, and Arrows, Journal of Computer Graphics Techniques (JCGT), to appear, 2014.
  • 17. Still lot of problems ahead... ...but work is in progress Shader composition How to define a shader format that allow easy composition/templating ? Level of details How to set automatic level of details ? Very big data How to render data that doesn’t even fit into GPU memory ? Complex data transformation How to handle user-supplied exotic transformation ? From DesktopGL to WebGL How to render in browser from a python session ? ...
  • 18. Conclusion We do not have to (always) trade quality for speed 10,000 pts - 403 FPS 100,000 pts - 140 FPS 1,000,000 pts - 40 FPS 10,000,000 pts - 1.5 FPS AntiGrain Geometry (matplotlib agg backend) OpenGL AntiGrain (using dedicated shaders) AntiGrain Geometry (matplotlib agg backend) OpenGL AntiGrain (using dedicated shaders)
  • 19. Informations & links The code is spread in several projects but should be soon integrated in the master vispy project. Projects page • vispy.org • vispy.org/gallery.html • glumpy.github.io • glumpy.github.io/gallery.html Code repositories • github.com/vispy/vispy • github.com/glumpy/glumpy • github.com/rougier/gl-agg • github.com/rougier/freetype-gl Demo pages • Markers: https://www.shadertoy.com/view/XsXXDX • Arrows: https://www.shadertoy.com/view/ldlSWj • Transverse Mercator grid: https://www.shadertoy.com/view/lsSXzm • Cartesian grid: https://www.shadertoy.com/view/MdSXRm • Polar grid: https://www.shadertoy.com/view/MsBSRm