В последующих главах использование некоторых из этих функций будет иллюстрировано примерами. С теми возможностями программируемое™, которые предоставляет язык шейдеров 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) |
