fractex 0.1.0__tar.gz → 0.1.1__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.1}/PKG-INFO +1 -1
  2. {fractex-0.1.0 → fractex-0.1.1}/fractex/cli.py +2 -1
  3. {fractex-0.1.0 → fractex-0.1.1}/fractex/examples/custom_pattern.py +1 -3
  4. {fractex-0.1.0 → fractex-0.1.1}/fractex/examples/game_texture.py +3 -1
  5. {fractex-0.1.0 → fractex-0.1.1}/fractex/examples/splash.py +21 -5
  6. {fractex-0.1.0 → fractex-0.1.1}/fractex/interactive.py +4 -1
  7. {fractex-0.1.0 → fractex-0.1.1/fractex.egg-info}/PKG-INFO +1 -1
  8. {fractex-0.1.0 → fractex-0.1.1}/pyproject.toml +1 -1
  9. {fractex-0.1.0 → fractex-0.1.1}/LICENSE +0 -0
  10. {fractex-0.1.0 → fractex-0.1.1}/MANIFEST.in +0 -0
  11. {fractex-0.1.0 → fractex-0.1.1}/README.md +0 -0
  12. {fractex-0.1.0 → fractex-0.1.1}/fractex/3d.py +0 -0
  13. {fractex-0.1.0 → fractex-0.1.1}/fractex/__init__.py +0 -0
  14. {fractex-0.1.0 → fractex-0.1.1}/fractex/advanced.py +0 -0
  15. {fractex-0.1.0 → fractex-0.1.1}/fractex/core.py +0 -0
  16. {fractex-0.1.0 → fractex-0.1.1}/fractex/dynamic_textures_3d.py +0 -0
  17. {fractex-0.1.0 → fractex-0.1.1}/fractex/examples/3d.py +0 -0
  18. {fractex-0.1.0 → fractex-0.1.1}/fractex/examples/3d_integration.py +0 -0
  19. {fractex-0.1.0 → fractex-0.1.1}/fractex/examples/3d_integration_2d.py +0 -0
  20. {fractex-0.1.0 → fractex-0.1.1}/fractex/examples/__init__.py +0 -0
  21. {fractex-0.1.0 → fractex-0.1.1}/fractex/examples/_output.py +0 -0
  22. {fractex-0.1.0 → fractex-0.1.1}/fractex/examples/architecture_pattern.py +0 -0
  23. {fractex-0.1.0 → fractex-0.1.1}/fractex/examples/atmosphere.py +0 -0
  24. {fractex-0.1.0 → fractex-0.1.1}/fractex/examples/composite_material.py +0 -0
  25. {fractex-0.1.0 → fractex-0.1.1}/fractex/examples/crystal_cave.py +0 -0
  26. {fractex-0.1.0 → fractex-0.1.1}/fractex/examples/game_integration.py +0 -0
  27. {fractex-0.1.0 → fractex-0.1.1}/fractex/examples/integration.py +0 -0
  28. {fractex-0.1.0 → fractex-0.1.1}/fractex/examples/physic_integration.py +0 -0
  29. {fractex-0.1.0 → fractex-0.1.1}/fractex/examples/terrain.py +0 -0
  30. {fractex-0.1.0 → fractex-0.1.1}/fractex/examples/underwater.py +0 -0
  31. {fractex-0.1.0 → fractex-0.1.1}/fractex/examples/underwater_volkano.py +0 -0
  32. {fractex-0.1.0 → fractex-0.1.1}/fractex/geometric_patterns_3d.py +0 -0
  33. {fractex-0.1.0 → fractex-0.1.1}/fractex/simplex_noise.py +0 -0
  34. {fractex-0.1.0 → fractex-0.1.1}/fractex/texture_blending.py +0 -0
  35. {fractex-0.1.0 → fractex-0.1.1}/fractex/volume_scattering.py +0 -0
  36. {fractex-0.1.0 → fractex-0.1.1}/fractex/volume_textures.py +0 -0
  37. {fractex-0.1.0 → fractex-0.1.1}/fractex.egg-info/SOURCES.txt +0 -0
  38. {fractex-0.1.0 → fractex-0.1.1}/fractex.egg-info/dependency_links.txt +0 -0
  39. {fractex-0.1.0 → fractex-0.1.1}/fractex.egg-info/entry_points.txt +0 -0
  40. {fractex-0.1.0 → fractex-0.1.1}/fractex.egg-info/requires.txt +0 -0
  41. {fractex-0.1.0 → fractex-0.1.1}/fractex.egg-info/top_level.txt +0 -0
  42. {fractex-0.1.0 → fractex-0.1.1}/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.1
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)
@@ -131,8 +130,25 @@ def main():
131
130
  render_w = max(64, int(width * render_scale))
132
131
  render_h = max(64, int(height * render_scale))
133
132
 
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]
133
+ base_origin_x = -render_w / (2.0 * base_zoom)
134
+ base_origin_y = -render_h / (2.0 * base_zoom)
135
+ detail_origin_x = -render_w / (2.0 * detail_zoom)
136
+ detail_origin_y = -render_h / (2.0 * detail_zoom)
137
+
138
+ base = base_texture.generate_tile(
139
+ base_origin_x + x0,
140
+ base_origin_y + y0,
141
+ render_w,
142
+ render_h,
143
+ zoom=base_zoom,
144
+ )[..., :3]
145
+ detail = detail_texture.generate_tile(
146
+ detail_origin_x + x1,
147
+ detail_origin_y + y1,
148
+ render_w,
149
+ render_h,
150
+ zoom=detail_zoom,
151
+ )[..., :3]
136
152
 
137
153
  depth = 0.35 + 0.15 * np.sin(t * 0.2)
138
154
  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
 
@@ -140,7 +143,7 @@ def run_interactive(
140
143
 
141
144
  render_w = max(config.min_render, int(width * render_scale))
142
145
  render_h = max(config.min_render, int(height * render_scale))
143
- t = frame / 10.0
146
+ t = (frame / 10.0) * config.speed
144
147
  frame_img = render_frame(t, render_w, render_h)
145
148
  frame_img = resize_nearest(frame_img, width, height)
146
149
  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.1
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.1"
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