В последующих главах использование некоторых из этих функций будет иллюстрировано примерами. С теми возможностями программируемое™, которые предоставляет язык шейдеров OpenGL, текстурная память может использоваться не только как хранилище изображений текстур. Приведенные далее функции обеспечивают быстрый и гибкий доступ к этим данным, что позволяет с их помощью реализовывать различные эффекты (табл. 5.7).
S.7. Функции доступа к текстуре Таблица 5.7, Функции доступа к текстуре
CHHTaKCMc |
Описание |
vec4 texturelD (samplerlD sampler. |
Текстурная координата coord |
float coord [. float bids}) |
используется для поиска по ID-текстуре, |
rec4 texturelDProj (samplerlD sampler. |
указанной семплером. Для версии |
vec2 coord [. float bias]) |
функции с проецированием («Proj») |
vec4 texturelDProj (samplerlD sampler, |
текстурная координата coord.s делится |
vec4 coord [, float bias]) |
на последний компонент coord. При ис- |
vee4 texturelDLod (samplerlD sampler. |
пользовании типа coord vec4 второй |
float coord, float lod) |
и третий компоненты coord игнорируются |
vec4 texturelDProjLod (samplerlD sampler. | |
vec2 coord, float 7od) | |
vec4 texturelDProjLod (samplerlD sampler. | |
vec4 coord, float lod) | |
vec4 texture2D (sampler2D sampler. |
Текстурная координата coord |
vec2 coord [. float bias]) |
используется для поиска по 20-текстуре, |
vec4 texture2DProj (sampler2D sampler. |
указанной семплером. Для версии функ- |
vec3 coord [. float bias]) vec4 texture2DProj |
ции с проецированием («Proj») текстур- |
(sampler2D sampler. yec4 coord [, float iu'a5]) |
ная координата {coord, s. coord, t) де- |
vec4 texture2DLod (sampler2D sampler. |
лится на последний компонент coord. |
vec2 coord, float 7od) vec4 texture2DProjLod |
При использовании типа coord vec4 |
(sampler2D sampler. vec3 coord, float lod) |
третий компонент coord игнорируется |
vee4 texture2DProjLod (sampler2D sampler. | |
vee4 coord, float ?od) | |
vec4 texture3D (sampler3D sampler. vec3 coord |
Текстурная координата coord использует- |
[. float bias]) vec4 texture30Proj |
ся для поиска по Зй-текстуре, указанной |
sampler3D sampler. vec4 coord [, float bias]) |
семплером. Для версии функции с прое- |
vec4 texture3DLod (sampler3D sampler. vec3 coord. |
цированием («Proj») текстурная коорди- |
float ?od) vec4 texture3DProjLod (sampler3D |
ната делится на coord, о |
sampler.vec4 coord, float /od) | |
vec4 textureCube (samp!erCube sampler. |
Текстурная координата coord исполь- |
vec3 coord [. float ofas]) vec4 textureCubeLod |
зуется для поиска по кубической тексту- |
(samplerCube sampler. vec3 coord, float lod) |
ре, указанной семплером. Направление |
coord учитывается при выборе грани, |
|
по которой выполняется поиск двухмер- |
|
ной текстуры |
|
vec4 shadowlD (samplerlDShadow sampler. |
Текстурные координаты coord исполь- |
vec3 coord [, float OJ'as]) vec4 shadow2D |
зуются для поиска по глубине в текстуре |
(sampl er2DShadow sampler. vec3 coord |
глубины, указанной семплером. Третий |
[. float D7'as]) vec4 shadowlDProj |
компонент coord (coord.р) сравнивается |
(samplerlDShadow sampler. vec4 coord |
со значением, считанным из текстуры |
[. float ofas]) vec4 shadow2DProj |
глубины. Текстура, связанная с семпле- |
(sampler2DShadow sampler. vec4 coord |
ром, должна быть текстурой глубины, |
[. float of as]) vec4 shadowlDLod |
иначе результаты будут неопределенны- |
(samplerlDShadow sampler. vec3 coord. |
ми. Для версии функции с проецировани- |
float lod) vec4 shadow2DLod |
ем («Proj») текстурная координата де- |
(sampler2DShadow sampler. vec3 coord. |
лится на coord, q, представляя значение |
float 7od) vec4 shadowlDProjLod |
глубины coord.picoord, q. Второй компо- |
(samplerlDShadow sampler. vec4 coord. |
нент coord игнорируется для ID-вариан- |
float lod) vec4 shadow2DProjLod |
тов функции |
(sampler2DShadow sampler. vec4 coord, float 7od) |