basilisk-engine 0.1.44__py3-none-any.whl → 0.1.46__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.

@@ -44,10 +44,11 @@ class DrawHandler():
44
44
  if not self.draw_data: return
45
45
 
46
46
  self.ctx.enable(mgl.BLEND)
47
- self.ctx.blend_func = mgl.ADDITIVE_BLENDING
47
+ self.ctx.disable(mgl.DEPTH_TEST)
48
+ self.ctx.blend_func = mgl.DEFAULT_BLENDING
48
49
 
49
50
  # Reverse the draw order, and convert to C-like array
50
- self.draw_data.reverse()
51
+ # self.draw_data.reverse()
51
52
  data = np.array(self.draw_data, dtype='f4')
52
53
  ratio = np.array([2 / self.engine.win_size[0], 2 / self.engine.win_size[1]])
53
54
  data[:,:2] = data[:,:2] * ratio - 1
@@ -67,6 +68,8 @@ class DrawHandler():
67
68
  self.draw_data.clear()
68
69
 
69
70
  self.ctx.disable(mgl.BLEND)
71
+ self.ctx.enable(mgl.DEPTH_TEST)
72
+
70
73
 
71
74
  def draw_rect(self, color: tuple, rect: tuple) -> None:
72
75
  """
@@ -87,8 +90,8 @@ class DrawHandler():
87
90
  v4 = (*p4, *color, 0, 0.0)
88
91
 
89
92
  self.draw_data.extend([
90
- v1, v3, v2,
91
- v2, v3, v4
93
+ v1, v2, v3,
94
+ v2, v4, v3
92
95
  ])
93
96
 
94
97
  def draw_circle(self, color: tuple, center: tuple, radius: int, resolution: int=20, outer_color: tuple=None) -> None:
@@ -118,7 +121,7 @@ class DrawHandler():
118
121
  v2 = (center[0] + radius * cos(theta), center[1] + radius * sin(theta), *outer_color, 0, 0.0)
119
122
  theta += delta_theta
120
123
  v3 = (center[0] + radius * cos(theta), center[1] + radius * sin(theta), *outer_color, 0, 0.0)
121
- self.draw_data.extend([v1, v2, v3])
124
+ self.draw_data.extend([v1, v3, v2])
122
125
 
123
126
  def draw_line(self, color: tuple, p1: tuple, p2: tuple, thickness: int=1):
124
127
  """
@@ -150,7 +153,7 @@ class DrawHandler():
150
153
  v3 = (*(p2 - perp_vector), *color, 0, 0.0)
151
154
  v4 = (*(p2 + perp_vector), *color, 0, 0.0)
152
155
 
153
- self.draw_data.extend([v1, v3, v4, v2, v1, v4])
156
+ self.draw_data.extend([v1, v4, v3, v2, v4, v1])
154
157
 
155
158
  def blit(self, image: Image, rect: tuple, alpha: float=1.0):
156
159
  rect = validate_rect(rect)
@@ -166,8 +169,8 @@ class DrawHandler():
166
169
  v4 = (*p4, *image.index, 1, 1, 1, alpha)
167
170
 
168
171
  self.draw_data.extend([
169
- v1, v3, v2,
170
- v2, v3, v4
172
+ v1, v2, v3,
173
+ v2, v4, v3
171
174
  ])
172
175
 
173
176
  def __del__(self) -> None:
basilisk/engine.py CHANGED
@@ -142,13 +142,12 @@ class Engine():
142
142
  self._update()
143
143
  if not self.running: return
144
144
 
145
-
146
145
  # Clear the screen and render the frame
147
146
  if render:
148
147
  # Render all draw calls from the past frame
149
148
  self.ctx.screen.use()
150
149
  self.draw_handler.render()
151
- self.frame.render()
150
+ self.frame.render(self.ctx.screen)
152
151
 
153
152
  # Even though we may not render here, the user might be rendering in their file, so we need to flip
