warp-lang 1.9.0__py3-none-win_amd64.whl → 1.10.0rc2__py3-none-win_amd64.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 warp-lang might be problematic. Click here for more details.
- warp/__init__.py +301 -287
- warp/__init__.pyi +2220 -313
- warp/_src/__init__.py +14 -0
- warp/_src/autograd.py +1075 -0
- warp/_src/build.py +618 -0
- warp/_src/build_dll.py +640 -0
- warp/{builtins.py → _src/builtins.py} +1497 -226
- warp/_src/codegen.py +4359 -0
- warp/{config.py → _src/config.py} +178 -169
- warp/_src/constants.py +57 -0
- warp/_src/context.py +8294 -0
- warp/_src/dlpack.py +462 -0
- warp/_src/fabric.py +355 -0
- warp/_src/fem/__init__.py +14 -0
- warp/_src/fem/adaptivity.py +508 -0
- warp/_src/fem/cache.py +687 -0
- warp/_src/fem/dirichlet.py +188 -0
- warp/{fem → _src/fem}/domain.py +40 -30
- warp/_src/fem/field/__init__.py +131 -0
- warp/_src/fem/field/field.py +701 -0
- warp/{fem → _src/fem}/field/nodal_field.py +30 -15
- warp/{fem → _src/fem}/field/restriction.py +1 -1
- warp/{fem → _src/fem}/field/virtual.py +53 -27
- warp/_src/fem/geometry/__init__.py +32 -0
- warp/{fem → _src/fem}/geometry/adaptive_nanogrid.py +77 -163
- warp/_src/fem/geometry/closest_point.py +97 -0
- warp/{fem → _src/fem}/geometry/deformed_geometry.py +14 -22
- warp/{fem → _src/fem}/geometry/element.py +32 -10
- warp/{fem → _src/fem}/geometry/geometry.py +48 -20
- warp/{fem → _src/fem}/geometry/grid_2d.py +12 -23
- warp/{fem → _src/fem}/geometry/grid_3d.py +12 -23
- warp/{fem → _src/fem}/geometry/hexmesh.py +40 -63
- warp/{fem → _src/fem}/geometry/nanogrid.py +255 -248
- warp/{fem → _src/fem}/geometry/partition.py +121 -63
- warp/{fem → _src/fem}/geometry/quadmesh.py +26 -45
- warp/{fem → _src/fem}/geometry/tetmesh.py +40 -63
- warp/{fem → _src/fem}/geometry/trimesh.py +26 -45
- warp/{fem → _src/fem}/integrate.py +164 -158
- warp/_src/fem/linalg.py +383 -0
- warp/_src/fem/operator.py +396 -0
- warp/_src/fem/polynomial.py +229 -0
- warp/{fem → _src/fem}/quadrature/pic_quadrature.py +15 -20
- warp/{fem → _src/fem}/quadrature/quadrature.py +95 -47
- warp/_src/fem/space/__init__.py +248 -0
- warp/{fem → _src/fem}/space/basis_function_space.py +20 -11
- warp/_src/fem/space/basis_space.py +679 -0
- warp/{fem → _src/fem}/space/dof_mapper.py +3 -3
- warp/{fem → _src/fem}/space/function_space.py +14 -13
- warp/{fem → _src/fem}/space/grid_2d_function_space.py +4 -7
- warp/{fem → _src/fem}/space/grid_3d_function_space.py +4 -4
- warp/{fem → _src/fem}/space/hexmesh_function_space.py +4 -10
- warp/{fem → _src/fem}/space/nanogrid_function_space.py +3 -9
- warp/{fem → _src/fem}/space/partition.py +117 -60
- warp/{fem → _src/fem}/space/quadmesh_function_space.py +4 -10
- warp/{fem → _src/fem}/space/restriction.py +66 -33
- warp/_src/fem/space/shape/__init__.py +152 -0
- warp/{fem → _src/fem}/space/shape/cube_shape_function.py +9 -9
- warp/{fem → _src/fem}/space/shape/shape_function.py +8 -9
- warp/{fem → _src/fem}/space/shape/square_shape_function.py +6 -6
- warp/{fem → _src/fem}/space/shape/tet_shape_function.py +3 -3
- warp/{fem → _src/fem}/space/shape/triangle_shape_function.py +3 -3
- warp/{fem → _src/fem}/space/tetmesh_function_space.py +3 -9
- warp/_src/fem/space/topology.py +459 -0
- warp/{fem → _src/fem}/space/trimesh_function_space.py +3 -9
- warp/_src/fem/types.py +112 -0
- warp/_src/fem/utils.py +486 -0
- warp/_src/jax.py +186 -0
- warp/_src/jax_experimental/__init__.py +14 -0
- warp/_src/jax_experimental/custom_call.py +387 -0
- warp/_src/jax_experimental/ffi.py +1284 -0
- warp/_src/jax_experimental/xla_ffi.py +656 -0
- warp/_src/marching_cubes.py +708 -0
- warp/_src/math.py +414 -0
- warp/_src/optim/__init__.py +14 -0
- warp/_src/optim/adam.py +163 -0
- warp/_src/optim/linear.py +1606 -0
- warp/_src/optim/sgd.py +112 -0
- warp/_src/paddle.py +406 -0
- warp/_src/render/__init__.py +14 -0
- warp/_src/render/imgui_manager.py +289 -0
- warp/_src/render/render_opengl.py +3636 -0
- warp/_src/render/render_usd.py +937 -0
- warp/_src/render/utils.py +160 -0
- warp/_src/sparse.py +2716 -0
- warp/_src/tape.py +1206 -0
- warp/{thirdparty → _src/thirdparty}/unittest_parallel.py +9 -2
- warp/_src/torch.py +391 -0
- warp/_src/types.py +5870 -0
- warp/_src/utils.py +1693 -0
- warp/autograd.py +12 -1054
- warp/bin/warp-clang.dll +0 -0
- warp/bin/warp.dll +0 -0
- warp/build.py +8 -588
- warp/build_dll.py +6 -471
- warp/codegen.py +6 -4246
- warp/constants.py +6 -39
- warp/context.py +12 -7851
- warp/dlpack.py +6 -444
- warp/examples/distributed/example_jacobi_mpi.py +4 -5
- warp/examples/fem/example_adaptive_grid.py +1 -1
- warp/examples/fem/example_apic_fluid.py +1 -1
- warp/examples/fem/example_burgers.py +8 -8
- warp/examples/fem/example_diffusion.py +1 -1
- warp/examples/fem/example_distortion_energy.py +1 -1
- warp/examples/fem/example_mixed_elasticity.py +2 -2
- warp/examples/fem/example_navier_stokes.py +1 -1
- warp/examples/fem/example_nonconforming_contact.py +7 -7
- warp/examples/fem/example_stokes.py +1 -1
- warp/examples/fem/example_stokes_transfer.py +1 -1
- warp/examples/fem/utils.py +2 -2
- warp/examples/interop/example_jax_callable.py +1 -1
- warp/examples/interop/example_jax_ffi_callback.py +1 -1
- warp/examples/interop/example_jax_kernel.py +3 -2
- warp/examples/tile/example_tile_mcgp.py +191 -0
- warp/fabric.py +6 -337
- warp/fem/__init__.py +159 -97
- warp/fem/adaptivity.py +7 -489
- warp/fem/cache.py +9 -648
- warp/fem/dirichlet.py +6 -184
- warp/fem/field/__init__.py +8 -109
- warp/fem/field/field.py +7 -652
- warp/fem/geometry/__init__.py +7 -18
- warp/fem/geometry/closest_point.py +11 -77
- warp/fem/linalg.py +18 -366
- warp/fem/operator.py +11 -369
- warp/fem/polynomial.py +9 -209
- warp/fem/space/__init__.py +5 -211
- warp/fem/space/basis_space.py +6 -662
- warp/fem/space/shape/__init__.py +41 -118
- warp/fem/space/topology.py +6 -437
- warp/fem/types.py +6 -81
- warp/fem/utils.py +11 -444
- warp/jax.py +8 -165
- warp/jax_experimental/__init__.py +14 -1
- warp/jax_experimental/custom_call.py +8 -342
- warp/jax_experimental/ffi.py +17 -853
- warp/jax_experimental/xla_ffi.py +5 -596
- warp/marching_cubes.py +5 -689
- warp/math.py +16 -393
- warp/native/array.h +385 -37
- warp/native/builtin.h +316 -39
- warp/native/bvh.cpp +43 -9
- warp/native/bvh.cu +62 -27
- warp/native/bvh.h +310 -309
- warp/native/clang/clang.cpp +102 -97
- warp/native/coloring.cpp +0 -1
- warp/native/crt.h +208 -0
- warp/native/exports.h +156 -0
- warp/native/hashgrid.cu +2 -0
- warp/native/intersect.h +24 -1
- warp/native/intersect_tri.h +44 -35
- warp/native/mat.h +1456 -276
- warp/native/mesh.cpp +4 -4
- warp/native/mesh.cu +4 -2
- warp/native/mesh.h +176 -61
- warp/native/quat.h +0 -52
- warp/native/scan.cu +2 -0
- warp/native/sort.cu +22 -13
- warp/native/sort.h +2 -0
- warp/native/sparse.cu +7 -3
- warp/native/spatial.h +12 -0
- warp/native/tile.h +837 -70
- warp/native/tile_radix_sort.h +1 -1
- warp/native/tile_reduce.h +394 -46
- warp/native/tile_scan.h +4 -4
- warp/native/vec.h +469 -53
- warp/native/version.h +23 -0
- warp/native/volume.cpp +1 -1
- warp/native/volume.cu +1 -0
- warp/native/volume.h +1 -1
- warp/native/volume_builder.cu +2 -0
- warp/native/warp.cpp +60 -32
- warp/native/warp.cu +313 -201
- warp/native/warp.h +14 -11
- warp/optim/__init__.py +6 -3
- warp/optim/adam.py +6 -145
- warp/optim/linear.py +14 -1585
- warp/optim/sgd.py +6 -94
- warp/paddle.py +6 -388
- warp/render/__init__.py +8 -4
- warp/render/imgui_manager.py +7 -267
- warp/render/render_opengl.py +6 -3616
- warp/render/render_usd.py +6 -918
- warp/render/utils.py +6 -142
- warp/sparse.py +37 -2563
- warp/tape.py +6 -1188
- warp/tests/__main__.py +1 -1
- warp/tests/cuda/test_async.py +4 -4
- warp/tests/cuda/test_conditional_captures.py +1 -1
- warp/tests/cuda/test_multigpu.py +1 -1
- warp/tests/cuda/test_streams.py +58 -1
- warp/tests/geometry/test_bvh.py +157 -22
- warp/tests/geometry/test_hash_grid.py +38 -0
- warp/tests/geometry/test_marching_cubes.py +0 -1
- warp/tests/geometry/test_mesh.py +5 -3
- warp/tests/geometry/test_mesh_query_aabb.py +5 -12
- warp/tests/geometry/test_mesh_query_point.py +5 -2
- warp/tests/geometry/test_mesh_query_ray.py +15 -3
- warp/tests/geometry/test_volume_write.py +5 -5
- warp/tests/interop/test_dlpack.py +14 -14
- warp/tests/interop/test_jax.py +1382 -79
- warp/tests/interop/test_paddle.py +1 -1
- warp/tests/test_adam.py +0 -1
- warp/tests/test_arithmetic.py +9 -9
- warp/tests/test_array.py +529 -100
- warp/tests/test_array_reduce.py +3 -3
- warp/tests/test_atomic.py +12 -8
- warp/tests/test_atomic_bitwise.py +209 -0
- warp/tests/test_atomic_cas.py +4 -4
- warp/tests/test_bool.py +2 -2
- warp/tests/test_builtins_resolution.py +5 -571
- warp/tests/test_codegen.py +34 -15
- warp/tests/test_conditional.py +1 -1
- warp/tests/test_context.py +6 -6
- warp/tests/test_copy.py +242 -161
- warp/tests/test_ctypes.py +3 -3
- warp/tests/test_devices.py +24 -2
- warp/tests/test_examples.py +16 -84
- warp/tests/test_fabricarray.py +35 -35
- warp/tests/test_fast_math.py +0 -2
- warp/tests/test_fem.py +60 -14
- warp/tests/test_fixedarray.py +3 -3
- warp/tests/test_func.py +8 -5
- warp/tests/test_generics.py +1 -1
- warp/tests/test_indexedarray.py +24 -24
- warp/tests/test_intersect.py +39 -9
- warp/tests/test_large.py +1 -1
- warp/tests/test_lerp.py +3 -1
- warp/tests/test_linear_solvers.py +1 -1
- warp/tests/test_map.py +49 -4
- warp/tests/test_mat.py +52 -62
- warp/tests/test_mat_constructors.py +4 -5
- warp/tests/test_mat_lite.py +1 -1
- warp/tests/test_mat_scalar_ops.py +121 -121
- warp/tests/test_math.py +34 -0
- warp/tests/test_module_aot.py +4 -4
- warp/tests/test_modules_lite.py +28 -2
- warp/tests/test_print.py +11 -11
- warp/tests/test_quat.py +93 -58
- warp/tests/test_runlength_encode.py +1 -1
- warp/tests/test_scalar_ops.py +38 -10
- warp/tests/test_smoothstep.py +1 -1
- warp/tests/test_sparse.py +126 -15
- warp/tests/test_spatial.py +105 -87
- warp/tests/test_special_values.py +6 -6
- warp/tests/test_static.py +7 -7
- warp/tests/test_struct.py +13 -2
- warp/tests/test_triangle_closest_point.py +48 -1
- warp/tests/test_tuple.py +96 -0
- warp/tests/test_types.py +82 -9
- warp/tests/test_utils.py +52 -52
- warp/tests/test_vec.py +29 -29
- warp/tests/test_vec_constructors.py +5 -5
- warp/tests/test_vec_scalar_ops.py +97 -97
- warp/tests/test_version.py +75 -0
- warp/tests/tile/test_tile.py +239 -0
- warp/tests/tile/test_tile_atomic_bitwise.py +403 -0
- warp/tests/tile/test_tile_cholesky.py +7 -4
- warp/tests/tile/test_tile_load.py +26 -2
- warp/tests/tile/test_tile_mathdx.py +3 -3
- warp/tests/tile/test_tile_matmul.py +1 -1
- warp/tests/tile/test_tile_mlp.py +2 -4
- warp/tests/tile/test_tile_reduce.py +214 -13
- warp/tests/unittest_suites.py +6 -14
- warp/tests/unittest_utils.py +10 -9
- warp/tests/walkthrough_debug.py +3 -1
- warp/torch.py +6 -373
- warp/types.py +29 -5750
- warp/utils.py +10 -1659
- {warp_lang-1.9.0.dist-info → warp_lang-1.10.0rc2.dist-info}/METADATA +47 -103
- warp_lang-1.10.0rc2.dist-info/RECORD +468 -0
- warp_lang-1.10.0rc2.dist-info/licenses/licenses/Gaia-LICENSE.txt +6 -0
- warp_lang-1.10.0rc2.dist-info/licenses/licenses/appdirs-LICENSE.txt +22 -0
- warp_lang-1.10.0rc2.dist-info/licenses/licenses/asset_pixel_jpg-LICENSE.txt +3 -0
- warp_lang-1.10.0rc2.dist-info/licenses/licenses/cuda-LICENSE.txt +1582 -0
- warp_lang-1.10.0rc2.dist-info/licenses/licenses/dlpack-LICENSE.txt +201 -0
- warp_lang-1.10.0rc2.dist-info/licenses/licenses/fp16-LICENSE.txt +28 -0
- warp_lang-1.10.0rc2.dist-info/licenses/licenses/libmathdx-LICENSE.txt +220 -0
- warp_lang-1.10.0rc2.dist-info/licenses/licenses/llvm-LICENSE.txt +279 -0
- warp_lang-1.10.0rc2.dist-info/licenses/licenses/moller-LICENSE.txt +16 -0
- warp_lang-1.10.0rc2.dist-info/licenses/licenses/nanovdb-LICENSE.txt +2 -0
- warp_lang-1.10.0rc2.dist-info/licenses/licenses/nvrtc-LICENSE.txt +1592 -0
- warp_lang-1.10.0rc2.dist-info/licenses/licenses/svd-LICENSE.txt +23 -0
- warp_lang-1.10.0rc2.dist-info/licenses/licenses/unittest_parallel-LICENSE.txt +21 -0
- warp_lang-1.10.0rc2.dist-info/licenses/licenses/usd-LICENSE.txt +213 -0
- warp_lang-1.10.0rc2.dist-info/licenses/licenses/windingnumber-LICENSE.txt +21 -0
- warp/examples/assets/cartpole.urdf +0 -110
- warp/examples/assets/crazyflie.usd +0 -0
- warp/examples/assets/nv_ant.xml +0 -92
- warp/examples/assets/nv_humanoid.xml +0 -183
- warp/examples/assets/quadruped.urdf +0 -268
- warp/examples/optim/example_bounce.py +0 -266
- warp/examples/optim/example_cloth_throw.py +0 -228
- warp/examples/optim/example_drone.py +0 -870
- warp/examples/optim/example_inverse_kinematics.py +0 -182
- warp/examples/optim/example_inverse_kinematics_torch.py +0 -191
- warp/examples/optim/example_softbody_properties.py +0 -400
- warp/examples/optim/example_spring_cage.py +0 -245
- warp/examples/optim/example_trajectory.py +0 -227
- warp/examples/sim/example_cartpole.py +0 -143
- warp/examples/sim/example_cloth.py +0 -225
- warp/examples/sim/example_cloth_self_contact.py +0 -316
- warp/examples/sim/example_granular.py +0 -130
- warp/examples/sim/example_granular_collision_sdf.py +0 -202
- warp/examples/sim/example_jacobian_ik.py +0 -244
- warp/examples/sim/example_particle_chain.py +0 -124
- warp/examples/sim/example_quadruped.py +0 -203
- warp/examples/sim/example_rigid_chain.py +0 -203
- warp/examples/sim/example_rigid_contact.py +0 -195
- warp/examples/sim/example_rigid_force.py +0 -133
- warp/examples/sim/example_rigid_gyroscopic.py +0 -115
- warp/examples/sim/example_rigid_soft_contact.py +0 -140
- warp/examples/sim/example_soft_body.py +0 -196
- warp/examples/tile/example_tile_walker.py +0 -327
- warp/sim/__init__.py +0 -74
- warp/sim/articulation.py +0 -793
- warp/sim/collide.py +0 -2570
- warp/sim/graph_coloring.py +0 -307
- warp/sim/import_mjcf.py +0 -791
- warp/sim/import_snu.py +0 -227
- warp/sim/import_urdf.py +0 -579
- warp/sim/import_usd.py +0 -898
- warp/sim/inertia.py +0 -357
- warp/sim/integrator.py +0 -245
- warp/sim/integrator_euler.py +0 -2000
- warp/sim/integrator_featherstone.py +0 -2101
- warp/sim/integrator_vbd.py +0 -2487
- warp/sim/integrator_xpbd.py +0 -3295
- warp/sim/model.py +0 -4821
- warp/sim/particles.py +0 -121
- warp/sim/render.py +0 -431
- warp/sim/utils.py +0 -431
- warp/tests/sim/disabled_kinematics.py +0 -244
- warp/tests/sim/test_cloth.py +0 -863
- warp/tests/sim/test_collision.py +0 -743
- warp/tests/sim/test_coloring.py +0 -347
- warp/tests/sim/test_inertia.py +0 -161
- warp/tests/sim/test_model.py +0 -226
- warp/tests/sim/test_sim_grad.py +0 -287
- warp/tests/sim/test_sim_grad_bounce_linear.py +0 -212
- warp/tests/sim/test_sim_kinematics.py +0 -98
- warp/thirdparty/__init__.py +0 -0
- warp_lang-1.9.0.dist-info/RECORD +0 -456
- /warp/{fem → _src/fem}/quadrature/__init__.py +0 -0
- /warp/{tests/sim → _src/thirdparty}/__init__.py +0 -0
- /warp/{thirdparty → _src/thirdparty}/appdirs.py +0 -0
- /warp/{thirdparty → _src/thirdparty}/dlpack.py +0 -0
- {warp_lang-1.9.0.dist-info → warp_lang-1.10.0rc2.dist-info}/WHEEL +0 -0
- {warp_lang-1.9.0.dist-info → warp_lang-1.10.0rc2.dist-info}/licenses/LICENSE.md +0 -0
- {warp_lang-1.9.0.dist-info → warp_lang-1.10.0rc2.dist-info}/top_level.txt +0 -0
warp/tests/test_spatial.py
CHANGED
|
@@ -55,9 +55,9 @@ def test_spatial_vector_constructors(test, device, dtype, register_kernels=False
|
|
|
55
55
|
np.float64: 1.0e-8,
|
|
56
56
|
}.get(dtype, 0)
|
|
57
57
|
|
|
58
|
-
wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
59
|
-
vec3 = wp.types.vector(length=3, dtype=wptype)
|
|
60
|
-
spatial_vector = wp.types.vector(length=6, dtype=wptype)
|
|
58
|
+
wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
59
|
+
vec3 = wp._src.types.vector(length=3, dtype=wptype)
|
|
60
|
+
spatial_vector = wp._src.types.vector(length=6, dtype=wptype)
|
|
61
61
|
|
|
62
62
|
def check_spatial_vector_component_constructor(
|
|
63
63
|
input: wp.array(dtype=wptype),
|
|
@@ -140,19 +140,19 @@ def test_spatial_vector_indexing(test, device, dtype, register_kernels=False):
|
|
|
140
140
|
np.float64: 1.0e-8,
|
|
141
141
|
}.get(dtype, 0)
|
|
142
142
|
|
|
143
|
-
wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
144
|
-
spatial_vector = wp.types.vector(length=6, dtype=wptype)
|
|
143
|
+
wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
144
|
+
spatial_vector = wp._src.types.vector(length=6, dtype=wptype)
|
|
145
145
|
|
|
146
146
|
def check_spatial_vector_indexing(
|
|
147
147
|
input: wp.array(dtype=spatial_vector),
|
|
148
148
|
out: wp.array(dtype=wptype),
|
|
149
149
|
):
|
|
150
|
-
|
|
150
|
+
elem = input[0]
|
|
151
151
|
|
|
152
152
|
# multiply outputs by 2 so we've got something to backpropagate:
|
|
153
153
|
idx = 0
|
|
154
154
|
for i in range(6):
|
|
155
|
-
out[idx] = wptype(2) *
|
|
155
|
+
out[idx] = wptype(2) * elem[i]
|
|
156
156
|
idx = idx + 1
|
|
157
157
|
|
|
158
158
|
kernel = getkernel(check_spatial_vector_indexing, suffix=dtype.__name__)
|
|
@@ -192,8 +192,8 @@ def test_spatial_vector_scalar_multiplication(test, device, dtype, register_kern
|
|
|
192
192
|
np.float64: 1.0e-8,
|
|
193
193
|
}.get(dtype, 0)
|
|
194
194
|
|
|
195
|
-
wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
196
|
-
spatial_vector = wp.types.vector(length=6, dtype=wptype)
|
|
195
|
+
wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
196
|
+
spatial_vector = wp._src.types.vector(length=6, dtype=wptype)
|
|
197
197
|
|
|
198
198
|
def check_spatial_vector_scalar_mul(
|
|
199
199
|
s: wp.array(dtype=wptype),
|
|
@@ -262,8 +262,8 @@ def test_spatial_vector_add_sub(test, device, dtype, register_kernels=False):
|
|
|
262
262
|
np.float64: 1.0e-8,
|
|
263
263
|
}.get(dtype, 0)
|
|
264
264
|
|
|
265
|
-
wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
266
|
-
spatial_vector = wp.types.vector(length=6, dtype=wptype)
|
|
265
|
+
wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
266
|
+
spatial_vector = wp._src.types.vector(length=6, dtype=wptype)
|
|
267
267
|
|
|
268
268
|
def check_spatial_vector_add_sub(
|
|
269
269
|
q: wp.array(dtype=spatial_vector),
|
|
@@ -338,8 +338,8 @@ def test_spatial_dot(test, device, dtype, register_kernels=False):
|
|
|
338
338
|
np.float64: 1.0e-8,
|
|
339
339
|
}.get(dtype, 0)
|
|
340
340
|
|
|
341
|
-
wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
342
|
-
spatial_vector = wp.types.vector(length=6, dtype=wptype)
|
|
341
|
+
wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
342
|
+
spatial_vector = wp._src.types.vector(length=6, dtype=wptype)
|
|
343
343
|
|
|
344
344
|
def check_spatial_dot(
|
|
345
345
|
s: wp.array(dtype=spatial_vector),
|
|
@@ -390,8 +390,8 @@ def test_spatial_cross(test, device, dtype, register_kernels=False):
|
|
|
390
390
|
np.float64: 1.0e-8,
|
|
391
391
|
}.get(dtype, 0)
|
|
392
392
|
|
|
393
|
-
wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
394
|
-
spatial_vector = wp.types.vector(length=6, dtype=wptype)
|
|
393
|
+
wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
394
|
+
spatial_vector = wp._src.types.vector(length=6, dtype=wptype)
|
|
395
395
|
|
|
396
396
|
def check_spatial_cross(
|
|
397
397
|
s: wp.array(dtype=spatial_vector),
|
|
@@ -544,8 +544,8 @@ def test_spatial_top_bottom(test, device, dtype, register_kernels=False):
|
|
|
544
544
|
np.float64: 1.0e-8,
|
|
545
545
|
}.get(dtype, 0)
|
|
546
546
|
|
|
547
|
-
wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
548
|
-
spatial_vector = wp.types.vector(length=6, dtype=wptype)
|
|
547
|
+
wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
548
|
+
spatial_vector = wp._src.types.vector(length=6, dtype=wptype)
|
|
549
549
|
|
|
550
550
|
def check_spatial_top_bottom(
|
|
551
551
|
s: wp.array(dtype=spatial_vector),
|
|
@@ -613,25 +613,25 @@ def test_transform_constructors(test, device, dtype, register_kernels=False):
|
|
|
613
613
|
np.float64: 1.0e-8,
|
|
614
614
|
}.get(dtype, 0)
|
|
615
615
|
|
|
616
|
-
wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
617
|
-
vec3 = wp.types.vector(length=3, dtype=wptype)
|
|
618
|
-
transform = wp.types.transformation(dtype=wptype)
|
|
619
|
-
quat = wp.types.quaternion(dtype=wptype)
|
|
616
|
+
wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
617
|
+
vec3 = wp._src.types.vector(length=3, dtype=wptype)
|
|
618
|
+
transform = wp._src.types.transformation(dtype=wptype)
|
|
619
|
+
quat = wp._src.types.quaternion(dtype=wptype)
|
|
620
620
|
|
|
621
621
|
def check_transform_constructor(
|
|
622
622
|
input: wp.array(dtype=wptype),
|
|
623
623
|
out: wp.array(dtype=wptype),
|
|
624
624
|
):
|
|
625
|
-
|
|
625
|
+
a = transform(vec3(input[0], input[1], input[2]), quat(input[3], input[4], input[5], input[6]))
|
|
626
|
+
b = transform(input[0], input[1], input[2], input[3], input[4], input[5], input[6])
|
|
626
627
|
|
|
627
|
-
|
|
628
|
-
out[
|
|
629
|
-
out[
|
|
630
|
-
out[
|
|
631
|
-
out[
|
|
632
|
-
out[
|
|
633
|
-
out[
|
|
634
|
-
out[6] = wptype(2) * result[6]
|
|
628
|
+
out[0] = a[0] + b[0]
|
|
629
|
+
out[1] = a[1] + b[1]
|
|
630
|
+
out[2] = a[2] + b[2]
|
|
631
|
+
out[3] = a[3] + b[3]
|
|
632
|
+
out[4] = a[4] + b[4]
|
|
633
|
+
out[5] = a[5] + b[5]
|
|
634
|
+
out[6] = a[6] + b[6]
|
|
635
635
|
|
|
636
636
|
kernel = getkernel(check_transform_constructor, suffix=dtype.__name__)
|
|
637
637
|
output_select_kernel = get_select_kernel(wptype)
|
|
@@ -672,19 +672,19 @@ def test_transform_indexing(test, device, dtype, register_kernels=False):
|
|
|
672
672
|
np.float64: 1.0e-8,
|
|
673
673
|
}.get(dtype, 0)
|
|
674
674
|
|
|
675
|
-
wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
676
|
-
transform = wp.types.transformation(dtype=wptype)
|
|
675
|
+
wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
676
|
+
transform = wp._src.types.transformation(dtype=wptype)
|
|
677
677
|
|
|
678
678
|
def check_transform_indexing(
|
|
679
679
|
input: wp.array(dtype=transform),
|
|
680
680
|
out: wp.array(dtype=wptype),
|
|
681
681
|
):
|
|
682
|
-
|
|
682
|
+
elem = input[0]
|
|
683
683
|
|
|
684
684
|
# multiply outputs by 2 so we've got something to backpropagate:
|
|
685
685
|
idx = 0
|
|
686
686
|
for i in range(7):
|
|
687
|
-
out[idx] = wptype(2) *
|
|
687
|
+
out[idx] = wptype(2) * elem[i]
|
|
688
688
|
idx = idx + 1
|
|
689
689
|
|
|
690
690
|
kernel = getkernel(check_transform_indexing, suffix=dtype.__name__)
|
|
@@ -721,8 +721,8 @@ def test_transform_scalar_multiplication(test, device, dtype, register_kernels=F
|
|
|
721
721
|
np.float64: 1.0e-8,
|
|
722
722
|
}.get(dtype, 0)
|
|
723
723
|
|
|
724
|
-
wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
725
|
-
transform = wp.types.transformation(dtype=wptype)
|
|
724
|
+
wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
725
|
+
transform = wp._src.types.transformation(dtype=wptype)
|
|
726
726
|
|
|
727
727
|
def check_transform_scalar_mul(
|
|
728
728
|
s: wp.array(dtype=wptype),
|
|
@@ -789,8 +789,8 @@ def test_transform_add_sub(test, device, dtype, register_kernels=False):
|
|
|
789
789
|
np.float64: 1.0e-8,
|
|
790
790
|
}.get(dtype, 0)
|
|
791
791
|
|
|
792
|
-
wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
793
|
-
transform = wp.types.transformation(dtype=wptype)
|
|
792
|
+
wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
793
|
+
transform = wp._src.types.transformation(dtype=wptype)
|
|
794
794
|
|
|
795
795
|
def check_transform_add_sub(
|
|
796
796
|
q: wp.array(dtype=transform),
|
|
@@ -866,8 +866,8 @@ def test_transform_get_trans_rot(test, device, dtype, register_kernels=False):
|
|
|
866
866
|
np.float64: 1.0e-8,
|
|
867
867
|
}.get(dtype, 0)
|
|
868
868
|
|
|
869
|
-
wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
870
|
-
transform = wp.types.transformation(dtype=wptype)
|
|
869
|
+
wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
870
|
+
transform = wp._src.types.transformation(dtype=wptype)
|
|
871
871
|
|
|
872
872
|
def check_transform_get_trans_rot(
|
|
873
873
|
s: wp.array(dtype=transform),
|
|
@@ -936,8 +936,8 @@ def test_transform_multiply(test, device, dtype, register_kernels=False):
|
|
|
936
936
|
np.float64: 1.0e-8,
|
|
937
937
|
}.get(dtype, 0)
|
|
938
938
|
|
|
939
|
-
wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
940
|
-
transform = wp.types.transformation(dtype=wptype)
|
|
939
|
+
wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
940
|
+
transform = wp._src.types.transformation(dtype=wptype)
|
|
941
941
|
|
|
942
942
|
def check_transform_multiply(
|
|
943
943
|
a: wp.array(dtype=transform),
|
|
@@ -1045,8 +1045,8 @@ def test_transform_inverse(test, device, dtype, register_kernels=False):
|
|
|
1045
1045
|
np.float64: 1.0e-8,
|
|
1046
1046
|
}.get(dtype, 0)
|
|
1047
1047
|
|
|
1048
|
-
wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
1049
|
-
transform = wp.types.transformation(dtype=wptype)
|
|
1048
|
+
wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
1049
|
+
transform = wp._src.types.transformation(dtype=wptype)
|
|
1050
1050
|
|
|
1051
1051
|
def check_transform_inverse(
|
|
1052
1052
|
a: wp.array(dtype=transform),
|
|
@@ -1138,9 +1138,9 @@ def test_transform_point_vector(test, device, dtype, register_kernels=False):
|
|
|
1138
1138
|
np.float64: 1.0e-8,
|
|
1139
1139
|
}.get(dtype, 0)
|
|
1140
1140
|
|
|
1141
|
-
wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
1142
|
-
transform = wp.types.transformation(dtype=wptype)
|
|
1143
|
-
vec3 = wp.types.vector(length=3, dtype=wptype)
|
|
1141
|
+
wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
1142
|
+
transform = wp._src.types.transformation(dtype=wptype)
|
|
1143
|
+
vec3 = wp._src.types.vector(length=3, dtype=wptype)
|
|
1144
1144
|
|
|
1145
1145
|
def check_transform_point_vector(
|
|
1146
1146
|
t: wp.array(dtype=transform),
|
|
@@ -1246,8 +1246,8 @@ def test_spatial_matrix_constructors(test, device, dtype, register_kernels=False
|
|
|
1246
1246
|
np.float64: 1.0e-8,
|
|
1247
1247
|
}.get(dtype, 0)
|
|
1248
1248
|
|
|
1249
|
-
wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
1250
|
-
spatial_matrix = wp.types.matrix(shape=(6, 6), dtype=wptype)
|
|
1249
|
+
wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
1250
|
+
spatial_matrix = wp._src.types.matrix(shape=(6, 6), dtype=wptype)
|
|
1251
1251
|
|
|
1252
1252
|
def check_spatial_matrix_constructor(
|
|
1253
1253
|
input: wp.array(dtype=wptype),
|
|
@@ -1342,20 +1342,20 @@ def test_spatial_matrix_indexing(test, device, dtype, register_kernels=False):
|
|
|
1342
1342
|
np.float64: 1.0e-8,
|
|
1343
1343
|
}.get(dtype, 0)
|
|
1344
1344
|
|
|
1345
|
-
wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
1346
|
-
spatial_matrix = wp.types.matrix(shape=(6, 6), dtype=wptype)
|
|
1345
|
+
wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
1346
|
+
spatial_matrix = wp._src.types.matrix(shape=(6, 6), dtype=wptype)
|
|
1347
1347
|
|
|
1348
1348
|
def check_spatial_matrix_indexing(
|
|
1349
1349
|
input: wp.array(dtype=spatial_matrix),
|
|
1350
1350
|
out: wp.array(dtype=wptype),
|
|
1351
1351
|
):
|
|
1352
|
-
|
|
1352
|
+
elem = input[0]
|
|
1353
1353
|
|
|
1354
1354
|
# multiply outputs by 2 so we've got something to backpropagate:
|
|
1355
1355
|
idx = 0
|
|
1356
1356
|
for i in range(6):
|
|
1357
1357
|
for j in range(6):
|
|
1358
|
-
out[idx] = wptype(2) *
|
|
1358
|
+
out[idx] = wptype(2) * elem[i, j]
|
|
1359
1359
|
idx = idx + 1
|
|
1360
1360
|
|
|
1361
1361
|
kernel = getkernel(check_spatial_matrix_indexing, suffix=dtype.__name__)
|
|
@@ -1397,8 +1397,8 @@ def test_spatial_matrix_scalar_multiplication(test, device, dtype, register_kern
|
|
|
1397
1397
|
np.float64: 1.0e-8,
|
|
1398
1398
|
}.get(dtype, 0)
|
|
1399
1399
|
|
|
1400
|
-
wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
1401
|
-
spatial_matrix = wp.types.matrix(shape=(6, 6), dtype=wptype)
|
|
1400
|
+
wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
1401
|
+
spatial_matrix = wp._src.types.matrix(shape=(6, 6), dtype=wptype)
|
|
1402
1402
|
|
|
1403
1403
|
def check_spatial_matrix_scalar_mul(
|
|
1404
1404
|
s: wp.array(dtype=wptype),
|
|
@@ -1473,8 +1473,8 @@ def test_spatial_matrix_add_sub(test, device, dtype, register_kernels=False):
|
|
|
1473
1473
|
np.float64: 1.0e-8,
|
|
1474
1474
|
}.get(dtype, 0)
|
|
1475
1475
|
|
|
1476
|
-
wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
1477
|
-
spatial_matrix = wp.types.matrix(shape=(6, 6), dtype=wptype)
|
|
1476
|
+
wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
1477
|
+
spatial_matrix = wp._src.types.matrix(shape=(6, 6), dtype=wptype)
|
|
1478
1478
|
|
|
1479
1479
|
def check_spatial_matrix_add_sub(
|
|
1480
1480
|
q: wp.array(dtype=spatial_matrix),
|
|
@@ -1561,9 +1561,9 @@ def test_spatial_matvec_multiplication(test, device, dtype, register_kernels=Fal
|
|
|
1561
1561
|
np.float64: 1.0e-8,
|
|
1562
1562
|
}.get(dtype, 0)
|
|
1563
1563
|
|
|
1564
|
-
wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
1565
|
-
spatial_matrix = wp.types.matrix(shape=(6, 6), dtype=wptype)
|
|
1566
|
-
spatial_vector = wp.types.vector(length=6, dtype=wptype)
|
|
1564
|
+
wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
1565
|
+
spatial_matrix = wp._src.types.matrix(shape=(6, 6), dtype=wptype)
|
|
1566
|
+
spatial_vector = wp._src.types.vector(length=6, dtype=wptype)
|
|
1567
1567
|
|
|
1568
1568
|
output_select_kernel = get_select_kernel(wptype)
|
|
1569
1569
|
|
|
@@ -1622,8 +1622,8 @@ def test_spatial_matmat_multiplication(test, device, dtype, register_kernels=Fal
|
|
|
1622
1622
|
np.float64: 5.0e-7,
|
|
1623
1623
|
}.get(dtype, 0)
|
|
1624
1624
|
|
|
1625
|
-
wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
1626
|
-
spatial_matrix = wp.types.matrix(shape=(6, 6), dtype=wptype)
|
|
1625
|
+
wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
1626
|
+
spatial_matrix = wp._src.types.matrix(shape=(6, 6), dtype=wptype)
|
|
1627
1627
|
|
|
1628
1628
|
output_select_kernel = get_select_kernel(wptype)
|
|
1629
1629
|
|
|
@@ -1689,8 +1689,8 @@ def test_spatial_mat_transpose(test, device, dtype, register_kernels=False):
|
|
|
1689
1689
|
np.float64: 1.0e-8,
|
|
1690
1690
|
}.get(dtype, 0)
|
|
1691
1691
|
|
|
1692
|
-
wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
1693
|
-
spatial_matrix = wp.types.matrix(shape=(6, 6), dtype=wptype)
|
|
1692
|
+
wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
1693
|
+
spatial_matrix = wp._src.types.matrix(shape=(6, 6), dtype=wptype)
|
|
1694
1694
|
|
|
1695
1695
|
output_select_kernel = get_select_kernel(wptype)
|
|
1696
1696
|
|
|
@@ -1746,8 +1746,8 @@ def test_spatial_outer_product(test, device, dtype, register_kernels=False):
|
|
|
1746
1746
|
np.float64: 1.0e-8,
|
|
1747
1747
|
}.get(dtype, 0)
|
|
1748
1748
|
|
|
1749
|
-
wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
1750
|
-
spatial_vector = wp.types.vector(length=6, dtype=wptype)
|
|
1749
|
+
wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
1750
|
+
spatial_vector = wp._src.types.vector(length=6, dtype=wptype)
|
|
1751
1751
|
|
|
1752
1752
|
output_select_kernel = get_select_kernel(wptype)
|
|
1753
1753
|
|
|
@@ -1826,8 +1826,8 @@ def test_spatial_adjoint(test, device, dtype, register_kernels=False):
|
|
|
1826
1826
|
np.float64: 1.0e-8,
|
|
1827
1827
|
}.get(dtype, 0)
|
|
1828
1828
|
|
|
1829
|
-
wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
1830
|
-
mat3 = wp.types.matrix(shape=(3, 3), dtype=wptype)
|
|
1829
|
+
wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
1830
|
+
mat3 = wp._src.types.matrix(shape=(3, 3), dtype=wptype)
|
|
1831
1831
|
|
|
1832
1832
|
output_select_kernel = get_select_kernel(wptype)
|
|
1833
1833
|
|
|
@@ -1901,7 +1901,7 @@ def test_spatial_adjoint(test, device, dtype, register_kernels=False):
|
|
|
1901
1901
|
|
|
1902
1902
|
|
|
1903
1903
|
def test_transform_identity(test, device, dtype, register_kernels=False):
|
|
1904
|
-
wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
1904
|
+
wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
1905
1905
|
|
|
1906
1906
|
def transform_identity_test(output: wp.array(dtype=wptype)):
|
|
1907
1907
|
t = wp.transform_identity(dtype=wptype)
|
|
@@ -1936,7 +1936,7 @@ def test_transform_identity(test, device, dtype, register_kernels=False):
|
|
|
1936
1936
|
def test_transform_anon_type_instance(test, device, dtype, register_kernels=False):
|
|
1937
1937
|
rng = np.random.default_rng(123)
|
|
1938
1938
|
|
|
1939
|
-
wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
1939
|
+
wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
1940
1940
|
|
|
1941
1941
|
def transform_create_test(input: wp.array(dtype=wptype), output: wp.array(dtype=wptype)):
|
|
1942
1942
|
t = wp.transformation(
|
|
@@ -1970,10 +1970,10 @@ def test_transform_anon_type_instance(test, device, dtype, register_kernels=Fals
|
|
|
1970
1970
|
|
|
1971
1971
|
|
|
1972
1972
|
def test_transform_from_matrix(test, device, dtype, register_kernels=False):
|
|
1973
|
-
wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
1974
|
-
mat44 = wp.types.matrix((4, 4), wptype)
|
|
1975
|
-
vec3 = wp.types.vector(3, wptype)
|
|
1976
|
-
quat = wp.types.quaternion(wptype)
|
|
1973
|
+
wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
1974
|
+
mat44 = wp._src.types.matrix((4, 4), wptype)
|
|
1975
|
+
vec3 = wp._src.types.vector(3, wptype)
|
|
1976
|
+
quat = wp._src.types.quaternion(wptype)
|
|
1977
1977
|
|
|
1978
1978
|
def transform_from_matrix_kernel():
|
|
1979
1979
|
# fmt: off
|
|
@@ -1999,10 +1999,10 @@ def test_transform_from_matrix(test, device, dtype, register_kernels=False):
|
|
|
1999
1999
|
|
|
2000
2000
|
|
|
2001
2001
|
def test_transform_to_matrix(test, device, dtype, register_kernels=False):
|
|
2002
|
-
wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
2003
|
-
mat44 = wp.types.matrix((4, 4), wptype)
|
|
2004
|
-
vec3 = wp.types.vector(3, wptype)
|
|
2005
|
-
quat = wp.types.quaternion(wptype)
|
|
2002
|
+
wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
2003
|
+
mat44 = wp._src.types.matrix((4, 4), wptype)
|
|
2004
|
+
vec3 = wp._src.types.vector(3, wptype)
|
|
2005
|
+
quat = wp._src.types.quaternion(wptype)
|
|
2006
2006
|
|
|
2007
2007
|
def transform_to_matrix_kernel():
|
|
2008
2008
|
p = vec3(wptype(1.0), wptype(2.0), wptype(3.0))
|
|
@@ -2031,10 +2031,10 @@ def test_transform_to_matrix(test, device, dtype, register_kernels=False):
|
|
|
2031
2031
|
|
|
2032
2032
|
|
|
2033
2033
|
def test_transform_compose(test, device, dtype, register_kernels=False):
|
|
2034
|
-
wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
2035
|
-
mat44 = wp.types.matrix((4, 4), wptype)
|
|
2036
|
-
vec3 = wp.types.vector(3, wptype)
|
|
2037
|
-
quat = wp.types.quaternion(wptype)
|
|
2034
|
+
wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
2035
|
+
mat44 = wp._src.types.matrix((4, 4), wptype)
|
|
2036
|
+
vec3 = wp._src.types.vector(3, wptype)
|
|
2037
|
+
quat = wp._src.types.quaternion(wptype)
|
|
2038
2038
|
|
|
2039
2039
|
def transform_compose_kernel():
|
|
2040
2040
|
p = vec3(wptype(1.0), wptype(2.0), wptype(3.0))
|
|
@@ -2063,10 +2063,10 @@ def test_transform_compose(test, device, dtype, register_kernels=False):
|
|
|
2063
2063
|
|
|
2064
2064
|
|
|
2065
2065
|
def test_transform_decompose(test, device, dtype, register_kernels=False):
|
|
2066
|
-
wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
2067
|
-
mat44 = wp.types.matrix((4, 4), wptype)
|
|
2068
|
-
vec3 = wp.types.vector(3, wptype)
|
|
2069
|
-
quat = wp.types.quaternion(wptype)
|
|
2066
|
+
wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
2067
|
+
mat44 = wp._src.types.matrix((4, 4), wptype)
|
|
2068
|
+
vec3 = wp._src.types.vector(3, wptype)
|
|
2069
|
+
quat = wp._src.types.quaternion(wptype)
|
|
2070
2070
|
|
|
2071
2071
|
def transform_decompose_kernel():
|
|
2072
2072
|
# fmt: off
|
|
@@ -2519,7 +2519,6 @@ def test_transform_slicing_assign(test, device):
|
|
|
2519
2519
|
vec2 = wp.vec(2, float)
|
|
2520
2520
|
vec3 = wp.vec(3, float)
|
|
2521
2521
|
vec4 = wp.vec(4, float)
|
|
2522
|
-
vec5 = wp.vec(5, float)
|
|
2523
2522
|
vec6 = wp.vec(6, float)
|
|
2524
2523
|
vec7 = wp.vec(7, float)
|
|
2525
2524
|
|
|
@@ -2612,6 +2611,24 @@ def test_transform_slicing_assign_backward(test, device):
|
|
|
2612
2611
|
assert_np_equal(x.grad.numpy(), np.array(((1.0, 1.0),), dtype=float))
|
|
2613
2612
|
|
|
2614
2613
|
|
|
2614
|
+
def test_transform_default_q_arg(test, device):
|
|
2615
|
+
vec7 = wp.vec(7, float)
|
|
2616
|
+
|
|
2617
|
+
@wp.func
|
|
2618
|
+
def fn():
|
|
2619
|
+
t = wp.transform(p=wp.vec3(1.0, 2.0, 3.0))
|
|
2620
|
+
|
|
2621
|
+
wp.expect_eq(t[:] == vec7(1.0, 2.0, 3.0, 0.0, 0.0, 0.0, 1.0), True)
|
|
2622
|
+
|
|
2623
|
+
@wp.kernel(module="unique")
|
|
2624
|
+
def kernel():
|
|
2625
|
+
fn()
|
|
2626
|
+
|
|
2627
|
+
wp.launch(kernel, 1, device=device)
|
|
2628
|
+
wp.synchronize()
|
|
2629
|
+
fn()
|
|
2630
|
+
|
|
2631
|
+
|
|
2615
2632
|
devices = get_test_devices()
|
|
2616
2633
|
|
|
2617
2634
|
|
|
@@ -2834,6 +2851,7 @@ add_function_test(TestSpatial, "test_transform_slicing_assign", test_transform_s
|
|
|
2834
2851
|
add_function_test(
|
|
2835
2852
|
TestSpatial, "test_transform_slicing_assign_backward", test_transform_slicing_assign_backward, devices=devices
|
|
2836
2853
|
)
|
|
2854
|
+
add_function_test(TestSpatial, "test_transform_default_q_arg", test_transform_default_q_arg, devices=devices)
|
|
2837
2855
|
|
|
2838
2856
|
|
|
2839
2857
|
if __name__ == "__main__":
|
|
@@ -152,7 +152,7 @@ def test_nan_scalar(test, device, dtype, register_kernels=False):
|
|
|
152
152
|
|
|
153
153
|
|
|
154
154
|
def test_is_special_vec(test, device, dtype, register_kernels=False):
|
|
155
|
-
vector_type = wp.types.vector(5, dtype)
|
|
155
|
+
vector_type = wp._src.types.vector(5, dtype)
|
|
156
156
|
|
|
157
157
|
def check_special_vec(bool_outputs: wp.array(dtype=wp.bool)):
|
|
158
158
|
zeros_vector = vector_type()
|
|
@@ -197,7 +197,7 @@ def test_is_special_vec(test, device, dtype, register_kernels=False):
|
|
|
197
197
|
|
|
198
198
|
|
|
199
199
|
def test_is_special_mat(test, device, dtype, register_kernels=False):
|
|
200
|
-
mat_type = wp.types.matrix((5, 5), dtype)
|
|
200
|
+
mat_type = wp._src.types.matrix((5, 5), dtype)
|
|
201
201
|
|
|
202
202
|
def check_special_mat(bool_outputs: wp.array(dtype=wp.bool)):
|
|
203
203
|
zeros_mat = mat_type()
|
|
@@ -242,7 +242,7 @@ def test_is_special_mat(test, device, dtype, register_kernels=False):
|
|
|
242
242
|
|
|
243
243
|
|
|
244
244
|
def test_is_special_quat(test, device, dtype, register_kernels=False):
|
|
245
|
-
quat_type = wp.types.quaternion(dtype)
|
|
245
|
+
quat_type = wp._src.types.quaternion(dtype)
|
|
246
246
|
|
|
247
247
|
def check_special_quat(bool_outputs: wp.array(dtype=wp.bool)):
|
|
248
248
|
zeros_quat = quat_type()
|
|
@@ -285,8 +285,8 @@ def test_is_special_quat(test, device, dtype, register_kernels=False):
|
|
|
285
285
|
|
|
286
286
|
|
|
287
287
|
def test_is_special_int(test, device, dtype, register_kernels=False):
|
|
288
|
-
vector_type = wp.types.vector(5, dtype)
|
|
289
|
-
matrix_type = wp.types.matrix((5, 5), dtype)
|
|
288
|
+
vector_type = wp._src.types.vector(5, dtype)
|
|
289
|
+
matrix_type = wp._src.types.matrix((5, 5), dtype)
|
|
290
290
|
|
|
291
291
|
def check_is_special_int(bool_outputs: wp.array(dtype=wp.bool)):
|
|
292
292
|
bool_outputs[0] = wp.isfinite(dtype(0))
|
|
@@ -350,7 +350,7 @@ for dtype in [wp.float16, wp.float32, wp.float64]:
|
|
|
350
350
|
)
|
|
351
351
|
|
|
352
352
|
# Ensure functions like wp.isfinite work on integer types
|
|
353
|
-
for dtype in wp.types.int_types:
|
|
353
|
+
for dtype in wp._src.types.int_types:
|
|
354
354
|
add_function_test_register_kernel(
|
|
355
355
|
TestSpecialValues, f"test_is_special_int_{dtype.__name__}", test_is_special_int, devices=devices, dtype=dtype
|
|
356
356
|
)
|
warp/tests/test_static.py
CHANGED
|
@@ -155,7 +155,7 @@ def test_invalid_static_expression(test, device):
|
|
|
155
155
|
wp.static(1.0 / 0.0)
|
|
156
156
|
|
|
157
157
|
with test.assertRaisesRegex(
|
|
158
|
-
warp.codegen.WarpCodegenError, r"Error evaluating static expression\: float division by zero"
|
|
158
|
+
warp._src.codegen.WarpCodegenError, r"Error evaluating static expression\: (?:float )?division by zero"
|
|
159
159
|
):
|
|
160
160
|
wp.launch(invalid_kernel, 1, device=device)
|
|
161
161
|
|
|
@@ -164,7 +164,7 @@ def test_invalid_static_expression(test, device):
|
|
|
164
164
|
wp.static(i * 2)
|
|
165
165
|
|
|
166
166
|
with test.assertRaisesRegex(
|
|
167
|
-
wp.codegen.WarpCodegenError,
|
|
167
|
+
wp._src.codegen.WarpCodegenError,
|
|
168
168
|
r"Error evaluating static expression\: name 'i' is not defined\. Make sure all variables used in the static expression are constant\.",
|
|
169
169
|
):
|
|
170
170
|
wp.launch(invalid_kernel, 1, device=device, inputs=[3])
|
|
@@ -176,7 +176,7 @@ def test_static_expression_return_types(test, device):
|
|
|
176
176
|
wp.static(wp.zeros(3, device=device))
|
|
177
177
|
|
|
178
178
|
with test.assertRaisesRegex(
|
|
179
|
-
warp.codegen.WarpCodegenError,
|
|
179
|
+
warp._src.codegen.WarpCodegenError,
|
|
180
180
|
r"Static expression returns an unsupported value\: a Warp array cannot be created inside Warp kernels",
|
|
181
181
|
):
|
|
182
182
|
wp.launch(invalid_kernel, 1, device=device)
|
|
@@ -211,7 +211,7 @@ def test_static_expression_return_types(test, device):
|
|
|
211
211
|
wp.static(create_struct())
|
|
212
212
|
|
|
213
213
|
with test.assertRaisesRegex(
|
|
214
|
-
warp.codegen.WarpCodegenError,
|
|
214
|
+
warp._src.codegen.WarpCodegenError,
|
|
215
215
|
r"Static expression returns an unsupported value: the returned Warp struct contains a data type that cannot be constructed inside Warp kernels\: a Warp array cannot be created inside Warp kernels at .*?Foo\.bar\.baz",
|
|
216
216
|
):
|
|
217
217
|
wp.launch(invalid_kernel, 1, device=device)
|
|
@@ -224,7 +224,7 @@ def test_static_expression_return_types(test, device):
|
|
|
224
224
|
wp.static(function_with_no_return_value())
|
|
225
225
|
|
|
226
226
|
with test.assertRaisesRegex(
|
|
227
|
-
warp.codegen.WarpCodegenError,
|
|
227
|
+
warp._src.codegen.WarpCodegenError,
|
|
228
228
|
r"Static expression returns an unsupported value\: None is returned",
|
|
229
229
|
):
|
|
230
230
|
wp.launch(invalid_kernel, 1, device=device)
|
|
@@ -237,7 +237,7 @@ def test_static_expression_return_types(test, device):
|
|
|
237
237
|
wp.static(MyClass())
|
|
238
238
|
|
|
239
239
|
with test.assertRaisesRegex(
|
|
240
|
-
warp.codegen.WarpCodegenError,
|
|
240
|
+
warp._src.codegen.WarpCodegenError,
|
|
241
241
|
r"Static expression returns an unsupported value\: value of type .*?MyClass",
|
|
242
242
|
):
|
|
243
243
|
wp.launch(invalid_kernel, 1, device=device)
|
|
@@ -489,7 +489,7 @@ def test_static_constant_hash(test, _):
|
|
|
489
489
|
test.assertEqual(hash1, hash3)
|
|
490
490
|
|
|
491
491
|
# Warp types (scalars, vectors, matrices)
|
|
492
|
-
for warp_type in [*wp.types.scalar_types, *wp.types.vector_types]:
|
|
492
|
+
for warp_type in [*wp._src.types.scalar_types, *wp._src.types.vector_types]:
|
|
493
493
|
type_name = warp_type.__name__
|
|
494
494
|
with test.subTest(msg=f"wp.{type_name}"):
|
|
495
495
|
value1 = ", ".join([str(17)] * warp_type._length_)
|
warp/tests/test_struct.py
CHANGED
|
@@ -243,12 +243,18 @@ class MatStruct:
|
|
|
243
243
|
@wp.kernel
|
|
244
244
|
def kernel_nested_mat(out: wp.array(dtype=wp.mat44)):
|
|
245
245
|
s = MatStruct()
|
|
246
|
-
m = wp.mat44()
|
|
247
246
|
|
|
247
|
+
s.m[0, 0] = 2.0
|
|
248
248
|
s.m[1, 2] = 3.0
|
|
249
|
+
s.m[2][1] = 5.0
|
|
249
250
|
|
|
250
251
|
out[0] = s.m
|
|
251
252
|
|
|
253
|
+
out[0][2, 2] = 6.0
|
|
254
|
+
out[0][1][1] = 7.0
|
|
255
|
+
|
|
256
|
+
out[0][3, 3] = out[0][0][0]
|
|
257
|
+
|
|
252
258
|
|
|
253
259
|
def test_nested_mat(test, device):
|
|
254
260
|
m = wp.array([wp.mat44()], dtype=wp.mat44, device=device)
|
|
@@ -256,7 +262,12 @@ def test_nested_mat(test, device):
|
|
|
256
262
|
wp.synchronize()
|
|
257
263
|
|
|
258
264
|
out = m.numpy()
|
|
265
|
+
assert_np_equal(out[0][0, 0], 2.0)
|
|
259
266
|
assert_np_equal(out[0][1, 2], 3.0)
|
|
267
|
+
assert_np_equal(out[0][2][1], 5.0)
|
|
268
|
+
assert_np_equal(out[0][2, 2], 6.0)
|
|
269
|
+
assert_np_equal(out[0][1][1], 7.0)
|
|
270
|
+
assert_np_equal(out[0][3, 3], 2.0)
|
|
260
271
|
|
|
261
272
|
|
|
262
273
|
def test_assign_view(test, device):
|
|
@@ -267,7 +278,7 @@ def test_assign_view(test, device):
|
|
|
267
278
|
m = wp.array([[wp.mat44()]], dtype=wp.mat44, device=device)
|
|
268
279
|
|
|
269
280
|
with test.assertRaisesRegex(
|
|
270
|
-
wp.codegen.WarpCodegenError,
|
|
281
|
+
wp._src.codegen.WarpCodegenError,
|
|
271
282
|
r"Incorrect number of indices specified for array indexing",
|
|
272
283
|
):
|
|
273
284
|
wp.launch(kernel_assign_view, dim=[1, 1], outputs=[m], device=device)
|
|
@@ -15,10 +15,57 @@
|
|
|
15
15
|
|
|
16
16
|
import unittest
|
|
17
17
|
|
|
18
|
-
from warp.sim.collide import triangle_closest_point_barycentric
|
|
19
18
|
from warp.tests.unittest_utils import *
|
|
20
19
|
|
|
21
20
|
|
|
21
|
+
@wp.func
|
|
22
|
+
def triangle_closest_point_barycentric(a: wp.vec3, b: wp.vec3, c: wp.vec3, p: wp.vec3):
|
|
23
|
+
ab = b - a
|
|
24
|
+
ac = c - a
|
|
25
|
+
ap = p - a
|
|
26
|
+
|
|
27
|
+
d1 = wp.dot(ab, ap)
|
|
28
|
+
d2 = wp.dot(ac, ap)
|
|
29
|
+
|
|
30
|
+
if d1 <= 0.0 and d2 <= 0.0:
|
|
31
|
+
return wp.vec3(1.0, 0.0, 0.0)
|
|
32
|
+
|
|
33
|
+
bp = p - b
|
|
34
|
+
d3 = wp.dot(ab, bp)
|
|
35
|
+
d4 = wp.dot(ac, bp)
|
|
36
|
+
|
|
37
|
+
if d3 >= 0.0 and d4 <= d3:
|
|
38
|
+
return wp.vec3(0.0, 1.0, 0.0)
|
|
39
|
+
|
|
40
|
+
vc = d1 * d4 - d3 * d2
|
|
41
|
+
v = d1 / (d1 - d3)
|
|
42
|
+
if vc <= 0.0 and d1 >= 0.0 and d3 <= 0.0:
|
|
43
|
+
return wp.vec3(1.0 - v, v, 0.0)
|
|
44
|
+
|
|
45
|
+
cp = p - c
|
|
46
|
+
d5 = wp.dot(ab, cp)
|
|
47
|
+
d6 = wp.dot(ac, cp)
|
|
48
|
+
|
|
49
|
+
if d6 >= 0.0 and d5 <= d6:
|
|
50
|
+
return wp.vec3(0.0, 0.0, 1.0)
|
|
51
|
+
|
|
52
|
+
vb = d5 * d2 - d1 * d6
|
|
53
|
+
w = d2 / (d2 - d6)
|
|
54
|
+
if vb <= 0.0 and d2 >= 0.0 and d6 <= 0.0:
|
|
55
|
+
return wp.vec3(1.0 - w, 0.0, w)
|
|
56
|
+
|
|
57
|
+
va = d3 * d6 - d5 * d4
|
|
58
|
+
w = (d4 - d3) / ((d4 - d3) + (d5 - d6))
|
|
59
|
+
if va <= 0.0 and (d4 - d3) >= 0.0 and (d5 - d6) >= 0.0:
|
|
60
|
+
return wp.vec3(0.0, 1.0 - w, w)
|
|
61
|
+
|
|
62
|
+
denom = 1.0 / (va + vb + vc)
|
|
63
|
+
v = vb * denom
|
|
64
|
+
w = vc * denom
|
|
65
|
+
|
|
66
|
+
return wp.vec3(1.0 - v - w, v, w)
|
|
67
|
+
|
|
68
|
+
|
|
22
69
|
# a-b is the edge where the closest point is located at
|
|
23
70
|
@wp.func
|
|
24
71
|
def check_edge_feasible_region(p: wp.vec3, a: wp.vec3, b: wp.vec3, c: wp.vec3, eps: float):
|