Jump to content
You must now use your email address to sign in [click for more info] ×

Affinity Photo Procedural Textures for Absolute Beginners: 101.2

Recommended Posts

If you haven't read my first Procedural Textures tutorial (Affinity Photo Procedural Textures for Absolute Beginners: 101.1)  you can find it HERE

In this tutorial we will create a series of basic Procedural Textures. We will build up the skills gradually, one step at a time, and finish by making a Macro which can be used to create silk backdrops like this one:


If you haven’t read my introduction to Affinity’s Procedural Texture filter and want an explanation of what it’s all about, you can read that here. By the end of this first tutorial, you will have a basic understanding of how Procedural Textures work, you will have made a few adjustable textures and you will have a macro for making silk fabric backdrops like the one I showed you at the end of the last tutorial.

We shall be making some simple new presets which you can save into the Basic Noise or Tutorial Textures category you created in the first tutorial. If you haven’t done that yet, open the Presets Manager and create a new category for the presets we’ll make in this tutorial. To do this you’ll need to open the Procedural Texture dialogue and click on the burger icon at the end of the Equations line.

Go to lesson 3 HERE


Before we begin here is a quick reminder of the four basic maths symbols on the keyboard. It's useful to know so that when you see them in an equation you know what they are.

TIP: Look at some of the default Procedural Textures that come with affinity. See a / sign? swap it for * and see what difference it makes.

Maths signs + and – are obvious. * is multiply, / is divide. Note that the multiplication sign is an asterisk * not an x.

The Simplest Texture of All


I promised to start from scratch, so let’s make the most basic Procedural Texture of all.

First, remember that PTs need a filled pixel layer on which to work so create one now.

Create a new blank document 1920x180 pixels (the size doesn’t matter). Create a new pixel layer by clicking on the chequerboard icon at the bottom of the layer palette or go to Layer>New Layer. Fill this layer with your foreground colour through Edit>Fill with Primary Colour (white).

TIP: For this tutorial you will make life MUCH easier for yourself if you create the Procedural Textures as a Live Filter. To do this go Layer>New Live Filter Layer>Colours>Procedural Texture. This can be re-edited at any time by double clicking on the Procedural Texture thumbnail in the Layer palette. Create a new live Procedural Texture filter as above, if you haven’t already done so.

Create an empty equation input box by clicking on the + button at the bottom of the Equations section.

Whoa! What happened there! Your image just turned cyan! (If your pixel layer is white.)


When you add an equation line, by default, Affinity assumes that you only want it to affect one channel. Look at end of the Equation line – only the R button is highlighted.

Really, THIS is the most basic “texture” of all – no maths, no coding!  In fact, if you applied this to a photo you would tint the whole image Cyan. Turning on the R, G and B buttons in combinations creates various filters, which you could save as presets, if you wished – but that’s not where we’re going today. Click all the RGB buttons so they are all depressed and your image is black.

Click in the new equation input box and type (or copy and paste) the following:

noisei(x)  (Note the last “i” – noisei. I’ll come to why that is important later.) Press the Enter or new line key.



You've created a bar code texture!

Save this as your first texture (you can delete it any time you want, but we’ll build on it as we go). Click on the burger icon and save it in the Basic Noise category you created in the last tutorial.

Save it as Basic Noise 1.  If you haven’t created a category, do it by clicking on Manage Presets in the burger icon on the right of the preset drop-down list, then create category, name it as Basic Noise.


So, what’s going on?

The ‘noisei’ bit is the command to tell Affinity to generate “i’” type noise (I’ll come back to that later). Like 99% of procedural texture equations expects some instructions inside brackets afterwards telling it how to generate the noise – Here that is (x).

What’s the x for?

Affinity views your pixel layer essentially as a grid or graph of pixels. It has to plot (generate) the procedural textures from a starting point. This starting point is the top left-hand corner of the image. It then needs to know which direction to go.

Going from left to right is the x direction, whilst going from top to bottom is the y direction. Try changing the x inside the brackets to a y, then press enter to see what happens.


A word about spaces in equations – they don’t seem to matter too much. noisei ( x ) produces the pattern exactly the same noisei(x).


Where’s the noise???

When you typed in the equation you were probably expecting to see a field of pixel noise like this:


The reason why we haven’t got that is because we have only given Affinity an instruction to generate the noise in one direction, left to right (x) or top to bottom (y)


What we need to do is combine both directions, which is more straightforward than you’d think. We just put a comma after the x and then type y, making sure it’s all inside the brackets like this:



Now you’ve got basic noise! Save this as Basic Noise 2.


Take Control

Remember those custom inputs down the bottom? We can them to control how the noise appears.

First, go into the presets and select the Basic Noise 1 you created a moment ago.

Click on the R custom input button at the bottom and fill it in as in this image.


The R tells you what kind of input it is. R means any number including decimals – so you could type 40.05, if you wanted. The letter a name of this input as far as the equation is concerned (I’ll come back to that in a minute). In the next empty box I typed Width (you’ll see why soon), and then I have typed the number 40 as a starting number.


If you’ve entered those, so far nothing has happened. That’s because we need to tell Affinity to look at this input we have just made. Remember that letter a in the input box? Amend the equation so it looks like this noisei(x/a) and press enter. Now you should see a dramatic change in the texture.



