Tag Info

27

To directly answer the question: Simplex noise is patented, whereas Perlin noise is not. Other than that, Simplex noise has many advantages that are already mentioned in your question, and apart from the slightly increased implementation difficulty, it is the better algorithm of the two. I believe the reason why many people still pick Perlin noise is simply ...

17

I'd consider just going with 3D noise and evaluating it on the surface of the sphere. For gradient noise which is naturally in the domain of the surface of the sphere, you need a regular pattern of sample points on the surface that have natural connectivity information, with roughly equal area in each cell, so you can interpolate or sum adjacent values. I ...

9

Perlin noise is just a base block, not very interesting by itself. You don't need to modify it, but to combine and filter it in interesting ways. Look at how to make fractal Brownian motion (fBm) with it for example, which combines octaves based on few parameters to get a richer texture. The question of terrain rendering is a difficult one and a topic of ...

8

As you are taking the mean of a number of sine waves, your colour values will range from -1 to 1. From your example image, it looks like only the top half of this range of values (from 0 to 1) is resulting in colour, with everywhere else remaining black. If whatever you are using to display the result can only handle positive values, then you will need to ...

6

If you want to implement this with GLSL, the general concept that could be applied is multi-pass rendering. In a first render pass, draw some ink on the screen and write the result in a frame buffer object (FBO). Then in the second render pass, draw a screen-size quad and attach the texture of the FBO. In this second render pass you could use a GLSL shader ...

5

First of all - a number must not occur twice, that is implied since we're talking about permutations. So filling the table with a simple random(255) function won't work. Secondly, you need to ensure that there are no premature recurrence patterns: Consider the values 1,2,3,4 - the permutation table 4,3,2,1 is not a very good one because of its short cyclic ...

4

One algorithm that's pretty good for this, but very difficult to implement is to find the Medial Axis of the shape and then have various profiles that are based on the signed distance from the medial axis. You can also use the Straight Skeleton instead of the Medial Axis, but it's also a bit of a pain to calculate. An easier way that's not quite as accurate,...

4

A sine wave remapped to [0, 1] and raised to a power will give you periodic ridges: (Desmos graph) That could be a good place to start. It will make perfectly straight, even ridges; but you could then perturb the X position where the sine is evaluated using low-frequency Perlin noise, which will make the ridges bend and waver while still going mostly along ...

4

I am playing with L-Systems and with some thorough understanding of how they work I think you could manage to get something useful out of them. You can see Paul Bourke's site for a sneak peek of what they do and you can read the book The Algorithmic Beauty of Plants by Przemyslaw Prusinkiewicz and Aristid Lindenmayer. I am going to try and explain what L-...

3

The Epsilon is chosen to hit the appropriated Nyquist-Frequency avoiding aliasing. It refers to the highest frequency in your heightfield function. You'll need well knowledge of the definition of your function to find it. For example, the figure shows an iterated Brownian motion (IBM) which approximate Perlin noise. The frequency of each added noise function ...

3

A lot goes in to benching performance. I think most would agree that measuring the frame time of your application is the best metric you can gather about how well you're doing at run-time. An easy way to "bench" your shaders in your engine/environment is to simply record frame times for a fixed duration with a fixed view and fixed scene. Then save those ...

3

Yep, you've got that right. In Perlin's reference implementation of "improved noise", the noise will be periodic, repeating after 256 units along each axis. It's usually not very noticeable even if you have a large extent of noise visible, since there's no large-scale features for the eye to track. But there's no particular reason it needs to tile after 256 ...

2

It could be generated as a Lindenmayer System (L-system) with some rules for branch widths (plus some fractal noise) and branch bifurcation. They are parameters you can play with. You can find lots of resources in the website of the Biological Modeling and Visualization research group in the Department of Computer Science at the University of Calgary. ...

1

Compute the tangent to the line at that point, Use it to make a tangent vector, then use the point on the line, the point being tested and the new point to create two vectors. Take the dot product of the vectors. Positive values are on one side of the line, negative are on the other side. (above and below).

1

You could try the FiberMesh technique. Fibermesh takes 3D input curves and interprets them as the contours of the surface. It then creates a smooth surface by using an optimization technique. Here you can see a video, which demonstrates the technique.

1

I finally arrived at a solution that is not perfect, but seems to be good enough for my application right now. The pipeline is as follows: -> grayscale perlin noise with affine transformed (stretched and rotated) coordinate system -> gaussian blur (sigma 3.0) -> normalize (range 0.0 to 1.0) -> pixels = pixels - 0.5 -> pixels = pixels * 2 -&...

1

Perlin noise not good for real planet surface because planet surface is not random. Planet structure is create by geology/physics and interaction between different parts. This video show geology simulator have name PlaTec (have link in text below video): https://www.youtube.com/watch?v=bi4b45tMEPE Link have source code at SourceForge web site too.

1

Here’s a video that talks about a couple different techniques. One idea mentioned in the video is to take the values from 0.0 to 1.0 you get from the noise and only care about ones within a certain range, (mapping the rest to 0.0). Further, you can map the values in that range to different values, following a curve. For instance if you take the values ...

1

One possibility might be to borrow from the cryptographic community and, in particular, the 8-bit to 8-bit substitution used in the AES/Rijndael cipher. The table and code to generate it can be found on wikipedia. I'd guess that, in order to generate up to 256 additional tables, you could just do something like: Func(U8 input, U8 TableNum) = SBox( (...

Only top voted, non community-wiki answers of a minimum length are eligible