fractex 0.1.0__py3-none-any.whl → 0.1.1__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.
- fractex/cli.py +2 -1
- fractex/examples/custom_pattern.py +1 -3
- fractex/examples/game_texture.py +3 -1
- fractex/examples/splash.py +21 -5
- fractex/interactive.py +4 -1
- {fractex-0.1.0.dist-info → fractex-0.1.1.dist-info}/METADATA +1 -1
- {fractex-0.1.0.dist-info → fractex-0.1.1.dist-info}/RECORD +11 -11
- {fractex-0.1.0.dist-info → fractex-0.1.1.dist-info}/WHEEL +0 -0
- {fractex-0.1.0.dist-info → fractex-0.1.1.dist-info}/entry_points.txt +0 -0
- {fractex-0.1.0.dist-info → fractex-0.1.1.dist-info}/licenses/LICENSE +0 -0
- {fractex-0.1.0.dist-info → fractex-0.1.1.dist-info}/top_level.txt +0 -0
fractex/cli.py
CHANGED
|
@@ -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
|
-
|
|
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)
|
fractex/examples/game_texture.py
CHANGED
|
@@ -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
|
-
|
|
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)
|
fractex/examples/splash.py
CHANGED
|
@@ -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
|
|
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
|
-
|
|
135
|
-
|
|
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)
|
fractex/interactive.py
CHANGED
|
@@ -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,11 +1,11 @@
|
|
|
1
1
|
fractex/3d.py,sha256=m7FmIgtouncb8LVpev3MjhOUNMaKEa6MmE3B8N2lj78,65079
|
|
2
2
|
fractex/__init__.py,sha256=QheT5gsEbyQjvBo_HKy7rgWuhDepJ_UT1io7n_TcpG8,737
|
|
3
3
|
fractex/advanced.py,sha256=UnyLEtH9rZGYSMhL6W4iZzKjTncx1-ToVGtaXbjujrA,5834
|
|
4
|
-
fractex/cli.py,sha256=
|
|
4
|
+
fractex/cli.py,sha256=jQ9bI_rwtXwu_u_J_5HpwoiC8ZIOVH6JXvaXWYvOQV4,2468
|
|
5
5
|
fractex/core.py,sha256=VppjXFtc-15wsKXJ8yXU-fdpIlzvWd-2xLnI1-qP0A0,21546
|
|
6
6
|
fractex/dynamic_textures_3d.py,sha256=ZFkdfbGak1fS-LkPkw_-bXSuPjDaB0RUWdIlo595l-g,83944
|
|
7
7
|
fractex/geometric_patterns_3d.py,sha256=kKGuAMYcNPJLvCUlRO7DzgJIAi5w-b7YkdwmznbKv94,103341
|
|
8
|
-
fractex/interactive.py,sha256=
|
|
8
|
+
fractex/interactive.py,sha256=oilaT3MB6bbSt-ah3zraZtDe1Drt-GFHGH8xtm-oqBs,5295
|
|
9
9
|
fractex/simplex_noise.py,sha256=JuMl0tqo4Qq1XC8fmaxLSiH9GppYVvBhmBI5Zc2ZYpc,41571
|
|
10
10
|
fractex/texture_blending.py,sha256=2bgmqqsw6v6M2qDp5cEhC-SjdbnvPGxmZLJf7Iaa7Ds,58506
|
|
11
11
|
fractex/volume_scattering.py,sha256=T04rrW1N4VwimNskVww7K6XB1rEqo0foBXii6wAvhkk,54040
|
|
@@ -19,18 +19,18 @@ fractex/examples/architecture_pattern.py,sha256=zU2cILsjpx1JbDGbIkLR3sqrB4ZLmCkz
|
|
|
19
19
|
fractex/examples/atmosphere.py,sha256=9eLAX3aRO6pMz-GrMaZ7QgocG8NBMznO8vuy6OzNkTA,1824
|
|
20
20
|
fractex/examples/composite_material.py,sha256=6Ba7yCcx82MvaEKM2cVYEao6MOQW3pDZrSf1nvlaCow,2048
|
|
21
21
|
fractex/examples/crystal_cave.py,sha256=pXmFTi3FCVSULoTEh11JC_w_0PzEVtbLSExnUw0DQRM,1908
|
|
22
|
-
fractex/examples/custom_pattern.py,sha256=
|
|
22
|
+
fractex/examples/custom_pattern.py,sha256=ZqX81-lxUI4e5aQwThNqQPKaJrJ5HldTJgn5fZoV-dc,4310
|
|
23
23
|
fractex/examples/game_integration.py,sha256=k85yfez6N46oyR5gXpenbOoxDNMQgRLIDRayL_--6Tw,3194
|
|
24
|
-
fractex/examples/game_texture.py,sha256=
|
|
24
|
+
fractex/examples/game_texture.py,sha256=4hwtTOpspIQanQODD2g6opke0Zp5XwTriw8kqdtKLak,6841
|
|
25
25
|
fractex/examples/integration.py,sha256=jJwa3ChUmxikGmqJk_tchDnV3rhuYKlNdEATxdbvf_8,3494
|
|
26
26
|
fractex/examples/physic_integration.py,sha256=uh_ik_j-iiEOowPIvd37jwUDi5v9PZtCYUyHgyJBCC4,2551
|
|
27
|
-
fractex/examples/splash.py,sha256=
|
|
27
|
+
fractex/examples/splash.py,sha256=b18a3UGkxfLcKn9ITCczAeB-ofHeCoRxQi3ToxMtxnU,5901
|
|
28
28
|
fractex/examples/terrain.py,sha256=rsduhHchbyI6T-RDIzI-S6D07g2_rCSg6JtA4eXGve0,2611
|
|
29
29
|
fractex/examples/underwater.py,sha256=1_SlTVhd-ONEYqyV_B4sCFhSqScmCHQ7f6eRVI7v5X8,3313
|
|
30
30
|
fractex/examples/underwater_volkano.py,sha256=HobJi3ztK-R_VeHfI8oVRZupONbegWnOL40llj_LnaE,4161
|
|
31
|
-
fractex-0.1.
|
|
32
|
-
fractex-0.1.
|
|
33
|
-
fractex-0.1.
|
|
34
|
-
fractex-0.1.
|
|
35
|
-
fractex-0.1.
|
|
36
|
-
fractex-0.1.
|
|
31
|
+
fractex-0.1.1.dist-info/licenses/LICENSE,sha256=CRrETm3c-JFoqpolJMrRIfFXOxOy5uhnvdSVKFP6sVE,1069
|
|
32
|
+
fractex-0.1.1.dist-info/METADATA,sha256=V2UWQEXzcqsxjAsY9BXFl5bArmrkWPYJQjMHEkzKb5M,3603
|
|
33
|
+
fractex-0.1.1.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
34
|
+
fractex-0.1.1.dist-info/entry_points.txt,sha256=xgzT1MTUmB69bstzCyxybxJDI7D8nYqsJpBN2UMazL4,45
|
|
35
|
+
fractex-0.1.1.dist-info/top_level.txt,sha256=LFl1_h1YNgANgBDo6d-tPTJzlrO3ny_l5OTItasV9rw,8
|
|
36
|
+
fractex-0.1.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|