Hair shader
The Hair shader is your starting point for rendering hair and fur in the High Definition Render Pipeline (HDRP). To create a realistic looking hair effect, it uses layers called hair cards. Each hair card represents a different section of hair. If you use semi-transparent hair cards, you must manually sort them so that they are in back-to-front order from every viewing direction.
Under the hood, the Hair shader is a pre-configured Shader Graph. To learn more about the Hair shader implementation, or to create your own Hair shader variant, see the Shader Graph documentation about the Hair Master Node.
Importing the Hair Sample
HDRP comes with a Hair Material sample 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 Hair scene. Here you will see the hair sample material set up in-context with a scene, and available for you to use.
Creating a Hair Material
New Materials in HDRP use the Lit shader by default. To create a Hair Material from scratch, create a Material and then make it use the Hair 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 > Hair.
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 Color Map | Assign a Texture that controls both the color and opacity 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. |
Alpha Cutoff | Set the alpha value limit that HDRP uses to determine whether it should 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. This property only appears when you enable the Alpha Clipping setting. |
Alpha Cutoff Prepass | Set the alpha value limit that HDRP uses to determine whether it should discard the fragment from the depth prepass. This property only appears when you enable the Alpha Clipping and Transparent Depth Postpass settings. |
Alpha Cutoff Postpass | Set the alpha value limit that HDRP uses to determine whether it should discard the fragment from the depth postpass. This property only appears when you enable the Alpha Clipping and Transparent Depth Postpass settings. |
Alpha Cutoff Shadows | Set the alpha value limit that HDRP uses to determine whether it should render shadows for a fragment. This property only appears when you enable the Use Shadow Threshold settings. |
Base UV Scale Transform | Sets the tiling rate (xy) and offsets (zw) for Base Color, Normal, and AO maps. |
Normal Map | Assign a Texture that defines the normal map for this Material in tangent space. |
Normal Strength | Modulates the normal intensity between 0 and 8. |
AO Map | Assign a Texture that defines the ambient occlusion for this material. |
AO Use Lightmap UV | Set the UV channel used to sample the AO Map. When enabled, UV1 channel will be used. This is useful in the case of overlapping UVs (which is often for hair cards). |
Smoothness Mask | Assign a Texture that defines the smoothness for this material. |
Smoothness UV Scale Transform | Sets the tiling rate (xy) and offsets (zw) for the Smoothness Mask Map. |
Smoothness Min | Set the minimum smoothness for this Material. |
Smoothness Max | Set the maximum smoothness for this Material. |
Specular Color | Set the color of the primary specular highlight. |
Specular Multiplier | Modifies the Specular Color by this multiplier. |
Specular Shift | Modifies the position of the primary specular highlight. |
Secondary Specular Multiplier | Modifies the Secondary Specular Color by this multiplier. |
Secondary Specular Shift | Modifies the position of the secondary specular highlight |
Transmission Color | Set the fraction of specular lighting that penetrates the hair from behind. This is on a per-color channel basis so you can use this property to set the color of penetrating light. Set this to (0, 0, 0) to stop any light from penetrating through the hair. Set this to (1, 1, 1) to have a strong effect with a lot of white light transmitting through the hair. |
Transmission Rim | Set the intensity of back lit hair around the edge of the hair. Set this to 0 to completely remove the transmission effect. |
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. |