fractex 0.1.0__tar.gz → 0.1.2__tar.gz

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.
Files changed (42) hide show
  1. {fractex-0.1.0/fractex.egg-info → fractex-0.1.2}/PKG-INFO +1 -1
  2. {fractex-0.1.0 → fractex-0.1.2}/fractex/cli.py +2 -1
  3. {fractex-0.1.0 → fractex-0.1.2}/fractex/examples/custom_pattern.py +1 -3
  4. {fractex-0.1.0 → fractex-0.1.2}/fractex/examples/game_texture.py +3 -1
  5. {fractex-0.1.0 → fractex-0.1.2}/fractex/examples/splash.py +26 -6
  6. {fractex-0.1.0 → fractex-0.1.2}/fractex/interactive.py +15 -2
  7. {fractex-0.1.0 → fractex-0.1.2/fractex.egg-info}/PKG-INFO +1 -1
  8. {fractex-0.1.0 → fractex-0.1.2}/pyproject.toml +1 -1
  9. {fractex-0.1.0 → fractex-0.1.2}/LICENSE +0 -0
  10. {fractex-0.1.0 → fractex-0.1.2}/MANIFEST.in +0 -0
  11. {fractex-0.1.0 → fractex-0.1.2}/README.md +0 -0
  12. {fractex-0.1.0 → fractex-0.1.2}/fractex/3d.py +0 -0
  13. {fractex-0.1.0 → fractex-0.1.2}/fractex/__init__.py +0 -0
  14. {fractex-0.1.0 → fractex-0.1.2}/fractex/advanced.py +0 -0
  15. {fractex-0.1.0 → fractex-0.1.2}/fractex/core.py +0 -0
  16. {fractex-0.1.0 → fractex-0.1.2}/fractex/dynamic_textures_3d.py +0 -0
  17. {fractex-0.1.0 → fractex-0.1.2}/fractex/examples/3d.py +0 -0
  18. {fractex-0.1.0 → fractex-0.1.2}/fractex/examples/3d_integration.py +0 -0
  19. {fractex-0.1.0 → fractex-0.1.2}/fractex/examples/3d_integration_2d.py +0 -0
  20. {fractex-0.1.0 → fractex-0.1.2}/fractex/examples/__init__.py +0 -0
  21. {fractex-0.1.0 → fractex-0.1.2}/fractex/examples/_output.py +0 -0
  22. {fractex-0.1.0 → fractex-0.1.2}/fractex/examples/architecture_pattern.py +0 -0
  23. {fractex-0.1.0 → fractex-0.1.2}/fractex/examples/atmosphere.py +0 -0
  24. {fractex-0.1.0 → fractex-0.1.2}/fractex/examples/composite_material.py +0 -0
  25. {fractex-0.1.0 → fractex-0.1.2}/fractex/examples/crystal_cave.py +0 -0
  26. {fractex-0.1.0 → fractex-0.1.2}/fractex/examples/game_integration.py +0 -0
  27. {fractex-0.1.0 → fractex-0.1.2}/fractex/examples/integration.py +0 -0
  28. {fractex-0.1.0 → fractex-0.1.2}/fractex/examples/physic_integration.py +0 -0
  29. {fractex-0.1.0 → fractex-0.1.2}/fractex/examples/terrain.py +0 -0
  30. {fractex-0.1.0 → fractex-0.1.2}/fractex/examples/underwater.py +0 -0
  31. {fractex-0.1.0 → fractex-0.1.2}/fractex/examples/underwater_volkano.py +0 -0
  32. {fractex-0.1.0 → fractex-0.1.2}/fractex/geometric_patterns_3d.py +0 -0
  33. {fractex-0.1.0 → fractex-0.1.2}/fractex/simplex_noise.py +0 -0
  34. {fractex-0.1.0 → fractex-0.1.2}/fractex/texture_blending.py +0 -0
  35. {fractex-0.1.0 → fractex-0.1.2}/fractex/volume_scattering.py +0 -0
  36. {fractex-0.1.0 → fractex-0.1.2}/fractex/volume_textures.py +0 -0
  37. {fractex-0.1.0 → fractex-0.1.2}/fractex.egg-info/SOURCES.txt +0 -0
  38. {fractex-0.1.0 → fractex-0.1.2}/fractex.egg-info/dependency_links.txt +0 -0
  39. {fractex-0.1.0 → fractex-0.1.2}/fractex.egg-info/entry_points.txt +0 -0
  40. {fractex-0.1.0 → fractex-0.1.2}/fractex.egg-info/requires.txt +0 -0
  41. {fractex-0.1.0 → fractex-0.1.2}/fractex.egg-info/top_level.txt +0 -0
  42. {fractex-0.1.0 → fractex-0.1.2}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fractex
