Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/nojoule/joulegl

Low-level rendering framework in python
https://github.com/nojoule/joulegl

glsl opengl python rendering-3d-graphics

Last synced: 4 months ago
JSON representation

Low-level rendering framework in python

Awesome Lists containing this project

README

        

# JouleGL
Low level rendering framework using OpenGL python bindings. For feedback or questions, feel free to join my stream and community at https://www.twitch.tv/nojoule .

## Test Coverage

CoverageCoverage Report FileStmtsMissCoverMissingjoulegl/opengl_helper   buffer.py166199%104   frame_buffer.py330100%    screenshot.py29673%27–>29, 38–40, 58–61   texture.py46971%37–38, 46–47, 60–62, 65, 74   vertex_data_handler.py650100% joulegl/opengl_helper/base   data_set.py410100%    shader.py680100%    shader_handler.py180100%    shader_parser.py520100% joulegl/opengl_helper/compute   shader.py360100%    shader_handler.py150100% joulegl/opengl_helper/render   shader.py250100%    shader_handler.py210100%    utility.py75883%126–131, 138, 143, 146, 154–155joulegl/processing   processor.py90100% joulegl/rendering   renderer.py340100% joulegl/utility   app.py57297%85–86   camera.py1421490%141–155, 222–225   definitions.py140100%    file.py720100%    glcontext.py140100%    log_handling.py150100%    performance.py542159%13–38, 54–55, 62–66, 71–>75   singleton.py100100%    window.py1738540%18, 23–26, 35, 39–41, 56, 105–106, 114–116, 119, 122–133, 136–142, 145–148, 151–158, 161–189, 203–209, 217, 230, 232, 236, 243, 249–252, 255–258, 266–>268   window_config.py150100% TOTAL129914686% 

## Installation

Install using pip:
```Shell
pip install -r requirements.txt
```

## Usage

Clone this repo and look in the [demo](./demo) folder for examples.

### Demo: Balls
Showing compute shader applying noise to vertex positions with dynamic use of two different shader for basic triangles or more complex geometry shader.

```Shell
python demo/balls/balls.py
```

![balls, triangle connections between random positions](./docs/balls_demo.png)
![balls, random positions rendered as spheres](./docs/balls_demo_2.png)

### Demo: Block
Showcasing dynamic shader generation.

```Shell
python demo/block/block.py
```

![block, positions rendered as cubes, with varying color and shading](./docs/block_demo.png)