basilisk-engine 0.1.24__py3-none-any.whl → 0.1.25__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of basilisk-engine might be problematic. Click here for more details.

Files changed (90) hide show
  1. basilisk/__init__.py +15 -15
  2. basilisk/audio/sound.py +27 -27
  3. basilisk/bsk_assets/cube.obj +48 -48
  4. basilisk/collisions/broad/broad_aabb.py +102 -102
  5. basilisk/collisions/broad/broad_bvh.py +137 -137
  6. basilisk/collisions/collider.py +95 -95
  7. basilisk/collisions/collider_handler.py +224 -224
  8. basilisk/collisions/narrow/contact_manifold.py +95 -95
  9. basilisk/collisions/narrow/dataclasses.py +34 -34
  10. basilisk/collisions/narrow/deprecated.py +46 -46
  11. basilisk/collisions/narrow/epa.py +91 -91
  12. basilisk/collisions/narrow/gjk.py +66 -66
  13. basilisk/collisions/narrow/graham_scan.py +24 -24
  14. basilisk/collisions/narrow/helper.py +29 -29
  15. basilisk/collisions/narrow/line_intersections.py +106 -106
  16. basilisk/collisions/narrow/sutherland_hodgman.py +75 -75
  17. basilisk/config.py +3 -3
  18. basilisk/draw/draw.py +100 -100
  19. basilisk/draw/draw_handler.py +175 -175
  20. basilisk/draw/font_renderer.py +28 -28
  21. basilisk/engine.py +169 -169
  22. basilisk/generic/abstract_bvh.py +15 -15
  23. basilisk/generic/abstract_custom.py +133 -133
  24. basilisk/generic/collisions.py +72 -72
  25. basilisk/generic/input_validation.py +66 -66
  26. basilisk/generic/math.py +6 -6
  27. basilisk/generic/matrices.py +35 -35
  28. basilisk/generic/meshes.py +72 -72
  29. basilisk/generic/quat.py +142 -142
  30. basilisk/generic/quat_methods.py +7 -7
  31. basilisk/generic/raycast_result.py +26 -26
  32. basilisk/generic/vec3.py +143 -143
  33. basilisk/input_output/IO_handler.py +91 -91
  34. basilisk/input_output/clock.py +49 -49
  35. basilisk/input_output/keys.py +43 -43
  36. basilisk/input_output/mouse.py +89 -89
  37. basilisk/input_output/path.py +14 -14
  38. basilisk/mesh/cube.py +33 -33
  39. basilisk/mesh/mesh.py +233 -230
  40. basilisk/mesh/mesh_from_data.py +151 -131
  41. basilisk/mesh/model.py +271 -271
  42. basilisk/mesh/narrow_aabb.py +89 -89
  43. basilisk/mesh/narrow_bvh.py +91 -91
  44. basilisk/mesh/narrow_primative.py +23 -23
  45. basilisk/nodes/helper.py +28 -28
  46. basilisk/nodes/node.py +689 -686
  47. basilisk/nodes/node_handler.py +97 -97
  48. basilisk/particles/particle_handler.py +64 -64
  49. basilisk/particles/particle_renderer.py +92 -92
  50. basilisk/physics/impulse.py +112 -112
  51. basilisk/physics/physics_body.py +43 -43
  52. basilisk/physics/physics_engine.py +35 -35
  53. basilisk/render/batch.py +103 -105
  54. basilisk/render/camera.py +257 -257
  55. basilisk/render/chunk.py +106 -106
  56. basilisk/render/chunk_handler.py +165 -165
  57. basilisk/render/frame.py +95 -95
  58. basilisk/render/framebuffer.py +289 -289
  59. basilisk/render/image.py +87 -87
  60. basilisk/render/image_handler.py +120 -120
  61. basilisk/render/light.py +96 -96
  62. basilisk/render/light_handler.py +58 -58
  63. basilisk/render/material.py +219 -219
  64. basilisk/render/material_handler.py +131 -131
  65. basilisk/render/post_process.py +139 -139
  66. basilisk/render/shader.py +118 -109
  67. basilisk/render/shader_handler.py +83 -83
  68. basilisk/render/sky.py +120 -120
  69. basilisk/scene.py +279 -279
  70. basilisk/shaders/batch.frag +276 -276
  71. basilisk/shaders/batch.vert +115 -115
  72. basilisk/shaders/crt.frag +31 -31
  73. basilisk/shaders/draw.frag +22 -22
  74. basilisk/shaders/draw.vert +25 -25
  75. basilisk/shaders/filter.frag +22 -22
  76. basilisk/shaders/frame.frag +12 -12
  77. basilisk/shaders/frame.vert +13 -13
  78. basilisk/shaders/geometry.frag +8 -8
  79. basilisk/shaders/geometry.vert +41 -41
  80. basilisk/shaders/normal.frag +59 -59
  81. basilisk/shaders/normal.vert +96 -96
  82. basilisk/shaders/particle.frag +71 -71
  83. basilisk/shaders/particle.vert +84 -84
  84. basilisk/shaders/sky.frag +9 -9
  85. basilisk/shaders/sky.vert +13 -13
  86. {basilisk_engine-0.1.24.dist-info → basilisk_engine-0.1.25.dist-info}/METADATA +45 -38
  87. basilisk_engine-0.1.25.dist-info/RECORD +106 -0
  88. {basilisk_engine-0.1.24.dist-info → basilisk_engine-0.1.25.dist-info}/WHEEL +1 -1
  89. basilisk_engine-0.1.24.dist-info/RECORD +0 -106
  90. {basilisk_engine-0.1.24.dist-info → basilisk_engine-0.1.25.dist-info}/top_level.txt +0 -0