3
- Version: 0.1.0
3
+ Version: 0.1.2
4
4
  Summary: Fractal texture engine for procedural and infinite-detail textures.
5
5
  Author-email: Timur Isanov <tisanov@yahoo.com>
6
6
  License: MIT License
@@ -36,6 +36,7 @@ def main() -> None:
36
36
  parser.add_argument("--fps", type=float, default=None)
37
37
  parser.add_argument("--width", type=int, default=None)
38
38
  parser.add_argument("--height", type=int, default=None)
39
+ parser.add_argument("--speed", type=float, default=None)
39
40
  parser.add_argument("--preset", type=str, default=None)
40
41
  parser.add_argument("args", nargs=argparse.REMAINDER, help="Extra args passed to example")
41
42
  args = parser.parse_args()
@@ -62,7 +63,7 @@ def main() -> None:
62
63
  if interactive:
63
64
  forwarded.append("--interactive")
64
65
 
65
- for name in ("scale", "fps", "width", "height", "preset"):
66
+ for name in ("scale", "fps", "width", "height", "preset", "speed"):
66
67
  value = getattr(args, name)
67
68
  if value is not None:
68
69
  forwarded.extend([f"--{name}", str(value)])
@@ -58,7 +58,6 @@ class CustomPatternGenerator:
58
58
  if __name__ == "__main__":
59
59
  parser = argparse.ArgumentParser(description="Custom pattern example")
60
60
  add_interactive_args(parser)
61
- parser.add_argument("--speed", type=float, default=1.0)
62
61
  args = parser.parse_args()
63
62
 
64
63
  generator = CustomPatternGenerator()
@@ -75,8 +74,7 @@ if __name__ == "__main__":
75
74
  config = InteractiveConfig.from_args(args, title="Custom Pattern (interactive)")
76
75
 
77
76
  def render_frame(t, w, h):
78
- speed = max(0.1, args.speed)
79
- tt = t * speed * 3.0
77
+ tt = t * 3.0
80
78
  zoom = np.exp(tt * 0.03)
81
79
  zoom = min(zoom, 200.0)
82
80
  depth = (tt * 1.5) % (params.scale * 6.0)
@@ -173,6 +173,8 @@ if __name__ == "__main__":
173
173
 
174
174
  def render_frame(t, w, h):
175
175
  zoom = 1.0 + 0.5 * (1 + np.sin(t * 0.2))
176
- return texture.generate_tile(0, 0, w, h, zoom=zoom)[..., :3]
176
+ x0 = -w / (2.0 * zoom)
177
+ y0 = -h / (2.0 * zoom)
178
+ return texture.generate_tile(x0, y0, w, h, zoom=zoom)[..., :3]
177
179
 
178
180
  run_interactive(render_frame, config)
@@ -10,7 +10,7 @@ if str(ROOT) not in sys.path:
10
10
  sys.path.insert(0, str(ROOT))
11
11
 
12
12
  from fractex import FractalParams, FractalGenerator, InfiniteTexture
13
- from fractex.interactive import add_preset_arg, resolve_preset
13
+ from fractex.interactive import add_interactive_args, add_preset_arg, resolve_preset
14
14
 
15
15
 
16
16
  def main():
@@ -25,8 +25,7 @@ def main():
25
25
  parser = argparse.ArgumentParser(description="Fractex splash animation")
26
26
  parser.add_argument("preset", nargs="?", help="Preset name")
27
27
  add_preset_arg(parser, ["marble", "clouds", "wood", "lava", "water"], dest="preset_flag")
28
- parser.add_argument("--scale", type=float, default=1.0, help="Render scale multiplier")
29
- parser.add_argument("--fps", type=float, default=30.0, help="Target FPS")
28
+ add_interactive_args(parser)
30
29
  args = parser.parse_args()
31
30
 
32
31
  params = FractalParams(seed=7, base_scale=0.01, detail_level=2.0)
@@ -59,7 +58,11 @@ def main():
59
58
  dpi = fig.get_dpi()
60
59
  fig.set_size_inches(screen_width / dpi, screen_height / dpi)
61
60
  ax.axis("off")
62
- ax.set_title(f"Fractex Splash ({selected or 'auto'})")
61
+ ax.set_title("fractex")
62
+ try:
63
+ fig.canvas.manager.set_window_title("fractex")
64
+ except Exception:
65
+ pass
63
66
 
64
67
  texture = textures[presets[0]]
65
68
  width = max(64, int(screen_width * max(0.1, args.scale)))
@@ -131,8 +134,25 @@ def main():
131
134
  render_w = max(64, int(width * render_scale))
132
135
  render_h = max(64, int(height * render_scale))
133
136
 
