Sample Texture 2D Array node
The Sample Texture 2D Array node samples a Texture 2D Array asset and returns a Vector 4 color value. You can specify the UV coordinates for a texture sample and use a Sampler State node to define a specific Sampler State. The node's Index input port specifies which index of a Texture 2D Array to sample.
For more information about Texture 2D Arrays, see Texture Arrays in the Unity User manual.
Note
If you experience texture sampling errors for this node in a graph with Custom Function Nodes or Sub Graphs, upgrade to Shader Graph version 10.3 or later.
Create Node menu category
The Sample Texture 2D Array node is under the Input > Texture category in the Create Node menu.
Compatibility
The Sample Texture 3D node is supported on the following render pipelines:
Built-In Render Pipeline | Universal Render Pipeline (URP) | High Definition Render Pipeline (HDRP) |
---|---|---|
Yes | Yes | Yes |
With its default settings, this node can only connect to a Block node in the Fragment Context of a Shader Graph. To sample a Texture for the Vertex Context of a Shader Graph, set the Mip Sampling Mode to LOD.
Inputs
The Sample Texture 3D node has the following input ports:
[!include[nodes-sample-uv-table](./snippets/sample-nodes/nodes-sample-uv-table.md)] [!include[nodes-sample-ss-table](./snippets/sample-nodes/nodes-sample-ss-table.md)] [!include[nodes-sample-lod-table](./snippets/sample-nodes/nodes-sample-lod-table.md)] [!include[nodes-sample-mip-bias-table](./snippets/sample-nodes/nodes-sample-mip-bias-table.md)] [!include[nodes-sample-ddx-table](./snippets/sample-nodes/nodes-sample-ddx-table.md)] [!include[nodes-sample-ddy-table](./snippets/sample-nodes/nodes-sample-ddy-table.md)]Name | Type | Binding | Description |
---|---|---|---|
Texture Array | Texture 2D Array | None | The Texture 2D Array asset to sample. |
Index | Float | None | The index of the specific Texture in the Texture array to sample. The index value is the Texture's location in the Texture array. The index values in an array always start at 0. An array with four textures would have locations 0, 1, 2, and 3. |
Additional node settings
The Sample Texture 3D node has some additional settings that you can access from the Graph Inspector:
Name | Type | Description | |
---|---|---|---|
Use Global Mip Bias | Toggle | Enable Use Global Mip Bias to use the render pipeline's Global Mip Bias. This bias adjusts the percentage of texture information taken from a specific mip when sampling. For more information on mip bias, see Mipmaps introduction in the Unity User Manual. | |
Enabled | Shader Graph uses the render pipeline's Global Mip Bias to adjust the texture information taken when sampling. | ||
Disabled | Shader Graph doesn't use the render pipeline's Global Mip Bias to adjust texture information when sampling. | ||
Mip Sampling Mode | Dropdown | Choose the sampling mode to use to calculate the mip level of the texture. | |
Standard | The render pipeline calculates and automatically selects the mip for the texture. | ||
LOD | The render pipeline lets you set an explicit mip for the texture on the node. The texture will always use this mip, regardless of the DDX or DDY calculations between pixels. Set the Mip Sampling Mode to LOD to connect the node to a Block node in the Vertex Context. For more information on Block nodes and Contexts, see Master Stack. | ||
Gradient | The render pipeline lets you set the DDX and DDY values to use for its mip calculation, instead of using the values calculated from the texture's UV coordinates. For more information on DDX and DDY values, see Mipmaps introduction in the User Manual. | ||
Bias | The render pipeline lets you set a bias to adjust the calculated mip for a texture up or down. Negative values bias the mip to a higher resolution. Positive values bias the mip to a lower resolution. The render pipeline can add this value to the value of the Global Mip Bias, or use this value instead of its Global Mip Bias. For more information on mip bias, see Mipmaps introduction in the User Manual. |
Outputs
The Sample Texture 3D node has the following output ports:
Name | Type | Description |
---|---|---|
RGBA | Vector 4 | The full RGBA Vector 4 color value of the texture sample. |
R | Float | The Red channel or X component of the texture sample. |
G | Float | The Green channel or Y component of the texture sample. |
B | Float | The Blue channel or Z component of the texture sample. |
A | Float | The Alpha channel or W component of the texture sample. |
Example graph usage
In the following example, the Sample Texture 2D Array node samples a Texture array that has 4 different cloth normal maps. Change the number given to the Index port as an input, and the Sample Texture 2D Array node can sample a specific normal map from the array. The Index value changes the output the node sends to the Normal Unpack node, and the Normal (Tangent Space) Block node in the Master Stack.
Generated code example
The following code represents this node in Unity's shader code:
float4 _SampleTexture2DArray_RGBA = SAMPLE_TEXTURE2D_ARRAY(Texture, Sampler, UV, Index);
float _SampleTexture2DArray_R = _SampleTexture2DArray_RGBA.r;
float _SampleTexture2DArray_G = _SampleTexture2DArray_RGBA.g;
float _SampleTexture2DArray_B = _SampleTexture2DArray_RGBA.b;
float _SampleTexture2DArray_A = _SampleTexture2DArray_RGBA.a;
Related nodes
The following nodes are related or similar to the Sample Texture 3D node: