Atlas Engine

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

PropertyPurpose
subsurfaceWeightContribution of subsurface scattering; 0 disables it
subsurfaceScaleOverall scattering distance scale
subsurfaceColorScattering color
subsurfaceRadiusPer-channel scattering radius
subsurfaceAnisotropyDirectional 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:

  • volumeAbsorptionColor and volumeAbsorptionStrength
  • volumeScatteringColor and volumeScatteringStrength
  • volumeEmissionColor and volumeEmissionStrength

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.

On this page