areagen documentation
Hi @KdotJPG 🙂 First of, I want to say I really appreciate your efforts, great work on OpenSimplex 🎉
As I am currently in the process of porting OpenSimplex2 to Dart, I am trying to understand how it works exactly.
I am basing my efforts off of the Java implementation and I am confused by the areagen directory.
Problem
So my struggle is that I want to understand what I can recommend to use.
If I copy your implementation and basically have two different libraries (the regular one and the areagen one) that kind of do the same, it will be very confusing as to which one you should use.
Questions
This makes me wonder about two things:
- Which one is the implementation that I should port?
- What exactly are the drawbacks and benefits, the differences between the two implementations?
Docs
The README mentions:
The classes in java/areagen offer speed-optimized whole-area generators, which operate by flood-fill queue on the noise lattice. (i.e. they don't use a "range")
I do not understand the second part of that statement (what are "whole-area generators" and the "flood-fill queue"?)
Flood fill says something to me, but then what does this mean for the end user?
The only differences between the two versions' area generators are: radius parameter and normalization constant.
The radius can be straightforwardly reduced for faster noise, or increased for smoother noise. There are no geometric traversal steps to cause discontinuities, and no hardcoded point computations to limit performance increases, as would be the case with varying the radius in the evaluators. The normalization constant is baked into the same gradient set as the evaluator. It can be recomputed using Noise Normalizer. If left as is, the noise will still function correctly, it will just have a different output range.
This whole section I am really not sure about. I checked the classes and usage looked the same to me, so I am very confused about what this is trying to say.
I will go with the non-areagen library for now (which might be slower?) as I do not have answers to these questions. It would be super awesome if you could shed some light on these questions 🙏
I would agree with going with the non-areagen library. The areagen functions were faster, but less versatile. I moved them to their own repo now anyway (https://github.com/KdotJPG/Noise-VertexQueue-AreaGen).
I have also just updated this repo with new instancelessly-seedable implementations.