Gabor Procedural Texture Node

I’m sorry normally I’d be at this giving feedback but I don’t have my computer at the moment and won’t until December. Best of luck !

1 Like

Hi, it would be good to get some artist feedback on the new Gabor node patch. Either DM me or use the Devtalk thread.

This has gone through some further iterations so the UI could still need some tweaking still but it is in development again.

As usual, it is a PR patch build so be careful with files etc.

Builds: Blender Builds - blender.org

Patch PR: https://projects.blender.org/blender/blender/pulls/110802

Devtalk: Gabor Procedural Texture Node

Thanks

3 Likes

Latest UI

4 Likes

Oh did you push another one? Or is what I have here the newest? I just followed the link to the build above
New

Yes just pushed a new build.

Ah gotcha.

Absolutely loving it! Seeing something other than the principled shader with shelves is really neat too, though with so many options it would have to.

Just in terms of defaults, I think having it set to 3D off the bat would be welcome. It does seem to be the standard for all the other texture nodes.

As well, I’m not sure if people would feel the same, but maybe anisotropic as the default would be nice too, since it gives a more seamless looking result.


Not sure if that’s best since other textures like wave texture start like this, not sure how gabor works under the hood.

1 Like

Ahh, good, I think it’s at the point of polishing the UI so defaults can be looked at. I’ve got no strong opinion on that. With the new build, anistropic is controlled by a factor. I’ve also reorganised the panels.

In this build the wave texture seems to be bugged, it crashes if you try to live-render it. Not sure if that is connected to Gabor

1 Like

I’ll check but could just be a bug in 4.1. New gabor build will be up soon.

Yes Wave bug is my fault. I’ll push a new build.

1 Like

I found that I can crash this build by increasing Fractal Detail after changing view to Rendered.
crash.blend.txt (964.9 KB)
(Remove .txt after download)

1 Like

New build is running now. Hopefully that won’t crash but if it does can you send me the blend file.

1 Like

Mini tutorial on Gabor noise.

PR Builds: Blender Builds - blender.org (These are PR patch builds so be careful with your files etc.)

Like Voronoi, Gabor noise splits space into a grid of cells. For each cell, kernels are generated according to the Impulse input. The size of these kernels are determined by the Radius input. The position of each kernel is random within the cell. This position can be controlled by the Cell Randomness setting. The kernel is a sinus based wave. It’s frequency can be controlled by the Base Frequency input.

Kernel Panel

image

Frequency (0-16)
base_frequency

Radius
radius

Impulses, determines the number of kernels that are generated for each cell. This example shows Impulses below 1 which acts as a probability. High impulses take longer to compute so this should be set as low as required.
impulse

Cell Randomness (0-1)
cell_randomness

Since the kernel is a sinus based shape, the Phase Offset input controls the phase of the wave. This can also be randomised using the Phase Variance input.

Phase Variance (0-1)
phase_variance

Anisotropy Panel

image

Since the kernel is effectively generated in 3D space, the kernel can be rotated and also tilted in different directions.

The controls are split into two parts. The first set of controls are manual control for Rotation, Rotation Variance and Tilt Randomness inputs. These allow for random or Isotropic directions.

The second set of control is the Direction input which is fixed.

The Anisotropy Factor input sits between these and acts as a mixer between the two settings.

Manually set rotation at 45 degrees.
image

Manually set rotation at 45 degrees and 10 degree variation.
image

Manually set rotation at 45 degrees and 10 degree variation with Tilt Randomisation.
image

Fixed anisotropy determined by the Direction input.
image

Manually set rotation at 45 degrees and 10 degree variation.
– mixed using the Anisotropic Factor –
Fixed anistropy determined by the Direction input.
image

Fractal Panel

image

This controls the layers of fractal noise and the variation between each layer.

Offset Origin determines if each layer uses the same origin or if it is shifted.
Detail controls the layers or octaves of noise.
Roughness is the multiplier for how much each subsequent layer contributes.
Scale Lacunarity is the Scale multiplier.
Frequency Lacunarity is the Base Frequency multiplier.
Rotation Lacunarity is the Rotation shift between each layer. This has no effect if Anistropy is fixed.

Fractal with Detail set at 0 (no fractal layering)
image

Detail 1
image

Detail 2
image

Offset Origin

When off, each layer uses the same origin which can create some interesting effects when Lacunarity is close to 1.
image

Detail and Rotation Lacunarity can create twirly effects.
image

When on, each layer is offset.
image

15 Likes

My GPU doesn’t work well on OptiX and OSL files are not ideal. Having this would make my life so much easier. I’m using ‘Puppet Paint’ materials a lot and this texture seems amazing for replicating brush strokes. Please, devs.

1 Like

Glad to see this is being looked at again. I’ve just given the 4.1.0-alpha+main-PR110802.eae89b65a62f-linux.x86_64-release build a test and maybe there’s a bug?

I noticed that enabling the ‘Offset Origin’ checkbox causes big blocky patches to occur. This happens in every Mode and setting the detail to 0 is the only way to resolve it. Both GPU and CPU.

Feedback

UI
For the sake of consistency, the Dimensions and Mode dropdowns could be on separate lines to match the other Texture nodes? That said, I do love them combined into a single line like this. I would agree that 3D as the default would be preferred.

The collapsible sections are all grouped nicely, though the ‘Kernel’ terminology feels out of place. Not sure if there’s a better alternative… ‘Cells’, ‘Variation’, ‘Details’, ‘Components’, ‘Elements’? I would also drop the ‘Cell’ prefix on the Randomness slider if the ‘Kernel’ title was changed.

Modes
The Phasor Modes produce some really interesting patterns, but the ‘hairline’ edges along the boundaries of the cells when used for bump/normal somewhat limits their utility in that context. Would be great if those edges could be smoothed somehow, though I appreciate that this may not be possible.

(hard to see in the preview but more visible in full size)

Performance
Not sure if performance was taking a hit due to it being a test build? but my entire system tended to freeze up for a second or two sometimes when I tweaked any of the sliders.

1 Like

Thanks for the feedback.

A new build is running dated October 2nd.

I’ve fixed the Offset Origin bug by changing how that is calculated. Seems offsetting the coordinates causes issues at high numbers. These were easily exceeded from scaling the noise for each octave/detail.

The Phasor mode does have hard edges. This is due to it being an output from atan so it can be regarded in the same way as a Radial texture. This could be sent through a color ramp or float curve to modify that edge.

image

The latest build also changes/fixes how the Phasor fractal output is calculated. It now does this at the end.

Performance can be an issue especially with high Impulse/Detail values. In this regard 2D is a better option as it uses a smaller grid to compute the texture.

For UI and defaults, I’ll wait for more feedback and code review comments but agree Kernel could be changed. Some names like Cell Randomness are aligned with terminology in Voronoi for example. I’ve been thinking that Fractal could also be at the bottom but I’m getting a bit of AP from thinking about the UI controls. :smiley:

4 Likes

Hey,

Was really happy to discover that someone is working on this. I used gabor in the past through osl so would love to have it as a node!
Small remark: when using it the normalize flag is on.
But it seems it also caps some values which I think should not be standard behaviour for normalizing.

2 Likes

I’m having fun with this … i actually need to close blender, and get back to work before I spend too much time playing with it.

Very cool :slight_smile:

1 Like

The normalise option can have some issues with keeping values between 0-1 due to the way the noise is generated. This can be resolved with the gain control.

Maybe a stupid question but how can I continue to use this node.
Do I need to patch and build Blender myself in order to keep using it?
Are there maybe any automated recent patch builds. If yes how do I find them?

Is this patch still alive?