basilisk-engine 0.1.43__py3-none-any.whl → 0.1.45__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 (98) hide show
  1. basilisk/__init__.py +26 -26
  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 +225 -225
  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 +53 -53
  18. basilisk/draw/draw.py +100 -100
  19. basilisk/draw/draw_handler.py +181 -178
  20. basilisk/draw/font_renderer.py +28 -28
  21. basilisk/engine.py +168 -169
  22. basilisk/generic/abstract_bvh.py +15 -15
  23. basilisk/generic/abstract_custom.py +133 -133
  24. basilisk/generic/collisions.py +70 -70
  25. basilisk/generic/input_validation.py +82 -82
  26. basilisk/generic/math.py +17 -17
  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/__init__.py +0 -0
  34. basilisk/input/mouse.py +62 -0
  35. basilisk/input/path.py +14 -0
  36. basilisk/input_output/IO_handler.py +91 -91
  37. basilisk/input_output/clock.py +49 -49
  38. basilisk/input_output/keys.py +43 -43
  39. basilisk/input_output/mouse.py +90 -90
  40. basilisk/input_output/path.py +14 -14
  41. basilisk/mesh/cube.py +33 -33
  42. basilisk/mesh/mesh.py +233 -233
  43. basilisk/mesh/mesh_from_data.py +150 -150
  44. basilisk/mesh/model.py +271 -271
  45. basilisk/mesh/narrow_aabb.py +89 -89
  46. basilisk/mesh/narrow_bvh.py +91 -91
  47. basilisk/mesh/narrow_primative.py +23 -23
  48. basilisk/nodes/helper.py +28 -28
  49. basilisk/nodes/node.py +709 -709
  50. basilisk/nodes/node_handler.py +97 -97
  51. basilisk/particles/particle_handler.py +64 -64
  52. basilisk/particles/particle_renderer.py +93 -93
  53. basilisk/physics/impulse.py +112 -112
  54. basilisk/physics/physics_body.py +43 -43
  55. basilisk/physics/physics_engine.py +35 -35
  56. basilisk/render/batch.py +103 -103
  57. basilisk/render/bloom.py +117 -117
  58. basilisk/render/camera.py +260 -260
  59. basilisk/render/chunk.py +113 -113
  60. basilisk/render/chunk_handler.py +167 -167
  61. basilisk/render/frame.py +130 -130
  62. basilisk/render/framebuffer.py +192 -192
  63. basilisk/render/image.py +120 -120
  64. basilisk/render/image_handler.py +120 -120
  65. basilisk/render/light.py +96 -96
  66. basilisk/render/light_handler.py +58 -58
  67. basilisk/render/material.py +232 -232
  68. basilisk/render/material_handler.py +133 -133
  69. basilisk/render/post_process.py +180 -180
  70. basilisk/render/shader.py +135 -135
  71. basilisk/render/shader_handler.py +109 -109
  72. basilisk/render/sky.py +119 -119
  73. basilisk/scene.py +287 -287
  74. basilisk/shaders/batch.frag +291 -293
  75. basilisk/shaders/batch.vert +117 -117
  76. basilisk/shaders/bloom_downsample.frag +23 -23
  77. basilisk/shaders/bloom_frame.frag +25 -0
  78. basilisk/shaders/bloom_upsample.frag +33 -33
  79. basilisk/shaders/crt.frag +34 -34
  80. basilisk/shaders/draw.frag +27 -27
  81. basilisk/shaders/draw.vert +25 -25
  82. basilisk/shaders/filter.frag +22 -22
  83. basilisk/shaders/frame.frag +13 -13
  84. basilisk/shaders/frame.vert +13 -13
  85. basilisk/shaders/frame_hdr.frag +27 -27
  86. basilisk/shaders/geometry.frag +10 -10
  87. basilisk/shaders/geometry.vert +41 -41
  88. basilisk/shaders/normal.frag +62 -62
  89. basilisk/shaders/normal.vert +96 -96
  90. basilisk/shaders/particle.frag +81 -81
  91. basilisk/shaders/particle.vert +86 -86
  92. basilisk/shaders/sky.frag +23 -23
  93. basilisk/shaders/sky.vert +13 -13
  94. {basilisk_engine-0.1.43.dist-info → basilisk_engine-0.1.45.dist-info}/METADATA +89 -89
  95. basilisk_engine-0.1.45.dist-info/RECORD +115 -0
  96. {basilisk_engine-0.1.43.dist-info → basilisk_engine-0.1.45.dist-info}/WHEEL +1 -1
  97. basilisk_engine-0.1.43.dist-info/RECORD +0 -111
  98. {basilisk_engine-0.1.43.dist-info → basilisk_engine-0.1.45.dist-info}/top_level.txt +0 -0
