void main (void) {

// Монохромное значение облачного покрытия будет в clouds.г // Значение отражения от воды будет в clouds.g /7 clouds.Ь не будет использоваться

vec3 clouds = texture2D(EarthCloudGloss. TexCoord).stp:
vec3 daytime = Ctexture2D(EarthDay. TexCoord).stp * Diffuse +
Specular * clouds.g) * (1.0 - clouds.r) +

clouds.г * Diffuse: vec3 nighttime = texture2D(EarthNight. TexCoord).stp *

(1.0 - clouds.r):
vec3 color - daytime: if (Diffuse < -0.1)
color - nighttime; if (abs(Diffuse) < 0.1)
color = mixfnighttime. daytime. (Diffuse + 0.1) * 5.0):
gl_FragColor = vec4 (color. 1.0):
}

10.4. Пример наложения карты среды

Способ моделирования отражения в сложной среде без использования трассировки лучей называется наложение карты окружающей среды. Чтобы реализовать этот способ, нужпа одна или несколько текстурных карт, имитирующих отражение среды вокруг объекта, над которым выполняется рендеринг. Лучше всего использовать этот способ на объектах, которые имеют хорошие зеркальные свойства поверхности. Существует несколько вариантов наложения карты среды, в том числе кубическое наложение и сферическое наложение, и оба они поддерживаются стандартом OpenGL.

Если от нужного эффекта не требуется совершенство изображения, самый простой способ выполнить наложение карты среды - использовать простую текстурную карту из равных прямоугольников. Можно получить этот тип текстуры с помощью фотографий реальной окружающей среды или создать имитирующее изображение. Пример показан на цветном рис. 7.

10.4. Пример наложения карты среды

Как бы ни было получено изображение, результатом является простая картинка, охватывающая 360° по горизонтали и 180° по вертикали. Изображение искривлено, чтобы после наложения на объект оно получилось пропорциональным.

Основная идея наложения карты среды - в том, чтобы определить цвет отражения из «среды», хранимой в текстуре, используя вектор отражения от поверхности объекта. Если все сделать правильно, результат выглядит так, как будто объект блестит и отражает свое окружение.


⇐ Предыдущая| |Следующая ⇒