UV Context Projection
|
|
| Scene by Saul Espinosa Textures from PolyHaven.com |
Scene by Saul Espinosa Ground texture from AmbientCG.com |
The UV Context Projection is a powerful utility node that applies the same mapping across all the textures connected to a material. Most materials are built using a set of textures that only look good when they perfectly match up with each other. The UV Context Projection node makes it easy to adjust all textures and keep them in sync.
| Adjusting a material using UV Context |
| Textures from PolyHaven.com |
All the textures can use an object's UV set or be switched to a number of other UV projections like Tri-Planar, Spherical, or Flat.
| Changing the Projection type using UV Context |
| Textures from PolyHaven.com |
The UV Context Projection node requires constant inputs. For example, you cannot drive the UV Transform Offset with a Maxon Noise the way you can on a Texture Sampler.
Examples
How it works
UV Context port: Local or Inherited connections
Using a UV Context Projection node is as simple as connecting the OutContext to a node with a "UV Context" port.
There are two ways for a texture to receive texture mapping information, from either a local connection or an inherited connection.
-
Local connections: When a UV Context node is connected directly to a texture's UV Context port. This takes precedence over any inherited connection, serving as a local override.
-
Inherited connections: When a texture node automatically inherits mapping information from a UV Context node connected downstream in the shading graph.
Thanks to inherited connections you don't need to manually connect each texture that should have the same mapping. That's because upstream textures are designed to automatically inherit UV Context information connected downstream in the shading graph. In the examples below, note how changing where the Context Projection node is connected affects which nodes are considered upstream. In the second example, there is no UV Context Projection node downstream from the displacement texture so it is unaffected.
Note, when using UV Context Projection nodes we recommend leaving the UV Remap section of a Texture Sampler at the default values for the sake of simplicity.
|
|
| Inherited connections UV Context Projection connected to the Material Output node All textures connected to the Material and Displacement shaders are upstream |
Inherited connections UV Context Projection connected to the Material shader node Only the textures connected to the Material shader are upstream |
Alternatively, a UV Context node can be connected directly to a texture which overrides any inherited connections.
Use inherited connections whenever possible to keep a shader graph simple, using local connections only where necessary. However, you could use local connections on every texture and get the same result.
|
| Local and Inherited connections UV Context Projection A connected to the Material Output node UV Context Projection B connected locally to three textures, overriding the inherited connection |
Textures that support a local UV Context connection:
Nodes with a UV Context Port that added inherited connections to all connected textures:
Connection examples
The most common UV Context setup is one where it affects all textures in a material, including the displacement textures. This is most easily accomplished by connecting one Context Projection node to the Material Output so it affects all upstream textures.
|
| UV Context Projection connected to Material Output |
Alternatively you could have a UV Context Projection node for only the Material textures or only the Displacement textures.
|
|
| UV Context Projection connected to Material | UV Context Projection connected to Displacement |
Local connections are useful when you have some textures that need to stay in sync but are different from the rest of the material. That's as easy as connecting a UV Context Projection node directly to the texture's own UV Context Port - a locally connected texture always takes precedent over any downstream inheritance.
|
|
| UV Context Projection connected directly to two textures | Mixing local and inherited connections |
When blending multiple materials, consider using a single UV Context Projection node for each material. In the example below, Context A is used for Material 1 and Context B is used for Material 2. Since displacement textures don't connect to the material directly you can connect the Context nodes directly to the textures to keep them in sync with their material.
|
| UV Context Projection connected to Material Output |