AcademySoftwareFoundation / AcademySoftwareFoundation/MaterialX
Noise nodes should support periodic pattern repetition
- Dominant language
- C++
- Stars
- 2.3k
- Forks
- 451
- Avg merge
- 6d 6h
- Merged PRs (30d)
- 5
Description
This request has already been integrated into the[ v1.39 specification](https://docs.google.com/document/d/1ZKsLgbHDoh_YxGWX2Cepc5_3k2wiusOcdSD-K6JiigA/edit?disco=AAAAlKrn7Qw), but I'm attaching the implementation of the GLSL shader for reference:
[mx_noise.glsl.txt](https://github.com/AcademySoftwareFoundation/MaterialX/files/10467626/mx_noise.glsl.txt)
> This is a request for `noise`, `cellnoise`, `worleynoise`, and `fractalnoise` for both 2d and 3d versions to gain a new parameter, 'period', of `vector2` or `vector3` type. The values are integers but MaterialX does not have `integer2` nor `integer3` types.
>
> Each component of period should have range of [0, INF), 0 being the default value. When period is 0 for every component, we get results that are exactly the same as before.
>
> There is a small issue with fractal3d though: the result will be tileable only if lacunarity is an integer value (it's a float parameter).
>
> And to clarify, the `period` parameter is the integer distance at which the noise function returns the same value for points or texture coordinates repeated at that step.
Contributor guide
Research direction
Read the v1.39 specification and the attached mx_noise.glsl.txt implementation first. Review the 2D and 3D noise, cellnoise, worleynoise, and fractalnoise entry points, then verify that period repeats results at the requested distance while a zero period preserves existing behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- computer-graphics
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100