ZEMAX: Software For Optical System Design

Technology
User Interface
Multi-CPU
Sequential Ray-Tracing
Non-Sequential Ray Tracing
Colorimetry
Physical Optics
Optimization
Tolerancing
Optical Materials
Diffractive Optics
Multiple Configurations
Thermal Analysis
Lens Catalogs
CAD Import/Export
Polarization
Thin-Film Coatings
Scattering
Programming
Black Box Optics
Ray Scattering

In addition to partial reflections at surfaces, rays can also scatter due to microscopic roughness of the surface. ZEMAX supports many detailed models of scattering from optical surfaces, including Lambertian (used for very rough, highly scattering surfaces), Gaussian (typically used for modeling the scattering of a well-polished surface and ABg, which is used mainly for inputing measured scattering functions. There is also a powerful user-defined scattering function capability to allow you to add your own scattering distribution functions.

A mirror with scattering function applied 

See the detailed discussion on scattering here.

Related Knowledge-Base articles:
How To Model a Partially Reflective and Partially Scattering Surface
How to Add Coating and Scattering Functions to Non-Sequential Objects