PermanentShadow provides a function similar to AO, using a Mask texture to keep specific areas in shadow consistently.

The left image shows the default hair, while the right image displays the hair with Permanent Shadow enabled.

The left image shows the default hair, while the right image displays the hair with Permanent Shadow enabled.

Shadow Mask texture

The texture is represented in grayscale, where black becomes the shadowed area, and white is the lit area.

Untitled

Shadow Intensity and Shadow Color (New Feature in Version 1.3)

In version 1.3, two new parameters are introduced: "PShadowIntensity (InLit)" and "PShadowOverlayColor.”

PShadowIntensity (InLit): Controls the intensity of permanent shadows on illuminated surfaces. A value of 1 means permanent shadows will be displayed normally on illuminated surfaces, while 0 means they will not be visible.

When set to 0, permanent shadows won't appear on illuminated surfaces but will be visible on shadowed surfaces.

When set to 0, permanent shadows won't appear on illuminated surfaces but will be visible on shadowed surfaces.

PShadowOverlayColor: Modifies the color of permanent shadows. RGB represents the shadow color values, and Alpha determines the overlay strength. Adjusting this color allows achieving secondary shadow effects.

Example with an overlay color of dark red and Alpha set to 0.5.

Example with an overlay color of dark red and Alpha set to 0.5.

Refer to the example map for more details: CelesAnimeShader/Map/Ver1_1/PermanentShadowOverview

Parameters

Shadow(Permanent)

EnablePermanentShadow Enable the PermanentShadow function
Tex_PermanentShadow shadow texture
PermanentShadowChannel Channel for sampling the shadow texture
PShadowIntensity(InLit) Control the intensity of permanent shadows on illuminated surfaces. A value of 1 means permanent shadows will be displayed normally on illuminated surfaces, while 0 means they will not be visible.
PShadowOverlayColor Modify the color of permanent shadows. RGB represents the shadow color values, and Alpha determines the overlay strength.