Обзор освещенияLighting overview

При использовании освещения Direct3D вы позволяете Direct3D обрабатывать подробную реализацию освещения за вас.When you use Direct3D lighting, you allow Direct3D to handle the details of illumination for you. Опытные пользователи могут при необходимости заниматься освещением самостоятельно.Advanced users can perform lighting on their own, if desired.

При включении освещения Direct3D рассчитывает цвет каждой вершины объекта на основе сочетания следующих факторов.When lighting is enabled, Direct3D calculates the color of each object vertex based on a combination of the following:

  • Тексели в связанном сопоставлении текстур.The texels in an associated texture map.
  • Диффузные и отраженные цвета на вершине, если они заданы.The diffuse and specular colors at the vertex, if specified.
  • Цвет и интенсивность света, производимого источниками света в сцене, или уровень фонового освещения сцены.The color and intensity of light produced by light sources in the scene or the scene's ambient light level.

Способ работы с освещением и материалами сильно влияет на внешний вид отрисованной сцены.How you work with lighting and materials makes a big difference in the appearance of the rendered scene. Материалы определяют, как свет отражается от поверхности.Materials define how light reflects off a surface. Уровни прямого и фонового освещения определяют, какой свет отражается.Direct light and ambient light levels define the light that is reflected. Если освещение включено, для отрисовки сцены необходимо использовать материалы.You must use materials to render a scene if lighting is enabled.

Для отрисовки сцены источники света не требуются, но компоненты в сцене без освещения не видны.Lights are not required to render a scene, but details in a scene rendered without light are not visible. В лучшем случае отрисовка неосвещенной сцены приведет к отображению силуэтов объектов сцены.At best, rendering an unlit scene results in a silhouette of the objects in the scene. Такой уровень детализации недостаточен для большинства целей.This is not enough detail for most purposes.

Прямой свет и внешнее освещениеDirect light vs. ambient light

Несмотря на то что объекты в сцене получают и прямое, и фоновое освещение, они не зависят друг от друга, они оказывают очень различное действие и требуют совершенно различных подходов в работе.Although both direct and ambient light illuminate objects in a scene, they are independent of one another, they have very different effects, and they require that you work with them in completely different ways.

Прямое освещение попадает непосредственно на объект.Direct light strikes the object directly. Прямое освещение всегда имеет направление и цвет, и это является важным фактором для алгоритмов заливки, например для заливки Гуро.Direct light always has direction and color, and it is a factor for shading algorithms, such as Gouraud shading. Различные типы источников света испускают прямой свет различными способами, создавая особые эффекты угасания.Different types of lights emit direct light in different ways, creating special attenuation effects.

Фоновое освещение оказывает воздействие во всей сцене.Ambient light is effectively everywhere in a scene. Фоновое освещение — это общий уровень света, заполняющего сцену в целом, независимо от объектов и их расположения в сцене.Ambient light is a general level of light that fills an entire scene, regardless of the objects and their locations in that scene. У фонового освещения нет расположения и направления, есть только цвет и интенсивность.Ambient light has no position or direction, only color and intensity. Каждый источник света усиливает общее фоновое освещение сцены.Each light adds to the overall ambient light in a scene.

Цвет фонового освещения принимает форму значения RGBA, где каждый компонент является целым числом от 0 до 255.Ambient light color takes the form of an RGBA value, where each component is an integer value from 0 to 255. Это отличает его от большинства значений цвета в Direct3D.This is unlike most color values in Direct3D.

Красный, зеленый и синий компоненты сочетаются и создают окончательный цвет фонового освещения.The red, green, and blue components combine to make the final color of the ambient light. Альфа-компонент определяет прозрачность цвета.The alpha component controls the transparency of the color. При использовании аппаратного ускорения или эмуляции RGB альфа-компонент игнорируется.When using hardware acceleration or RGB emulation, the alpha component is ignored.

Модель освещения Direct3D и характераDirect3D light model vs. nature

