docs.unity3d.com
    Show / Hide Table of Contents

    Simple Noise Node

    Description

    Generates a simple, or Value, noise based on input UV. The scale of the generated noise is controlled by input Scale.

    You can also choose to use two different hashing methods for calculating the noise. As of Unity version 2021.2, the Simple Noise node defaults to the Deterministic hash, to ensure consistent results for noise generation across platforms.

    Ports

    Name Direction Type Binding Description
    UV Input Vector 2 UV Input UV value
    Scale Input Float None Noise scale
    Out Output Float None Output value

    Controls

    Name Type Options Description
    Hash Type Dropdown Deterministic, LegacySine Selects the hash function used to generate random numbers for noise generation.

    Generated Code Example

    The following example code represents one possible outcome of this node.

    inline float unity_noise_randomValue (float2 uv)
    {
        return frac(sin(dot(uv, float2(12.9898, 78.233)))*43758.5453);
    }
    
    inline float unity_noise_interpolate (float a, float b, float t)
    {
        return (1.0-t)*a + (t*b);
    }
    
    inline float unity_valueNoise (float2 uv)
    {
        float2 i = floor(uv);
        float2 f = frac(uv);
        f = f * f * (3.0 - 2.0 * f);
    
        uv = abs(frac(uv) - 0.5);
        float2 c0 = i + float2(0.0, 0.0);
        float2 c1 = i + float2(1.0, 0.0);
        float2 c2 = i + float2(0.0, 1.0);
        float2 c3 = i + float2(1.0, 1.0);
        float r0 = unity_noise_randomValue(c0);
        float r1 = unity_noise_randomValue(c1);
        float r2 = unity_noise_randomValue(c2);
        float r3 = unity_noise_randomValue(c3);
    
        float bottomOfGrid = unity_noise_interpolate(r0, r1, f.x);
        float topOfGrid = unity_noise_interpolate(r2, r3, f.x);
        float t = unity_noise_interpolate(bottomOfGrid, topOfGrid, f.y);
        return t;
    }
    
    void Unity_SimpleNoise_float(float2 UV, float Scale, out float Out)
    {
        float t = 0.0;
    
        float freq = pow(2.0, float(0));
        float amp = pow(0.5, float(3-0));
        t += unity_valueNoise(float2(UV.x*Scale/freq, UV.y*Scale/freq))*amp;
    
        freq = pow(2.0, float(1));
        amp = pow(0.5, float(3-1));
        t += unity_valueNoise(float2(UV.x*Scale/freq, UV.y*Scale/freq))*amp;
    
        freq = pow(2.0, float(2));
        amp = pow(0.5, float(3-2));
        t += unity_valueNoise(float2(UV.x*Scale/freq, UV.y*Scale/freq))*amp;
    
        Out = t;
    }
    
    Back to top
    Copyright © 2023 Unity Technologies — Terms of use
    • Legal
    • Privacy Policy
    • Cookies
    • Do Not Sell or Share My Personal Information
    • Your Privacy Choices (Cookie Settings)
    "Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
    Generated by DocFX on 18 October 2023