# Godot-Shader-Lib Visual shader node library for Godot engine. Adds various extra nodes to use in built-in visual shader editor. # Installation Copy the contents of **_addons/ShaderLib_** into the same folder in your project. No activation needed. Custom visual shader nodes work the same way as standard visual shader nodes. If you don't immediatly see new nodes under **_Addons_** category, simply reload your project. # Uninstallation Delete the contents of **_addons/ShaderLib_** folder from your project. Make sure to delete it using the Godot editor instead of your default file system program. # Nodes documentation

Maths nodes

Wave

Noise Sine Wave node

Returns the sine of the value of input in. For variance, psuedo-random noise is added to the amplitude of the sine wave, within a range determined by input min max.
**Inputs** |Name|Type|Binding|Description| |---|---|---|---| |in|Dynamic vector|none|Input value| |min max|vec2|none|Minimum and Maximum values for noise intensity| **Outputs** |Name|Type|Binding|Description| |---|---|---|---| |out|Dynamic vector|None|Output value| ___

Sawtooth Wave node

Returns a sawtooth wave from the value of input in. Resulting output values will be between -1 and 1.
**Inputs** |Name|Type|Binding|Description| |---|---|---|---| |in|Dynamic vector|none|Input value| **Outputs** |Name|Type|Binding|Description| |---|---|---|---| |out|Dynamic vector|None|Output value| ___

Square Wave node

Returns a square wave from the value of input in. Resulting output values will be between -1 and 1.
**Inputs** |Name|Type|Binding|Description| |---|---|---|---| |in|Dynamic vector|none|Input value| **Outputs** |Name|Type|Binding|Description| |---|---|---|---| |out|Dynamic vector|None|Output value| ___

Triangle Wave node

Returns a triangle wave from the value of input in. Resulting output values will be between -1 and 1.
**Inputs** |Name|Type|Binding|Description| |---|---|---|---| |in|Dynamic vector|none|Input value| **Outputs** |Name|Type|Binding|Description| |---|---|---|---| |out|Dynamic vector|None|Output value| ___

Input nodes

Node Scale World node

Provides accees to node scale in world space.
**Outputs** |Name|Type|Binding|Description| |---|---|---|---| |output|vec3|None|Node/object scale in world space| ___

Procedural nodes

Checker Board node

Generates a checkerboard of alternating colors between inputs color A and color B based on input UV.
**Inputs** |Name|Type|Binding|Description| |---|---|---|---| |uv|vec2|UV|Input UV value| |color a|vec3|none|First checker color| |color b|vec3|none|Second checker color| |frequency|vec2|none|Scale of checkerboard per axis| **Outputs** |Name|Type|Binding|Description| |---|---|---|---| |output|vec3|None|Output checkerboard value| ___

Noise

Gradient Noise node

Generates a gradient, or Perlin noise based on input UV. The resulting output values will be between -1 and 1.
**Inputs** |Name|Type|Binding|Description| |---|---|---|---| |uv|vec2|UV|Input UV value| |scale|float|none|Noise scale| **Outputs** |Name|Type|Binding|Description| |---|---|---|---| |output|float|None|Output noise value| ___

Simple Noise node

Generates a simplex, or value noise based on input UV. The resulting output values will be between 0 and 1.
**Inputs** |Name|Type|Binding|Description| |---|---|---|---| |uv|vec2|UV|Input UV value| |scale|float|none|Noise scale| **Outputs** |Name|Type|Binding|Description| |---|---|---|---| |output|float|None|Output noise value| ___

Voronoi node

Generates a Voronoi or Worley noise based on input UV. Voronoi noise is generated by calculating distances between a pixel and a lattice of points. By offsetting these points by a pseudo-random number, controlled by angle offset, a cluster of cells can be generated.
**Inputs** |Name|Type|Binding|Description| |---|---|---|---| |uv|vec2|UV|Input UV value| |cell density|float|none|Density of generated cells| |angle offset|float|none|Offset values for points| **Outputs** |Name|Type|Binding|Description| |---|---|---|---| |output|float|None|Output noise value| |cells|float|None|Raw cell data| ___

Shapes

Ellipse node

Generates an ellipse shape based on input UV at the size specified by inputs width and height. The generated shape can be offset or tiled by connecting a TilingAndOffset node. Note that in order to preserve the ability to offset the shape within the UV space the shape will not automatically repeat if tiled. To achieve a repeating dot effect first connect your TilingAndOffset output through a Fract node.
**Inputs** |Name|Type|Binding|Description| |---|---|---|---| |uv|vec2|UV|Input UV value| |width|float|none|Ellipse width| |height|float|none|Ellipse height| **Outputs** |Name|Type|Binding|Description| |---|---|---|---| |output|float|None|Output ellipse value| ___

Polygon node

Generates a regular polygon shape based on input UV at the size specified by inputs width and height. The polygon's amount of sides is determined by input sides. The generated shape can be offset or tiled by connecting a TilingAndOffset node. Note that in order to preserve the ability to offset the shape within the UV space the shape will not automatically repeat if tiled. To achieve a repeating polygon effect first connect your TilingAndOffset output through a Fract node.
**Inputs** |Name|Type|Binding|Description| |---|---|---|---| |uv|vec2|UV|Input UV value| |sides|int|none|Number of sides of the polygon| |width|float|none|Polygon width| |height|float|none|Polygon height| **Outputs** |Name|Type|Binding|Description| |---|---|---|---| |output|float|None|Output polygon value| ___