По своей природе, когда свет испускается источником, он отражается от сотен, если не тысяч или миллионов объектов, перед тем как достичь глаз пользователя.In nature, when light is emitted from a source, it is reflected off of hundreds, if not thousands or millions of objects before reaching the user's eye. Каждый раз, когда свет отражается, какая-то его часть поглощается поверхностью, другая рассеивается в случайных направлениях, а оставшийся свет попадает на другую поверхность или попадает в глаза пользователя.Each time it is reflected, some light is absorbed by a surface, some is scattered in random directions, and the rest goes on to another surface or to the user's eye. Этот процесс продолжается, пока уровень освещения не ослабнет до нуля или до восприятия света пользователем.This process continues until the light is reduced to nothing or a user perceives the light.

Очевидно, что вычисления, необходимые для абсолютно точного моделирования естественного освещения слишком сложны, чтобы использовать их в графике Direct3D в режиме реального времени.Obviously, the calculations required to perfectly simulate the natural behavior of light are too time-consuming to use for real-time Direct3D graphics. Таким образом, учитывая скорость обработки данных, модель освещения Direct3D приблизительно моделирует освещение реального мира.Therefore, with speed in mind, the Direct3D light model approximates the way light works in the natural world. Direct3D описывает свет с помощью красного, зеленого и синего компонентов, которые в сочетании образуют окончательный цвет.Direct3D describes light in terms of red, green, and blue components that combine to create a final color.

В Direct3D, когда свет отражается от поверхности, его цвет взаимодействует согласно математическим алгоритмам с самой этой поверхностью и создает цвет, который в конечном итоге отображается на экране.In Direct3D, when light reflects off a surface, the light color interacts mathematically with the surface itself to create the color eventually displayed on the screen. Подробные сведения об используемых Direct3D алгоритмах см. в разделе Математические аспекты освещения.For specific information about the algorithms Direct3D uses, see Mathematics of lighting.

Модель освещения Direct3D разделяет свет на два типа: фоновое освещение и прямой свет.The Direct3D light model generalizes light into two types: ambient light and direct light. Каждому типу присущи различные характеристики, и каждый тип взаимодействует с материалом поверхности различными способами.Each has different attributes, and each interacts with the material of a surface in different ways. Фоновое освещение — это свет, который был настолько рассеян, что его направление и источник невозможно определить: он проникает повсюду с низким уровнем интенсивности.Ambient light is light that has been scattered so much that its direction and source are indeterminate: it maintains a low level of intensity everywhere. Отраженный свет, используемый фотографами, является хорошим примером фонового освещения.The indirect lighting used by photographers is a good example of ambient light.

Фоновое освещение в Direct3D, как и в природе, не имеет направления или источника, а имеет лишь цвет и интенсивность.Ambient light in Direct3D, as in nature, has no real direction or source, only a color and intensity. На самом деле уровень фонового освещения совершенно независим от каких-либо объектов сцены, испускающих свет.In fact, the ambient light level is completely independent of any objects in a scene that generate light. Фоновое освещение не влияет на зеркальное отражение.Ambient light does not contribute to specular reflection.

Прямой свет — это свет, созданный каким-либо источником в сцене, он всегда имеет цвет и интенсивность, а также распространяется в заданном направлении.Direct light is the light generated by a source within a scene; it always has color and intensity, and it travels in a specified direction. Прямой свет взаимодействует с материалом поверхности и создает блики, а его направление используется в качестве коэффициента для алгоритмов заливки, включая заливку Гуро.Direct light interacts with the material of a surface to create specular highlights, and its direction is used as a factor in shading algorithms, including Gouraud shading. При отражении прямого света он не влияет на уровень фонового освещения в сцене.When direct light is reflected, it does not contribute to the ambient light level in a scene. Источники в сцене, создающие прямой свет, имеют различные характеристики, которые влияют на то, как они освещают сцену.The sources in a scene that generate direct light have different characteristics that affect how they illuminate a scene.

