7.4 KiB
Sample Texture 2D node
The Sample Texture 2D node samples a Texture 2D 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.
A Sample Texture 2D node can also sample a normal map. For more information, see the Controls section, or Normal map (Bump mapping) in the Unity User manual.
[!includenodes-sample-errors]
Create Node menu category
The Sample Texture 2D node is under the Input > Texture category in the Create Node menu.
Compatibility
The Sample Texture 2D [!includenodes-compatibility-all]
[!includenodes-sample-fragment-lod]
Inputs
The Sample Texture 2D [!includenodes-inputs]
[!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 | Texture 2D | None | The Texture 2D asset to sample. |
Controls
The Sample Texture 2D [!includenodes-controls]
Name | Type | Description | |
---|---|---|---|
Type | Dropdown | Select whether the texture is a Texture asset or a normal map. | |
Default | The texture is a Texture asset. | ||
Normal | The texture is a normal map. | ||
Space | Dropdown | When the node's Type is Normal to use a texture as a normal map, choose the Space for the normal map. | |
Tangent | Use a Tangent normal map whenever the mesh for a geometry needs to deform or change, such as when animating a character. With Tangent Space, the normal map's normals are relative to the existing vertex normals of any geometry rendered with your Shader Graph. Your Shader Graph only adjusts the vertex normals and not override them. | ||
Object | Use an Object normal map whenever the mesh for a geometry is static and doesn't deform. With Object Space, the normal map's normals are explicit and override the normals of any geometry rendered with your Shader Graph. Because a static mesh's normals never change, an Object normal map also maintains consistent lighting across different levels of detail (LODs). For more information about normal maps, see Normal map (Bump mapping) in the User manual. |
Additional node settings
The Sample Texture 2D [!includenodes-additional-settings]
[!includenodes-sample-mip-bias-sample-mode-table]
Outputs
The Sample Texture 2D [!includenodes-outputs]
[!includenodes-sample-rgba-output-table]
Example graph usage
In the following example, the Sample Texture 2D node uses a Subgraph node that generates UV coordinates in latitude and longitude format. These latitude and longitude UV coordinates help render the latlong_test 2D Texture asset, which was created and formatted with a latitude and longitude projection. The generated latitude and longitude UVs accurately map the 2D Texture asset onto a spherical geometry.
If the Sample Texture 2D node uses the Standard Mip Sampling Mode, the Texture displays with a seam along the side of the sphere where the left and right sides of the texture meet. The latitude and longitude UV coordinates for sampling the texture jump from 0
to 1
at the seam on the model, which causes a problem with the mip level calculation in the sample. The error in the mip level calculation causes the seam. The texture requires a different mip sampling mode to remove the seam.
When the Mip Sampling Mode is set to Gradient, the Sample Texture 2D node can use the standard set of UVs for the model in the mip level calculation, instead of the latitude and longitude UVs needed for sampling the texture. The new UV coordinates passed into the DDX and DDY input ports result in a continuous mip level, and remove the seam.
Generated code example
[!includenodes-generated-code], based on the selected Type on the Sample Texture 2D node:
Default
float4 _SampleTexture2D_RGBA = SAMPLE_TEXTURE2D(Texture, Sampler, UV);
float _SampleTexture2D_R = _SampleTexture2D_RGBA.r;
float _SampleTexture2D_G = _SampleTexture2D_RGBA.g;
float _SampleTexture2D_B = _SampleTexture2D_RGBA.b;
float _SampleTexture2D_A = _SampleTexture2D_RGBA.a;
Normal
float4 _SampleTexture2D_RGBA = SAMPLE_TEXTURE2D(Texture, Sampler, UV);
_SampleTexture2D_RGBA.rgb = UnpackNormalRGorAG(_SampleTexture2D_RGBA);
float _SampleTexture2D_R = _SampleTexture2D_RGBA.r;
float _SampleTexture2D_G = _SampleTexture2D_RGBA.g;
float _SampleTexture2D_B = _SampleTexture2D_RGBA.b;
float _SampleTexture2D_A = _SampleTexture2D_RGBA.a;
Related nodes
[!includenodes-related] Sample Texture 2D node: