---
title: "Stylized Light Control"
canonical: "https://rmanwiki-27.pixar.com/space/REN27/869007484/Stylized%20Light%20Control"
format: markdown
---
> ℹ️ *PxrStylized****LightControl*** was introduced in RenderMan v27.2


The purpose of *PxrStylized****LightControl*** is to generate artistic lighting & shadowing inside a Pattern shader (before factory RenderMan lights are evaluated) in order to drive Toon, Hatching, Ink, Watercolor signals in downstream PxrStylizedControl, PxrStylizedHatchContorl, PxrStylizedToonControl all in the shading network.

  
Use it to create **toon ramps**, **directional ink, watercolor, **and **hatching **signals, **stylized shadows**, or **light‑driven stepping** effects while remaining compatible with PxrSurface, PxrLama, and RenderMan’s Stylized Looks display & sample filters.


## OVERVIEW HIGHLIGHTS

- **Artistic light rotation** independent of scene lights, connectable to DCC (Maya/Katana/Houdini/Blender) Rotation vector of light or locator
- Ray‑traced toon **shadows** along the artistic light direction
- Multi‑layer light rotation with jitter for **broken, hand‑drawn shadows **to drive downstream watercolor, ink, hatching
- **Normal bending** toward a artistic light direction
- Optional bump‑based **distortion** of normals
- Writes NPRnormals for downstream stylized filters
- Compatible with PxrSurface utilityPattern / userColor
- Supports normalized object‑space or degree‑based light rotation

## PARAMETERS

**Result**

Choose what is output to Result_RGB and Result_Float.  
Use when: previewing lighting angle, normals, world position, or debugging light rotation.  
Range: mapper

- Lighting (default)
- Light Rotation Angle: grayscale normalized chosen light rotation vector against surface normal
- NPRnormals: AOV for downstream Display & Sample filters with modified normals
- P World: Position P in world space

**Input RGB**  
Base albedo color passed through when using passthrough modes. Also written to NPRalbedo AOV.  
Use when: feeding a base color into stylized lighting compositing.  
Range: color

**Normal Map**  
Upstream normal map used for curvature, lighting rotation, and shadow direction.  
Use when: supplying a normal map for stylized lighting or curvature‑based stepping.  
Range: color input

**Normal Object Space**  
Transform the normal map into object space before calculations.  
Use when: ensuring consistent lighting direction across animated or deforming objects.  
Range: switch on/off

**Face Forward N**  
Force normals to face the camera.  
Use when: preventing back‑facing normals from flipping lighting direction.  
Range: switch on/off

**Distort Bump Switch**  
Enable bump distortion using Distort U and Distort Scale.  
Use when: adding stylized wobble or irregularity to curvature‑based lighting.  
Range: switch on/off

**Distort U**  
Float input used to offset the bump position.  
Use when: connecting PxrFractal or other procedural noise to distort normals.  
Range: 0.0 – 1.0  
(Visible only when Distort Bump Switch = ON)

**Distort Scale**  
Scale applied to Distort U.  
Use when: controlling the strength of bump distortion.  
Range: 0.0 – 100.0  
(Visible only when Distort Bump Switch = ON)

**Primary Hit Only**  
Restrict AOV writes to primary rays.  
Use when: disabling secondary‑bounce AOV writes in XPU.  
Range: switch on/off


### Artistic Light Rotation Page  


**Light Rotation Space**  
Choose how the light rotation vector is interpreted.  
Use when: matching rotation to normalized object space or DCC degrees.  
Range: mapper

- Normalized Object (–1..1)
- Degrees (0..360)

Light Rotation  
Vector defining the artistic light direction.  
Use when: controlling toon stepping direction, hatching direction, or stylized lighting.  
Range: vector (normalized or degrees depending on mode)

Angle Remap Min  
Lower bound for remapping the angle between normal and light direction.  
Use when: shaping the toon ramp or stepping threshold.  
Range: 0.0 – 1.0

Angle Remap Max  
Upper bound for remapping the angle.  
Use when: fine‑tuning the transition between lit and unlit regions.  
Range: 0.0 – 1.0

Bend Normals To Light  
Blend normals toward the light direction.  
Use when: exaggerating stylized lighting or smoothing stepping transitions.  
Range: 0.0 – 1.0


### Shadows Page

  
**Trace Shadow**  
Enable ray‑traced shadows toward the artistic light direction.  
Use when: generating toon shadows or stylized occlusion.  
Range: switch on/off

**Light Mode**  
Choose the shadowing model.  
Use when: selecting distant, soft distant, or finite area light behavior.  
Range: mapper

- Distant Light
- Soft Distant Light (WIP)
- Finite Area Light (WIP)

**Shadow Bias**  
Minimum distance before shadow tracing begins.  
Use when: preventing self‑shadowing artifacts.  
Range: 0.0 – 1.0  
(Visible only when Trace Shadow = ON)

**Shadow Max Dist**  
Maximum distance for shadow rays.  
Use when: controlling shadow reach for large scenes.  
Range: 0 – 10,000  
(Visible only when Trace Shadow = ON)

**Toon Shadow Color**  
Color applied to traced shadows.  
Use when: defining stylized shadow color for toon or hatching workflows.  
Range: color  
(Visible only when Trace Shadow = ON)

**Trace Set**  
Trace set used for shadow rays.  
Use when: restricting shadow casting to specific objects.  
Range: string  
(Visible only when Trace Shadow = ON)

**Shadow Lift**  
Lift applied to trace shadow intensity.  
Use when: softening or brightening stylized shadows.  
Range: 0.0 – 1.0

**Light Rotation Layers**  
Number of layers used for multi‑sampled shadow jitter.  
Use when: adding stylized noise or variation to shadows.  
Range: 1 – 20

**Offset X / Y / Z**  
Offsets applied per layer.  
Use when: shifting light direction between layers for stylized shadow breakup.  
Range: –10.0 – 10.0  
(Visible only when Light Rotation Layers > 1)

**Random Jitter**  
Random perturbation applied per layer.  
Use when: adding hand‑drawn wobble or irregularity to shadows.  
Range: 0.0 – 10.0  
(Visible only when Light Rotation Layers > 1)


### Version Page

  
**Notes**  
Read‑only version notes.  
Use when: tracking shader version or internal notes.  
Range: string (read‑only)

## Outputs + AOV Writes  


**Result RGB**  
Final color output of the shader.  
Use when: connecting to PxrSurface utilityPattern or userColor.  
Range: color

**Result Float**  
Float output representing lighting angle or shadow result.  
Use when: driving toon ramps, hatching density, or stylized shading.  
Range: float

**resultAOV**  
Integer output used internally for AOV routing.  
Use when: not typically user‑modified; included for completeness.  
Range: int

### AOV Writes (Automatic)

When Primary Hit Only conditions are met, the shader writes:

- NPRnormals

These AOVs are consumed by downstream Stylized Looks display filters


## QUICK USAGE TIPS

- Use Degrees 0..360 light rotation space and drive Light Rotation from a PxrDistantLight’s rotation to match your key.
- Start with Angle Remap Min ≈ 0.3 and Max ≈ 0.5 for a clean toon light/shadow split, then tweak per asset.
- Turn on Trace Shadow with a small Shadow Bias (around 0.05–0.1) to avoid acne while keeping crisp shadows.
- Set Light Rotation Layers to 3–5 with a small Random Jitter to get soft, broken, hand‑drawn‑style shadows.
- Use Bend Normals To Light in the 0.1–0.3 range to gently push shading toward the light without flattening form.
- When using a normal map, enable Normal Object Space only if your pipeline expects object‑space normals for stylization.