luminance
Type-safe, type-level and stateless graphics framework
https://github.com/phaazon/luminance
| LTS Haskell 6.35: | 0.11.0.4 |
| Stackage Nightly 2017-01-17: | 0.11.0.4 |
| Latest on Hackage: | 0.11.0.4 |
luminance-0.11.0.4@sha256:0279fbe771417eee957ba9f320679ecf02aaeda58588c458be697a6fc909c4f8,5873Module documentation for 0.11.0.4
- Control
- Graphics
- Graphics.Luminance
- Graphics.Luminance.Blending
- Graphics.Luminance.Buffer
- Graphics.Luminance.Core
- Graphics.Luminance.Framebuffer
- Graphics.Luminance.Geometry
- Graphics.Luminance.Pixel
- Graphics.Luminance.Query
- Graphics.Luminance.RW
- Graphics.Luminance.RenderCmd
- Graphics.Luminance.Shader
- Graphics.Luminance.Texture
- Graphics.Luminance.Vertex
- Graphics.Luminance
This package exposes several modules to work with GPUs in a stateless and type-safe way. Currently, it uses OpenGL as backend hardware technology but others will be added later on, such as Vulkan.
One very important point is the fact that luminance has nothing to do with 3D engines or scene development kits. Don’t expect to find materials, lights or mesh loaders. It’s just a graphics framework initiated to fix the design choices of OpenGL. It won’t change in any other way. However, as it grows, the plan is to make luminance a good graphics framework following the Haskell philosophy. In the end, it should be used as-is, not as an OpenGL abstraction.
luminance is a small yet powerful graphics API. It was designed so that people can quickly get their feet wet and start having fun with graphics in Haskell. The main idea is to unleash the graphical and visual properties of GPUs in a stateless and type-safe way.
This library doesn’t expose any architectural patterns or designs. It’s up to you to design your program as you want and following your own plans.
Changes
0.11.0.4
- GHC 8 support.
0.11.0.3
- Updated the documentation in Luminance crate module.
0.11.0.2
- Added support for
dlist-0.8.
0.11.0.1
- Fixed documentation broken links.
0.11
- Removed
Regions. Now using commands (FrameCmd,ShadingCmd,DrawCmdandRenderCmd). Safer interface.
0.10.0.2
- Fixed
Bufferdocumentation.
0.10.0.1
- Fixed gl45 backend (didn’t compile).
- Added documentation/tutorial for
Buffer.
0.10
Breaking changes
Regionwas removed in favor ofBuffer; just a type renaming, don’t freak out.- Removed batches in favor of
Regions. - Removed
DecidableandDivisibleinstances forUas uniforms are not supposed to be used this way.
Patch changes
- Internal changes to make
createStageerrors more verbose about the type of the stage.
0.9.1.2
- Support for
contravariant-1.4. - Support for GL_ARB_separate_shader_objects for
gl33backend (shader pragma).
0.9.1.1
- Several minor changes (clean up mostly).
0.9.1
- Made
Programan instance ofEqandShow.
0.9
- Dropped
gl32forgl33.
0.8.2.1
- Removed the
MonadIOconstraint oncreateGeometryas it’s already brought byMonadResource. - Clean some code about
createGeometryconditional (gl32 / gl45).
0.8.2
- Exposed
SomeUniformName.
0.8.1
- Exposed
UniformName– forgotten in 0.8 release.
0.8
Breaking changes
createProgramnow has a new rank 2 type parameter to map uniform values. It uses the newly added first-classUniformNametype to select which kind of uniform is wanted – up to now, simple uniforms or uniform block. That change is great because it unifies everything under the same type and future adds won’t break the existing code – the signature ofcreateProgramfor instance.
0.7.2
- Made
UniformInterfacevisible (type only).
0.7.1
- Added
Graphics.Luminance.Pixelin the export-list ofGraphics.Luminance.Texture.
0.7
Breaking changes
- Shader creation can fail with the
UnsupportedStageerror, holding the stage (and not aString) as it used to. - Fixed cubemap size interface.
- Shader interface now uses the type
StageTypeandcreateStageto create new shader stages.
Minor changes
- Several internal architectural changes.
- Added
gl45-bindless-texturescaps. - Added
gl32andgl45backends. The default backend isgl32and backends can be selected via compilation flags.
Patch changes
- Simplified and fixed UBO implementation.
- Added more debug symbols.
- OpenGL debugging now shows the callstack in a fancy way.
- Several internal architectural changes.
0.6.0.5
- semigroups-0.18 support.
0.6.0.4
- Extensions are now set per module.
0.6.0.3
- Updated .cabal documentation.
- Support for
semigroups-0.17.
0.6.0.2
- Fixed typo in the hackage documentation.
0.6.0.1
- Fixed
(:*:)forUniformBlock. - Dumped the
Storableconstraint in theuniBlockfunction (rank2 function passed to build uniform interfaces tocreateProgram). - Added
(:.),(,),(,,)and(,,,)intoUniformBlock.
0.6
Breaking changes
- Added a new function to the
createProgramandcreateProgram_uniform interface builder argument. That function can now be used to retrieveU (Region rw (UB a)), which is a UBO. - The uniform interface creation is not performed in a arbitrary, user-defined monad anymore. A
dedicated type was introduced for that very purpose –
UniformInterface– constraining the user to only use the uniformize functions to map semantics toUvalues.
Non-breaking changes
- Added
UB, which can be used along withBufferto create UBO buffers and pass them to shaders.
0.5.2.1
- Relaxed lower bound of
linearto acceptlinear-1.19.*. That changes should enablelumimanceto be included into stackage. - Changed internal representation of
Region.
0.5.2
Non-breaking changes
- Added texture arrays:
Texture1DArrayTexture2DArrayCubemapArray
0.5.1
Non-breaking changes
- Added several
Uniforminstances for linear.
Patch changes
- Fixed the indexed render.
- Fixed the vertex attributes being ignored.
0.5
Breaking changes
- Changed the interface of texels transfer and filling. We dropped the
Foldableinstance and now require aData.Vector.Storable.Vectorfor performance purposes.
Non-breaking changes
- Added
MirrorRepeatconstructor toWrap.
Patch changes
- Fixed prerequisites in README.
0.4.1
- Fixed the
sizeOfimplementation ofa :. b. - Added
nubDirect, which can be used to turn direct geometry into indirect geometry.
0.4
Non-breaking changes
- Added .gitignore.
Breaking changes
V2,V3andV4replaced byvec2,vec3andvec4.Vis not anymore luminance’s. We use linear’s one, because it already has all the instances we need and is more generic. The interface is then impacted.
0.3.2
- Added Core.Tuple into the export liste of Luminance for easier uses in client code space.
0.3.1.2
- Fixed Geometry haddock documentation.
0.3.1.1
- Fixed haddock escaping issues.
0.3.1
- Added
CubeFacein the interface.
0.3.0.1
- Enhanced Texture documentation.
0.3
- All textures can now be used in shaders.
- Added support for more OpenGL textures – though, framebuffers are not impacted yet.
Texture1DTexture2DTexture3DCubemap
- Changed the texture interface with type families so that we can add more in an easier way!
0.2
Breaking changes
- Automatically insert GLSL pragmas in shaders.
Non-breaking changes
- Added documentation for RenderCmd.
- Added stdRenderCmd_.
- Added shaderProgramBatch_.
0.1.1.1
- Fixed a typo in the Graphics.Luminance documentation.
0.1.1
- Added a tutoral in Graphics.Luminance.
0.1
- Initial revision. Do not consider this revision as a stable release. It’s experimental. The first stable release will be 1.0.