Unity Products:Amplify Shader Editor/Static Switch
Static Node
The Static Switch node creates and/or uses shader keywords through #if #elif/#else #endif directives. Its input True will be used inside the #if directive body while the False input will be used on the #else directive. If multiple keywords are defined on the Type then an #elif directive will be created to each one of the middle items.
NOTE: We recommend setting the keyword to local when working on Unity 2019.1 or newer. Unity has a limit of 384 global keywords which can be consumed very quickly across all shaders, including Unity native ones.
The amount of local keywords is 64 so its always best use more local keywords and less global keywords in order to reduce total keyword count per shader.
Nodes used:
Texture Sample,
World Normal,
Vertex To Fragment,
Static Switch
Node Parameter | Description | Default Value |
---|---|---|
Mode | Specify if node creates the specified keyword or uses an already defined one
| |
Keyword Type | Type of keyword to be specified
|
Shader Feature |
Type | Defines the amount of variants and toggle default behavior when it's checked on
|
Toggle |
Is-Local | Sets the keyword to be local to this particular shader instead of global.(Only on Unity 2019.1 or newer) | True |
Auto-Register | If toggled on, keyword registry is done independently if node is connected to an output node. | False |
Material Toggle | If activated, creates a Toggle property so keyword can be set via the material inspector. | True |
Material Value | Selects current activated keyword. This can be either shown by a toggle or a multiple item dropdown depending on the selected Type. | Off |
Default Value | Defines the default value for the Material Toggle property. This property is only visible if Material Toggle is turned on. | False |
Reference | ||
Reference | Static Switch to which to get keyword | <None> |
Keyword Enum | ||
Amount | Amount of keywords to generate | 2 |
Item | Name of the current keyword | Key# |
Shader Feature/Multi Compile | ||
Name | Name of the keyword that will be created and used by the node. | Keyword # |
Property Name | This is the variable name that contains the value which is automatically generated from the Name parameter, it's greyed out and not editable. The generation process removes special characters, whitespaces and adds an underscore at the beginning ( ie: "My Keyword Name" becomes "_MyKeywordName" ). | _Keyword# |
Keyword Name | This is the generated keyword name which is automatically generated using the Name parameter, it's greyed out and not editable. The generation process removes special characters, whitespaces, adds an underscore(_) at the beginning, convert all characters to upper case and adds _ON at the end ( ie: "My Keyword Name" becomes "_MYKEYWORDNAME_ON" ). | _Keyword# |
Toggle with Fetch | ||
Keyword | Allows to select already existing Unity keywords or select a new custom new one. This list will continuously grow according to community needs/feedback.
|
Custom |
Custom | Write custom keyword to be used. This property is only visible if Keyword property is set to Custom. | |
Custom Attributes | ||
Attribute # | Additional attributes can be added to the generated property created by this node. |
Input Port | Description | Type |
---|---|---|
True | Value to be outputted if selected keyword is being defined (#if body). | Float [1] |
False | Value to be outputted if selected keyword is not being defined (#else body). | Float [1] |