Replies: 1 comment
-
Sounds great! 👍 |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
While not a comprehensive library, for an initial foundation to use as building blocks for other textures I plan to do the following:
Implement hashing functions based on the PCG family of hashes. These will cover all N->M hashes, where N and M are equal to or less than four. An overview of the performance of the various hashes, as well as HLSL code, can be found at http://www.jcgt.org/published/0009/03/02/ . While the use of the higher dimensional PCG hashes for producing lower dimensional PCG outputs is in some instances more costly, the computed results are higher quality across the board, and the performance difference is negligible, on the order of 1-2 μs. While PCG3D is originally used in Unreal Engine, it was implemented by Dr. Marc Olano and is free for us to use as I've confirmed in correspondence.
For Procedural Noise textures, I propose the following initial nodes/textures, with 1D to 4D outputs:
White Noise, an simple positional slice of the results generated from a hash. Corresponds to https://docs.blender.org/manual/en/latest/render/shader_nodes/textures/white_noise.html
Perlin Noise,, producing the virtually universally used Perlin noise. Corresponds to https://docs.blender.org/manual/en/latest/render/shader_nodes/textures/noise.html
Worley Noise, commonly called Voronoi Noise in a variety of programs. Corresponds to https://docs.blender.org/manual/en/latest/render/shader_nodes/textures/voronoi.html
Simplex Noise, An open source implementation of the Simplex Noise algorithm. Unfortunately the original Simplex Noise algorithm is covered by a patent until January of 2022, so this will likely use OpenSimplex or something similar until then. An expanded version of https://docs.substance3d.com/sddoc/3d-simplex-noise-168199190.html
Fractal Noise. Layered noise with different intensities, frequently used in Adobe products and frequently requested by artists. Usually uses Perlin Noise, but expanding this for different noise types is a possibility. Well described here: https://sinestesia.co/blog/tutorials/fractal-noise/
Obviously this is a non-exhaustive list of procedural noise textures used in computer graphics, but should be sufficient for building off of for various more complicated procedural textures. Additional noises can likely be covered under a categorical noise, such as Gradient Noise.
In my eyes, an end goal for all of this is to reach feature parity with the base procedural textures found in for example Substance Designer, and this seems like a very reasonable first step. In a worst case scenario I have trouble seeing this initial step taking me longer than two weeks, and will likely be much much faster.
Apologies if any of the terminology I used is nonstandard, I am still very new to this project!
Beta Was this translation helpful? Give feedback.
All reactions