134
- base = base_texture.generate_tile(x0, y0, render_w, render_h, zoom=base_zoom)[..., :3]
135
- detail = detail_texture.generate_tile(x1, y1, render_w, render_h, zoom=detail_zoom)[..., :3]
137
+ base_origin_x = -render_w / (2.0 * base_zoom)
138
+ base_origin_y = -render_h / (2.0 * base_zoom)
139
+ detail_origin_x = -render_w / (2.0 * detail_zoom)
140
+ detail_origin_y = -render_h / (2.0 * detail_zoom)
141
+
142
+ base = base_texture.generate_tile(
143
+ base_origin_x + x0,
144
+ base_origin_y + y0,
145
+ render_w,
146
+ render_h,
147
+ zoom=base_zoom,
148
+ )[..., :3]
149
+ detail = detail_texture.generate_tile(
150
+ detail_origin_x + x1,
151
+ detail_origin_y + y1,
152
+ render_w,
153
+ render_h,
154
+ zoom=detail_zoom,
155
+ )[..., :3]
136
156
 
137
157
  depth = 0.35 + 0.15 * np.sin(t * 0.2)
138
158
  rgb_frame = np.clip(base * (1.0 - depth) + detail * depth, 0, 1)
@@ -16,6 +16,7 @@ def add_interactive_args(parser) -> None:
16
16
  parser.add_argument("--fps", type=float, default=30.0, help="Target FPS")
17
17
  parser.add_argument("--width", type=int, default=None, help="Override width")
18
18
  parser.add_argument("--height", type=int, default=None, help="Override height")
19
+ parser.add_argument("--speed", type=float, default=1.0, help="Animation speed multiplier")
19
20
 
20
21
 
21
22
  def add_preset_arg(parser, presets, default: Optional[str] = None, dest: str = "preset") -> None:
@@ -79,6 +80,7 @@ class InteractiveConfig:
79
80
  scale: float = 1.0
80
81
  width: Optional[int] = None
81
82
  height: Optional[int] = None
83
+ speed: float = 1.0
82
84
  min_scale: float = 0.4
83
85
  max_scale: float = 1.0
84
86
  min_render: int = 64
@@ -91,6 +93,7 @@ class InteractiveConfig:
91
93
  scale=max(0.1, getattr(args, "scale", 1.0)),
92
94
  width=getattr(args, "width", None),
93
95
  height=getattr(args, "height", None),
96
+ speed=max(0.1, getattr(args, "speed", 1.0)),
94
97
  )
95
98
 
96
99
 
@@ -101,6 +104,7 @@ def run_interactive(
101
104
  try:
102
105
  import matplotlib.pyplot as plt
103
106
  from matplotlib.animation import FuncAnimation
107
+ import matplotlib as mpl
104
108
  except Exception:
105
109
  print("matplotlib is not available; cannot display interactive output.")
106
110
  return
@@ -111,12 +115,21 @@ def run_interactive(
111
115
  width = max(config.min_render, width)
112
116
  height = max(config.min_render, height)
113
117
 
118
+ mpl.rcParams["toolbar"] = "None"
114
119
  fig, ax = plt.subplots()
115
120
  dpi = fig.get_dpi()
116
121
  fig.set_size_inches(width / dpi, height / dpi)
117
122
  ax.axis("off")
118
- ax.set_title(config.title)
123
+ ax.set_title("fractex")
119
124
  fig.subplots_adjust(left=0, right=1, top=1, bottom=0)
125
+ try:
126
+ fig.canvas.manager.toolbar.setVisible(False)
127
+ except Exception:
128
+ pass
129
+ try:
130
+ fig.canvas.manager.set_window_title("fractex")
131
+ except Exception:
132
+ pass
120
133
 
121
134
  target_ms = 1000.0 / max(1.0, config.target_fps)
122
135
  render_scale = 1.0
@@ -140,7 +153,7 @@ def run_interactive(
140
153
 
141
154
  render_w = max(config.min_render, int(width * render_scale))
142
155
  render_h = max(config.min_render, int(height * render_scale))
143
- t = frame / 10.0
156
+ t = (frame / 10.0) * config.speed
144
157
  frame_img = render_frame(t, render_w, render_h)
145
158
  frame_img = resize_nearest(frame_img, width, height)
146
159
  im.set_array(_ensure_rgb(frame_img))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fractex
3
- Version: 0.1.0
3
+ Version: 0.1.2
4
4
  Summary: Fractal texture engine for procedural and infinite-detail textures.
5
5
  Author-email: Timur Isanov <tisanov@yahoo.com>
6
6
  License: MIT License
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "fractex"
7
- version = "0.1.0"
7
+ version = "0.1.2"
8
8
  description = "Fractal texture engine for procedural and infinite-detail textures."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes