Materials
Configure PBR surfaces, transmission, dispersion, volumes, and subsurface scattering.
Atlas materials combine ordinary PBR surface settings with controls for Photon lighting. Begin with albedo, metallic, roughness, normal maps, and emissive settings, then add transmission or scattering when the scene needs them.
Transmission and dispersion
Use transmittance for transmitted light and ior for index of refraction. attenuationColor and attenuationDistance describe how transmitted light loses energy through a material. abbeNumber controls dispersion for transmissive materials.
Compare these effects in Photon path tracing, with a simple light and a stable camera. High refraction and long light paths can require more samples and bounces.
Subsurface scattering
| Property | Purpose |
|---|---|
subsurfaceWeight | Contribution of subsurface scattering; 0 disables it |
subsurfaceScale | Overall scattering distance scale |
subsurfaceColor | Scattering color |
subsurfaceRadius | Per-channel scattering radius |
subsurfaceAnisotropy | Directional scattering preference |
Use these controls for surfaces whose light transport extends beneath the visible surface. Begin with a small weight and adjust scale against the object's real scene size.
Participating volumes
Set isVolume for a volume material. volumeDensity controls its density, while absorption, scattering, and emission each have a color and strength:
volumeAbsorptionColorandvolumeAbsorptionStrengthvolumeScatteringColorandvolumeScatteringStrengthvolumeEmissionColorandvolumeEmissionStrength
volumeAnisotropy controls the directional scattering preference. Tune one contribution at a time so excessive density or absorption does not obscure the scene.
Script material values
import { Material } from "atlas";
import { Color } from "atlas/units";
const glass = new Material();
glass.metallic = 0;
glass.roughness = 0.05;
glass.transmittance = 1;
glass.ior = 1.5;
glass.attenuationColor = new Color(0.9, 0.95, 1, 1);
glass.attenuationDistance = 1;This creates a material value; assign it through the owning object's material API. See Material for the complete scripting declaration. The selected renderer determines which material effects appear in the result; a rasterized preview may differ from path tracing.