basilisk-engine 0.1.42__py3-none-any.whl → 0.1.43__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 +178 -178
  20. basilisk/draw/font_renderer.py +28 -28
  21. basilisk/engine.py +169 -171
  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_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 +90 -90
  37. basilisk/input_output/path.py +14 -14
  38. basilisk/mesh/cube.py +33 -33
  39. basilisk/mesh/mesh.py +233 -233
  40. basilisk/mesh/mesh_from_data.py +150 -150
  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 +709 -709
  47. basilisk/nodes/node_handler.py +97 -97
  48. basilisk/particles/particle_handler.py +64 -64
  49. basilisk/particles/particle_renderer.py +93 -93
  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 -103
  54. basilisk/render/bloom.py +118 -124
  55. basilisk/render/camera.py +260 -260
  56. basilisk/render/chunk.py +113 -108
  57. basilisk/render/chunk_handler.py +167 -167
  58. basilisk/render/frame.py +130 -128
  59. basilisk/render/framebuffer.py +192 -212
  60. basilisk/render/image.py +120 -120
  61. basilisk/render/image_handler.py +120 -120
  62. basilisk/render/light.py +96 -96
  63. basilisk/render/light_handler.py +58 -58
  64. basilisk/render/material.py +232 -232
  65. basilisk/render/material_handler.py +133 -133
  66. basilisk/render/post_process.py +180 -180
  67. basilisk/render/shader.py +135 -134
  68. basilisk/render/shader_handler.py +109 -94
  69. basilisk/render/sky.py +119 -121
  70. basilisk/scene.py +287 -288
  71. basilisk/shaders/batch.frag +293 -293
  72. basilisk/shaders/batch.vert +117 -117
  73. basilisk/shaders/bloom_downsample.frag +23 -42
  74. basilisk/shaders/bloom_upsample.frag +33 -33
  75. basilisk/shaders/crt.frag +34 -34
  76. basilisk/shaders/draw.frag +27 -27
  77. basilisk/shaders/draw.vert +25 -25
  78. basilisk/shaders/filter.frag +22 -22
  79. basilisk/shaders/frame.frag +13 -13
  80. basilisk/shaders/frame.vert +13 -13
  81. basilisk/shaders/frame_hdr.frag +27 -27
  82. basilisk/shaders/geometry.frag +10 -10
  83. basilisk/shaders/geometry.vert +41 -41
  84. basilisk/shaders/normal.frag +62 -62
  85. basilisk/shaders/normal.vert +96 -96
  86. basilisk/shaders/particle.frag +81 -81
  87. basilisk/shaders/particle.vert +86 -86
  88. basilisk/shaders/sky.frag +23 -23
  89. basilisk/shaders/sky.vert +13 -13
  90. {basilisk_engine-0.1.42.dist-info → basilisk_engine-0.1.43.dist-info}/METADATA +89 -89
  91. basilisk_engine-0.1.43.dist-info/RECORD +111 -0
  92. {basilisk_engine-0.1.42.dist-info → basilisk_engine-0.1.43.dist-info}/WHEEL +1 -1
  93. basilisk/input/__init__.py +0 -0
  94. basilisk/input/mouse.py +0 -62
  95. basilisk/input/path.py +0 -14
  96. basilisk/shaders/bloom_frame.frag +0 -25
  97. basilisk_engine-0.1.42.dist-info/RECORD +0 -115
  98. {basilisk_engine-0.1.42.dist-info → basilisk_engine-0.1.43.dist-info}/top_level.txt +0 -0