154
153
  pg.display.flip()
basilisk/scene.py CHANGED
@@ -74,22 +74,24 @@ class Scene():
74
74
  self.collider_handler.resolve_collisions()
75
75
 
76
76
  # Render by default to the scene frame
77
- if render: self.render()
77
+ if render: self.render(self.engine.frame.output_buffer)
78
78
 
79
79
  def render(self, target=None) -> None:
80
80
  """
81
81
  Renders all the nodes with meshes in the scene
82
82
  """
83
83
 
84
- target.use() if target else self.frame.use(); self.frame.clear()
84
+ # target.use() if target else self.frame.use(); self.frame.clear()
85
+ self.frame.use()
86
+ self.frame.clear()
85
87
  self.engine.shader_handler.write(self)
86
88
  self.particle.render()
87
89
  self.node_handler.render()
88
90
  if self.sky: self.sky.render()
89
91
 
90
- if target: return
92
+ self.frame.scene_render(target)
91
93
  # This will show the frame to screen on engine.update()
92
- self.frame.scene_render(self.ctx.screen)
94
+ # self.frame.scene_render(self.ctx.screen)
93
95
 
94
96
 
95
97
 
@@ -270,20 +270,23 @@ void main() {
270
270
  lightResult.diffuse *= mix(vec3(1.0), ambient_sky, 0.25);
271
271
  lightResult.diffuse *= ao;
272
272
 
273
- vec3 finalColor = albedo * 0.3 * mix(vec3(1.0), reflect_sky, mtl.metallicness);
274
- finalColor += (lightResult.diffuse + lightResult.specular + lightResult.clearcoat);
275
-
276
- // Output fragment color
277
- float brightness = dot(finalColor, vec3(0.2126, 0.7152, 0.0722)) + dot(lightResult.specular, vec3(.2)) + dot(mtl.emissiveColor, vec3(1));
278
- fragColor = vec4(finalColor + mtl.emissiveColor, 1.0);
279
-
280
- normalTexture = vec4(abs(N), 1.0);
273
+ vec3 finalColor = lightResult.diffuse + lightResult.specular + lightResult.clearcoat;
281
274
 
275
+ float brightness = dot(finalColor, vec3(0.2126, 0.7152, 0.0722)) + dot(lightResult.specular, vec3(.15)) + dot(mtl.emissiveColor, vec3(1));
282
276
  // Filter out bright pixels for bloom
283
- if (brightness > 0.5) {
284
- bloomColor = vec4(fragColor.rgb, 1.0);
277
+ float threshold = 0.5;
278
+ if (brightness > threshold) {
279
+ bloomColor = vec4(max(finalColor + mtl.emissiveColor - threshold, 0.0), 1.0);
285
280
  }
286
281
  else{
287
282
  bloomColor = vec4(0.0, 0.0, 0.0, 1.0);
288
283
  }
284
+
285
+
286
+ // Output fragment color
287
+ finalColor += albedo * 0.3 * mix(vec3(1.0), reflect_sky, mtl.metallicness) + mtl.emissiveColor;
288
+ fragColor = vec4(finalColor, 1.0);
289
+
290
+ normalTexture = vec4(abs(N), 1.0);
291
+
289
292
  }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: basilisk-engine
3
- Version: 0.1.44
3
+ Version: 0.1.46
4
4
  Summary: Python 3D Framework
5
5
  Home-page: https://basilisk-website.vercel.app/
6
6
  Author: Name
@@ -1,7 +1,7 @@
1
1
  basilisk/__init__.py,sha256=23OM1kiXMU44J2TVp66efVSrbQAeiuTDmcdhNAftFfY,1134
2
2
  basilisk/config.py,sha256=Ajm3BjCryuX5bmJglqRZDR1SjE0sDjTbulta5GZ67hA,1712
3
- basilisk/engine.py,sha256=xuah50P1y6fgllWvi75pLtDL2plf-GGSoZY4lQFLdSo,6002
4
- basilisk/scene.py,sha256=3grqRcytDCplwAMOmc7lIJOzKzQUtSEWwk94tpj4W4Q,12223
3
+ basilisk/engine.py,sha256=rUI4DCeCFCMPBxd-A3DSZKHXu-CVb1I3F5nJ6MhNrU4,6016
4
+ basilisk/scene.py,sha256=tb7SyK_BaG5JXqKFAifT3nSx0dNS7-zX4RSEUE-2uX8,12324
5
5
  basilisk/audio/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
6
  basilisk/audio/sound.py,sha256=h2dQ3IKb_SRKNZqNuk-fdNg_Xfz0P7sqEXA33qiBXG4,692
7
7
  basilisk/bsk_assets/Roboto-Regular.ttf,sha256=kqYnZjMRQMpbyLulIChCLSdgYa1XF8GsUIoRi2Gcauw,168260
@@ -27,7 +27,7 @@ basilisk/collisions/narrow/line_intersections.py,sha256=hZCXAeAGbs9adGraa6tHUOli
27
27
  basilisk/collisions/narrow/sutherland_hodgman.py,sha256=8FOrqxCApsQTmw4n_meSaLIzc5s_dD4tMJTHahzaZ-A,3065
28
28
  basilisk/draw/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
29
29
  basilisk/draw/draw.py,sha256=bbmx_q8GyDhWELDBTfy16e7Y-22amVyoTcf8orwveKw,3520
30
- basilisk/draw/draw_handler.py,sha256=GzCKEkW7tUsufIF0ZaQYVrgY5LkZDBJD519_iduurgc,6105
30
+ basilisk/draw/draw_handler.py,sha256=9ueMTCPwvO8u5I9gJborCbawxebHnkfxou73ZLJidCk,6188
31
31
  basilisk/draw/font_renderer.py,sha256=esCaQ4rJ3kjeIZ0xr510k2JIE_K9bshO9_OkByYNo_0,1064
32
32
  basilisk/generic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
33
33
  basilisk/generic/abstract_bvh.py,sha256=BZv9mgkUpNu3bcqmn9I60VqMZocebeyUOoER2Wdky3g,368
@@ -41,9 +41,6 @@ basilisk/generic/quat.py,sha256=gEqvQvNwx5K7e0zqY0TFTAFtNFSkOatleoP9HQQ-xyk,5102
41
41
  basilisk/generic/quat_methods.py,sha256=SO18ush7pfeGUmncPy4i5nsab1e_zkQkY6zT1bAsSDY,234
42
42
  basilisk/generic/raycast_result.py,sha256=waVmS9fYhLoz_G_DU2Mj7896rF0Xy_59JVGALq-kD7g,783
43
43
  basilisk/generic/vec3.py,sha256=AtPSz2S1ZqAm-sZUz4phB09hgFxMIsJnQdU1wmxiOBw,5137
44
- basilisk/input/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
45
- basilisk/input/mouse.py,sha256=waXJLIyka4IVe3W2WH5SNNxiOQRouYo3NxafP3fg0qg,1937
46
- basilisk/input/path.py,sha256=GpFYe3Uu6VZAuKh9Q2nQM1H8immiCp_snznLG9FKcvU,441
47
44
  basilisk/input_output/IO_handler.py,sha256=DDQEjmIHzWo99rk1riT_QJKGQ5F8-lOilmchRXeQuYI,2822
48
45
  basilisk/input_output/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
49
46
  basilisk/input_output/clock.py,sha256=GHTagpPyPlLjWyonaHV8M-nPCcdHcHL4JobbuUOxYf0,1462
@@ -87,12 +84,10 @@ basilisk/render/post_process.py,sha256=QAIwNccycEJqA1UVGKUqwVus11sJX9qm3Mjl0gdGY
87
84
  basilisk/render/shader.py,sha256=xh2p8kPFCPD479wyf6X3NUsgGfy3sbnSypNqFd8k83c,4870
88
85
  basilisk/render/shader_handler.py,sha256=Tk-wbejg7UhXyq1c9pHjb-590zqAakNLCZu2ZbKCCAs,3260
89
86
  basilisk/render/sky.py,sha256=2HWv8_2tfJfCiLz6WVE3BnWSAi4Ttulks5l-IF9YG3g,4747
90
- basilisk/render/tempCodeRunnerFile.py,sha256=ep1eVZzUd30SDCNE5l3OJsqp2fW2LEXrjYGW31AMWgw,10
91
87
  basilisk/shaders/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
92
- basilisk/shaders/batch.frag,sha256=ATxjwTy-bhf5O1eEhmfh9uf4FjFUQ4IlYA4V6W1_TZw,9437
88
+ basilisk/shaders/batch.frag,sha256=F_rGIQaY5jfep3WTCNY9Q3uLfu2lNuUSZZR7GZy_HCk,9514
93
89
  basilisk/shaders/batch.vert,sha256=LYzcqcwCyCpnxF5V-ilx79HU2cYz66hylBmZChcVmos,5555
94
90
  basilisk/shaders/bloom_downsample.frag,sha256=rIQTnBkSNiTF57D-yvWwQv_3_PmxznquHdlma8ua8Uw,685
95
- basilisk/shaders/bloom_frame.frag,sha256=Y0m8DnQKz3G9FKq7VjCGrVXZw2vSigyGX7-tlxZN0lE,567
96
91
  basilisk/shaders/bloom_upsample.frag,sha256=Pe1AupjM2OCMieW7oEYHoEx2LhbPtbpwcylruF5Ntm4,1156
97
92
  basilisk/shaders/crt.frag,sha256=ss6xhXwwOH9bXEhqyim--K4o1BOo1Wwq6tGAwjpRHEQ,1043
98
93
  basilisk/shaders/draw.frag,sha256=rcPmGMh850M1ypcFNlJCyFWxfZ739lVNl6OPTxPIYIE,605
@@ -109,7 +104,7 @@ basilisk/shaders/particle.frag,sha256=IskhyXelHs9GqABKwTYSwooWL0nP-nkmXl6a5iT6Q3
109
104
  basilisk/shaders/particle.vert,sha256=oiBz6S_2dzqioAhyzVYT1ZKOED4h4R6IoP-UJ8KRHhU,3227
110
105
  basilisk/shaders/sky.frag,sha256=dJRdSbg16aZYYjxdoG1spVQRIVBGNVdyX0rqp4ER6v8,556
111
106
  basilisk/shaders/sky.vert,sha256=oAnrknEgsd9MawE_zx8P0u9nUSFEBYBg5ykBmWpqZ_g,332
112
- basilisk_engine-0.1.44.dist-info/METADATA,sha256=JwByp7SjP1rOiHU8QqqLsK4UYbF-Z_0uxd3h4LJxzqo,3793
113
- basilisk_engine-0.1.44.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
114
- basilisk_engine-0.1.44.dist-info/top_level.txt,sha256=enlSYSf7CUyAly1jmUCNNGInTbaFUjGk4SKwyckZQkw,9
115
- basilisk_engine-0.1.44.dist-info/RECORD,,
107
+ basilisk_engine-0.1.46.dist-info/METADATA,sha256=EKpZDCMzIALAWkQjmiKgUDcgLJdDdRg68dq2GL32rfY,3793
108
+ basilisk_engine-0.1.46.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
109
+ basilisk_engine-0.1.46.dist-info/top_level.txt,sha256=enlSYSf7CUyAly1jmUCNNGInTbaFUjGk4SKwyckZQkw,9
110
+ basilisk_engine-0.1.46.dist-info/RECORD,,
File without changes
basilisk/input/mouse.py DELETED
@@ -1,62 +0,0 @@
1
- import pygame as pg
2
-
3
-
4
- class Mouse():
5
- def __init__(self, grab=True):
6
- self.x, self.y = pg.mouse.get_pos()
7
- self.buttons = pg.mouse.get_pressed()
8
- self.previous_buttons = pg.mouse.get_pressed()
9
- self.grab = grab
10
-
11
- def update(self, events):
12
- """
13
- Updates all mouse state variables.
14
- Checks for mouse-related events.
15
- """
16
-
17
- self.x, self.y = pg.mouse.get_pos()
18
- self.previous_buttons = self.buttons
19
- self.buttons = pg.mouse.get_pressed()
20
-
21
- for event in events:
22
- if event.type == pg.KEYUP:
23
- if event.key == pg.K_ESCAPE and self.grab:
24
- # Unlock mouse
25
- pg.event.set_grab(False)
26
- pg.mouse.set_visible(True)
27
- if event.type == pg.MOUSEBUTTONUP and self.grab:
28
- # Lock mouse
29
- pg.event.set_grab(True)
30
- pg.mouse.set_visible(False)
31
-
32
- def set_pos(self, x, y):
33
- """Set the mouse position"""
34
- pg.mouse.set_pos(x, y)
35
-
36
- @property
37
- def click(self): return self.buttons[0] and not self.previous_buttons[0]
38
- @property
39
- def left_click(self): return self.buttons[0] and not self.previous_buttons[0]
40
- @property
41
- def middle_click(self): return self.buttons[1] and not self.previous_buttons[1]
42
- @property
43
- def right_click(self): return self.buttons[2] and not self.previous_buttons[2]
44
- @property
45
- def left_down(self): return self.buttons[0]
46
- @property
47
- def middle_down(self): return self.buttons[1]
48
- @property
49
- def right_down(self): return self.buttons[2]
50
-
51
- @property
52
- def grab(self): return self._grab
53
-
54
- @grab.setter
55
- def grab(self, value):
56
- self._grab = value
57
- if self._grab:
58
- pg.event.set_grab(True)
59
- pg.mouse.set_visible(False)
60
- else:
61
- pg.event.set_grab(False)
62
- pg.mouse.set_visible(True)
basilisk/input/path.py DELETED
@@ -1,14 +0,0 @@
1
- import os
2
- import sys
3
-
4
-
5
- # Credit for function: https://stackoverflow.com/questions/7674790/bundling-data-files-with-pyinstaller-onefile
6
- def get_root():
7
- """ Get absolute path to resource, works for dev and for PyInstaller """
8
- try:
9
- # PyInstaller creates a temp folder and stores path in _MEIPASS
10
- base_path = sys._MEIPASS
11
- except Exception:
12
- base_path = os.path.abspath(".")
13
-
14
- return base_path + '/basilisk'
@@ -1 +0,0 @@
1
- source[0][
@@ -1,25 +0,0 @@
1
- #version 330 core
2
-
3
- out vec4 fragColor;
4
-
5
- in vec2 uv;
6
-
7
- uniform sampler2D screenTexture;
8
- uniform sampler2D bloomTexture;
9
-
10
-
11
-
12
- void main()
13
- {
14
- const float gamma = 2.2;
15
- const float exposure = 1.2;
16
- vec3 hdrColor = texture(screenTexture, uv).rgb + texture(bloomTexture, uv).rgb / 2;
17
-
18
- // exposure tone mapping
19
- vec3 mapped = vec3(1.0) - exp(-hdrColor * exposure);
20
- // gamma correction
21
- mapped = pow(mapped, vec3(1.0 / gamma));
22
-
23
- fragColor = vec4(mapped, 1.0);
24
- //fragColor = texture(screenTexture, uv) + texture(bloomTexture, uv) / 20000.0;
25
- }