The “/a” in the Equation just tells Affinity to look a the a input box and divide the noise by that number. You don’t need to know what the maths is doing, just that by putting /a when you increase or decrease the number in the custom input box by clicking the up and down arrows, the pattern gets wider or narrower. Save this as Basic Noise 3.

Open the Basic Noise 2. you created earlier. Add two R Custom Inputs. Call the first (a) one Width as before with a starting value of 80, and the second (b) one Height with a starting value of 40.


Now you have a size-controllable noise maker. Play with it for a while. Don’t forget that if you like a particular combination (say 5 wide and 90 high) you can save it as a sub-preset via the burger icon on the right of the custom inputs box.

Add Colour

So far, we’ve only used one equation line, which already is beginning to make some interesting patterns and designs. But if we add another couple of equation lines, we can really mix things up.

Re-open the Basic Noise 3 preset we made earlier. The line reads noisei(x/a), and we’ve got one custom input which is assigned to the “/a” part. All of the RGB button are on.


TURN OFF the G and B buttons, so only R is on.


Now add two more equation lines by clicking the + at the bottom of the Equations section.



Still nothing! That’s because the new controllers have been assigned the letters b and c. Edit the G equation, taking out the letter a and substituting for the letter b. Do the same with the B line, but make the a a c.

Make the starting numbers for the R, G, and B 9, 11 and 13. When press Enter after typing in 13 you should end up with this:


You can save this as a preset if you wish.

Notice how I have renamed the custom inputs to Red Width etc.

By adding /ya, /yb, and /yc to each equation line we can get resizable, overlapping coloured squares.


Note that I have renamed the custom inputs and put different starting numbers. You can save this one too, if you like.

A whole lot of noise


I promised you a satin filter Macro. I also said that I would explain what the last “i” in noisei is all about. One look at the help page for the Procedural Texture will tell you – there’s more than one kind of noise! There is noise (without the i), noisesc, noisesin, noisecs…. Dozens of them if you include the harmonic noise ones.

We’re going to play with cubic noise. The command for this is… wait for it…. Noisecubic.

Re-open Basic Noise3, the one like this:


Edit the equation so that instead of noisei(x/a) it reads noisecubic(x/a). Make sure you delete the last “i” of the noisei.

You should have soft, blurry lines like this:


Save this a preset called Soft Cubic Noise Lines. The default width value is 80

Make a Silk Background Macro

Close the Procedural Texture dialogue.

Delete the live filter layer and accompanying pixel layer.

Before you start recording the macro, change your foreground colour to any colour other than white. This will be the default colour for your silk background. You will be able to change it after you run the macro.


Open the Macro tab which is found at View>Studio>Macro.

Click the record button (red dot).

Create a new layer via Layer>New Layer.

Fill with foreground colour via >Edit>Fill with Primary Colour.

Add a new Live Procedural Texture Layer via Layer>New Live Filter Layer>Colours>Procedural Texture.

Select the Soft Cubic Noise Lines preset you just made.

Close the Procedural Layer dialogue (X top right corner).

Add a new Fill Layer via Layer>New Fill Layer.

Change the Layer blend mode to Average.

Press stop recording button (square).

Save the Macro as Silk Background by clicking on the icon with three squares and a tiny +.

You now have a fully editable silk background texture. To test it out, delete all the layers in the layer palette so that you have a completely empty document.

Run the macro.

You should have two layers: A fill layer, which when selected, you can simply click any colour in your colour swatches to change the colour. A pixel layer beneath it with a live Procedural Texture filter. You can change the Procedural Texture by double-clicking the white thumbnail with the hourglass symbol in it. You will then be able to change the width of the silk folds.


One Final Tweak

If you want to make the Soft Cubic Noise Lines preset click-draggable, you can edit the equation and add the letter “r” before the “x”. The equation will then read noisecubic(rx/a). If you have the Procedural Texture dialogue open, you will be able to drag the texture sideways.

If you wish to replace your Soft Cubic Noise Lines preset with this draggable one, click the burger icon on the right of the preset drop-down list. Select Replace Preset. Scroll down the drop-down list until you find Soft Cubic Lines. Click OK.

Here’s what the texture macro looks like blue and with a width of 151136826772_SilkTextureBlue15.JPG.4f767805af51e21535d6f25de162d821.JPG

Next tutorial is HERE

Basic Noise 5a.JPG

Basic Noise 5b.JPG

Basic Noise 5c.JPG

Yellow Squares.JPG

Link to comment
Share on other sites

  • Staff

I would double 'like' this post if I could, amazing work Tim!

I've passed these links through to the other members of our technical support team here, so we can point new customers in this direction.

Many thanks for the extensive effort you have clearly made with both lesson 1 & 2, it's certainly appreciated and I believe this will have a positive impact on our users looking to dip their toes in the endless possibilities of Procedural Textures :D

Link to comment
Share on other sites

  • 2 weeks later...
  • 4 weeks later...
  • 1 year later...

All I get is a fuzzy gradient, no waves that make it look like curtains. I already know how to create that in different ways. I don't know how many times I have to try following this only to get the same disappointing results. This is totally frustrating and not easy as you suggest. You are not making it any easier.

  I made some errors creating the macro and now it is working like yours.

Edited by dehskins
found my error and thought I would share
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...

Important Information

Terms of Use | Privacy Policy | Guidelines | We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.