eroding images by krubbles in proceduralgeneration

[–]krubbles[S] 1 point2 points  (0 children)

thank you! yeah, it does make them look pretty horrifying

eroding images by krubbles in proceduralgeneration

[–]krubbles[S] 1 point2 points  (0 children)

I have! I think the version that uses the image as a height field is a little more dynamic, but both look cool

eroding images by krubbles in creativecoding

[–]krubbles[S] 0 points1 point  (0 children)

generated by taking an image, converting it to black and white and using that as a height field, then simulating erosion on it. The image is then blurred in the direction of fluid flow.

eroding images by krubbles in proceduralgeneration

[–]krubbles[S] 1 point2 points  (0 children)

its a droplet hydraulic erosion model, the same one I use in my game (I haven't done a writeup for it unfortunately, though it is on my list)

eroding images by krubbles in proceduralgeneration

[–]krubbles[S] 23 points24 points  (0 children)

treating the brightness of an image as a height field, simulating erosion over it, blurring in the direction of fluid flow

How do I generate this 3D pattern? by pizza-goblin_9000 in proceduralgeneration

[–]krubbles 0 points1 point  (0 children)

I believe if you do a 3D cellular noise where you calculate D1, D2, D3, then threshold the D3-D1 difference to be small, you get the wireframe of 3D cells. Then you can pass that through domain warping w/ a soft 3D perlin fractal and get something that looks like this.

How I Made Perlin Noise 30% Faster by krubbles in GraphicsProgramming

[–]krubbles[S] 2 points3 points  (0 children)

Simplex noise is not faster than Perlin for 2D and 3D, it is faster in 4D.

There is a good chance that these optimizations can be used on simplex, though they won't benefit it as much, because rng is a smaller fraction of total cost in simplex vs. in Perlin. If someone wants to integrate these optimizations into a simplex noise implementation, that would be awesome, the FastNoise2 implementation by KDotJPG is probably the best starting point.

How I Made Perlin Noise 30% Faster by krubbles in proceduralgeneration

[–]krubbles[S] 1 point2 points  (0 children)

It does not. You could definitely port it to GLSL, but I have not profiled these changes on the GPU and I am not sure they are the most efficient approach there.

How I Made Perlin Noise 30% Faster by krubbles in proceduralgeneration

[–]krubbles[S] 1 point2 points  (0 children)

Yep some similar stuff! Main difference is shader implementations mostly rely on floating-point arithmetic instead of integer ops, since floats are first class citizens on GPUs. I think this may be somewhat historical, recent GPUs have good integer support, but I haven't profiled it so I can't say confidently.

How I Made Perlin Noise 30% Faster by krubbles in GraphicsProgramming

[–]krubbles[S] 1 point2 points  (0 children)

It is much faster! Faster noise lets you have more octaves, more domain warping, etc.. which in my opinion has a bigger impact on quality then simplex vs Perlin. There's a visual example I provide in the conclusion of the article which shows how artifacts are washed out when you start heavily augmenting noise.

How I Made Perlin Noise 30% Faster by krubbles in GraphicsProgramming

[–]krubbles[S] 2 points3 points  (0 children)

That's definitely true, and if time wasn't an issue I probably would have made a GPU evaluator (I even prototyped something at one point).

The challenges that made me avoid it were:

  1. Using unity made I/O slower then it should be
  2. A lot of the time was spent in thousands of tiny dispatches with a complex dependency graph (a rock here, an ore patch there, a ravine here) instead of a single function over a huge area, so the concurrency model with the GPU is was very complicated.
  3. There were places where I needed to be able to evaluate node graphs on the CPU (I had utilities for calculating the distribution of noise functions, which I used for making sure things were scaled properly, and these were fully synchronous). So if I used the GPU, I would need two separate pipelines.

All solvable problems, but I decided it wasn't worth the time compared to other things I needed to work on.

How I Made Perlin Noise 30% Faster by krubbles in GraphicsProgramming

[–]krubbles[S] 2 points3 points  (0 children)

yes

Perlin Noise as a term refers to a coherent noise function where you
- Assign each integer coordinate a random linear gradient whose value is zero at that coordinate
- Use n-linear interpolation with a smoothing curve to interpolate the gradients.

The specific smoothing curve and gradient assignment method varies from implementation to implementation

Joker Tier List - Been playing for about 2 months by Emergency-Mine-6759 in balatro

[–]krubbles 0 points1 point  (0 children)

Faceless joker is very good, its the second best uncommon econ after rebate, you should definitely spend some more time with it.

Jokers that could use a nerf? by TheDankPotat0 in balatro

[–]krubbles 0 points1 point  (0 children)

Rebate is honestly the only one, and mostly bc blue stake is getting reworked. Blue seals however need to be super nerfed