Кроме того, материал многоугольников имеет определенные свойства, которые влияют на то, как этот многоугольник отражает попадающий на него свет.Additionally, a polygon's material has properties that affect how that polygon reflects the light it receives. Вы задаете одно свойство отражения, которое определяет, как этот материал отражает фоновый свет, а также задаете индивидуальные особенности, чтобы определить зеркальное и рассеивающее отражающие свойства материала.You set a single reflectance trait that describes how the material reflects ambient light, and you set individual traits to determine the material's specular and diffuse reflectance.

Значения цвета для освещения и материалыColor values for lights and materials

Direct3D описывает цвет с помощью четырех компонентов (красного, зеленого, синего и альфа-канала), которые в сочетании определяют окончательный цвет.Direct3D describes color in terms of four components (red, green, blue, and alpha), that combine to make a final color. Каждый компонент принимает значение в диапазоне от 0,0 до 1,0.Each component ranges from 0.0 to 1.0. Несмотря на то что для описания цвета источников света и материалов используется одна и та же конструкция, значения у этих двух видов объектов используются немного по-разному.Although both lights and materials use the same structure to describe color, the values are used a little differently by lights versus materials.

Значения цвета для источников света определяют количество излучаемого им света.Color values for light sources represent the amount of a particular light component it emits. Поскольку для источников света не используется альфа-компонент, для них имеют значение только красный, зеленый и синий компоненты цвета.Because lights don't use an alpha component, only the red, green, and blue components of the color are relevant. Эти три компонента можно представить как линзы красного, зеленого и синего цвета на проекторе.You can visualize the three components as the red, green, and blue lenses on a projection television. Каждую линзу можно снять (значение 0,0 для соответствующего члена), также ее интенсивность может быть максимально яркой (значение 1,0) либо иметь значение где-то между двумя этими пределами.Each lens might be off (a 0.0 value in the appropriate member), it might be as bright as possible (a 1.0 value), or it might be some level in between.

Цвета, проходящие через линзы, сочетаются и образуют окончательный цвет освещения.The colors coming through the lenses combine to make the light's final color. Сочетание R(1,0), G(1,0), B(1,0) создает белый свет, тогда как сочетание B(0,0), R(0,0), G(0.0) не производит света вообще.A combination like R(1.0), G(1.0), B(1.0) creates a white light, where R(0.0), G(0.0), B(0.0) doesn't emit light at all. Вы можете сделать источник света, излучающий только один компонент, что приведет к образованию чисто красного, зеленого или синего освещения; также можно использовать сочетания компонентов, чтобы образовать такие цвета, как, например, желтый или сиреневый.You can make a light that emits only one component, resulting in a pure red, green, or blue light; or, the light could use combinations to emit colors like yellow or purple. Вы можете даже задать отрицательное значение цвета для создания «темного света», который на самом деле ослабляет освещение в сцене.You can even set negative color component values to create a "dark light" that actually removes light from a scene. Также можно задать компонентам значение больше 1,0 для создания очень яркого света.Or, you might set the components to some value larger than 1.0 to create an extremely bright light.

С другой стороны, у материалов значения цвета определяют, насколько интенсивно световой компонент отражается от поверхности, которая отрисовывается с использованием этого материала.With materials, on the other hand, color values represent how much of a light component is reflected by a surface that is rendered with that material. Материал, цветовые компоненты которого имеют значения R(1,0), G(1,0), B(1,0), A(1,0), отражает весь попадающий на него свет.A material whose color components are R(1.0), G(1.0), B(1.0), A(1.0) reflects all the light that comes its way. В свою очередь материал со значениями R(0,0), G(1,0), B(0,0), A(1,0) отражает весь попадающий на него зеленый свет.Likewise, a material with R(0.0), G(1.0), B(0.0), A(1.0) reflects all the green light that is directed at it. Материалы имеют несколько значений отражающей способности для создания различных эффектов.Materials have multiple reflectance values to create various types of effects.

См. разделы Типы освещения и Свойства освещения.See Light types and Light properties.

Связанные разделыRelated topics

Источники света и материалыLights and materials