UNPKG

maplibre-gl

Version:

BSD licensed community fork of mapbox-gl, a WebGL interactive maps library

33 lines (28 loc) 1.72 kB
import {Uniform1f, Uniform4f, type UniformLocations, UniformMatrix4f} from '../uniform_binding'; import {type Context} from '../../gl/context'; // This next import is needed for the "@link" in the documentation to work properly. import type {ProjectionData} from '../../geo/projection/projection_data'; export type ProjectionPreludeUniformsType = { 'u_projection_matrix': UniformMatrix4f; 'u_projection_tile_mercator_coords': Uniform4f; 'u_projection_clipping_plane': Uniform4f; 'u_projection_transition': Uniform1f; 'u_projection_fallback_matrix': UniformMatrix4f; }; export const projectionUniforms = (context: Context, locations: UniformLocations): ProjectionPreludeUniformsType => ({ 'u_projection_matrix': new UniformMatrix4f(context, locations.u_projection_matrix), 'u_projection_tile_mercator_coords': new Uniform4f(context, locations.u_projection_tile_mercator_coords), 'u_projection_clipping_plane': new Uniform4f(context, locations.u_projection_clipping_plane), 'u_projection_transition': new Uniform1f(context, locations.u_projection_transition), 'u_projection_fallback_matrix': new UniformMatrix4f(context, locations.u_projection_fallback_matrix), }); /** * Maps a field name in {@link ProjectionData} to its corresponding uniform name in {@link ProjectionPreludeUniformsType}. */ export const projectionObjectToUniformMap: {[field in keyof ProjectionData]: keyof ProjectionPreludeUniformsType} = { mainMatrix: 'u_projection_matrix', tileMercatorCoords: 'u_projection_tile_mercator_coords', clippingPlane: 'u_projection_clipping_plane', projectionTransition: 'u_projection_transition', fallbackMatrix: 'u_projection_fallback_matrix', };