basilisk/render/frame.py CHANGED
@@ -1,96 +1,96 @@
1
- import numpy as np
2
- import moderngl as mgl
3
- from .shader import Shader
4
- from .framebuffer import Framebuffer
5
-
6
- from .post_process import PostProcess
7
-
8
- class Frame:
9
- shader: Shader=None
10
- vbo: mgl.Buffer=None
11
- vao: mgl.VertexArray=None
12
- framebuffer: mgl.Framebuffer=None
13
-
14
- def __init__(self, engine, scale: float=1.0, linear_filter: bool=False) -> None:
15
- """
16
- Basilisk render destination.
17
- Can be used to render to the screen or for headless rendering
18
- """
19
-
20
- self.engine = engine
21
- self.ctx = engine.ctx
22
-
23
- # Load framebuffer
24
- self.framebuffer = Framebuffer(self.engine, scale=scale, linear_filter=linear_filter)
25
- self.ping_pong_buffer = Framebuffer(self.engine, scale=scale, linear_filter=linear_filter)
26
-
27
- # Load Shaders
28
- self.shader = Shader(self.engine, self.engine.root + '/shaders/frame.vert', self.engine.root + '/shaders/frame.frag')
29
- self.engine.shader_handler.add(self.shader)
30
-
31
- # Load VAO
32
- self.vbo = self.ctx.buffer(np.array([[-1, -1, 0, 0, 0], [1, -1, 0, 1, 0], [1, 1, 0, 1, 1], [-1, 1, 0, 0, 1], [-1, -1, 0, 0, 0], [1, 1, 0, 1, 1]], dtype='f4'))
33
- self.vao = self.ctx.vertex_array(self.shader.program, [(self.vbo, '3f 2f', 'in_position', 'in_uv')], skip_errors=True)
34
-
35
- # TEMP TESTING
36
- self.post_processes = []
37
-
38
-
39
- def render(self) -> None:
40
- """
41
- Renders the current frame to the screen
42
- """
43
-
44
- for process in self.post_processes:
45
- self.ping_pong_buffer = process.apply(self.framebuffer, self.ping_pong_buffer)
46
-
47
- temp = self.framebuffer
48
- self.framebuffer = self.ping_pong_buffer
49
- self.ping_pong_buffer = temp
50
-
51
- self.ctx.screen.use()
52
- self.shader.program['screenTexture'] = 0
53
- self.framebuffer.texture.use(location=0)
54
- self.vao.render()
55
-
56
-
57
- def use(self) -> None:
58
- """
59
- Uses the frame as a render target
60
- """
61
-
62
- self.framebuffer.use()
63
-
64
- def add_post_process(self, post_process: PostProcess) -> PostProcess:
65
- """
66
- Add a post process to the frames post process stack
67
- """
68
-
69
- self.post_processes.append(post_process)
70
- return post_process
71
-
72
- def save(self, destination: str=None) -> None:
73
- """
74
- Saves the frame as an image to the given file destination
75
- """
76
-
77
- self.framebuffer.save(destination)
78
-
79
- def clear(self):
80
- self.framebuffer.clear()
81
-
82
- def resize(self, size: tuple[int]=None) -> None:
83
- """
84
- Resize the frame to the given size. None for window size
85
- """
86
-
87
- self.framebuffer.resize()
88
- self.ping_pong_buffer.resize()
89
-
90
- def __del__(self) -> None:
91
- """
92
- Releases memory used by the frame
93
- """
94
-
95
- if self.vbo: self.vbo.release()
1
+ import numpy as np
2
+ import moderngl as mgl
3
+ from .shader import Shader
4
+ from .framebuffer import Framebuffer
5
+
6
+ from .post_process import PostProcess
7
+
8
+ class Frame:
9
+ shader: Shader=None
10
+ vbo: mgl.Buffer=None
11
+ vao: mgl.VertexArray=None
12
+ framebuffer: mgl.Framebuffer=None
13
+
14
+ def __init__(self, engine, scale: float=1.0, linear_filter: bool=False) -> None:
15
+ """
16
+ Basilisk render destination.
17
+ Can be used to render to the screen or for headless rendering
18
+ """
19
+
20
+ self.engine = engine
21
+ self.ctx = engine.ctx
22
+
23
+ # Load framebuffer
24
+ self.framebuffer = Framebuffer(self.engine, scale=scale, linear_filter=linear_filter)
25
+ self.ping_pong_buffer = Framebuffer(self.engine, scale=scale, linear_filter=linear_filter)
26
+
27
+ # Load Shaders
28
+ self.shader = Shader(self.engine, self.engine.root + '/shaders/frame.vert', self.engine.root + '/shaders/frame.frag')
29
+ self.engine.shader_handler.add(self.shader)
30
+
31
+ # Load VAO
32
+ self.vbo = self.ctx.buffer(np.array([[-1, -1, 0, 0, 0], [1, -1, 0, 1, 0], [1, 1, 0, 1, 1], [-1, 1, 0, 0, 1], [-1, -1, 0, 0, 0], [1, 1, 0, 1, 1]], dtype='f4'))
33
+ self.vao = self.ctx.vertex_array(self.shader.program, [(self.vbo, '3f 2f', 'in_position', 'in_uv')], skip_errors=True)
34
+
35
+ # TEMP TESTING
36
+ self.post_processes = []
37
+
38
+
39
+ def render(self) -> None:
40
+ """
41
+ Renders the current frame to the screen
42
+ """
43
+
44
+ for process in self.post_processes:
45
+ self.ping_pong_buffer = process.apply(self.framebuffer, self.ping_pong_buffer)
46
+
47
+ temp = self.framebuffer
48
+ self.framebuffer = self.ping_pong_buffer
49
+ self.ping_pong_buffer = temp
50
+
51
+ self.ctx.screen.use()
52
+ self.shader.program['screenTexture'] = 0
53
+ self.framebuffer.texture.use(location=0)
54
+ self.vao.render()
55
+
56
+
57
+ def use(self) -> None:
58
+ """
59
+ Uses the frame as a render target
60
+ """
61
+
62
+ self.framebuffer.use()
63
+
64
+ def add_post_process(self, post_process: PostProcess) -> PostProcess:
65
+ """
66
+ Add a post process to the frames post process stack
67
+ """
68
+
69
+ self.post_processes.append(post_process)
70
+ return post_process
71
+
72
+ def save(self, destination: str=None) -> None:
73
+ """
74
+ Saves the frame as an image to the given file destination
75
+ """
76
+
77
+ self.framebuffer.save(destination)
78
+
79
+ def clear(self):
80
+ self.framebuffer.clear()
81
+
82
+ def resize(self, size: tuple[int]=None) -> None:
83
+ """
84
+ Resize the frame to the given size. None for window size
85
+ """
86
+
87
+ self.framebuffer.resize()
88
+ self.ping_pong_buffer.resize()
89
+
90
+ def __del__(self) -> None:
91
+ """
92
+ Releases memory used by the frame
93
+ """
94
+
95
+ if self.vbo: self.vbo.release()
96
96
  if self.vao: self.vao.release()