Perlin-CuPy is a Perlin-NumPy compatible library for GPU-accelerated Perlin Noise generation. Perlin-CuPy acts as a drop-in replacement to run existing Perlin-NumPy code on NVIDIA CUDA platforms.
from perlin_cupy import (
generate_fractal_noise_2d, generate_fractal_noise_3d,
generate_perlin_noise_2d, generate_perlin_noise_3d
)Wheel (precompiled binary package) is available for Linux (x86_64). We've currently tested only for CUDA 11.3 platform using CuPy v11.3, but it should work for any CuPy version installed in your environment.
| Platform | Command |
|---|---|
| CUDA 11.3 | pip install perlin-cupy |
- NVIDIA CUDA GPU with the Compute Capability 3.0 or larger.
- CUDA Toolkit: v10.0 / v10.1 / v10.2 / v11.0 / v11.1 / v11.2 / v11.3
- CuPy: v10.0 / v10.1 / v10.2 / v11.0 / v11.1 / v11.2 / v11.3
The usage is exactly the same as Perlin-NumPy.
The function generate_perlin_noise_2d generates a 2D texture of perlin noise. Its parameters are:
shape: shape of the generated array (tuple of 2 ints)res: number of periods of noise to generate along each axis (tuple of 2 ints)tileable: if the noise should be tileable along each axis (tuple of 2 bools)
Note: shape must be a multiple of res
The function generate_fractal_noise_2d combines several octaves of 2D perlin noise to make 2D fractal noise. Its parameters are:
shape: shape of the generated array (tuple of 2 ints)res: number of periods of noise to generate along each axis (tuple of 2 ints)octaves: number of octaves in the noise (int)persistence: scaling factor between two octaves (float)lacunarity: frequency factor between two octaves (float)tileable: if the noise should be tileable along each axis (tuple of 2 bools)
Note: shape must be a multiple of lacunarity^(octaves-1)*res
The function generate_perlin_noise_3d generates a 3D texture of perlin noise. Its parameters are:
shape: shape of the generated array (tuple of 3 ints)res: number of periods of noise to generate along each axis (tuple of 3 ints)tileable: if the noise should be tileable along each axis (tuple of 3 bools)
Note: shape must be a multiple of res
The function generate_fractal_noise_2d combines several octaves of 3D perlin noise to make 3D fractal noise. Its parameters are:
shape: shape of the generated array (tuple of 3 ints)res: number of periods of noise to generate along each axis (tuple of 3 ints)octaves: number of octaves in the noise (int)persistence: scaling factor between two octaves (float)lacunarity: frequency factor between two octaves (float)tileable: if the noise should be tileable along each axis (tuple of 3 bools)
Note: shape must be a multiple of lacunarity^(octaves-1)*res
MIT License (See LICENSE file).
Perlin-CuPy is designed based on Perlin-NumPy's API (see LICENSE_THIRD_PARTY file) by Pierre Vigier.
Perlin-CuPy is being maintained and developed by João Pedro Vasconcelos and Bruno Barufaldi.
