Silk shader
The Silk shader is your starting point for rendering anisotropic fabrics in the High Definition Render Pipeline (HDRP). You can use the Silk shader to create fabrics like silk, satin, nylon, and polyester. In general, silk and other synthetic fibers are smoother because they are produced as a single smooth filament. When this is weaved, it produces a fabric with anisotropic specular highlights.
Under the hood, the Silk shader is a pre-configured Shader Graph. To learn more about the Silk shader implementation, or to create your own Silk shader variant, see the Shader Graph documentation about the Fabric Master Stack.
Importing the Silk Fabric Sample
The High Definition Render Pipeline (HDRP) also comes with Silk Material samples to further help you get started. To find this Sample:
- Go to Windows > Package Manager, and select High Definition RP from the package list.
- In the main window that shows the package's details, find the Samples section.
- To import a Sample into your Project, click the Import into Project button. This creates a Samples folder in your Project and imports the Sample you selected into it. This is also where Unity imports any future Samples into.
- In the Asset window, go to Samples > High Definition RP > 11.0 and open the Fabric scene. Here you can see the silk sample material set up in-context in the scene, and available for you to use.
Creating a Silk Material
New Materials in HDRP use the Lit shader by default. To create a Silk Material from scratch, create a Material and then make it use the Silk shader. To do this:
In the Unity Editor, navigate to your Project's Asset window.
Right-click the Asset Window and select Create > Material. This adds a new Material to your Unity Project’s Asset folder.
Click the Shader drop-down at the top of the Material Inspector, and select HDRP > Fabric > Silk.
Thread maps
The Fabric shaders can use a thread map for the high-frequency details that fabrics exhibit. This is similar to the detail map found in HDRP's Lit shaders. The Thread Map input is channel-packed to optimise memory and is arranged in a way to optimise precision for the normal map. The Fabric Material Sample includes some pre-authored Thread Maps for you.
The format of the thread map texture:
- Red: Ambient Occlusion
- Green & Alpha: Normals.
- Blue: Smoothness.
Under the hood, the fabric shaders apply thread maps using a SubGraph Operator. To learn more about the thread map implementation, or to use it yourself:
- In the Unity Editor, open a Shader Graph asset’s Shader Editor.
- Right-click anywhere in the graph view, and select Create Node.
- Navigate to Utility > High Definition Render Pipeline > Fabric > Thread Map Detail and select. This adds the Thread Map operator into your graph.
Fuzz Maps
The fabric shaders can use a fuzz map to provide additional fuzz detail to the surface. A fuzz map is a single-channel texture. To apply it, the fabric shader mixes it in with the base color map to produce a final color used for shading the fabric material.
Properties
Surface Options
Surface Options control the overall look of your Material's surface and how Unity renders the Material on screen.
Property | Description |
---|---|
Surface Type | Specifies whether the material supports transparency or not. Materials with a Transparent Surface Type are more resource intensive to render than Materials with an Opaque Surface Type. Depending on the option you select, HDRP exposes more properties. The options are: • Opaque: • Transparent: Simulates a translucent Material that light can penetrate, such as clear plastic or glass. For more information about the feature and for the list of properties each Surface Type exposes, see the Surface Type documentation. |
- Rendering Pass | Specifies the rendering pass that HDRP processes this material in. • Before Refraction: Draws the GameObject before the refraction pass. This means that HDRP includes this Material when it processes refraction. To expose this option, select Transparent from the Surface Type drop-down. • Default: Draws the GameObject in the default opaque or transparent rendering pass pass, depending on the Surface Type. • Low Resolution: Draws the GameObject in half resolution after the Default pass. • After post-process: For Unlit Materials only. Draws the GameObject after all post-processing effects. |
- Blending Mode | Specifies the method HDRP uses to blend the color of each pixel of the material with the background pixels. The options are: • Alpha: Uses the Material’s alpha value to change how transparent an object is. 0 is fully transparent. 1 appears fully opaque, but the Material is still rendered during the Transparent render pass. This is useful for visuals that you want to be fully visible but to also fade over time, like clouds. • Additive: Adds the Material’s RGB values to the background color. The alpha channel of the Material modulates the intensity. A value of 0 adds nothing and a value of 1 adds 100% of the Material color to the background color. • Premultiply: Assumes that you have already multiplied the RGB values of the Material by the alpha channel. This gives better results than Alpha blending when filtering images or composing different layers. This property only appears if you set Surface Type to Transparent. |
- - Preserve Specular Lighting |
Indicates whether to make alpha blending not reduce the intensity of specular highlights. This preserves the specular elements on the transparent surface, such as sunbeams shining off glass or water. This property only appears if you set Surface Type to Transparent. |
- Sorting Priority | Allows you to change the rendering order of overlaid transparent surfaces. For more information and an example of usage, see the Material sorting documentation. This property only appears if you set Surface Type to Transparent. |
- Receive Fog | Indicates whether fog affects the transparent surface. When disabled, HDRP does not take this material into account when it calculates the fog in the Scene. |
- Back Then Front Rendering |
Indicates whether HDRP renders this material in two separate draw calls. HDRP renders the back face in the first draw call and the front face in the second. This property only appears if you set Surface Type to Transparent. |
- Transparent Depth Prepass | Indicates whether HDRP adds polygons from the transparent surface to the depth buffer to improve their sorting. HDRP performs this operation before the lighting pass and this process improves GPU performance. |
- Transparent Depth Postpass | Indicates whether HDRP adds polygons to the depth buffer that post-processing uses. HDRP performs this operation before the lighting pass. Enabling this feature is useful if you want to use post-processing effects that use depth information, like motion blur or depth of field. |
- Transparent Writes Motion Vectors | Indicates whether HDRP writes motion vectors for transparent GameObjects that use this Material. This allows HDRP to process effects like motion blur for transparent objects. For more information on motion vectors, see the motion vectors documentation. This property only appears if you set Surface Type to Transparent. |
- Depth Write | Indicates whether HDRP writes depth values for GameObjects that use this material. |
- Depth Test | Specifies the comparison function HDRP uses for the depth test. |
- Cull Mode | Specifies the face to cull for GameObjects that use this material. The options are: • Front: Culls the front face of the mesh. • Back: Culls the back face of the mesh. This property only appears if you disable Double Sided. |
Alpha Clipping |
Indicates whether this material acts like a Cutout Shader. For more information about the feature and for the list of properties this feature exposes, see the Alpha Clipping documentation. |
- Threshold | The alpha value limit HDRP uses to determine whether to render each pixel. If the alpha value of the pixel is equal to or higher than the limit then HDRP renders the pixel. If the value is lower than the limit then HDRP does not render the pixel. The default value is 0.5. |
- Use Shadow Threshold |
Indicates whether HDRP uses another threshold value for alpha clipping shadows. This property only appears if you enable Alpha Clipping. |
- - Shadow Threshold |
The alpha value limit that HDRP uses to determine whether it should render shadows for a pixel. This property only appears if you enable Use Shadow Threshold. |
- Alpha to Mask |
Indicates whether to turn on alpha-to-coverage. If your Project uses MSAA, alpha-to-coverage modifies the multi-sample coverage mask proportionally to the pixel shader result alpha value. This is typically used for anti-aliasing vegetation and other alpha-tested shaders. This property only appears if you enable Alpha Clipping. |
- Prepass Threshold |
The alpha value limit HDRP uses for the transparent depth prepass. This works in the same way as the main Threshold property described above. This property only appears when you enable the Transparent Depth Prepass checkbox. |
- Postpass Threshold |
The alpha value limit HDRP uses for the transparent depth postpass. This works in the same way as the main Threshold property described above. This property only appears when you enable the Transparent Depth Postpass checkbox. |
Double Sided | Indicates whether HDRP renders both faces of the polygons in your geometry. For more information about the feature and for the list of properties this feature exposes, see the Double-Sided documentation. |
- Normal Mode | Specifies the mode HDRP uses to calculate the normals for back facing geometry. • Flip: The normal of the back face is 180° of the front facing normal. This also applies to the Material which means that it looks the same on both sides of the geometry. • Mirror: The normal of the back face mirrors the front facing normal. This also applies to the Material which means that it inverts on the back face. This is useful when you want to keep the same shapes on both sides of the geometry, for example, for leaves. • None: The normal of the back face is the same as the front face. This property only appears if you enable Double-Sided. |
Material Type | Specifies a type for the material. This allows you to customize the material with different settings depending on the type you select. The options are: • Subsurface Scattering: Applies the subsurface scattering workflow to the material. Subsurface scattering simulates the way light interacts with and penetrates translucent objects, such as skin or plant leaves. When light penetrates the surface of a subsurface scattering material, it scatters and blurs before exiting the surface at a different point. • Standard: Applies the basic metallic Shader workflow to the material. This is the default Material Type. • Anisotropy: Applies the anisotropic workflow to the material. The highlights of Anisotropic surfaces change in appearance as you view the material from different angles. Use this Material Type to create materials with anisotropic highlights. For example, brushed metal or velvet. • Iridescence: Applies the Iridescence workflow to the material. Iridescent surfaces appear to gradually change color as the angle of view or angle of illumination changes. Use this Material Type to create materials like soap bubbles, iridescent metal, or insect wings. • Specular Color: Applies the Specular Color workflow to the material. Use this Material Type to create Materials with a coloured specular highlight. This is similar to the built-in Specular Shader. • Translucent: Applies the Translucent workflow to the material. Use this Material Type, and a thickness map, to simulate a translucent material. In contrast to Subsurface Scattering materials, Translucent materials do not blur light that transmits through the material. For more information about the feature and for the list of properties each Material Type exposes, see the Material Type documentation. |
- Transmission |
Indicates whether HDRP simulates the translucency of the material using a thickness map. Configure subsurface scattering and transmission settings using a Diffusion Profile. For more information, see documentation on Subsurface Scattering. This property only appears when you select Subsurface Scattering from the Material Type drop-down. |
Receive Decals | Indicates whether HDRP can draw decals on this material’s surface. |
Receive SSR/SSGI | Indicates whether HDRP includes this material when it processes the screen space reflection pass. HDRP also takes this material into account when it calculates screen space global illumination. This property only appears if you set Surface Type to Opaque. |
Receive SSR Transparent | Indicates whether HDRP includes this material when it processes the screen space reflection pass. This property only appears if you set Surface Type to Transparent. |
Geometric Specular AA | Indicates whether HDRP performs geometric anti-aliasing on this material. This modifies the smoothness values on the surfaces of curved geometry to remove specular artifacts. For more information about the feature and for the list of properties this feature exposes, see the Geometric Specular Anti-aliasing documentation. |
- Screen Space Variance | The strength of the geometric specular anti-aliasing effect between 0 and 1. Higher values produce a blurrier result with less aliasing. This property only appears if you enable Geometric Specular AA. |
- Threshold | The maximum value for the offset that HDRP subtracts from the smoothness value to reduce artifacts. This property only appears if you enable Geometric Specular AA. |
Displacement Mode | Specifies the method HDRP uses to alter the height of the Material’s surface. The options are: • None: Applies no displacement to the material. • Vertex displacement: Displaces the mesh's vertices according to the Height Map. • Pixel displacement: Displaces the pixels on the mesh surface according to the Height Map. For more information about the feature and for the list of properties each Displacement Mode exposes, see the Displacement Mode documentation. |
- Lock With Object Scale | Indicates whether to alter the height of the displacement using the Scale of the Transform. This allows you to preserve the ratio between the amplitude of the displacement and the Scale of the Transform. This property only appears if you set Displacement Mode to Vertex Displacement or Pixel Displacement. |
- Lock With Height Map Tiling Rate | Indicates whether to alter the amplitude of the displacement using the tiling of the Height Map. This allows you to preserve the ratio between the amplitude of the displacement and the scale of the Height Map Texture. This property only appears if you set Displacement Mode to Vertex Displacement or Pixel Displacement. |
- Minimum Steps | The minimum number of Texture samples which Unity performs to process pixel displacement. This property only appears if you set Displacement Mode to Pixel Displacement. |
- Maximum Steps | The maximum number of Texture samples which Unity performs to process pixel displacement. This property only appears if you set Displacement Mode to Pixel Displacement. |
- Fading Mip Level Start | The mip level at which the pixel displacement effect begins to fade out. This property only appears if you set Displacement Mode to Pixel Displacement. |
- Primitive Length | The length of the mesh (in meters) on which Unity applies the displacement mapping. This property only appears if you set Displacement Mode to Pixel Displacement. |
- Primitive Width | The width of the mesh (in meters) on which Unity applies the displacement mapping. This property only appears if you set Displacement Mode to Pixel Displacement. |
- Depth Offset | Indicates whether HDRP modifies the depth buffer according to the displacement. This allows effects that use the depth buffer (Contact Shadows for example) to capture pixel displacement details. This property only appears if you set Displacement Mode to Pixel Displacement. |
Exposed Properties
Property | Description |
---|---|
Base UV Mask | Set the Base UV channel, by typing "1" in the column that corresponds to the channel desired and 0 in the others. |
Base UV Scale Transform | Sets the tiling rate (xy) and offsets (zw) for the base UV. |
Base Color Map | Assign a Texture that controls the base color of your material. |
Base Color | Set the color of the Material. If you do not assign a Texture, this is the absolute color of the Material. If you do assign a Texture, the final color of the Material is a combination of the Texture you assign and the color you select. The alpha value of the color controls the transparency level for the Material if you select Transparent from the Surface Type drop-down. |
Mask Map AO(G) S(A) | Assign a channel-packed Texture with the following Material maps in its RGBA channels. • Green: Stores the ambient occlusion map. • Alpha: Stores the smoothness map.For more information on channel-packed Textures and the mask map, see mask map. |
Smoothness Min | Sets the minimum smoothness of your Material. |
Smoothness Max | Sets the maximum smoothness of your Material. |
Specular Color | Sets the color of the specular highlight. |
Normal Map | Assign a Texture that defines the normal map for this Material in tangent space. |
Normal Map Strength | Modulates the normal intensity between 0 and 8. |
Use Thread Map | Set whether the thread map details will be applied to your Material. |
Thread Map AO(R) Ny(G) S(B) Nx(A) | Assign a Texture that defines parameters for fabric thread, with the following maps in its RGBA channels. • Red: Stores the ambient occlusion map.• Green: Stores the normal’s Y component.• Blue: Stores the smoothness map.• Alpha: Stores the normal’s X component.For more information on channel-packed Textures and the mask map, see mask map. |
Thread UV Mask | Set the Thread UV channel, by typing "1" in the column that corresponds to the channel desired and 0 in the others. |
Thread UV Scale Transform | Sets the tiling rate (xy) and offsets (zw) for the thread UV. |
Thread AO Strength | Modifies the strength of the AO stored in the Thread Map. |
Thread Normal Strength | Modifies the strength of the Normal stored in the Thread Map. |
Thread Smoothness Scale | Modifies the scale of the Smoothness stored in the Thread Map. |
Fuzz Map | Assign a Texture that adds fuzz detail to the Base Color of your Material. |
Fuzz Map UV Scale | Sets the scale of the Thread UV used to sample the Fuzz Map. |
Fuzz Strength | Sets the strength of the Fuzz Color added to the Base Color. |
Diffusion Profile | Sets the Diffusion Profile, controlling the Subsurface Scattering properties of your Material. |
Advanced Options
Property | Description |
---|---|
Enable GPU Instancing | Enable the checkbox to tell HDRP to render Meshes with the same geometry and Material in one batch when possible. This makes rendering faster. HDRP cannot render Meshes in one batch if they have different Materials, or if the hardware does not support GPU instancing. For example, you cannot static-batch GameObjects that have an animation based on the object pivot, but the GPU can instance them. |
Baked Emission | Indicates whether the emission color affects global illumination. |
Motion Vector For Vertex Animation | Indicates whether HDRP writes motion vectors for GameObjects that use vertex animation. This removes the ghosting that vertex animation can cause. |
Add Precomputed Velocity | Indicates whether to use precomputed velocity information stored in an Alembic file. |
Limitations
Area Lights do not currently support Fabric or Hair Materials. This means they do not illuminate or cast shadows for Materials that use any of the following: