pygf 0.1.0__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.
- pygf-0.1.0/LICENSE +21 -0
- pygf-0.1.0/PKG-INFO +136 -0
- pygf-0.1.0/README.md +103 -0
- pygf-0.1.0/pygf/__init__.py +173 -0
- pygf-0.1.0/pygf/alias.py +84 -0
- pygf-0.1.0/pygf/bool2.py +337 -0
- pygf-0.1.0/pygf/bool3.py +1248 -0
- pygf-0.1.0/pygf/bool4.py +3671 -0
- pygf-0.1.0/pygf/double2.py +337 -0
- pygf-0.1.0/pygf/double3.py +1248 -0
- pygf-0.1.0/pygf/double4.py +3671 -0
- pygf-0.1.0/pygf/float2.py +337 -0
- pygf-0.1.0/pygf/float3.py +1248 -0
- pygf-0.1.0/pygf/float4.py +3671 -0
- pygf-0.1.0/pygf/funcs.py +523 -0
- pygf-0.1.0/pygf/genMat.py +259 -0
- pygf-0.1.0/pygf/genMat2.py +15 -0
- pygf-0.1.0/pygf/genMat3.py +15 -0
- pygf-0.1.0/pygf/genMat4.py +15 -0
- pygf-0.1.0/pygf/genQuat.py +225 -0
- pygf-0.1.0/pygf/genType.py +456 -0
- pygf-0.1.0/pygf/genVec.py +210 -0
- pygf-0.1.0/pygf/genVec2.py +12 -0
- pygf-0.1.0/pygf/genVec3.py +12 -0
- pygf-0.1.0/pygf/genVec4.py +12 -0
- pygf-0.1.0/pygf/half.py +92 -0
- pygf-0.1.0/pygf/half2.py +339 -0
- pygf-0.1.0/pygf/half3.py +1247 -0
- pygf-0.1.0/pygf/half4.py +3669 -0
- pygf-0.1.0/pygf/helper.py +210 -0
- pygf-0.1.0/pygf/int2.py +337 -0
- pygf-0.1.0/pygf/int3.py +1248 -0
- pygf-0.1.0/pygf/int4.py +3671 -0
- pygf-0.1.0/pygf/matrix2b.py +13 -0
- pygf-0.1.0/pygf/matrix2d.py +13 -0
- pygf-0.1.0/pygf/matrix2f.py +13 -0
- pygf-0.1.0/pygf/matrix3b.py +13 -0
- pygf-0.1.0/pygf/matrix3d.py +13 -0
- pygf-0.1.0/pygf/matrix3f.py +13 -0
- pygf-0.1.0/pygf/matrix4b.py +13 -0
- pygf-0.1.0/pygf/matrix4d.py +13 -0
- pygf-0.1.0/pygf/matrix4f.py +13 -0
- pygf-0.1.0/pygf/py.typed +0 -0
- pygf-0.1.0/pygf/quatb.py +17 -0
- pygf-0.1.0/pygf/quatd.py +17 -0
- pygf-0.1.0/pygf/quatf.py +17 -0
- pygf-0.1.0/pygf/quath.py +56 -0
- pygf-0.1.0/pygf/uint2.py +337 -0
- pygf-0.1.0/pygf/uint3.py +1248 -0
- pygf-0.1.0/pygf/uint4.py +3671 -0
- pygf-0.1.0/pygf.egg-info/PKG-INFO +136 -0
- pygf-0.1.0/pygf.egg-info/SOURCES.txt +56 -0
- pygf-0.1.0/pygf.egg-info/dependency_links.txt +1 -0
- pygf-0.1.0/pygf.egg-info/requires.txt +9 -0
- pygf-0.1.0/pygf.egg-info/top_level.txt +1 -0
- pygf-0.1.0/pyproject.toml +70 -0
- pygf-0.1.0/setup.cfg +4 -0
- pygf-0.1.0/tests/test_pygf.py +479 -0
pygf-0.1.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 王炳辉
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
pygf-0.1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: pygf
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Graphics math types for Python: vectors, matrices and quaternions on ctypes
|
|
5
|
+
Author-email: 王炳辉 <binghui.wang@foxmail.com>
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/Time-Coder/pygf
|
|
8
|
+
Project-URL: Source, https://github.com/Time-Coder/pygf
|
|
9
|
+
Keywords: graphics,math,linear-algebra,vector,matrix,quaternion,ctypes,gltf,usd
|
|
10
|
+
Classifier: Development Status :: 4 - Beta
|
|
11
|
+
Classifier: Intended Audience :: Developers
|
|
12
|
+
Classifier: Operating System :: OS Independent
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
18
|
+
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
19
|
+
Classifier: Topic :: Multimedia :: Graphics
|
|
20
|
+
Classifier: Topic :: Scientific/Engineering :: Mathematics
|
|
21
|
+
Classifier: Typing :: Typed
|
|
22
|
+
Requires-Python: >=3.10
|
|
23
|
+
Description-Content-Type: text/markdown
|
|
24
|
+
License-File: LICENSE
|
|
25
|
+
Requires-Dist: numpy
|
|
26
|
+
Provides-Extra: dev
|
|
27
|
+
Requires-Dist: ruff; extra == "dev"
|
|
28
|
+
Requires-Dist: ty; extra == "dev"
|
|
29
|
+
Provides-Extra: publish
|
|
30
|
+
Requires-Dist: build; extra == "publish"
|
|
31
|
+
Requires-Dist: twine; extra == "publish"
|
|
32
|
+
Dynamic: license-file
|
|
33
|
+
|
|
34
|
+
# pygf
|
|
35
|
+
|
|
36
|
+
Graphics math types for Python: vectors, matrices and quaternions, built on
|
|
37
|
+
`ctypes` with no compiled extension. A shared foundation for scene-description,
|
|
38
|
+
shading-language and rendering projects that all need the same numeric types and
|
|
39
|
+
none of them should have to depend on each other for them.
|
|
40
|
+
|
|
41
|
+
```python
|
|
42
|
+
from pygf import double3, matrix4d, quatd, funcs
|
|
43
|
+
|
|
44
|
+
v = double3(1.0, 0.0, 0.0)
|
|
45
|
+
|
|
46
|
+
m = matrix4d() * 2.0 # element-wise, `*` not matrix multiply
|
|
47
|
+
m = matrix4d() * matrix4d() # matrix multiply
|
|
48
|
+
n = funcs.normalize(double3(3.0, 4.0, 0.0))
|
|
49
|
+
w = funcs.dot(v, n)
|
|
50
|
+
|
|
51
|
+
r = quatd(0.0, 1.0, 0.0, 0.0) * v # rotate by a half turn about X
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Note that `*` is matrix multiply for `matrix * matrix`, matching what this layer
|
|
55
|
+
has always done, and that there is no `@` operator.
|
|
56
|
+
|
|
57
|
+
## What is here
|
|
58
|
+
|
|
59
|
+
| Group | Types |
|
|
60
|
+
|---|---|
|
|
61
|
+
| Vectors | `float2/3/4`, `double2/3/4`, `int2/3/4`, `uint2/3/4`, `half2/3/4`, `bool2/3/4` |
|
|
62
|
+
| Matrices | `matrix2/3/4` in `f`, `d`, `b` |
|
|
63
|
+
| Quaternions | `quatf`, `quatd`, `quath`, `quatb` |
|
|
64
|
+
| USD aliases | `point3f`, `normal3f`, `vector3f`, `color3f`, `texCoord2f`, `frame4d`, ... |
|
|
65
|
+
| Functions | the GLSL-shaped set: `abs`, `mix`, `clamp`, `cross`, `dot`, `normalize`, `determinant`, `inverse`, ... |
|
|
66
|
+
|
|
67
|
+
## Design notes
|
|
68
|
+
|
|
69
|
+
**Element types, not operators.** A `genVec` counts its slots with `_slot_count`,
|
|
70
|
+
which is `rows` for a matrix and the element count for a vector or quaternion.
|
|
71
|
+
`len()` is ctypes' *flat* element count on a matrix -- 16 for a 4x4 -- while
|
|
72
|
+
`m[i]` yields the i-th row, so driving the element-wise loops with `len()`
|
|
73
|
+
overruns. The element-wise helpers in `funcs.py` also *recurse*, because a matrix
|
|
74
|
+
slot is a row and handing that row to `builtins.abs` still fails once the count is
|
|
75
|
+
right.
|
|
76
|
+
|
|
77
|
+
**Matrices are square only.** `genMat.mat_type` refuses a non-square shape rather
|
|
78
|
+
than silently truncating it to `shape[0] x shape[0]`.
|
|
79
|
+
|
|
80
|
+
**`half` is a real IEEE-754 binary16.** Stored as `c_uint16` bit patterns in
|
|
81
|
+
private fields, converted on access through `struct`'s native `e` format. The
|
|
82
|
+
component names are properties, so `ctypes.Structure.__setattr__` still reaches
|
|
83
|
+
them. Overflow saturates to infinity rather than raising, which is what a GPU
|
|
84
|
+
buffer would hold.
|
|
85
|
+
|
|
86
|
+
**Swizzles are runtime-dynamic.** `genVec.__getattr__` builds every combination
|
|
87
|
+
of `xyzw` / `rgba` / `stpq` on demand, so the class carries no swizzle
|
|
88
|
+
declarations at runtime. A generated `if TYPE_CHECKING:` block declares all of
|
|
89
|
+
them for type checkers and IDEs; see `tools/sync_swizzle_blocks.py`.
|
|
90
|
+
|
|
91
|
+
**numpy interop.** Importing `pygf` replaces `numpy.array` so that it reads a
|
|
92
|
+
container as its components: `np.array(matrix3d())` gives a `(3, 3)` array
|
|
93
|
+
rather than ctypes' flat storage. Arguments it does not recognise are passed
|
|
94
|
+
straight through.
|
|
95
|
+
|
|
96
|
+
## Layout
|
|
97
|
+
|
|
98
|
+
```
|
|
99
|
+
pygf/ the package
|
|
100
|
+
tests/ test_pygf.py -- stdlib plus pygf, nothing else
|
|
101
|
+
tools/ sync_swizzle_blocks.py -- the only writer of the swizzle blocks
|
|
102
|
+
static_check.py
|
|
103
|
+
publish.py
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## Development
|
|
107
|
+
|
|
108
|
+
```
|
|
109
|
+
python -m pip install -e ".[dev]"
|
|
110
|
+
python static_check.py
|
|
111
|
+
python tests/test_pygf.py
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
`static_check.py` runs `compileall`, `ruff check --fix`, and `ty check`. Every
|
|
115
|
+
check in the test file corresponds to a defect that type checking or review
|
|
116
|
+
surfaced; the module docstring in the test lists them.
|
|
117
|
+
|
|
118
|
+
After changing `genVec`'s swizzle generation, regenerate the declaration blocks:
|
|
119
|
+
|
|
120
|
+
```
|
|
121
|
+
python tools/sync_swizzle_blocks.py
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
It is idempotent, and it is the only thing that writes those blocks.
|
|
125
|
+
|
|
126
|
+
## Publishing
|
|
127
|
+
|
|
128
|
+
```
|
|
129
|
+
python -m pip install -e ".[publish]"
|
|
130
|
+
python publish.py build
|
|
131
|
+
python publish.py
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
## License
|
|
135
|
+
|
|
136
|
+
MIT
|
pygf-0.1.0/README.md
ADDED
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# pygf
|
|
2
|
+
|
|
3
|
+
Graphics math types for Python: vectors, matrices and quaternions, built on
|
|
4
|
+
`ctypes` with no compiled extension. A shared foundation for scene-description,
|
|
5
|
+
shading-language and rendering projects that all need the same numeric types and
|
|
6
|
+
none of them should have to depend on each other for them.
|
|
7
|
+
|
|
8
|
+
```python
|
|
9
|
+
from pygf import double3, matrix4d, quatd, funcs
|
|
10
|
+
|
|
11
|
+
v = double3(1.0, 0.0, 0.0)
|
|
12
|
+
|
|
13
|
+
m = matrix4d() * 2.0 # element-wise, `*` not matrix multiply
|
|
14
|
+
m = matrix4d() * matrix4d() # matrix multiply
|
|
15
|
+
n = funcs.normalize(double3(3.0, 4.0, 0.0))
|
|
16
|
+
w = funcs.dot(v, n)
|
|
17
|
+
|
|
18
|
+
r = quatd(0.0, 1.0, 0.0, 0.0) * v # rotate by a half turn about X
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Note that `*` is matrix multiply for `matrix * matrix`, matching what this layer
|
|
22
|
+
has always done, and that there is no `@` operator.
|
|
23
|
+
|
|
24
|
+
## What is here
|
|
25
|
+
|
|
26
|
+
| Group | Types |
|
|
27
|
+
|---|---|
|
|
28
|
+
| Vectors | `float2/3/4`, `double2/3/4`, `int2/3/4`, `uint2/3/4`, `half2/3/4`, `bool2/3/4` |
|
|
29
|
+
| Matrices | `matrix2/3/4` in `f`, `d`, `b` |
|
|
30
|
+
| Quaternions | `quatf`, `quatd`, `quath`, `quatb` |
|
|
31
|
+
| USD aliases | `point3f`, `normal3f`, `vector3f`, `color3f`, `texCoord2f`, `frame4d`, ... |
|
|
32
|
+
| Functions | the GLSL-shaped set: `abs`, `mix`, `clamp`, `cross`, `dot`, `normalize`, `determinant`, `inverse`, ... |
|
|
33
|
+
|
|
34
|
+
## Design notes
|
|
35
|
+
|
|
36
|
+
**Element types, not operators.** A `genVec` counts its slots with `_slot_count`,
|
|
37
|
+
which is `rows` for a matrix and the element count for a vector or quaternion.
|
|
38
|
+
`len()` is ctypes' *flat* element count on a matrix -- 16 for a 4x4 -- while
|
|
39
|
+
`m[i]` yields the i-th row, so driving the element-wise loops with `len()`
|
|
40
|
+
overruns. The element-wise helpers in `funcs.py` also *recurse*, because a matrix
|
|
41
|
+
slot is a row and handing that row to `builtins.abs` still fails once the count is
|
|
42
|
+
right.
|
|
43
|
+
|
|
44
|
+
**Matrices are square only.** `genMat.mat_type` refuses a non-square shape rather
|
|
45
|
+
than silently truncating it to `shape[0] x shape[0]`.
|
|
46
|
+
|
|
47
|
+
**`half` is a real IEEE-754 binary16.** Stored as `c_uint16` bit patterns in
|
|
48
|
+
private fields, converted on access through `struct`'s native `e` format. The
|
|
49
|
+
component names are properties, so `ctypes.Structure.__setattr__` still reaches
|
|
50
|
+
them. Overflow saturates to infinity rather than raising, which is what a GPU
|
|
51
|
+
buffer would hold.
|
|
52
|
+
|
|
53
|
+
**Swizzles are runtime-dynamic.** `genVec.__getattr__` builds every combination
|
|
54
|
+
of `xyzw` / `rgba` / `stpq` on demand, so the class carries no swizzle
|
|
55
|
+
declarations at runtime. A generated `if TYPE_CHECKING:` block declares all of
|
|
56
|
+
them for type checkers and IDEs; see `tools/sync_swizzle_blocks.py`.
|
|
57
|
+
|
|
58
|
+
**numpy interop.** Importing `pygf` replaces `numpy.array` so that it reads a
|
|
59
|
+
container as its components: `np.array(matrix3d())` gives a `(3, 3)` array
|
|
60
|
+
rather than ctypes' flat storage. Arguments it does not recognise are passed
|
|
61
|
+
straight through.
|
|
62
|
+
|
|
63
|
+
## Layout
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
pygf/ the package
|
|
67
|
+
tests/ test_pygf.py -- stdlib plus pygf, nothing else
|
|
68
|
+
tools/ sync_swizzle_blocks.py -- the only writer of the swizzle blocks
|
|
69
|
+
static_check.py
|
|
70
|
+
publish.py
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Development
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
python -m pip install -e ".[dev]"
|
|
77
|
+
python static_check.py
|
|
78
|
+
python tests/test_pygf.py
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
`static_check.py` runs `compileall`, `ruff check --fix`, and `ty check`. Every
|
|
82
|
+
check in the test file corresponds to a defect that type checking or review
|
|
83
|
+
surfaced; the module docstring in the test lists them.
|
|
84
|
+
|
|
85
|
+
After changing `genVec`'s swizzle generation, regenerate the declaration blocks:
|
|
86
|
+
|
|
87
|
+
```
|
|
88
|
+
python tools/sync_swizzle_blocks.py
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
It is idempotent, and it is the only thing that writes those blocks.
|
|
92
|
+
|
|
93
|
+
## Publishing
|
|
94
|
+
|
|
95
|
+
```
|
|
96
|
+
python -m pip install -e ".[publish]"
|
|
97
|
+
python publish.py build
|
|
98
|
+
python publish.py
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## License
|
|
102
|
+
|
|
103
|
+
MIT
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
from .alias import (
|
|
2
|
+
color3d,
|
|
3
|
+
color3f,
|
|
4
|
+
color3h,
|
|
5
|
+
color4d,
|
|
6
|
+
color4f,
|
|
7
|
+
color4h,
|
|
8
|
+
frame4d,
|
|
9
|
+
normal3d,
|
|
10
|
+
normal3f,
|
|
11
|
+
normal3h,
|
|
12
|
+
point3d,
|
|
13
|
+
point3f,
|
|
14
|
+
point3h,
|
|
15
|
+
texCoord2d,
|
|
16
|
+
texCoord2f,
|
|
17
|
+
texCoord2h,
|
|
18
|
+
texCoord3d,
|
|
19
|
+
texCoord3f,
|
|
20
|
+
texCoord3h,
|
|
21
|
+
vector3d,
|
|
22
|
+
vector3f,
|
|
23
|
+
vector3h,
|
|
24
|
+
)
|
|
25
|
+
from .bool2 import bool2
|
|
26
|
+
from .bool3 import bool3
|
|
27
|
+
from .bool4 import bool4
|
|
28
|
+
from .double2 import double2
|
|
29
|
+
from .double3 import double3
|
|
30
|
+
from .double4 import double4
|
|
31
|
+
from .float2 import float2
|
|
32
|
+
from .float3 import float3
|
|
33
|
+
from .float4 import float4
|
|
34
|
+
from .funcs import (
|
|
35
|
+
abs,
|
|
36
|
+
acos,
|
|
37
|
+
acosh,
|
|
38
|
+
all,
|
|
39
|
+
any,
|
|
40
|
+
asin,
|
|
41
|
+
asinh,
|
|
42
|
+
atan,
|
|
43
|
+
atanh,
|
|
44
|
+
ceil,
|
|
45
|
+
clamp,
|
|
46
|
+
conjugate,
|
|
47
|
+
cos,
|
|
48
|
+
cosh,
|
|
49
|
+
cross,
|
|
50
|
+
determinant,
|
|
51
|
+
distance,
|
|
52
|
+
dot,
|
|
53
|
+
equal,
|
|
54
|
+
exp,
|
|
55
|
+
exp2,
|
|
56
|
+
exp10,
|
|
57
|
+
faceforward,
|
|
58
|
+
floor,
|
|
59
|
+
fract,
|
|
60
|
+
greaterThan,
|
|
61
|
+
greaterThanEqual,
|
|
62
|
+
inverse,
|
|
63
|
+
inversesqrt,
|
|
64
|
+
length,
|
|
65
|
+
lessThan,
|
|
66
|
+
lessThanEqual,
|
|
67
|
+
log,
|
|
68
|
+
log2,
|
|
69
|
+
log10,
|
|
70
|
+
matrixCompMult,
|
|
71
|
+
max,
|
|
72
|
+
min,
|
|
73
|
+
mix,
|
|
74
|
+
mod,
|
|
75
|
+
normalize,
|
|
76
|
+
not_,
|
|
77
|
+
notEqual,
|
|
78
|
+
outerProduct,
|
|
79
|
+
pow,
|
|
80
|
+
reflect,
|
|
81
|
+
refract,
|
|
82
|
+
round,
|
|
83
|
+
roundEven,
|
|
84
|
+
sign,
|
|
85
|
+
sin,
|
|
86
|
+
sinh,
|
|
87
|
+
sizeof,
|
|
88
|
+
smoothstep,
|
|
89
|
+
sqrt,
|
|
90
|
+
step,
|
|
91
|
+
tan,
|
|
92
|
+
tanh,
|
|
93
|
+
trace,
|
|
94
|
+
transpose,
|
|
95
|
+
trunc,
|
|
96
|
+
)
|
|
97
|
+
from .genMat import MatType, genMat
|
|
98
|
+
from .genMat2 import Mat2Type, genMat2
|
|
99
|
+
from .genMat3 import Mat3Type, genMat3
|
|
100
|
+
from .genMat4 import Mat4Type, genMat4
|
|
101
|
+
from .genQuat import QuatType, genQuat
|
|
102
|
+
from .genType import MathForm, genType
|
|
103
|
+
from .genVec import VecType, genVec
|
|
104
|
+
from .genVec2 import Vec2Type, genVec2
|
|
105
|
+
from .genVec3 import Vec3Type, genVec3
|
|
106
|
+
from .genVec4 import Vec4Type, genVec4
|
|
107
|
+
from .half2 import half2
|
|
108
|
+
from .half3 import half3
|
|
109
|
+
from .half4 import half4
|
|
110
|
+
from .helper import Number, patch_nparray
|
|
111
|
+
from .int2 import int2
|
|
112
|
+
from .int3 import int3
|
|
113
|
+
from .int4 import int4
|
|
114
|
+
from .matrix2b import matrix2b
|
|
115
|
+
from .matrix2d import matrix2d
|
|
116
|
+
from .matrix2f import matrix2f
|
|
117
|
+
from .matrix3b import matrix3b
|
|
118
|
+
from .matrix3d import matrix3d
|
|
119
|
+
from .matrix3f import matrix3f
|
|
120
|
+
from .matrix4b import matrix4b
|
|
121
|
+
from .matrix4d import matrix4d
|
|
122
|
+
from .matrix4f import matrix4f
|
|
123
|
+
from .quatb import quatb
|
|
124
|
+
from .quatd import quatd
|
|
125
|
+
from .quatf import quatf
|
|
126
|
+
from .quath import quath
|
|
127
|
+
from .uint2 import uint2
|
|
128
|
+
from .uint3 import uint3
|
|
129
|
+
from .uint4 import uint4
|
|
130
|
+
|
|
131
|
+
__all__ = [
|
|
132
|
+
"MathForm",
|
|
133
|
+
"genType", "Number",
|
|
134
|
+
"genVec", "VecType",
|
|
135
|
+
"genVec2", "Vec2Type",
|
|
136
|
+
"genVec3", "Vec3Type",
|
|
137
|
+
"genVec4", "Vec4Type",
|
|
138
|
+
"genMat", "MatType",
|
|
139
|
+
"genMat2", "Mat2Type",
|
|
140
|
+
"genMat3", "Mat3Type",
|
|
141
|
+
"genMat4", "Mat4Type",
|
|
142
|
+
"genQuat", "QuatType",
|
|
143
|
+
"bool2", "bool3", "bool4",
|
|
144
|
+
"int2", "int3", "int4",
|
|
145
|
+
"uint2", "uint3", "uint4",
|
|
146
|
+
"half2", "half3", "half4",
|
|
147
|
+
"float2", "float3", "float4",
|
|
148
|
+
"double2", "double3", "double4",
|
|
149
|
+
"matrix2b", "matrix3b", "matrix4b",
|
|
150
|
+
"matrix2f", "matrix3f", "matrix4f",
|
|
151
|
+
"matrix2d", "matrix3d", "matrix4d",
|
|
152
|
+
"quatb", "quatf", "quatd", "quath",
|
|
153
|
+
"color3h", "color3f", "color3d",
|
|
154
|
+
"color4h", "color4f", "color4d",
|
|
155
|
+
"texCoord2h", "texCoord2f", "texCoord2d",
|
|
156
|
+
"texCoord3h", "texCoord3f", "texCoord3d",
|
|
157
|
+
"normal3h", "normal3f", "normal3d",
|
|
158
|
+
"point3h", "point3f", "point3d",
|
|
159
|
+
"vector3h", "vector3f", "vector3d",
|
|
160
|
+
"frame4d",
|
|
161
|
+
|
|
162
|
+
"abs", "sign", "floor", "ceil", "trunc", "round", "roundEven", "fract", "mod",
|
|
163
|
+
"min", "max", "clamp", "mix", "step", "smoothstep", "sqrt", "inversesqrt",
|
|
164
|
+
"pow", "exp", "exp2", "exp10", "log", "log2", "log10",
|
|
165
|
+
"sin", "cos", "tan", "asin", "acos", "atan",
|
|
166
|
+
"sinh", "cosh", "tanh", "asinh", "acosh", "atanh",
|
|
167
|
+
"length", "normalize", "distance", "dot", "cross", "faceforward", "reflect", "refract",
|
|
168
|
+
"transpose", "determinant", "inverse", "trace", "conjugate",
|
|
169
|
+
"matrixCompMult", "outerProduct", "lessThan", "lessThanEqual",
|
|
170
|
+
"greaterThan", "greaterThanEqual", "equal", "notEqual", "any", "all", "not_", "sizeof"
|
|
171
|
+
]
|
|
172
|
+
|
|
173
|
+
patch_nparray()
|
pygf-0.1.0/pygf/alias.py
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
from .double2 import double2
|
|
2
|
+
from .double3 import double3
|
|
3
|
+
from .double4 import double4
|
|
4
|
+
from .float2 import float2
|
|
5
|
+
from .float3 import float3
|
|
6
|
+
from .float4 import float4
|
|
7
|
+
from .half2 import half2
|
|
8
|
+
from .half3 import half3
|
|
9
|
+
from .half4 import half4
|
|
10
|
+
from .matrix4d import matrix4d
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class color3d(double3):
|
|
14
|
+
pass
|
|
15
|
+
|
|
16
|
+
class color3f(float3):
|
|
17
|
+
pass
|
|
18
|
+
|
|
19
|
+
class color3h(half3):
|
|
20
|
+
pass
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class color4d(double4):
|
|
24
|
+
pass
|
|
25
|
+
|
|
26
|
+
class color4f(float4):
|
|
27
|
+
pass
|
|
28
|
+
|
|
29
|
+
class color4h(half4):
|
|
30
|
+
pass
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class normal3d(double3):
|
|
34
|
+
pass
|
|
35
|
+
|
|
36
|
+
class normal3f(float3):
|
|
37
|
+
pass
|
|
38
|
+
|
|
39
|
+
class normal3h(half3):
|
|
40
|
+
pass
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
class point3d(double3):
|
|
44
|
+
pass
|
|
45
|
+
|
|
46
|
+
class point3f(float3):
|
|
47
|
+
pass
|
|
48
|
+
|
|
49
|
+
class point3h(half3):
|
|
50
|
+
pass
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
class vector3d(double3):
|
|
54
|
+
pass
|
|
55
|
+
|
|
56
|
+
class vector3f(float3):
|
|
57
|
+
pass
|
|
58
|
+
|
|
59
|
+
class vector3h(half3):
|
|
60
|
+
pass
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
class frame4d(matrix4d):
|
|
64
|
+
pass
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
class texCoord2d(double2):
|
|
68
|
+
pass
|
|
69
|
+
|
|
70
|
+
class texCoord2f(float2):
|
|
71
|
+
pass
|
|
72
|
+
|
|
73
|
+
class texCoord2h(half2):
|
|
74
|
+
pass
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
class texCoord3d(double3):
|
|
78
|
+
pass
|
|
79
|
+
|
|
80
|
+
class texCoord3f(float3):
|
|
81
|
+
pass
|
|
82
|
+
|
|
83
|
+
class texCoord3h(half3):
|
|
84
|
+
pass
|