Material workflow

Introduction to workflow

Holy-moly! That's a lot of nodes!

Indeed! But don't worry, you don't need to know all of these to use SuperGrid. You could simply modify instance parameters to change grid spacing, colors, textures and other settings.

However if you want to know more about SuperGrid then this page will help you better understand how materials are built.

They relies on blending different masks from single TextureSample rather than using this for final texture. Of course each mask requires different UV tiling multiplier, hence the complexity of material graph.

Is there any logic in how materials are built?

Yes-yes, there is! Material graph has several "stages" of building final material

  1. Generate UV that scales according to mesh size and apply user settings Custom Texture
  2. Create masks from different channels of TextureSample and apply generated UV Custom Texture
  3. Apply different color per channel based on logic from different Dye_"ColorBlend" nodes Custom Texture

That's all about core concepts, but let's talks about numerous material functions!

Introduction to channels

Split the channels!

Probably you've noticed that most textures contains 4 channels - RGBA . Usually Red, Green and Blue channels are used to display color and Alpha for transparency. However it's not the case for SuperGrid textures - each channel used as a separate mask for more customizable options in materials: Custom Texture

  • R: Grid with default 1m step.
  • G: Grid with default 10cm step.
  • B: Pattern with default 1m step to add some color variation to the material.
  • A: Roughness map

What about colors?

Color parameters have RGBA channels(just like textures), but this time RGB channels are used to actually color masks from Texture and A channel for customizing settings in color blending. Custom Texture

MakeSet? BreakSet? WTFSet?

Don't mind this weird nodes! They are actually BreakOutFloat3Components/ MakeFloat3 analogue, but I found this naming more coherent and easier to write rather than original. Also they are used for merging different SuperGrid channels into single node to easily identify what exactly we're using right now. Custom Texture

Material Functions

UV group - associated with UV coordinates

    Custom Texture
  • Function Description
    UV_ObjectScale Automatically scales UV according to object size
    UV_WorldScale Automatically scales UV relative to world
    UV_SetupGrid Allows to specify grid size in centimeters instead of UV tiles
    UV_CustomTexture Allows to use this node instead of TexCoords for your materials
    UV_CustomPanner Works like Panner node, but you could control speed

  • Texture group - dealing with textures, colors and masks

    Custom Texture
  • Function Description
    Dye_4ColorBasic Basic blend between 4 colors using RGB mask
    Dye_MultiColor Dye with multiple colors using Pattern-Grid-Utility logic
    Dye_SingleColor Dye with single color using Pattern-Grid-Utility logic
    Tex_SimpleGrid Assign different UV's to different Textures channels to have big and small grids
  • Basic group - contains the most basic building blocks

    Custom Texture
  • Function Description
    BreakSet Simple macro for breaking Vector3, but with SuperGrid naming convention
    MakeSet Simple macro for making Vector3, but with SuperGrid naming convention
    Layout_LocalSides Allows to map different textures to different sides of object
    Layout_WorldSides Works like Layout_LocalSides, but ignores object rotation
    Roughness Simple macro for lerp values from black to white in roughness map