Any surface (flats or walls) can be rendered with shiny surface properties. This allows for some very interesting tricks to be created such as specular “reflections”. You can use a mask with the shiny surfaces to mask out areas of shininess but a mask can be used to also increase the effect of shininess on areas of a texture. Reflection definitions support the use of any of the new blending mode flags such as add and subtract.
Reflection { Texture = ""; # The wall texture this reflection will be associated with. A # reflection can only be associated with either a texture or a # flat, not both. Flat = ""; # The flat this reflection will be associated with. Flags = flaga | flagb | flagc etc... # NEW in 1.9.0-beta6 # noiwad: Don't use this reflection if the resource is loaded from an IWAD. # pwad: This reflection can be used with PWAD resources (for example custom textures). # ext: This reflection can be used with external resources. Blending mode = add; # One of the bm_* flags defined in Flags.ded. By default # reflections use additive blending. Shininess = 1.0; # Strength of the shiny effect. 1.0 is the maximum value. This # is used as the alpha component when doing blending. Min color { 0.0 0.0 0.0 } # By default the shiny effect uses sector light as the basic color # of the effect. The Min color RGB values (0..1) can be used to # set a minimum light level for the effect so it'll show up even # in very dark sectors. Shiny map = ""; # Name of the external resource that is used as the shiny map for # this reflection. By default the resource is searched in the # LightMaps resource directory. The shiny map is mapped onto # reflecting surfaces using a mapping that resembles cylindrical # environment mapping. The dimensions of the map must be powers # of two, for example 128 x 64 or 32 x 128. Mask map = ""; # Name of the external resource that is used to mask out the # shininess of a surfaces. The mask map is mapped onto surfaces # using the same texture coordinates that are used for mapping # regular textures. The darker the texel in the mask, the fainter # the reflection becomes. The dimensions of the map must be powers # of two, for example 128 x 64 or 32 x 128. Mask width = 1.0; # A factor for the width of the mask. This can be used to make the # mask span beyond the mapping of the regular texture of the # surface. For example, consider a surface with a texture that is # 64 texels wide. Regardless of the mask's horizontal resolution, # the mask is always mapped onto the regular texture so that their # edges overlap. If the mask width value is 1.0, the mask is as # wide as the 64 texel original texture. If mask width is increased # to 2.0, the mask is mapped so that it is as wide as a 128 texel # texture. Mask height = 1.0; # A factor for the height of the mask. }