Hello everyone,
What is the best way to create procedural seamless textures for PBR materials? I saw a page in the wiki that mentions NeoTextureFiles, but they don’t seem to support PBR materials—for example, they lack maps like Ambient Occlusion and Roughness.
So, how should I go about creating these textures?
From my experience, all textures repeat at some point. I have spend way too much time tweaking terrain textures to hide seams, once you add vegetation it hides already lot of the texture. If not i suspect the terrain itself is too uniform.
As for textures on objects i noticed that when you start adding slight transform changes to each instance it is also hardly noticable that the texture is shared. Also adding a decal layer helps a lot on buildings for example.
What remains difficult is oceans since the is not much covering the surface.
This is a really open ended question.
The answers will tend to fall into these categories:
- use textures without much detail so that repeats aren’t obvious. (limited use-cases will support this but fabric, sand, etc. are all pretty homogeneous to begin with)
- combine two (or more) textures at different frequencies. For example, a high and low detail texture at different repeat frequencies can erase seams or repeats for larger areas. Overlay a long repeat dirt texture on a regular texture can add some subtle inconsistencies that break up the repetition.
- use shader math to perturb the shader coordinates. For example, a noise texture/function can be used to offset frag texture coordinate slightly to add some extra randomness.
It’s often pretty easy to combine 2 and 3… since they both require shader customization and one of the texture layers usually benefits from some ‘noise’ in the texture coordinate.
All of this assumes the artist already knows how to create a seamlessly repeating texture to begin with, though. That’s kind of its own topic with some artistic tricks but ultimately just “hard work” and a good eye.
1 Like
A cool tutorial from a cool developer, too bad the images are lost: