=========
Resources
=========

.. container:: lead

   There are actually a lot of online resources, here is only a small selection.


Learning
========

VisPy will eventually provide high-level facilities to let scientists create
high-quality, high-performance plots without any knowledge of OpenGL. In the 
meantime, you can learn more about modern OpenGL in the references below.

Even when VisPy is mature enough, knowing OpenGL will still let you write 
entirely custom interactive visualizations that fully leverage the power of
GPUs.

* This `page <http://www.songho.ca/opengl/index.html>`_ contains fundamental
  OpenGL tutorials and notes.All example programs are written by C++ with
  Code::Blocks and Orwell Dev-C++, as well as makefiles for Linux and Mac.

* A new OpenGL `introduction
  <http://duriansoftware.com/joe/An-intro-to-modern-OpenGL.-Table-of-Contents.html>`_
  that walks through the parts that are still relevant today.

* `Open.gl <https://open.gl/>`_ is a great walkthrough of modern OpenGL features
  with example code and output. Available in various ebook formats.

* `Shadertoy <https://www.shadertoy.com>`_ is a great resources to experiment
  and learn fragment shaders.

* `A tutorial about VisPy <http://ipython-books.github.io/featured-06/>`_, by
   Cyrille Rossant, published in the `IPython Cookbook <http://ipython-books.github.io/>`_

* `A tutorial about modern OpenGL and VisPy, by Nicolas Rougier <http://www.loria.fr/~rougier/teaching/opengl/>`_

* A paper on the fundamentals behind VisPy:
  `Rossant C and Harris KD, Hardware-accelerated interactive data visualization for neuroscience in Python, Frontiers in Neuroinformatics 2013 <http://journal.frontiersin.org/Journal/10.3389/fninf.2013.00036/full>`_

* A free online book on modern OpenGL (but not Python):
  `Learning Modern 3D Graphics Programming, by Jason L. McKesson <http://www.arcsynthesis.org/gltut/>`_

* `A PyOpenGL tutorial <http://cyrille.rossant.net/2d-graphics-rendering-tutorial-with-pyopengl/>`_

* `A tutorial on OpenGL shaders <http://cyrille.rossant.net/shaders-opengl/>`_


References
==========

* `The OpenGL Registry <http://www.opengl.org/registry/>`_ contains
  specifications, header files, and related documentation for OpenGL and
  related APIs including GLU, GLX, and WGL.

* `Quick reference <http://www.shaderific.com/glsl-functions/>`_ for the
  built-in functions of the OpenGL ES Shading Language.

* The `Graphics Codex <http://casual-effects.com/graphicscodex/>`_ is an app
  for 3D graphics students, engineers, teachers, and artists. It provides
  consistent, correct, and easy-to-understand definitions for technical
  material.


Blogs
=====

* `Iñigo Quílez <http://www.iquilezles.org/www/index.htm>`_
* `Florian Boesch <http://codeflow.org>`_
* `The Little Grasshoper <http://github.prideout.net>`_
* `John Chapman <http://john-chapman-graphics.blogspot.fr/2013/01/ssao-tutorial.html>`_


Visualisation
=============

:Matplotlib: `Matplotlib <http://matplotlib.org>`_ is a python 2D plotting
   library which produces publication quality figures in a variety of hardcopy
   formats and interactive environments across platforms. matplotlib can be
   used in python scripts, the python and ipython shell (ala MATLAB®* or
   Mathematica®†), web application servers, and six graphical user interface
   toolkits.

:Glumpy: `Glumpy <http://glumpy.github.io>`_ is the sister project of VisPy.
   It is also a high-performance interactive 2D/3D data visualization library.

:Bokeh: `Bokeh <http://bokeh.pydata.org>`_ is a Python interactive
  visualization library that targets modern web browsers for presentation. Its
  goal is to provide elegant, concise construction of novel graphics in the
  style of D3.js, but also deliver this capability with high-performance
  interactivity over very large or streaming datasets.

:Seaborn: `Seaborn <http://stanford.edu/%7Emwaskom/software/seaborn/index.html>`_
  is a library for making attractive and informative statistical graphics in
  Python. It is built on top of matplotlib and tightly integrated with the PyData
  stack, including support for numpy and pandas data structures and statistical
  routines from scipy and statsmodels.

:Kivy: `Kivy <http://kivy.org/#home>`_ is an open source Python library for
  rapid development of applications that make use of innovative user interfaces,
  such as multi-touch apps


Scientific Articles
===================

* | `Ten simple rules for better figures <http://www.ploscompbiol.org/article/info:doi/10.1371/journal.pcbi.1003833>`_
  | Nicolas P. Rougier, Michael Droettboom, Phil Bourne. PLOS Computational Biology (2014).
* | `Shader-based Antialiased Dashed Stroked Polylines <http://jcgt.org/published/0002/02/08/>`_
  | Nicolas P. Rougier. Journal of Computer Graphics Techniques, (2013)
* | `Higher Quality 2D Text Rendering <http://jcgt.org/published/0002/01/04/>`_
  | Nicolas P. Rougier. Journal of Computer Graphics Techniques, (2013)
