From HaskellWiki
Jump to navigation Jump to search

What is GPipe?

GPipe is a library for programming the GPU (graphics processing unit). It is an alternative to using OpenGl, and has the advantage that it is functional and statically typed as opposed to OpenGl's inherently imperative style. Another important difference with OpenGl is that with GPipe you don't need to write shaders in a second shader language such as GLSL or Cg, but instead use regular Haskell functions on the GPU data types. GPipe uses the same conceptual model as OpenGl, so if you already know OpenGl, getting up to speed with GPipe is quick!

Version 2

In 2015, a new major version of GPipe was realeased. Read the announcement here on the GPipe blog!

Examples and tutorials

A comprehensive tutorial in five parts is now available for GPipe 2:

  • Quake 3 map viewer using GPipe 2, sources on GitHub.

Use at least version 2.1.3 for the examples in these.

GPipe 1 Examples and tutorials

Note that these only applies to the older deprecated version of GPipe

  • Wiki Tutorial that explains the basic principles of GPipe 1.
  • GPipe-Examples package, by Kree Cole-McLaughlin features a set of four examples with increasing complexity.
  • Csaba Hruska has made a Quake 3 map viewer using GPipe 1, sources on GitHub.


All my GPipe related library sources are available on Github. If you have something to contribute with, just send me a patch and I might merge it into the trunk.

Other resources

GPipe 2

  • GPipe-GLFW is the first window management package for GPipe 2.
  • linear is the vector math package used by GPipe 2.

GPipe 1

Questions and feedback

If you have any questions or suggestions, feel free to mail me. I'm also interested in seeing some use cases from the community, as complex or trivial they may be.