Reverberation in the context of the Doom engine is a software simulation of the natural phenomenon of sound reflections and soft echoes with respect to the parameters of the environment in which a listener, usually the player, is located. Reverberation was first added to the Doom engine by Williams Entertainment programmer Aaron Seeler in the port of Doom and Doom II to the Sony PlayStation, which supports the feature in hardware via its Sound Processor Unit (SPU). Support was continued in this code base in Final Doom for the same console, and for Doom 64 on the Nintendo 64. In the PlayStation ports, reverberation qualities are determined on a per-sector basis by a new field in the map format.
Source port support
Reverberation and sound environment properties are also supported by several source ports:
|Classic RBDoom 3 BFG||Software and hardware EAX support via OpenAL-soft|
|Eternity Engine||Software reverb engine based on the public domain Freeverb implementation|
|ZDoom||Software and hardware EAX support via FMOD or OpenAL [notes 1]|
- Includes most descendent ports such as GZDoom.
Both the Eternity Engine and ZDoom-based ports use a largely compatible system for sound environment specification. A sound environment object (DoomEd number 9048) which takes an environment definition ID in its first map argument is placed in a given sector to create the origin of the environment. This environment will be expanded during level loading into all neighboring sectors to the greatest extent possible by crossing two-sided lines, stopping at any "sound environment boundary" linedefs, which are determined through linedef flags.
Unlike the Eternity Engine and ZDoom-based ports, Classic RBDOOM 3 BFG is using a multiple map script that assign environment sound on each sector based on sector's index number (the place of the sector in the lump or TEXTMAP). The script is heavily based on Doom 3's .efx files with small alternations such as setting a map header and using sector aliasing.
Doomsday supports a very small number of inbuilt reverb types, that can be attached to any texture or flat by name, meaning it works with every map without having to edit the map.