The bidirectional reflectance distribution function (BRDF; ) is a function of four real variables that defines how light is reflected at an opaque surface. It is employed in the optics of real-world light, in computer graphics algorithms, and in computer vision algorithms. The function takes an incoming light direction, , and outgoing direction, (taken in a coordinate system where the surface normal lies along the z-axis), and returns the ratio of reflected radiance exiting along to the irradiance incident on the surface from direction . Each direction is itself parameterized by azimuth angle and zenith angle , therefore the BRDF as a whole is a function of 4 variables. The BRDF has units sr−1, with steradians (sr) being a unit of solid angle.
The BRDF was first defined by Fred Nicodemus around 1965. The definition is:
where is radiance, or power per unit solid-angle-in-the-direction-of-a-ray per unit projected-area-perpendicular-to-the-ray, is irradiance, or power per unit surface area, and is the angle between and the surface normal, . The index indicates incident light, whereas the index indicates reflected light.
The reason the function is defined as a quotient of two differentials and not directly as a quotient between the undifferentiated quantities, is because other irradiating light than , which are of no interest for , might illuminate the surface which would unintentionally affect , whereas is only affected by .
The Spatially Varying Bidirectional Reflectance Distribution Function (SVBRDF) is a 6-dimensional function, , where describes a 2D location over an object's surface.
The Bidirectional Texture Function (BTF) is appropriate for modeling non-flat surfaces, and has the same parameterization as the SVBRDF; however in contrast, the BTF includes non-local scattering effects like shadowing, masking, interreflections or subsurface scattering. The functions defined by the BTF at each point on the surface are thus called Apparent BRDFs.