A simple 3D graphics engine designed to serve as a tool for proof-of-concept algorithms
Documentation will be sparse and updated when major milestones are reached.
- Events
- DO NOT modify components main data, ONLY state data
- State data is akin to boolean and intergers
- Cannot be stacked
- work immediately across systems
- DO NOT modify components main data, ONLY state data
- Actions:
- DO modify components. All data, including state data
- Only happens during update
- May be immediate or over time
- Can be queued up by systems
https://github.com/ubuntunux/PyEngine3D
- https://www.taichi-lang.org/ (Very interesting)
- https://www.ray.io/
- https://numba.pydata.org/
- https://www.dask.org/
https://projects.blender.org/blender/blender/issues/54661
- https://github.com/eth-ait/aitviewer
- https://github.com/mmatl/pyrender
- https://github.com/pygfx/pygfx
- https://github.com/3b1b/manim
- https://github.com/eliemichel/Python3dViewer
- https://github.com/ubuntunux/PyEngine3D
- https://strattonbrazil.blogspot.com/2011/09/single-pass-wireframe-rendering_10.html
https://codetabs.com/count-loc/count-loc-online.html
- Use GLSL smoothstep for anti-alias effect when drawing 2D shapes using only the frament shader
- Use this for the 2D editor interface: https://www.shadertoy.com/view/fst3DH
- WHen node's translation/rotation/scale is changed via the setter, it sets the translation to None, and if None when requested via a getter, it recalculates it just in time. This is a flexible solution, but not a very efficient one.
https://shadered.org/view?s=0xMVU6DEAe
- Scenes need to be introduced to separate groups of 3d Elements.
- 3D cameras in a scene render all objects in that 3D scene. Same for 2D cameras
- Render 2D scenes on top of 3D scenes?d
- Valid formats for VBO: ['f', 'f1', 'f2', 'f4', 'f8', 'u', 'u1', 'u2', 'u4', 'i', 'i1', 'i2', 'i4', 'nf', 'nf1', 'nf2', 'nf4', 'nu', 'nu1', 'nu2', 'nu4', 'ni', 'ni1', 'ni2', 'ni4']
- Scale should notbe applicable to orthographic projection!
- If a component/system does not handle any graphics, make it 100% Numba-complient
- Reduce number of uniform variable access. Maybe Uniform Array Object?
- Separate meshes by layer in list/array so we don't have to go over all objects. Alternatively, consider multi-layed meshes
numba/numba#6522 numba/numba#4830
If you are getting this error when you try creating a context (most likely from moderngl.create_context()):
Exception: (detect) glXGetCurrentContext: cannot detect OpenGL context
Do the following:
- List all the vailable drivers
ubuntu-drivers devices
Pick the latest one that is compatible an run:
sudo apt install nvidia-driver-name
Then Reboot
sudo reboot
Then update the system
sudo apt update
sudo apt upgrade
Install the mesa drivers
sudo apt install mesa-utils
And reboot again
sudo reboot
---
title: Animal example
---
classDiagram
note "From Duck till Zebra"
Animal <|-- Duck
note for Duck "can fly\ncan swim\ncan dive\ncan help in debugging"
Animal <|-- Fish
Animal <|-- Zebra
Scene : render()
Entity : +int age
Animal : +String gender
Animal: +render()
Animal: +mate()
class Duck{
+String beakColor
+swim()
+quack()
}
class Fish{
-int sizeInFeet
-canEat()
}
class Zebra{
+bool is_wild
+run()
}