Flipbook Node | Shader Graph | 7.1.8
docs.unity3d.com
    Show / Hide Table of Contents

    Flipbook Node

    Description

    Creates a flipbook, or texture sheet animation, of the UVs supplied to input UV. The amount of tiles on the sheet are defined by the values of the inputs Width and Height. The index of the current tile is defined by the value of the input Tile.

    This node can be used to create a texture animation functionality, commonly used for particle effects and sprites, by supplying Time to the input Tile and outputting to the UV input slot of a Texture Sampler.

    UV data is typically in the range of 0 to 1 starting from the bottom left of UV space. This can be seen by the black value at the bottom left corner of a UV preview. As flipbooks typically start from top left the parameter Invert Y is enabled by default, however you can change the direction of the Flipbook by switching the Invert X and Invert Y parameters.

    Ports

    Name Direction Type Binding Description
    UV Input Vector 2 UV Input UV value
    Width Input Vector 1 None Amount of horizontal tiles
    Height Input Vector 1 None Amount of vertical tiles
    Tile Input Vector 1 None Current tile index
    Out Output Vector 2 None Output UV value

    Controls

    Name Type Options Description
    Invert X Toggle True, False If enabled tiles are iterated from right to left
    Invert Y Toggle True, False If enabled tiles are iterated from top to bottom

    Generated Code Example

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

    float2 _Flipbook_Invert = float2(FlipX, FlipY);
    
    void Unity_Flipbook_float(float2 UV, float Width, float Height, float Tile, float2 Invert, out float2 Out)
    {
        Tile = fmod(Tile, Width * Height);
        float2 tileCount = float2(1.0, 1.0) / float2(Width, Height);
        float tileY = abs(Invert.y * Height - (floor(Tile * tileCount.x) + Invert.y * 1));
        float tileX = abs(Invert.x * Width - ((Tile - Width * floor(Tile * tileCount.x)) + Invert.x * 1));
        Out = (UV + float2(tileX, tileY)) * tileCount;
    }
    
    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