5.1.3. Виды текстур

 

1.       Прозрачные текстуры

2.       Полупрозрачные текстуры

3.       Циклические текстуры

4.       Динамические текстуры

5.       текстуры с мультиразрешением

 

 

Прозрачные

 

Если необходима прозрачная текстура, то можно воспользоваться следующим методом:

 

 


Зарезервируем один код Vt под признак прозрачности, то есть эта точка не будет заноситься в буфер изображения. Нижеприведенный алгоритм отображает обработку одной точки при использовании прозрачной текстуры:

 

 


Полупрозрачные

 

При применении полупрозрачной текстуры используется L-буфер, хранящий коэффициенты прозрачности всех точек текстуры, то есть размет буфера равен размеру текстуры.

Коэффициент прозрачности L = 0…1 , 0 – чисто прозрачная точка, 1 – непрозрачная точка.

Алгоритм обработки точки полупрозрачной текстуры:

 


 

 

 


Наложение двух полупрозрачных граней:


 


Полупрозрачнсть:

 

H –    обычный буфер

A –    a- буфер

V –    поле изображения

HA  вспомогательный буфер для полупрозрачной грани

VA  яркость полупрозрачной грани

Pj    признак обработки j- ой грани (j = [0;m-1], если m граней)

 

Алгоритм:

 


 

 

 


Алгоритм обработки грани – сводится к обработке текущей точки:


 

 

 


Алгоритм учета полупрозрачности  - перебор всех точек изображения - для каждой точки с координатами x,y:

 


 

 


Циклические

 

Допустим, что нам необходимо изобразить поверхность моря. Можно взять большую структуру  на всю поверхность моря, но это очень громоздко и сложно. Вместо этого можно взять небольшой фрагмент и составить поверхность из нескольких таких фрагментов (т.е. размножить исходный текстурный фрагмент). При этом необходимо, чтобы вертикальные стороны были абсолютно одинаковыми.

 

 

Динамические

 

Как можно показать, что море волнуется? У нас есть несколько текстур моря, и мы генерируем изображение с учетом изменения текстур. Т.е. в первом кадре накладывают первую текстуру, в следующем вторую и т.д. (каждый кадр берёт текстуру из своего файла).

 

 

Текстуры с мультиразрешением

 

Рассмотрим текстуру шахматного поля:

 

Рис 4.4.5.1

 

При большом удалении мы будем иметь чередование черных и белых точек, и скорее всего нарушится порядок клеток шахматного поля. На самом деле при большом удалении мы должны наблюдать серый фон, следовательно, надо иметь несколько текстур с разным расширением. Все поле видимости делится на несколько областей, которые нумеруются .Для каждой области удаления используется своя текстура – чем ближе она расположена к наблюдателю, тем большее разрешение имеет. Оценив расстояние до объекта, надо использовать либо текстуру для малых удалений, либо – для больших удалений.

 

Hosted by uCoz