{"id":21214927,"url":"https://github.com/hadronized/luminance","last_synced_at":"2026-04-03T03:33:47.228Z","repository":{"id":56846457,"uuid":"39225989","full_name":"hadronized/luminance","owner":"hadronized","description":"Type-safe, type-level and stateless Haskell graphics framework","archived":false,"fork":false,"pushed_at":"2017-03-07T00:47:55.000Z","size":491,"stargazers_count":109,"open_issues_count":12,"forks_count":5,"subscribers_count":16,"default_branch":"master","last_synced_at":"2025-08-19T13:33:52.755Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://hackage.haskell.org/package/luminance","language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hadronized.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-07-16T23:53:51.000Z","updated_at":"2024-09-11T06:04:41.000Z","dependencies_parsed_at":"2022-09-09T01:00:34.448Z","dependency_job_id":null,"html_url":"https://github.com/hadronized/luminance","commit_stats":null,"previous_names":["hadronized/luminance","phaazon/luminance"],"tags_count":39,"template":false,"template_full_name":null,"purl":"pkg:github/hadronized/luminance","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hadronized%2Fluminance","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hadronized%2Fluminance/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hadronized%2Fluminance/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hadronized%2Fluminance/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hadronized","download_url":"https://codeload.github.com/hadronized/luminance/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hadronized%2Fluminance/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279001508,"owners_count":26083118,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-09T02:00:07.460Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-20T21:32:21.767Z","updated_at":"2025-10-09T14:37:28.268Z","avatar_url":"https://github.com/hadronized.png","language":"Haskell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# What is this?\n\n![Hackage](https://img.shields.io/badge/hackage-0.11.0.1-orange.svg?style=flat)\n![License](https://img.shields.io/badge/license-BSD3-blue.svg?style=flat)\n\n`luminance` is an effort to make graphics rendering simple and elegant in **Haskell**. It’s forked\nfrom a larger project which was closed because way too complex and bloated. The aims of `luminance`\nare:\n\n  - providing a simple API ;\n  - abstract over the trending hardware interfaces (i.e. **OpenGL** up to now) and approach\n    as close as possible a stateless design ;\n  - being a tiny API, so that new comers don’t have to learn a lot of new concepts to get\n    their feet wet.\n\nThe first version of `luminance` will be released of [hackage](https://hackage.haskell.org) and\n[stackage](https://www.stackage.org) as a *BSD3* library.\n\n# What’s included?\n\n`luminance` is a rendering framework, not a 3D engine. As so, it doesn’t include stuff like\nlights, materials, asset management nor scene description. It only provides a rendering framework\nyou can plug in whatever libraries you want to. The single restriction – yet – is that you must have\nan operating system with **OpenGL** installed.\n\n## Features set\n\n- **buffers**: **buffers** are way to communicate with the *GPU*; they represent regions of memory\n  you can write to and read from. There’re several kinds of buffers you can create, among *vertex\n  and index buffers*, *shader buffer*, *compute buffer*, and so on and so forth… ;\n- **framebuffers**: **framebuffers** are used to hold *renders*. Each time you want to perform a\n  render, you need to perform it into a framebuffer. Framebuffers can then be combined with each\n  other to produce nice effects ;\n- **shaders**: `luminance` support six kinds of shader stages:\n  + tessellation control shaders ;\n  + tessellation evaluation shaders ;\n  + vertex shaders ;\n  + geometry shaders ;\n  + fragment shaders ;\n  + compute shaders ;\n- **vertices, indices, primitives and shapes**: those are used to define a shape you can render into\n  a framebuffer\n- **textures**: **textures** represent information packed into arrays on the GPU, and can be used\n  to customize a visual aspect or pass information around ;\n- **blending**: **blending** is the process of taking two colors from two framebuffers and mix them\n  between each other ;\n- and a lot of other cool things\n\n# What are the prerequisites?\n\nIn order to use `luminance`, you need several prerequisites to be fulfilled. Those prerequisites\ndetermine which backend you will be able to use. Currently, two backends are available: **gl33**\nand **gl45**.\n\n- a library to setup an *OpenGL* context.\n- **gl33**\n  - a decent *OpenGL 3.3* implementation\n  - support for extension *GL_ARB_texture_cube_map*\n- **gl45**\n  - a decent *OpenGL 4.5* implementation\n- **gl-45-bindless-textures** (bonus)\n  - a decent *OpenGL 4.5* implementation\n  - support for extension *GL_ARB_bindless_texture* ;\n\nThe backends can be enabled through **compilation flags**. You should only pick one as the more\nrecent will be preferred over others. However, some of the flags can be combined. If you want\n**bindless textures**, you should enable the flags `gl45` and `gl-bindless-textures`.\n\n`luminance` does not provide point a way to create windows because it’s important that it not depend\non windowing libraries so that end-users can use whatever they like. Furthermore, such libraries\ntypically implement windowing and events features, which have nothing to do with our initial\npurposes. However, a few packages might come up, like `luminance-glfw` if such libraries are judged\nuseful.\n\n# How to dig in?\n\n`luminance` is written to be fairly simple. The documentation – on hackage – is very transparent\nabout what the library does and several articles will appear as the development goes on. Keep tuned!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhadronized%2Fluminance","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhadronized%2Fluminance","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhadronized%2Fluminance/lists"}