Spec-Zone.ru › MapLibre GL JS

CustomRenderMethodInput

CustomRenderMethodInput = object

Входные аргументы, предоставляемые пользовательской функцией рендеринга.

Свойства

defaultProjectionData

defaultProjectionData: CustomLayerProjectionData

Униформы, которые следует передать вершинному шейдеру, если используется код проекции MapLibre. Подробнее о внутреннем устройстве этого объекта см. в комментариях к документации в src/geo/projection/projection_data.ts.

Эти униформы настраиваются так, чтобы projectTile в шейдере принимал vec2 в диапазоне 0..1 в координатах Web Mercator. Используйте getProjectionData({overscaledTileID: tileID}), чтобы получить униформы для заданного тайла и передать vec2 в локальном диапазоне тайла 0..EXTENT.

Для 3D-функций проекции используйте в шейдере projectTileFor3D.

Если вам нужна только матрица проекции, используйте defaultProjectionData.mainMatrix. Матрицы проекции достаточно для простых пользовательских слоёв, поддерживающих только проекцию Меркатора.

При проекции Меркатора, если используются эти униформы, функция шейдера projectTile преобразует сферические координаты Меркатора в координаты пространства отсечения gl. Сферическая координата Меркатора [0, 0] обозначает верхний левый угол мира Меркатора, а [1, 1] — нижний правый угол. Когда renderingMode имеет значение "3d", координата z является конформной. Куб с одинаковыми длинами сторон x, y и z в единицах Меркатора будет отображён как куб. Для преобразования LngLat в координаты Меркатора можно использовать MercatorCoordinate.fromLngLat.

При проекции глобуса, если используются эти униформы, параметр elevation, передаваемый в projectTileFor3D в шейдере, задаёт высоту в метрах над «уровнем моря» или, точнее, для глобуса — высоту над поверхностью идеальной сферы, используемой для отображения планеты.


farZ

farZ: number

Это значение обозначает расстояние от камеры до дальней плоскости отсечения. Оно используется при вычислении матрицы проекции для определения видимых объектов. farZ должно быть больше nearZ.


fov

fov: number

Вертикальный угол обзора в радианах.


getProjectionData

getProjectionData: (params: CustomLayerProjectionDataParams) => RendererProjectionData

Создаёт экземпляр ProjectionData для использования при отрисовке заданного тайла. В пользовательских слоях эта функция нужна только при отрисовке тайлов полностью пользовательским способом с использованием шейдеров, совместимых с обеими проекциями.

Параметры

Параметр Тип Описание
params CustomLayerProjectionDataParams Параметры для генерации данных проекции.

Возвращает

RendererProjectionData

См. также

Добавление пользовательского слоя с тайлами на глобус


modelViewProjectionMatrix

modelViewProjectionMatrix: mat4

Матрица model-view-projection. Представляет матрицу преобразования из мирового пространства в пространство отсечения. https://learnopengl.com/Getting-started/Coordinate-Systems *


nearZ

nearZ: number

Это значение обозначает расстояние от камеры до ближней плоскости отсечения. Оно используется при вычислении матрицы проекции для определения видимых объектов. nearZ должно быть меньше farZ.


projectionMatrix

projectionMatrix: mat4

Матрица проекции. Представляет матрицу преобразования из пространства вида в пространство отсечения. https://learnopengl.com/Getting-started/Coordinate-Systems


shaderData

shaderData: object

Данные, необходимые для выбора и компиляции пользовательского шейдера для текущей проекции.

define

define: string

Директивы, добавляемые в код шейдера. Зависит от текущей проекции.

Пример
const vertexSource = `#version 300 es
${shaderData.vertexShaderPrelude}
${shaderData.define}
in vec2 a_pos;
void main() {
    gl_Position = projectTile(a_pos);
    #ifdef GLOBE
    // Do globe-specific things
    #endif
}`;

variantName

variantName: string

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

vertexShaderPrelude

vertexShaderPrelude: string

Код прелюдии, добавляемый в вершинный шейдер для доступа к функции проекции projectTile в MapLibre. Зависит от текущей проекции.

Пример
const vertexSource = `#version 300 es
${shaderData.vertexShaderPrelude}
${shaderData.define}
in vec2 a_pos;
void main() {
    gl_Position = projectTile(a_pos);
}`;

© MapLibre contributors
Licensed under the 3-Clause BSD License.
https://maplibre.org/maplibre-gl-js/docs/API/type-aliases/CustomRenderMethodInput/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API