Hair with Kajiya-Kay shifted highlights
In your harnessGodot shaderMIT
Hair shading for meshes and cards with strands along UV v: two Kajiya-Kay specular lobes shifted along the strand, a white primary and a tinted secondary, broken up per strand by noise, over a root to tip colour.

What it takes and gives
- Shader type
- spatial
- Render modes
- cull_disabled
- Parameters
- root_color (vec4 = 0.12, 0.06, 0.03, 1), tip_color (vec4 = 0.45, 0.25, 0.12, 1), secondary_tint (vec4 = 0.85, 0.55, 0.3, 1), primary_shift (float = 0.1), secondary_shift (float = -0.15), primary_exponent (float = 160), secondary_exponent (float = 40), strand_noise (float = 0.4) and 2 more
- Use it on
- Hair geometry whose UV v runs along the strands, with tangents.
- Result
- A brown sphere with a bright, ragged highlight band across its strands and a warmer second band.
- Renderers
- compatibility: compiled and rendered, forward plus: not verified, mobile: not verified
- Placement
- res://baltor/godot_shaders/hair_strand_highlight/
Limits. No transparency, depth sorting or self-shadowing of strands: pair it with alpha-tested cards for strand silhouettes. Strand direction comes from UV layout; badly unwrapped hair gives broken bands.
Details
- Kind
- Godot shader
- Engine
- Godot 4.3 or later
- Files
- 11 files, 67.0 KB
- Licence
- MIT
- Declared effects
- reads files, runs commands
- Checked with
- Godot 4.7.2, opengl3 compatibility (Mesa llvmpipe, Xvfb)
- Checks
- contract static, engine run, engine log clean, shader in scene, capture written, render not uniform, shader changes pixels
- Techniques
- Kajiya-Kay strand specular (1989) with two shifted lobes (after Scheuermann 2004), Per-strand noise jitter, Fragment-to-light varyings
- Tags
- godot shader, spatial, hair, kajiya-kay, anisotropic, anime, custom light function
- Identity
library.supply.creative_originals.73cd10657aa1398e8c590889.e5420b2cb4634a5e- Version
e5420b2cb4634a5e1fa627f5367cfb66b7afc2d7fa304254ee0375f9a33f607a
The version is the SHA-256 of the item your harness downloads; every file in it names its own checksum.
Something wrong with this item, its rights or its safety? Report it on the support page, or from your harness after a download.

