Metadata-Version: 2.1
Name: demosys-py
Version: 1.0.7
Summary: Modern OpenGL 3.3+ Framework inspired by Django
Home-page: https://github.com/Contraz/demosys-py
Author: Einar Forselv
Author-email: eforselv@gmail.com
Maintainer: Einar Forselv
Maintainer-email: eforselv@gmail.com
License: UNKNOWN
Keywords: opengl,framework,demoscene
Platform: UNKNOWN
Classifier: Programming Language :: Python
Classifier: Environment :: MacOS X
Classifier: Environment :: X11 Applications
Classifier: Intended Audience :: Developers
Classifier: Topic :: Multimedia :: Graphics
Classifier: License :: OSI Approved :: ISC License (ISCL)
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
Description-Content-Type: text/markdown
Requires-Dist: glfw (==1.7.0)
Requires-Dist: moderngl (==5.4.2)
Requires-Dist: pyrr (==0.9.2)
Requires-Dist: Pillow (==5.2.0)
Requires-Dist: pyrocket (==0.2.7)
Requires-Dist: PyWavefront (==0.4.1)

[![pypi](https://img.shields.io/pypi/v/demosys-py.svg)](https://pypi.python.org/pypi/demosys-py) [![travis](https://travis-ci.org/Contraz/demosys-py.svg?branch=master)](https://travis-ci.org/Contraz/demosys-py) [![rtd](https://readthedocs.org/projects/demosys-py/badge/?version=latest)](http://demosys-py.readthedocs.io/en/latest/?badge=latest)

demosys-py
==========

A Python 3 cross platform OpenGL 3.3+ core framework based on [ModernGL](https://github.com/cprogrammer1994/ModernGL)

![screenshot1](https://camo.githubusercontent.com/32ce052715e574ae4e6fc60384b5070cbc9aaa27/68747470733a2f2f6f626a656374732e7a657474612e696f3a383434332f76312f415554485f30366532646265613565383234363230623230623437303139373332333237372f636f6e7472617a2e6e6f2d7374617469632f6766782f70726f64756374696f6e732f53696d4c696665332e706e67) ![screenshot2](https://camo.githubusercontent.com/653387f2f7f144b29b6fb9c891a17482b089e02d/68747470733a2f2f6f626a656374732e7a657474612e696f3a383434332f76312f415554485f30366532646265613565383234363230623230623437303139373332333237372f636f6e7472617a2e6e6f2d7374617469632f6766782f70726f64756374696f6e732f53696d4c696665322e706e67)

---

Originally made for for non-interactive real time graphics combined with music
("real time music videos", see [demoscene](https://en.wikipedia.org/wiki/Demoscene)
but can of course be used for other purposes.

Made for people who enjoy playing around with modern OpenGL without spending lots of time creating all the tooling to get things up and running.

* [Documentation](http://demosys-py.readthedocs.io/)
* [ModernGL Documentation](https://moderngl.readthedocs.io)
* [Examples](https://github.com/Contraz/demosys-py/tree/master/examples)
* [Effect Templates](https://github.com/Contraz/demosys-py/tree/master/demosys/effect_templates)
* [demosys-py on Github](https://github.com/Contraz/demosys-py)
* [demosys-py on PyPi](https://pypi.python.org/pypi/demosys-py)

Creating a project with a spinning cube can be done in less than a minute.
(Assuming you have glfw installed)

```bash
pip install demosys-py
demosys-admin createproject myproject
demosys-admin createeffect myproject/cube
```

Now run the effect

```bash
python manage.py runeffect myproject.cube
```

Features
--------

* A simple effect system based on python packages
* Supports loading GLTF 2.0 and obj files/scenes
* Support for the rocket sync-tracker system to create interesting keyframe data (Using [pyrocket](https://github.com/Contraz/pyrocket))
* Management commands to create new projects and effects
* Convenient wrappers for VAO, Shader, Texture, FBO etc
* Runtime re-loading shaders (press R)
* Time line / Timer support
* A highly pluggable framework
* Support for custom management commands
* Camera and system camera support so we can easily inspect our scene
* Easy resource management system (shaders, textures)
* Supports vertex, fragment and geometry shaders (tessellation is wip)
* A geometry module for quick creation of common mesh/VAO types
* (Experimental audio playback support)

Requirements
------------

In order to use the framework it's an advantage to know the following:

* Basic or intermediate Python
* Basic glsl
* Basic matrix math

If you are missing any of these requirements the framework can definitely be used to learn. 0 lines of code are needed to generate a project with a spinning cube and you can star poking at things.

Local Development
-----------------

Installing the project in development mode (in a virtualenv):

```bash
python setup.py develop
```

Running tests:

```bash
pytest
```

Building docs:

```bash
python setup.py build_sphinx
```

Contributors
------------

* [Einar Forselv](https://github.com/einarf)
* [Arttu Tamminen](https://github.com/helgrima)
* [binaryf](https://github.com/binaryf)

Libraries
---------

GLFW binaries must be installed. Get from your favourite location. Use version 3.2.1 or later.

* [pyGLFW](https://github.com/FlorianRhiem/pyGLFW) for window and context creation + input
* [PIL/Pillow](https://github.com/python-pillow/Pillow) for texture loading
* [Pyrrr](https://github.com/adamlwgriffiths/Pyrr) for math (uses numpy)

Optional for audio:

* [pygame](https://www.pygame.org) using the mixer module for music