basilisk/render/bloom.py CHANGED
@@ -1,118 +1,118 @@
1
- import moderngl as mgl
2
- import glm
3
- from .framebuffer import Framebuffer
4
- from .shader import Shader
5
-
6
-
7
- class Bloom:
8
- def __init__(self, frame):
9
- self.engine = frame.engine
10
- self.ctx = self.engine.ctx
11
- self.frame = frame
12
-
13
- # Load bloom tools
14
- self.downsample_shader = Shader(self.engine, self.engine.root + '/shaders/frame.vert', self.engine.root + '/shaders/bloom_downsample.frag')
15
- self.upsample_shader = Shader(self.engine, self.engine.root + '/shaders/frame.vert', self.engine.root + '/shaders/bloom_upsample.frag')
16
-
17
- self.downsample_vao = self.ctx.vertex_array(self.downsample_shader.program, [(self.frame.vbo, '3f 2f', 'in_position', 'in_uv')], skip_errors=True)
18
- self.upsample_vao = self.ctx.vertex_array(self.upsample_shader.program, [(self.frame.vbo, '3f 2f', 'in_position', 'in_uv')], skip_errors=True)
19
-
20
- self.upsample_buffers = []
21
- self.downsample_buffers = []
22
- self.generate_bloom_buffers()
23
-
24
- def render(self) -> None:
25
- """
26
- GPU downsamples and upsamples the bloom texture to blur it
27
- """
28
-
29
- self.clear()
30
-
31
- n = self.engine.config.bloom_quality
32
-
33
-
34
- self.ctx.enable(mgl.BLEND)
35
- self.ctx.blend_func = mgl.ADDITIVE_BLENDING
36
-
37
- # Render the screen's bloom texture to a local buffer
38
- bloom_texture = self.frame.input_buffer.color_attachments[1]
39
- self.downsample_shader.bind(bloom_texture, 'screenTexture', 0)
40
- self.downsample_shader.write(glm.ivec2(bloom_texture.size), 'textureSize')
41
- self.downsample_buffers[0].clear()
42
- self.downsample_buffers[0].use()
43
- self.downsample_vao.render()
44
-
45
- for i in range(0, n):
46
- self.downsample(self.downsample_buffers[i], self.downsample_buffers[i + 1])
47
-
48
- self.upsample(self.downsample_buffers[n - 1], self.downsample_buffers[n], self.upsample_buffers[n])
49
- for i in range(n - 1, -1, -1):
50
- self.upsample(self.upsample_buffers[i + 1], self.downsample_buffers[i], self.upsample_buffers[i])
51
-
52
- self.ctx.disable(mgl.BLEND)
53
-
54
- def downsample(self, source: Framebuffer, dest: Framebuffer) -> None:
55
- """
56
-
57
- """
58
-
59
- # Bind the source texture to the shader
60
-
61
- if isinstance(source, Framebuffer): texture = source.texture
62
- else: texture = source
63
-
64
- self.downsample_shader.bind(texture, 'screenTexture', 0)
65
- self.downsample_shader.write(glm.ivec2(source.size), 'textureSize')
66
-
67
- # Clear and use the destination fbo
68
- dest.use()
69
- dest.clear()
70
-
71
- # Render using the downsample vao (2x2 box filter)
72
- self.downsample_vao.render()
73
-
74
- def upsample(self, low: Framebuffer, high: Framebuffer, dest: Framebuffer) -> None:
75
- """
76
-
77
- """
78
-
79
- # Bind the source texture to the shader
80
- self.upsample_shader.bind(high.texture, 'highTexture', 0)
81
- self.upsample_shader.bind(low.texture, 'lowTexture', 1)
82
- self.upsample_shader.write(glm.ivec2(low.size), 'textureSize')
83
-
84
- # Clear and use the destination fbo
85
- dest.use()
86
- dest.clear()
87
-
88
- # Render using the upsample vao (3x3 tent filter)
89
- self.upsample_vao.render()
90
-
91
- return dest
92
-
93
- def generate_bloom_buffers(self) -> None:
94
- """
95
- Generates n buffers for down/up sampling
96
- """
97
-
98
- n = self.engine.config.bloom_quality
99
- size = self.frame.input_buffer.size
100
-
101
- self.downsample_buffers = []
102
- self.upsample_buffers = []
103
-
104
- for i in range(n + 1):
105
- downsample_fbo = Framebuffer(self.engine, size=(max(size[0] // (2 ** (i)), 1), max(size[1] // (2 ** (i)), 1)))
106
- upsample_fbo = Framebuffer(self.engine, size=(max(size[0] // (2 ** (i)), 1), max(size[1] // (2 ** (i)), 1)))
107
-
108
- self.downsample_buffers.append(downsample_fbo)
109
- self.upsample_buffers.append(upsample_fbo)
110
-
111
- def clear(self):
112
- for buffer in self.upsample_buffers + self.downsample_buffers:
113
- buffer.clear()
114
-
115
- @property
116
- def fbo(self): return self.upsample_buffers[0]
117
- @property
1
+ import moderngl as mgl
2
+ import glm
3
+ from .framebuffer import Framebuffer
4
+ from .shader import Shader
5
+
6
+
7
+ class Bloom:
8
+ def __init__(self, frame):
9
+ self.engine = frame.engine
10
+ self.ctx = self.engine.ctx
11
+ self.frame = frame
12
+
13
+ # Load bloom tools
14
+ self.downsample_shader = Shader(self.engine, self.engine.root + '/shaders/frame.vert', self.engine.root + '/shaders/bloom_downsample.frag')
15
+ self.upsample_shader = Shader(self.engine, self.engine.root + '/shaders/frame.vert', self.engine.root + '/shaders/bloom_upsample.frag')
16
+
17
+ self.downsample_vao = self.ctx.vertex_array(self.downsample_shader.program, [(self.frame.vbo, '3f 2f', 'in_position', 'in_uv')], skip_errors=True)
18
+ self.upsample_vao = self.ctx.vertex_array(self.upsample_shader.program, [(self.frame.vbo, '3f 2f', 'in_position', 'in_uv')], skip_errors=True)
19
+
20
+ self.upsample_buffers = []
21
+ self.downsample_buffers = []
22
+ self.generate_bloom_buffers()
23
+
24
+ def render(self) -> None:
25
+ """
26
+ GPU downsamples and upsamples the bloom texture to blur it
27
+ """
28
+
29
+ self.clear()
30
+
31
+ n = self.engine.config.bloom_quality
32
+
33
+
34
+ self.ctx.enable(mgl.BLEND)
35
+ self.ctx.blend_func = mgl.ADDITIVE_BLENDING
36
+
37
+ # Render the screen's bloom texture to a local buffer
38
+ bloom_texture = self.frame.input_buffer.color_attachments[1]
39
+ self.downsample_shader.bind(bloom_texture, 'screenTexture', 0)
40
+ self.downsample_shader.write(glm.ivec2(bloom_texture.size), 'textureSize')
41
+ self.downsample_buffers[0].clear()
42
+ self.downsample_buffers[0].use()
43
+ self.downsample_vao.render()
44
+
45
+ for i in range(0, n):
46
+ self.downsample(self.downsample_buffers[i], self.downsample_buffers[i + 1])
47
+
48
+ self.upsample(self.downsample_buffers[n - 1], self.downsample_buffers[n], self.upsample_buffers[n])
49
+ for i in range(n - 1, -1, -1):
50
+ self.upsample(self.upsample_buffers[i + 1], self.downsample_buffers[i], self.upsample_buffers[i])
51
+
52
+ self.ctx.disable(mgl.BLEND)
53
+
54
+ def downsample(self, source: Framebuffer, dest: Framebuffer) -> None:
55
+ """
56
+
57
+ """
58
+
59
+ # Bind the source texture to the shader
60
+
61
+ if isinstance(source, Framebuffer): texture = source.texture
62
+ else: texture = source
63
+
64
+ self.downsample_shader.bind(texture, 'screenTexture', 0)
65
+ self.downsample_shader.write(glm.ivec2(source.size), 'textureSize')
66
+
67
+ # Clear and use the destination fbo
68
+ dest.use()
69
+ dest.clear()
70
+
71
+ # Render using the downsample vao (2x2 box filter)
72
+ self.downsample_vao.render()
73
+
74
+ def upsample(self, low: Framebuffer, high: Framebuffer, dest: Framebuffer) -> None:
75
+ """
76
+
77
+ """
78
+
79
+ # Bind the source texture to the shader
80
+ self.upsample_shader.bind(high.texture, 'highTexture', 0)
81
+ self.upsample_shader.bind(low.texture, 'lowTexture', 1)
82
+ self.upsample_shader.write(glm.ivec2(low.size), 'textureSize')
83
+
84
+ # Clear and use the destination fbo
85
+ dest.use()
86
+ dest.clear()
87
+
88
+ # Render using the upsample vao (3x3 tent filter)
89
+ self.upsample_vao.render()
90
+
91
+ return dest
92
+
93
+ def generate_bloom_buffers(self) -> None:
94
+ """
95
+ Generates n buffers for down/up sampling
96
+ """
97
+
98
+ n = self.engine.config.bloom_quality
99
+ size = self.frame.input_buffer.size
100
+
101
+ self.downsample_buffers = []
102
+ self.upsample_buffers = []
103
+
104
+ for i in range(n + 1):
105
+ downsample_fbo = Framebuffer(self.engine, size=(max(size[0] // (2 ** (i)), 1), max(size[1] // (2 ** (i)), 1)))
106
+ upsample_fbo = Framebuffer(self.engine, size=(max(size[0] // (2 ** (i)), 1), max(size[1] // (2 ** (i)), 1)))
107
+
108
+ self.downsample_buffers.append(downsample_fbo)
109
+ self.upsample_buffers.append(upsample_fbo)
110
+
111
+ def clear(self):
112
+ for buffer in self.upsample_buffers + self.downsample_buffers:
113
+ buffer.clear()
114
+
115
+ @property
116
+ def fbo(self): return self.upsample_buffers[0]
117
+ @property
118
118
  def texture(self): return self.fbo.texture