Rectangle node

Generates a rectangle shape based on input UV at the size specified by inputs width and height. The generated shape can be offset or tiled by connecting a TilingAndOffset node. Note that in order to preserve the ability to offset the shape within the UV space the shape will not automatically repeat if tiled. To achieve a repeating rectangle effect first connect your TilingAndOffset output through a Fract node.
**Inputs** |Name|Type|Binding|Description| |---|---|---|---| |uv|vec2|UV|Input UV value| |width|float|none|Rectangle width| |height|float|none|Rectangle height| **Outputs** |Name|Type|Binding|Description| |---|---|---|---| |output|float|None|Output rectangle value| ___

Rounded Polygon node

Generates a rounded polygon shape based on input UV at the size specified by inputs width and height. The polygon's amount of sides is determined by input sides. The radius of each corner is defined by input roundnesss. The generated shape can be offset or tiled by connecting a TilingAndOffset node. Note that in order to preserve the ability to offset the shape within the UV space the shape will not automatically repeat if tiled. To achieve a repeating rounded polygon effect first connect your TilingAndOffset output through a Fract node.
**Inputs** |Name|Type|Binding|Description| |---|---|---|---| |uv|vec2|UV|Input UV value| |width|float|none|Rounded polygon width| |height|float|none|Rounded polygon height| |sides|int|none|Number of sides of the polygon| |roundness|float|none|Corner radius| **Outputs** |Name|Type|Binding|Description| |---|---|---|---| |output|float|None|Output rounded polygon value| ___

Rounded Rectangle node

Generates a rounded rectangle shape based on input UV at the size specified by inputs width and height. The radius of each corner is defined by input radius. The generated shape can be offset or tiled by connecting a TilingAndOffset node. Note that in order to preserve the ability to offset the shape within the UV space the shape will not automatically repeat if tiled. To achieve a repeating rounded rectangle effect first connect your TilingAndOffset output through a Fract node.
**Inputs** |Name|Type|Binding|Description| |---|---|---|---| |uv|vec2|UV|Input UV value| |width|float|none|Rounded rectangle width| |height|float|none|Rounded rectangle height| |radius|float|none|Corner radius| **Outputs** |Name|Type|Binding|Description| |---|---|---|---| |output|float|None|Output rounded rectangle value| ___

UV nodes

Flipbook node

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 rows and columns. This node can be used to create a texture animation functionality, commonly used for particle effects and sprites.
**Inputs** |Name|Type|Binding|Description| |---|---|---|---| |uv|vec2|UV|Input UV value| |rows|int|none|Amount of horizontal tiles in texture sheet| |columns|int|none|Amount of vertical tiles in texture sheet| |start frame|int|none|Start tile index texture sheet| |end frame|int|none|End tile index texture sheet| |anim speed|float|none|Animation speed| **Outputs** |Name|Type|Binding|Description| |---|---|---|---| |uv|vec2|None|Output UV value| ___

Radial Shear node

Applies a radial shear warping effect similar to a wave to the value of input UV.
**Inputs** |Name|Type|Binding|Description| |---|---|---|---| |uv|vec2|UV|Input UV value| |center|vec2|none|Center reference point| |strength|float|none|Strength of the effect| |offset|vec2|none|Individual channel offsets| **Outputs** |Name|Type|Binding|Description| |---|---|---|---| |uv|vec2|None|Output UV value| ___

Rotate node

Rotates value of input UV around a reference point defined by input center by the amount of input rotation.
**Inputs** |Name|Type|Binding|Description| |---|---|---|---| |uv|vec2|UV|Input UV value| |center|vec2|none|Center reference point| |rotation|float|none|Rotation amount in radians| |use degrees|bool|none|Use degrees instead of radians for rotation amount| **Outputs** |Name|Type|Binding|Description| |---|---|---|---| |uv|vec2|None|Output UV value| ___

Spherize node

Applies a spherical warping effect similar to a fisheye camera lens to the value of input UV.
**Inputs** |Name|Type|Binding|Description| |---|---|---|---| |uv|vec2|UV|Input UV value| |center|vec2|none|Center reference point| |strength|float|none|Strength of the effect| |offset|vec2|none|Individual channel offsets| **Outputs** |Name|Type|Binding|Description| |---|---|---|---| |uv|vec2|None|Output UV value| ___

Tiling and Offset node

Tiles and offsets the value of input UV by the inputs tiling and offset respectively. This is commonly used for detail maps and scrolling textures over TIME.
**Inputs** |Name|Type|Binding|Description| |---|---|---|---| |uv|vec2|UV|Input UV value| |tiling|vec2|none|Amount of tiling to apply per channel| |offset|vec2|none|Amount of offset to apply per channel| **Outputs** |Name|Type|Binding|Description| |---|---|---|---| |uv|vec2|None|Output UV value| ___

Twirl node

Applies a twirl warping effect similar to a black hole to the value of input UV.
**Inputs** |Name|Type|Binding|Description| |---|---|---|---| |uv|vec2|UV|Input UV value| |center|vec2|none|Center reference point| |strength|float|none|Strength of the effect| |offset|vec2|none|Individual channel offsets| **Outputs** |Name|Type|Binding|Description| |---|---|---|---| |uv|vec2|None|Output UV value| ___