basilisk/render/bloom.py CHANGED
@@ -1,124 +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.engine.shader_handler.add(self.downsample_shader)
18
- self.engine.shader_handler.add(self.upsample_shader)
19
-
20
- self.downsample_vao = self.ctx.vertex_array(self.downsample_shader.program, [(self.frame.vbo, '3f 2f', 'in_position', 'in_uv')], skip_errors=True)
21
- self.upsample_vao = self.ctx.vertex_array(self.upsample_shader.program, [(self.frame.vbo, '3f 2f', 'in_position', 'in_uv')], skip_errors=True)
22
-
23
- self.generate_bloom_buffers()
24
-
25
- def render(self) -> None:
26
- """
27
- GPU downsamples and upsamples the bloom texture to blur it
28
- """
29
-
30
- self.clear()
31
-
32
- n = self.engine.config.bloom_quality
33
-
34
-
35
- self.ctx.enable(mgl.BLEND)
36
- self.ctx.blend_func = mgl.ADDITIVE_BLENDING
37
-
38
- self.downsample(self.frame.input_buffer.color_attachments[1], getattr(self, f'bloom_buffer_{0}'))
39
- for i in range(0, n):
40
- self.downsample(getattr(self, f'bloom_buffer_{i}'), getattr(self, f'bloom_buffer_{i + 1}'))
41
-
42
- self.upsample(getattr(self, f'bloom_buffer_{n - 1}'), getattr(self, f'bloom_buffer_{n}'), getattr(self, f'upscale_buffer_{n}'))
43
- for i in range(n - 1, -1, -1):
44
- self.upsample(getattr(self, f'upscale_buffer_{i + 1}'), getattr(self, f'bloom_buffer_{i}'), getattr(self, f'upscale_buffer_{i}'))
45
-
46
- self.ctx.disable(mgl.BLEND)
47
-
48
- def downsample(self, source: Framebuffer, dest: Framebuffer) -> None:
49
- """
50
-
51
- """
52
-
53
- # Bind the source texture to the shader
54
-
55
- if isinstance(source, Framebuffer): texture = source.texture
56
- else: texture = source
57
-
58
- self.downsample_shader.bind(texture, 'screenTexture', 0)
59
- self.downsample_shader.write('textureSize', glm.ivec2(source.size))
60
-
61
- # Clear and use the destination fbo
62
- dest.use()
63
- dest.clear()
64
-
65
- # Render using the downsample vao (2x2 box filter)
66
- self.downsample_vao.render()
67
-
68
- def upsample(self, low: Framebuffer, high: Framebuffer, dest: Framebuffer) -> None:
69
- """
70
-
71
- """
72
-
73
- # Bind the source texture to the shader
74
- self.upsample_shader.bind(high.texture, 'highTexture', 0)
75
- self.upsample_shader.bind(low.texture, 'lowTexture', 1)
76
- self.upsample_shader.write('textureSize', glm.ivec2(low.size))
77
-
78
- # Clear and use the destination fbo
79
- dest.use()
80
- dest.clear()
81
-
82
- # Render using the upsample vao (3x3 tent filter)
83
- self.upsample_vao.render()
84
-
85
- return dest
86
-
87
- def generate_bloom_buffers(self) -> None:
88
- """
89
- Generates n buffers for down/up sampling
90
- """
91
-
92
- n = self.engine.config.bloom_quality
93
- size = self.frame.input_buffer.size
94
-
95
- for i in range(100):
96
- try:
97
- getattr(self, f'bloom_buffer_{i}').__del__()
98
- getattr(self, f'upscale_buffer_{i}').__del__()
99
- except:
100
- break
101
-
102
- for i in range(n + 1):
103
- fbo = Framebuffer(self.engine, size=(max(size[0] // (2 ** (i)), 1), max(size[1] // (2 ** (i)), 1)))
104
- fbo.texture.repeat_x = False
105
- fbo.texture.repeat_y = False
106
- setattr(self, f'bloom_buffer_{i}', fbo)
107
-
108
- fbo = Framebuffer(self.engine, size=(max(size[0] // (2 ** (i)), 1), max(size[1] // (2 ** (i)), 1)))
109
- fbo.texture.repeat_x = False
110
- fbo.texture.repeat_y = False
111
- setattr(self, f'upscale_buffer_{i}', fbo)
112
-
113
- def clear(self):
114
- for i in range(100):
115
- try:
116
- getattr(self, f'bloom_buffer_{i}').clear()
117
- getattr(self, f'upscale_buffer_{i}').clear()
118
- except:
119
- break
120
-
121
- @property
122
- def texture(self): return getattr(self, f'upscale_buffer_0').texture
123
- @property
124
- def fbo(self): return getattr(self, f'upscale_buffer_0')
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
+ def texture(self): return self.fbo.texture