diff --git a/src/data/bucket.ts b/src/data/bucket.ts index 6ed6cc484a6..8444b1fd6f5 100644 --- a/src/data/bucket.ts +++ b/src/data/bucket.ts @@ -2,7 +2,7 @@ import type {CollisionBoxArray} from './array_types.g'; import type {Style} from '../style/style'; import type {TypedStyleLayer} from '../style/style_layer/typed_style_layer'; import type {FeatureIndex} from './feature_index'; -import type {Context} from '../gl/context'; +import type {Context} from '../webgl/context'; import type {FeatureStates} from '../source/source_state'; import type {ImagePosition} from '../render/image_atlas'; import type {CanonicalTileID} from '../tile/tile_id'; diff --git a/src/data/bucket/circle_bucket.ts b/src/data/bucket/circle_bucket.ts index 59da90e1b69..961d62f612d 100644 --- a/src/data/bucket/circle_bucket.ts +++ b/src/data/bucket/circle_bucket.ts @@ -20,9 +20,9 @@ import type { } from '../bucket'; import type {CircleStyleLayer} from '../../style/style_layer/circle_style_layer'; import type {HeatmapStyleLayer} from '../../style/style_layer/heatmap_style_layer'; -import type {Context} from '../../gl/context'; -import type {IndexBuffer} from '../../gl/index_buffer'; -import type {VertexBuffer} from '../../gl/vertex_buffer'; +import type {Context} from '../../webgl/context'; +import type {IndexBuffer} from '../../webgl/index_buffer'; +import type {VertexBuffer} from '../../webgl/vertex_buffer'; import type Point from '@mapbox/point-geometry'; import type {FeatureStates} from '../../source/source_state'; import type {ImagePosition} from '../../render/image_atlas'; diff --git a/src/data/bucket/fill_bucket.ts b/src/data/bucket/fill_bucket.ts index 3f412033c28..735de185552 100644 --- a/src/data/bucket/fill_bucket.ts +++ b/src/data/bucket/fill_bucket.ts @@ -21,9 +21,9 @@ import type { PopulateParameters } from '../bucket'; import type {FillStyleLayer} from '../../style/style_layer/fill_style_layer'; -import type {Context} from '../../gl/context'; -import type {IndexBuffer} from '../../gl/index_buffer'; -import type {VertexBuffer} from '../../gl/vertex_buffer'; +import type {Context} from '../../webgl/context'; +import type {IndexBuffer} from '../../webgl/index_buffer'; +import type {VertexBuffer} from '../../webgl/vertex_buffer'; import type Point from '@mapbox/point-geometry'; import type {FeatureStates} from '../../source/source_state'; import type {ImagePosition} from '../../render/image_atlas'; diff --git a/src/data/bucket/fill_extrusion_bucket.ts b/src/data/bucket/fill_extrusion_bucket.ts index a69e7a3314c..38b6fd2e16d 100644 --- a/src/data/bucket/fill_extrusion_bucket.ts +++ b/src/data/bucket/fill_extrusion_bucket.ts @@ -24,9 +24,9 @@ import type { } from '../bucket'; import type {FillExtrusionStyleLayer} from '../../style/style_layer/fill_extrusion_style_layer'; -import type {Context} from '../../gl/context'; -import type {IndexBuffer} from '../../gl/index_buffer'; -import type {VertexBuffer} from '../../gl/vertex_buffer'; +import type {Context} from '../../webgl/context'; +import type {IndexBuffer} from '../../webgl/index_buffer'; +import type {VertexBuffer} from '../../webgl/vertex_buffer'; import type Point from '@mapbox/point-geometry'; import type {FeatureStates} from '../../source/source_state'; import type {ImagePosition} from '../../render/image_atlas'; diff --git a/src/data/bucket/line_bucket.ts b/src/data/bucket/line_bucket.ts index fb46b6b70fe..3b891e3dd42 100644 --- a/src/data/bucket/line_bucket.ts +++ b/src/data/bucket/line_bucket.ts @@ -26,10 +26,10 @@ import type {LineStyleLayer} from '../../style/style_layer/line_style_layer'; import type Point from '@mapbox/point-geometry'; import type {Segment} from '../segment'; import type {RGBAImage} from '../../util/image'; -import type {Context} from '../../gl/context'; -import type {Texture} from '../../render/texture'; -import type {IndexBuffer} from '../../gl/index_buffer'; -import type {VertexBuffer} from '../../gl/vertex_buffer'; +import type {Context} from '../../webgl/context'; +import type {Texture} from '../../webgl/texture'; +import type {IndexBuffer} from '../../webgl/index_buffer'; +import type {VertexBuffer} from '../../webgl/vertex_buffer'; import type {FeatureStates} from '../../source/source_state'; import type {ImagePosition} from '../../render/image_atlas'; import type {SubdivisionGranularitySetting} from '../../render/subdivision_granularity_settings'; diff --git a/src/data/bucket/symbol_bucket.ts b/src/data/bucket/symbol_bucket.ts index 582e0602ba7..40e9d103318 100644 --- a/src/data/bucket/symbol_bucket.ts +++ b/src/data/bucket/symbol_bucket.ts @@ -47,9 +47,9 @@ import type { import type {CollisionBoxArray, CollisionBox, SymbolInstance} from '../array_types.g'; import type {StructArray, StructArrayMember, ViewType} from '../../util/struct_array'; import type {SymbolStyleLayer} from '../../style/style_layer/symbol_style_layer'; -import type {Context} from '../../gl/context'; -import type {IndexBuffer} from '../../gl/index_buffer'; -import type {VertexBuffer} from '../../gl/vertex_buffer'; +import type {Context} from '../../webgl/context'; +import type {IndexBuffer} from '../../webgl/index_buffer'; +import type {VertexBuffer} from '../../webgl/vertex_buffer'; import type {SymbolQuad} from '../../symbol/quads'; import type {SizeData} from '../../symbol/symbol_size'; import type {FeatureStates} from '../../source/source_state'; diff --git a/src/data/program_configuration.ts b/src/data/program_configuration.ts index d517adc4803..c550a2d9c48 100644 --- a/src/data/program_configuration.ts +++ b/src/data/program_configuration.ts @@ -8,16 +8,16 @@ import {patternAttributes} from './bucket/pattern_attributes'; import {dashAttributes} from './bucket/dash_attributes'; import {EvaluationParameters} from '../style/evaluation_parameters'; import {FeaturePositionMap} from './feature_position_map'; -import {type Uniform, Uniform1f, UniformColor, Uniform4f} from '../render/uniform_binding'; +import {type Uniform, Uniform1f, UniformColor, Uniform4f} from '../webgl/uniform_binding'; -import type {UniformLocations} from '../render/uniform_binding'; +import type {UniformLocations} from '../webgl/uniform_binding'; import type {CanonicalTileID} from '../tile/tile_id'; -import type {Context} from '../gl/context'; +import type {Context} from '../webgl/context'; import type {TypedStyleLayer} from '../style/style_layer/typed_style_layer'; import type {CrossfadeParameters} from '../style/evaluation_parameters'; import type {StructArray, StructArrayMember} from '../util/struct_array'; -import type {VertexBuffer} from '../gl/vertex_buffer'; +import type {VertexBuffer} from '../webgl/vertex_buffer'; import type {ImagePosition} from '../render/image_atlas'; import type { Feature, diff --git a/src/data/segment.ts b/src/data/segment.ts index 918a13d85f8..651a0fb8fb5 100644 --- a/src/data/segment.ts +++ b/src/data/segment.ts @@ -2,7 +2,7 @@ import {warnOnce} from '../util/util'; import {register} from '../util/web_worker_transfer'; -import type {VertexArrayObject} from '../render/vertex_array_object'; +import type {VertexArrayObject} from '../webgl/vertex_array_object'; import type {StructArray} from '../util/struct_array'; /** diff --git a/src/geo/projection/globe_projection.ts b/src/geo/projection/globe_projection.ts index bf1deb4ad77..ffb96e11e9d 100644 --- a/src/geo/projection/globe_projection.ts +++ b/src/geo/projection/globe_projection.ts @@ -7,7 +7,7 @@ import {VerticalPerspectiveProjection} from './vertical_perspective_projection'; import {type Projection, type ProjectionGPUContext, type TileMeshUsage} from './projection'; import {type PreparedShader} from '../../shaders/shaders'; import {type SubdivisionGranularitySetting} from '../../render/subdivision_granularity_settings'; -import {type Context} from '../../gl/context'; +import {type Context} from '../../webgl/context'; import {type CanonicalTileID} from '../../tile/tile_id'; import {type Mesh} from '../../render/mesh'; diff --git a/src/geo/projection/globe_projection_error_measurement.ts b/src/geo/projection/globe_projection_error_measurement.ts index ad830310a7c..65a15394a7c 100644 --- a/src/geo/projection/globe_projection_error_measurement.ts +++ b/src/geo/projection/globe_projection_error_measurement.ts @@ -1,16 +1,16 @@ import {Color} from '@maplibre/maplibre-gl-style-spec'; -import {ColorMode} from '../../gl/color_mode'; -import {CullFaceMode} from '../../gl/cull_face_mode'; -import {DepthMode} from '../../gl/depth_mode'; -import {StencilMode} from '../../gl/stencil_mode'; +import {ColorMode} from '../../webgl/color_mode'; +import {CullFaceMode} from '../../webgl/cull_face_mode'; +import {DepthMode} from '../../webgl/depth_mode'; +import {StencilMode} from '../../webgl/stencil_mode'; import {warnOnce} from '../../util/util'; -import {projectionErrorMeasurementUniformValues} from '../../render/program/projection_error_measurement_program'; +import {projectionErrorMeasurementUniformValues} from '../../webgl/program/projection_error_measurement_program'; import {Mesh} from '../../render/mesh'; import {SegmentVector} from '../../data/segment'; import {PosArray, TriangleIndexArray} from '../../data/array_types.g'; import posAttributes from '../../data/pos_attributes'; -import {type Framebuffer} from '../../gl/framebuffer'; -import {isWebGL2} from '../../gl/webgl2'; +import {type Framebuffer} from '../../webgl/framebuffer'; +import {isWebGL2} from '../../webgl/webgl2'; import {type ProjectionGPUContext} from './projection'; /** diff --git a/src/geo/projection/mercator_projection.ts b/src/geo/projection/mercator_projection.ts index bdb306af17c..8bc8bfe5061 100644 --- a/src/geo/projection/mercator_projection.ts +++ b/src/geo/projection/mercator_projection.ts @@ -2,7 +2,7 @@ import type {Projection, ProjectionGPUContext, TileMeshUsage} from './projection import type {CanonicalTileID} from '../../tile/tile_id'; import {EXTENT} from '../../data/extent'; import {type PreparedShader, shaders} from '../../shaders/shaders'; -import type {Context} from '../../gl/context'; +import type {Context} from '../../webgl/context'; import {Mesh} from '../../render/mesh'; import {PosArray, TriangleIndexArray} from '../../data/array_types.g'; import {SegmentVector} from '../../data/segment'; diff --git a/src/geo/projection/projection.ts b/src/geo/projection/projection.ts index d3351fea21c..3041971dad3 100644 --- a/src/geo/projection/projection.ts +++ b/src/geo/projection/projection.ts @@ -1,8 +1,8 @@ import type {CanonicalTileID} from '../../tile/tile_id'; import type {PreparedShader} from '../../shaders/shaders'; -import type {Context} from '../../gl/context'; +import type {Context} from '../../webgl/context'; import type {Mesh} from '../../render/mesh'; -import type {Program} from '../../render/program'; +import type {Program} from '../../webgl/program'; import type {SubdivisionGranularitySetting} from '../../render/subdivision_granularity_settings'; import type {ProjectionSpecification} from '@maplibre/maplibre-gl-style-spec'; import type {EvaluationParameters} from '../../style/evaluation_parameters'; diff --git a/src/geo/projection/vertical_perspective_projection.ts b/src/geo/projection/vertical_perspective_projection.ts index 1978324db08..282d7f8faa5 100644 --- a/src/geo/projection/vertical_perspective_projection.ts +++ b/src/geo/projection/vertical_perspective_projection.ts @@ -1,4 +1,4 @@ -import type {Context} from '../../gl/context'; +import type {Context} from '../../webgl/context'; import type {CanonicalTileID} from '../../tile/tile_id'; import {type Mesh} from '../../render/mesh'; import {now} from '../../util/time_control'; diff --git a/src/render/image_atlas.ts b/src/render/image_atlas.ts index ce1949cf79e..76740b24662 100644 --- a/src/render/image_atlas.ts +++ b/src/render/image_atlas.ts @@ -6,7 +6,7 @@ import potpack from 'potpack'; import type {StyleImage} from '../style/style_image'; import {type TextFit} from '../style/style_image'; import type {ImageManager} from './image_manager'; -import type {Texture} from './texture'; +import type {Texture} from '../webgl/texture'; import type {Rect} from './glyph_atlas'; import type {GetImagesResponse} from '../util/actor_messages'; diff --git a/src/render/image_manager.ts b/src/render/image_manager.ts index 8b64041d598..1cddb4d7d7d 100644 --- a/src/render/image_manager.ts +++ b/src/render/image_manager.ts @@ -4,12 +4,12 @@ import potpack from 'potpack'; import {Event, ErrorEvent, Evented} from '../util/evented'; import {RGBAImage} from '../util/image'; import {ImagePosition} from './image_atlas'; -import {Texture} from './texture'; +import {Texture} from '../webgl/texture'; import {renderStyleImage} from '../style/style_image'; import {warnOnce} from '../util/util'; import type {StyleImage} from '../style/style_image'; -import type {Context} from '../gl/context'; +import type {Context} from '../webgl/context'; import type {PotpackBox} from 'potpack'; import type {GetImagesResponse} from '../util/actor_messages'; diff --git a/src/render/line_atlas.ts b/src/render/line_atlas.ts index 622aa23e8d2..b809f775ce4 100644 --- a/src/render/line_atlas.ts +++ b/src/render/line_atlas.ts @@ -1,6 +1,6 @@ import {warnOnce} from '../util/util'; -import type {Context} from '../gl/context'; +import type {Context} from '../webgl/context'; /** * A dash entry diff --git a/src/render/mesh.ts b/src/render/mesh.ts index 9351118577a..8e0504cb773 100644 --- a/src/render/mesh.ts +++ b/src/render/mesh.ts @@ -1,6 +1,6 @@ import {type SegmentVector} from '../data/segment'; -import {type VertexBuffer} from '../gl/vertex_buffer'; -import {type IndexBuffer} from '../gl/index_buffer'; +import {type VertexBuffer} from '../webgl/vertex_buffer'; +import {type IndexBuffer} from '../webgl/index_buffer'; export class Mesh { vertexBuffer: VertexBuffer; diff --git a/src/render/painter.test.ts b/src/render/painter.test.ts index 0eb1b390853..f32dadc93b6 100644 --- a/src/render/painter.test.ts +++ b/src/render/painter.test.ts @@ -3,7 +3,7 @@ import {Painter} from './painter'; import {MercatorTransform} from '../geo/projection/mercator_transform'; import {Style} from '../style/style'; import {StubMap} from '../util/test/util'; -import {Texture} from './texture'; +import {Texture} from '../webgl/texture'; const getStubMap = () => new StubMap() as any; diff --git a/src/render/painter.ts b/src/render/painter.ts index b0348ab17bf..5eb6621dd29 100644 --- a/src/render/painter.ts +++ b/src/render/painter.ts @@ -9,30 +9,17 @@ import posAttributes from '../data/pos_attributes'; import {type ProgramConfiguration} from '../data/program_configuration'; import {CrossTileSymbolIndex} from '../symbol/cross_tile_symbol_index'; import {shaders} from '../shaders/shaders'; -import {Program} from './program'; -import {programUniforms} from './program/program_uniforms'; -import {Context} from '../gl/context'; -import {DepthMode} from '../gl/depth_mode'; -import {StencilMode} from '../gl/stencil_mode'; -import {ColorMode} from '../gl/color_mode'; -import {CullFaceMode} from '../gl/cull_face_mode'; -import {Texture} from './texture'; +import {Program} from '../webgl/program'; +import {programUniforms} from '../webgl/program/program_uniforms'; +import {Context} from '../webgl/context'; +import {DepthMode} from '../webgl/depth_mode'; +import {StencilMode} from '../webgl/stencil_mode'; +import {ColorMode} from '../webgl/color_mode'; +import {CullFaceMode} from '../webgl/cull_face_mode'; +import {Texture} from '../webgl/texture'; import {Color} from '@maplibre/maplibre-gl-style-spec'; -import {drawSymbols} from './draw_symbol'; -import {drawCircles} from './draw_circle'; -import {drawHeatmap} from './draw_heatmap'; -import {drawLine} from './draw_line'; -import {drawFill} from './draw_fill'; -import {drawFillExtrusion} from './draw_fill_extrusion'; -import {drawHillshade} from './draw_hillshade'; -import {drawColorRelief} from './draw_color_relief'; -import {drawRaster} from './draw_raster'; -import {drawBackground} from './draw_background'; -import {drawDebug, drawDebugPadding, selectDebugSource} from './draw_debug'; -import {drawCustom} from './draw_custom'; -import {drawDepth, drawCoords} from './draw_terrain'; +import {selectDebugSource, webglDrawFunctions, type DrawFunctions} from '../webgl/draw'; import {type OverscaledTileID} from '../tile/tile_id'; -import {drawSky, drawAtmosphere} from './draw_sky'; import {Mesh} from './mesh'; import {MercatorShaderDefine, MercatorShaderVariantKey} from '../geo/projection/mercator_projection'; @@ -43,11 +30,11 @@ import type {CrossFaded} from '../style/properties'; import type {LineAtlas} from './line_atlas'; import type {ImageManager} from './image_manager'; import type {GlyphManager} from './glyph_manager'; -import type {VertexBuffer} from '../gl/vertex_buffer'; -import type {IndexBuffer} from '../gl/index_buffer'; -import type {DepthRangeType, DepthMaskType, DepthFuncType} from '../gl/types'; +import type {VertexBuffer} from '../webgl/vertex_buffer'; +import type {IndexBuffer} from '../webgl/index_buffer'; +import type {DepthRangeType, DepthMaskType, DepthFuncType} from '../webgl/types'; import type {ResolvedImage} from '@maplibre/maplibre-gl-style-spec'; -import type {RenderToTexture} from './render_to_texture'; +import type {IRenderToTexture} from './render_to_texture_interface'; import type {ProjectionData} from '../geo/projection/projection_data'; import {coveringTiles} from '../geo/projection/covering_tiles'; import {isSymbolStyleLayer} from '../style/style_layer/symbol_style_layer'; @@ -84,10 +71,12 @@ export type RenderOptions = { * @internal * Initialize a new painter object. */ + export class Painter { + drawFunctions: DrawFunctions; context: Context; transform: IReadonlyTransform; - renderToTexture: RenderToTexture; + renderToTexture: IRenderToTexture; _tileTextures: { [_: number]: Texture[]; }; @@ -137,6 +126,7 @@ export class Painter { terrainFacilitator: {dirty: boolean; matrix: mat4; renderTime: number}; constructor(gl: WebGLRenderingContext | WebGL2RenderingContext, transform: IReadonlyTransform) { + this.drawFunctions = webglDrawFunctions; this.context = new Context(gl); this.transform = transform; this._tileTextures = {}; @@ -556,7 +546,7 @@ export class Painter { this.clearStencil(); // draw sky first to not overwrite symbols - if (this.style.sky) drawSky(this, this.style.sky); + if (this.style.sky) this.drawFunctions.sky(this, this.style.sky); this._showOverdrawInspector = options.showOverdrawInspector; this.depthRangeFor3D = [0, 1 - ((style._order.length + 2) * this.numSublayers * this.depthEpsilon)]; @@ -608,18 +598,18 @@ export class Painter { // Render atmosphere, only for Globe projection if (renderOptions.isRenderingGlobe) { - drawAtmosphere(this, this.style.sky, this.style.light); + this.drawFunctions.atmosphere(this, this.style.sky, this.style.light); } if (this.options.showTileBoundaries) { const selectedSource = selectDebugSource(this.style, this.transform.zoom); if (selectedSource) { - drawDebug(this, selectedSource, selectedSource.getVisibleCoordinates()); + this.drawFunctions.debug(this, selectedSource, selectedSource.getVisibleCoordinates()); } } if (this.options.showPadding) { - drawDebugPadding(this); + this.drawFunctions.debugPadding(this); } // Set defaults for most GL values so that anyone using the state after the render @@ -651,8 +641,8 @@ export class Painter { mat4.copy(prevMatrix, currMatrix); this.terrainFacilitator.renderTime = Date.now(); this.terrainFacilitator.dirty = false; - drawDepth(this, this.style.map.terrain); - drawCoords(this, this.style.map.terrain); + this.drawFunctions.terrainDepth(this, this.style.map.terrain); + this.drawFunctions.terrainCoords(this, this.style.map.terrain); } renderLayer(painter: Painter, tileManager: TileManager, layer: StyleLayer, coords: OverscaledTileID[], renderOptions: RenderOptions) { @@ -660,28 +650,29 @@ export class Painter { if (layer.type !== 'background' && layer.type !== 'custom' && !(coords || []).length) return; this.id = layer.id; + const draw = this.drawFunctions; if (isSymbolStyleLayer(layer)) { - drawSymbols(painter, tileManager, layer, coords, this.style.placement.variableOffsets, renderOptions); + draw.symbol(painter, tileManager, layer, coords, this.style.placement.variableOffsets, renderOptions); } else if (isCircleStyleLayer(layer)) { - drawCircles(painter, tileManager, layer, coords, renderOptions); + draw.circle(painter, tileManager, layer, coords, renderOptions); } else if (isHeatmapStyleLayer(layer)) { - drawHeatmap(painter, tileManager, layer, coords, renderOptions); + draw.heatmap(painter, tileManager, layer, coords, renderOptions); } else if (isLineStyleLayer(layer)) { - drawLine(painter, tileManager, layer, coords, renderOptions); + draw.line(painter, tileManager, layer, coords, renderOptions); } else if (isFillStyleLayer(layer)) { - drawFill(painter, tileManager, layer, coords, renderOptions); + draw.fill(painter, tileManager, layer, coords, renderOptions); } else if (isFillExtrusionStyleLayer(layer)) { - drawFillExtrusion(painter, tileManager, layer, coords, renderOptions); + draw.fillExtrusion(painter, tileManager, layer, coords, renderOptions); } else if (isHillshadeStyleLayer(layer)) { - drawHillshade(painter, tileManager, layer, coords, renderOptions); + draw.hillshade(painter, tileManager, layer, coords, renderOptions); } else if (isColorReliefStyleLayer(layer)) { - drawColorRelief(painter, tileManager, layer, coords, renderOptions); + draw.colorRelief(painter, tileManager, layer, coords, renderOptions); } else if (isRasterStyleLayer(layer)) { - drawRaster(painter, tileManager, layer, coords, renderOptions); + draw.raster(painter, tileManager, layer, coords, renderOptions); } else if (isBackgroundStyleLayer(layer)) { - drawBackground(painter, tileManager, layer, coords, renderOptions); + draw.background(painter, tileManager, layer, coords, renderOptions); } else if (isCustomStyleLayer(layer)) { - drawCustom(painter, tileManager, layer, renderOptions); + draw.custom(painter, tileManager, layer, renderOptions); } } diff --git a/src/render/render_to_texture_interface.ts b/src/render/render_to_texture_interface.ts new file mode 100644 index 00000000000..ef6e1b7d4b8 --- /dev/null +++ b/src/render/render_to_texture_interface.ts @@ -0,0 +1,15 @@ +import type {Style} from '../style/style'; +import type {StyleLayer} from '../style/style_layer'; +import type {Tile} from '../tile/tile'; +import type {RenderOptions} from './painter'; + +/** + * Interface for render-to-texture implementations. + * The painter uses this interface — concrete implementations live in backend folders (webgl/, webgpu/). + */ +export interface IRenderToTexture { + prepareForRender(style: Style, zoom: number): void; + renderLayer(layer: StyleLayer, renderOptions: RenderOptions): boolean; + getTexture(tile: Tile): any; + destruct(): void; +} diff --git a/src/render/terrain.test.ts b/src/render/terrain.test.ts index be9792a65fd..6af3e3ac68a 100644 --- a/src/render/terrain.test.ts +++ b/src/render/terrain.test.ts @@ -2,7 +2,7 @@ import {describe, beforeEach, afterEach, test, expect, vi} from 'vitest'; import Point from '@mapbox/point-geometry'; import {mat4} from 'gl-matrix'; import {Terrain} from './terrain'; -import {Context} from '../gl/context'; +import {Context} from '../webgl/context'; import {RGBAImage} from '../util/image'; import {OverscaledTileID} from '../tile/tile_id'; import {Tile} from '../tile/tile'; diff --git a/src/render/terrain.ts b/src/render/terrain.ts index 00d2eaa929f..36b62f2b460 100644 --- a/src/render/terrain.ts +++ b/src/render/terrain.ts @@ -5,7 +5,7 @@ import {warnOnce} from '../util/util'; import {Pos3dArray, TriangleIndexArray} from '../data/array_types.g'; import pos3dAttributes from '../data/pos3d_attributes'; import {SegmentVector} from '../data/segment'; -import {Texture} from '../render/texture'; +import {Texture} from '../webgl/texture'; import {MercatorCoordinate} from '../geo/mercator_coordinate'; import {TerrainTileManager} from '../tile/terrain_tile_manager'; import {EXTENT} from '../data/extent'; @@ -16,7 +16,7 @@ import {NORTH_POLE_Y, SOUTH_POLE_Y} from './subdivision'; import {coveringTiles} from '../geo/projection/covering_tiles'; import type Point from '@mapbox/point-geometry'; import type {Tile} from '../tile/tile'; -import type {Framebuffer} from '../gl/framebuffer'; +import type {Framebuffer} from '../webgl/framebuffer'; import type {TileManager} from '../tile/tile_manager'; import type {TerrainSpecification} from '@maplibre/maplibre-gl-style-spec'; import type {Painter} from './painter'; diff --git a/src/source/canvas_source.ts b/src/source/canvas_source.ts index 7230e675c7a..dbc4f157584 100644 --- a/src/source/canvas_source.ts +++ b/src/source/canvas_source.ts @@ -1,6 +1,6 @@ import {ImageSource} from './image_source'; -import {Texture} from '../render/texture'; +import {Texture} from '../webgl/texture'; import {Event, ErrorEvent} from '../util/evented'; import {ValidationError} from '@maplibre/maplibre-gl-style-spec'; diff --git a/src/source/image_source.test.ts b/src/source/image_source.test.ts index 6b3f89d4c01..cb617bddac8 100644 --- a/src/source/image_source.test.ts +++ b/src/source/image_source.test.ts @@ -8,7 +8,7 @@ import {type RequestManager} from '../util/request_manager'; import {sleep, stubAjaxGetImage, waitForEvent} from '../util/test/util'; import {Tile} from '../tile/tile'; import {OverscaledTileID} from '../tile/tile_id'; -import {type Texture} from '../render/texture'; +import {type Texture} from '../webgl/texture'; import type {ImageSourceSpecification} from '@maplibre/maplibre-gl-style-spec'; import {MercatorTransform} from '../geo/projection/mercator_transform'; diff --git a/src/source/image_source.ts b/src/source/image_source.ts index e26bbb7c40d..e1432e5fc82 100644 --- a/src/source/image_source.ts +++ b/src/source/image_source.ts @@ -2,7 +2,7 @@ import {CanonicalTileID} from '../tile/tile_id'; import {Event, ErrorEvent, Evented} from '../util/evented'; import {ImageRequest} from '../util/image_request'; import {ResourceType} from '../util/request_manager'; -import {Texture} from '../render/texture'; +import {Texture} from '../webgl/texture'; import {MercatorCoordinate} from '../geo/mercator_coordinate'; import type {Source} from './source'; diff --git a/src/source/raster_tile_source.ts b/src/source/raster_tile_source.ts index b5865b09dc5..3f2c91e69d5 100644 --- a/src/source/raster_tile_source.ts +++ b/src/source/raster_tile_source.ts @@ -6,7 +6,7 @@ import {ResourceType} from '../util/request_manager'; import {Event, ErrorEvent, Evented} from '../util/evented'; import {loadTileJson} from './load_tilejson'; import {TileBounds} from '../tile/tile_bounds'; -import {Texture} from '../render/texture'; +import {Texture} from '../webgl/texture'; import {isAbortError} from '../util/abort_error'; import type {Source} from './source'; diff --git a/src/source/video_source.ts b/src/source/video_source.ts index 5866f180707..864b65cbeeb 100644 --- a/src/source/video_source.ts +++ b/src/source/video_source.ts @@ -2,7 +2,7 @@ import {getVideo} from '../util/ajax'; import {ResourceType} from '../util/request_manager'; import {ImageSource} from './image_source'; -import {Texture} from '../render/texture'; +import {Texture} from '../webgl/texture'; import {Event, ErrorEvent} from '../util/evented'; import {ValidationError} from '@maplibre/maplibre-gl-style-spec'; diff --git a/src/style/style_layer/color_relief_style_layer.ts b/src/style/style_layer/color_relief_style_layer.ts index a90fe3da077..a686c7c0ef5 100644 --- a/src/style/style_layer/color_relief_style_layer.ts +++ b/src/style/style_layer/color_relief_style_layer.ts @@ -6,9 +6,9 @@ import {type Transitionable, type Transitioning, type PossiblyEvaluated} from '. import type {ColorReliefPaintProps} from './color_relief_style_layer_properties.g'; import {Color, Interpolate, ZoomConstantExpression, type LayerSpecification, type EvaluationContext, type StylePropertyExpression} from '@maplibre/maplibre-gl-style-spec'; import {warnOnce} from '../../util/util'; -import {Texture} from '../../render/texture'; +import {Texture} from '../../webgl/texture'; import {RGBAImage} from '../../util/image'; -import {type Context} from '../../gl/context'; +import {type Context} from '../../webgl/context'; import {packDEMData} from '../../data/dem_data'; export const isColorReliefStyleLayer = (layer: StyleLayer): layer is ColorReliefStyleLayer => layer.type === 'color-relief'; diff --git a/src/style/style_layer/heatmap_style_layer.ts b/src/style/style_layer/heatmap_style_layer.ts index b668b2dd533..5df5ddb86e2 100644 --- a/src/style/style_layer/heatmap_style_layer.ts +++ b/src/style/style_layer/heatmap_style_layer.ts @@ -6,8 +6,8 @@ import properties, {type HeatmapPaintPropsPossiblyEvaluated} from './heatmap_sty import {renderColorRamp} from '../../util/color_ramp'; import {type Transitionable, type Transitioning, type PossiblyEvaluated} from '../properties'; -import type {Texture} from '../../render/texture'; -import type {Framebuffer} from '../../gl/framebuffer'; +import type {Texture} from '../../webgl/texture'; +import type {Framebuffer} from '../../webgl/framebuffer'; import type {HeatmapPaintProps} from './heatmap_style_layer_properties.g'; import type {LayerSpecification} from '@maplibre/maplibre-gl-style-spec'; diff --git a/src/tile/tile.ts b/src/tile/tile.ts index 82a86385240..f6d87680976 100644 --- a/src/tile/tile.ts +++ b/src/tile/tile.ts @@ -5,7 +5,7 @@ import {GeoJSONFeature} from '../util/vectortile_to_geojson'; import {featureFilter} from '@maplibre/maplibre-gl-style-spec'; import {SymbolBucket} from '../data/bucket/symbol_bucket'; import {CollisionBoxArray} from '../data/array_types.g'; -import {Texture} from '../render/texture'; +import {Texture} from '../webgl/texture'; import {now} from '../util/time_control'; import {toEvaluationFeature} from '../data/evaluation_feature'; import {EvaluationParameters} from '../style/evaluation_parameters'; @@ -22,9 +22,9 @@ import type {DEMData} from '../data/dem_data'; import type {AlphaImage} from '../util/image'; import type {ImageAtlas} from '../render/image_atlas'; import type {ImageManager} from '../render/image_manager'; -import type {Context} from '../gl/context'; +import type {Context} from '../webgl/context'; import type {OverscaledTileID} from './tile_id'; -import type {Framebuffer} from '../gl/framebuffer'; +import type {Framebuffer} from '../webgl/framebuffer'; import type {IReadonlyTransform} from '../geo/transform_interface'; import type {LayerFeatureStates} from '../source/source_state'; import type Point from '@mapbox/point-geometry'; diff --git a/src/tile/tile_manager.ts b/src/tile/tile_manager.ts index 76ec50ce993..598382f7d3b 100644 --- a/src/tile/tile_manager.ts +++ b/src/tile/tile_manager.ts @@ -18,7 +18,7 @@ import {hasRasterTransition, isRasterType, updateFadingTiles} from './tile_manag import {backfillDEM} from './tile_manager_raster_dem'; import {InViewTiles} from './tile_manager_in_view_tiles'; -import type {Context} from '../gl/context'; +import type {Context} from '../webgl/context'; import type {Source} from '../source/source'; import type {Map} from '../ui/map'; import type {Style} from '../style/style'; diff --git a/src/ui/map.ts b/src/ui/map.ts index f86510afe02..caea1cdc458 100644 --- a/src/ui/map.ts +++ b/src/ui/map.ts @@ -25,7 +25,7 @@ import {throttle} from '../util/throttle'; import {type Source} from '../source/source'; import {type StyleLayer} from '../style/style_layer'; import {Terrain} from '../render/terrain'; -import {RenderToTexture} from '../render/render_to_texture'; +import {RenderToTexture} from '../webgl/render_to_texture'; import {config} from '../util/config'; import {defaultLocale} from './default_locale'; import {MercatorTransform} from '../geo/projection/mercator_transform'; diff --git a/src/util/create_tile_mesh.ts b/src/util/create_tile_mesh.ts index 5c834809f27..39de2548eef 100644 --- a/src/util/create_tile_mesh.ts +++ b/src/util/create_tile_mesh.ts @@ -1,4 +1,4 @@ -import {type Context} from '../gl/context'; +import {type Context} from '../webgl/context'; import {Mesh} from '../render/mesh'; import {PosArray, TriangleIndexArray} from '../data/array_types.g'; import {SegmentVector} from '../data/segment'; diff --git a/src/gl/color_mode.ts b/src/webgl/color_mode.ts similarity index 100% rename from src/gl/color_mode.ts rename to src/webgl/color_mode.ts diff --git a/src/gl/context.ts b/src/webgl/context.ts similarity index 100% rename from src/gl/context.ts rename to src/webgl/context.ts diff --git a/src/gl/cull_face_mode.ts b/src/webgl/cull_face_mode.ts similarity index 100% rename from src/gl/cull_face_mode.ts rename to src/webgl/cull_face_mode.ts diff --git a/src/gl/depth_mode.ts b/src/webgl/depth_mode.ts similarity index 100% rename from src/gl/depth_mode.ts rename to src/webgl/depth_mode.ts diff --git a/src/render/draw_background.ts b/src/webgl/draw/draw_background.ts similarity index 85% rename from src/render/draw_background.ts rename to src/webgl/draw/draw_background.ts index 56f2191b9c6..476c10b49a6 100644 --- a/src/render/draw_background.ts +++ b/src/webgl/draw/draw_background.ts @@ -1,16 +1,16 @@ -import {StencilMode} from '../gl/stencil_mode'; -import {DepthMode} from '../gl/depth_mode'; -import {CullFaceMode} from '../gl/cull_face_mode'; +import {StencilMode} from '../stencil_mode'; +import {DepthMode} from '../depth_mode'; +import {CullFaceMode} from '../cull_face_mode'; import { backgroundUniformValues, backgroundPatternUniformValues -} from './program/background_program'; +} from '../program/background_program'; -import type {Painter, RenderOptions} from './painter'; -import type {TileManager} from '../tile/tile_manager'; -import type {BackgroundStyleLayer} from '../style/style_layer/background_style_layer'; -import {type OverscaledTileID} from '../tile/tile_id'; -import {coveringTiles} from '../geo/projection/covering_tiles'; +import type {Painter, RenderOptions} from '../../render/painter'; +import type {TileManager} from '../../tile/tile_manager'; +import type {BackgroundStyleLayer} from '../../style/style_layer/background_style_layer'; +import {type OverscaledTileID} from '../../tile/tile_id'; +import {coveringTiles} from '../../geo/projection/covering_tiles'; export function drawBackground(painter: Painter, tileManager: TileManager, layer: BackgroundStyleLayer, coords: OverscaledTileID[], renderOptions: RenderOptions) { const color = layer.paint.get('background-color'); diff --git a/src/render/draw_circle.ts b/src/webgl/draw/draw_circle.ts similarity index 79% rename from src/render/draw_circle.ts rename to src/webgl/draw/draw_circle.ts index 82337fa10ed..664d4fc0966 100644 --- a/src/render/draw_circle.ts +++ b/src/webgl/draw/draw_circle.ts @@ -1,23 +1,23 @@ -import {StencilMode} from '../gl/stencil_mode'; -import {DepthMode} from '../gl/depth_mode'; -import {CullFaceMode} from '../gl/cull_face_mode'; -import {type Program} from './program'; -import {circleUniformValues} from './program/circle_program'; -import {SegmentVector} from '../data/segment'; -import {type OverscaledTileID} from '../tile/tile_id'; - -import type {Painter, RenderOptions} from './painter'; -import type {TileManager} from '../tile/tile_manager'; -import type {CircleStyleLayer} from '../style/style_layer/circle_style_layer'; -import type {CircleBucket} from '../data/bucket/circle_bucket'; -import type {ProgramConfiguration} from '../data/program_configuration'; -import type {VertexBuffer} from '../gl/vertex_buffer'; -import type {IndexBuffer} from '../gl/index_buffer'; -import type {UniformValues} from './uniform_binding'; -import type {CircleUniformsType} from './program/circle_program'; -import type {TerrainData} from '../render/terrain'; -import {translatePosition} from '../util/util'; -import type {ProjectionData} from '../geo/projection/projection_data'; +import {StencilMode} from '../stencil_mode'; +import {DepthMode} from '../depth_mode'; +import {CullFaceMode} from '../cull_face_mode'; +import {type Program} from '../program'; +import {circleUniformValues} from '../program/circle_program'; +import {SegmentVector} from '../../data/segment'; +import {type OverscaledTileID} from '../../tile/tile_id'; + +import type {Painter, RenderOptions} from '../../render/painter'; +import type {TileManager} from '../../tile/tile_manager'; +import type {CircleStyleLayer} from '../../style/style_layer/circle_style_layer'; +import type {CircleBucket} from '../../data/bucket/circle_bucket'; +import type {ProgramConfiguration} from '../../data/program_configuration'; +import type {VertexBuffer} from '../vertex_buffer'; +import type {IndexBuffer} from '../index_buffer'; +import type {UniformValues} from '../uniform_binding'; +import type {CircleUniformsType} from '../program/circle_program'; +import type {TerrainData} from '../../render/terrain'; +import {translatePosition} from '../../util/util'; +import type {ProjectionData} from '../../geo/projection/projection_data'; type TileRenderState = { programConfiguration: ProgramConfiguration; diff --git a/src/render/draw_collision_debug.ts b/src/webgl/draw/draw_collision_debug.ts similarity index 87% rename from src/render/draw_collision_debug.ts rename to src/webgl/draw/draw_collision_debug.ts index 7b8906f2104..dbf29e3bddb 100644 --- a/src/render/draw_collision_debug.ts +++ b/src/webgl/draw/draw_collision_debug.ts @@ -1,17 +1,17 @@ -import type {Painter} from './painter'; -import type {TileManager} from '../tile/tile_manager'; -import type {StyleLayer} from '../style/style_layer'; -import type {OverscaledTileID} from '../tile/tile_id'; -import type {SymbolBucket} from '../data/bucket/symbol_bucket'; -import {DepthMode} from '../gl/depth_mode'; -import {StencilMode} from '../gl/stencil_mode'; -import {CullFaceMode} from '../gl/cull_face_mode'; -import {collisionUniformValues, collisionCircleUniformValues} from './program/collision_program'; -import {QuadTriangleArray, CollisionCircleLayoutArray} from '../data/array_types.g'; -import {collisionCircleLayout} from '../data/bucket/symbol_attributes'; -import {SegmentVector} from '../data/segment'; -import {type VertexBuffer} from '../gl/vertex_buffer'; -import {type IndexBuffer} from '../gl/index_buffer'; +import type {Painter} from '../../render/painter'; +import type {TileManager} from '../../tile/tile_manager'; +import type {StyleLayer} from '../../style/style_layer'; +import type {OverscaledTileID} from '../../tile/tile_id'; +import type {SymbolBucket} from '../../data/bucket/symbol_bucket'; +import {DepthMode} from '../depth_mode'; +import {StencilMode} from '../stencil_mode'; +import {CullFaceMode} from '../cull_face_mode'; +import {collisionUniformValues, collisionCircleUniformValues} from '../program/collision_program'; +import {QuadTriangleArray, CollisionCircleLayoutArray} from '../../data/array_types.g'; +import {collisionCircleLayout} from '../../data/bucket/symbol_attributes'; +import {SegmentVector} from '../../data/segment'; +import {type VertexBuffer} from '../vertex_buffer'; +import {type IndexBuffer} from '../index_buffer'; type TileBatch = { circleArray: number[]; diff --git a/src/render/draw_color_relief.ts b/src/webgl/draw/draw_color_relief.ts similarity index 88% rename from src/render/draw_color_relief.ts rename to src/webgl/draw/draw_color_relief.ts index bb4a693e739..2ce53539758 100644 --- a/src/render/draw_color_relief.ts +++ b/src/webgl/draw/draw_color_relief.ts @@ -1,16 +1,16 @@ -import {Texture} from './texture'; -import type {StencilMode} from '../gl/stencil_mode'; -import {DepthMode} from '../gl/depth_mode'; -import {CullFaceMode} from '../gl/cull_face_mode'; -import {type ColorMode} from '../gl/color_mode'; +import {Texture} from '../texture'; +import type {StencilMode} from '../stencil_mode'; +import {DepthMode} from '../depth_mode'; +import {CullFaceMode} from '../cull_face_mode'; +import {type ColorMode} from '../color_mode'; import { colorReliefUniformValues -} from './program/color_relief_program'; +} from '../program/color_relief_program'; -import type {Painter, RenderOptions} from './painter'; -import type {TileManager} from '../tile/tile_manager'; -import type {ColorReliefStyleLayer} from '../style/style_layer/color_relief_style_layer'; -import type {OverscaledTileID} from '../tile/tile_id'; +import type {Painter, RenderOptions} from '../../render/painter'; +import type {TileManager} from '../../tile/tile_manager'; +import type {ColorReliefStyleLayer} from '../../style/style_layer/color_relief_style_layer'; +import type {OverscaledTileID} from '../../tile/tile_id'; export function drawColorRelief(painter: Painter, tileManager: TileManager, layer: ColorReliefStyleLayer, tileIDs: OverscaledTileID[], renderOptions: RenderOptions) { if (painter.renderPass !== 'translucent') return; diff --git a/src/render/draw_custom.test.ts b/src/webgl/draw/draw_custom.test.ts similarity index 79% rename from src/render/draw_custom.test.ts rename to src/webgl/draw/draw_custom.test.ts index c3e579fb4bc..54a8a49e8a8 100644 --- a/src/render/draw_custom.test.ts +++ b/src/webgl/draw/draw_custom.test.ts @@ -1,24 +1,24 @@ import {describe, test, expect, vi, type Mock} from 'vitest'; -import {OverscaledTileID} from '../tile/tile_id'; -import {TileManager} from '../tile/tile_manager'; -import {Tile} from '../tile/tile'; -import {Painter, type RenderOptions} from './painter'; -import type {Map} from '../ui/map'; +import {OverscaledTileID} from '../../tile/tile_id'; +import {TileManager} from '../../tile/tile_manager'; +import {Tile} from '../../tile/tile'; +import {Painter, type RenderOptions} from '../../render/painter'; +import type {Map} from '../../ui/map'; import {drawCustom} from './draw_custom'; -import {CustomStyleLayer} from '../style/style_layer/custom_style_layer'; -import {MercatorTransform} from '../geo/projection/mercator_transform'; -import {MercatorProjection} from '../geo/projection/mercator_projection'; +import {CustomStyleLayer} from '../../style/style_layer/custom_style_layer'; +import {MercatorTransform} from '../../geo/projection/mercator_transform'; +import {MercatorProjection} from '../../geo/projection/mercator_projection'; -vi.mock('./painter'); -vi.mock('./program'); -vi.mock('../tile/tile_manager'); -vi.mock('../tile/tile'); -vi.mock('../data/bucket/symbol_bucket', () => { +vi.mock('../../render/painter'); +vi.mock('../program'); +vi.mock('../../tile/tile_manager'); +vi.mock('../../tile/tile'); +vi.mock('../../data/bucket/symbol_bucket', () => { return { SymbolBucket: vi.fn() }; }); -vi.mock('../symbol/projection'); +vi.mock('../../symbol/projection'); describe('drawCustom', () => { test('should return custom render method inputs', () => { diff --git a/src/render/draw_custom.ts b/src/webgl/draw/draw_custom.ts similarity index 89% rename from src/render/draw_custom.ts rename to src/webgl/draw/draw_custom.ts index 95877a63782..30846e9923f 100644 --- a/src/render/draw_custom.ts +++ b/src/webgl/draw/draw_custom.ts @@ -1,9 +1,9 @@ -import {DepthMode} from '../gl/depth_mode'; -import {StencilMode} from '../gl/stencil_mode'; +import {DepthMode} from '../depth_mode'; +import {StencilMode} from '../stencil_mode'; -import type {Painter, RenderOptions} from './painter'; -import type {TileManager} from '../tile/tile_manager'; -import type {CustomRenderMethodInput, CustomStyleLayer} from '../style/style_layer/custom_style_layer'; +import type {Painter, RenderOptions} from '../../render/painter'; +import type {TileManager} from '../../tile/tile_manager'; +import type {CustomRenderMethodInput, CustomStyleLayer} from '../../style/style_layer/custom_style_layer'; export function drawCustom(painter: Painter, tileManager: TileManager, layer: CustomStyleLayer, renderOptions: RenderOptions) { diff --git a/src/render/draw_debug.test.ts b/src/webgl/draw/draw_debug.test.ts similarity index 94% rename from src/render/draw_debug.test.ts rename to src/webgl/draw/draw_debug.test.ts index 7acc4e00ff7..69fac47e19f 100644 --- a/src/render/draw_debug.test.ts +++ b/src/webgl/draw/draw_debug.test.ts @@ -1,12 +1,12 @@ import {describe, test, expect, vi} from 'vitest'; -import {type TileManager} from '../tile/tile_manager'; +import {type TileManager} from '../../tile/tile_manager'; import {type RasterSourceSpecification, type SourceSpecification, type VectorSourceSpecification} from '@maplibre/maplibre-gl-style-spec'; -import {Style} from '../style/style'; -import {FillStyleLayer} from '../style/style_layer/fill_style_layer'; -import {RasterStyleLayer} from '../style/style_layer/raster_style_layer'; +import {Style} from '../../style/style'; +import {FillStyleLayer} from '../../style/style_layer/fill_style_layer'; +import {RasterStyleLayer} from '../../style/style_layer/raster_style_layer'; import {selectDebugSource} from './draw_debug'; -vi.mock('../style/style'); +vi.mock('../../style/style'); const zoom = 14; diff --git a/src/render/draw_debug.ts b/src/webgl/draw/draw_debug.ts similarity index 92% rename from src/render/draw_debug.ts rename to src/webgl/draw/draw_debug.ts index 5dae8bce38c..0b8f1183442 100644 --- a/src/render/draw_debug.ts +++ b/src/webgl/draw/draw_debug.ts @@ -1,14 +1,14 @@ -import {DepthMode} from '../gl/depth_mode'; -import {StencilMode} from '../gl/stencil_mode'; -import {CullFaceMode} from '../gl/cull_face_mode'; -import {debugUniformValues} from './program/debug_program'; +import {DepthMode} from '../depth_mode'; +import {StencilMode} from '../stencil_mode'; +import {CullFaceMode} from '../cull_face_mode'; +import {debugUniformValues} from '../program/debug_program'; import {Color} from '@maplibre/maplibre-gl-style-spec'; -import {ColorMode} from '../gl/color_mode'; +import {ColorMode} from '../color_mode'; -import type {Painter} from './painter'; -import type {TileManager} from '../tile/tile_manager'; -import type {OverscaledTileID} from '../tile/tile_id'; -import {type Style} from '../style/style'; +import type {Painter} from '../../render/painter'; +import type {TileManager} from '../../tile/tile_manager'; +import type {OverscaledTileID} from '../../tile/tile_id'; +import {type Style} from '../../style/style'; const topColor = new Color(1, 0, 0, 1); const btmColor = new Color(0, 1, 0, 1); diff --git a/src/render/draw_fill.test.ts b/src/webgl/draw/draw_fill.test.ts similarity index 83% rename from src/render/draw_fill.test.ts rename to src/webgl/draw/draw_fill.test.ts index d663f5a7bad..01e0633f265 100644 --- a/src/render/draw_fill.test.ts +++ b/src/webgl/draw/draw_fill.test.ts @@ -1,33 +1,33 @@ import {describe, test, expect, vi, type Mock} from 'vitest'; import {mat4} from 'gl-matrix'; -import {OverscaledTileID} from '../tile/tile_id'; -import {TileManager} from '../tile/tile_manager'; -import {Tile} from '../tile/tile'; -import {Painter, type RenderOptions} from './painter'; -import {Program} from './program'; -import type {ZoomHistory} from '../style/zoom_history'; -import type {Map} from '../ui/map'; -import {type IReadonlyTransform} from '../geo/transform_interface'; -import type {EvaluationParameters} from '../style/evaluation_parameters'; +import {OverscaledTileID} from '../../tile/tile_id'; +import {TileManager} from '../../tile/tile_manager'; +import {Tile} from '../../tile/tile'; +import {Painter, type RenderOptions} from '../../render/painter'; +import {Program} from '../program'; +import type {ZoomHistory} from '../../style/zoom_history'; +import type {Map} from '../../ui/map'; +import {type IReadonlyTransform} from '../../geo/transform_interface'; +import type {EvaluationParameters} from '../../style/evaluation_parameters'; import type {FillLayerSpecification} from '@maplibre/maplibre-gl-style-spec'; -import {type Style} from '../style/style'; -import {FillStyleLayer} from '../style/style_layer/fill_style_layer'; +import {type Style} from '../../style/style'; +import {FillStyleLayer} from '../../style/style_layer/fill_style_layer'; import {drawFill} from './draw_fill'; -import {FillBucket} from '../data/bucket/fill_bucket'; -import {type ProgramConfiguration, type ProgramConfigurationSet} from '../data/program_configuration'; -import type {ProjectionData} from '../geo/projection/projection_data'; +import {FillBucket} from '../../data/bucket/fill_bucket'; +import {type ProgramConfiguration, type ProgramConfigurationSet} from '../../data/program_configuration'; +import type {ProjectionData} from '../../geo/projection/projection_data'; -vi.mock('./painter'); -vi.mock('./program'); -vi.mock('../tile/tile_manager'); -vi.mock('../tile/tile'); +vi.mock('../../render/painter'); +vi.mock('../program'); +vi.mock('../../tile/tile_manager'); +vi.mock('../../tile/tile'); -vi.mock('../data/bucket/symbol_bucket', () => { +vi.mock('../../data/bucket/symbol_bucket', () => { return { SymbolBucket: vi.fn() }; }); -vi.mock('../symbol/projection'); +vi.mock('../../symbol/projection'); describe('drawFill', () => { test('should call programConfiguration.setConstantPatternPositions for transitioning fill-pattern', () => { diff --git a/src/render/draw_fill.ts b/src/webgl/draw/draw_fill.ts similarity index 89% rename from src/render/draw_fill.ts rename to src/webgl/draw/draw_fill.ts index bc28aa190fc..28019a5e2af 100644 --- a/src/render/draw_fill.ts +++ b/src/webgl/draw/draw_fill.ts @@ -1,21 +1,21 @@ import {Color} from '@maplibre/maplibre-gl-style-spec'; -import {DepthMode} from '../gl/depth_mode'; -import {CullFaceMode} from '../gl/cull_face_mode'; -import {type ColorMode} from '../gl/color_mode'; +import {DepthMode} from '../depth_mode'; +import {CullFaceMode} from '../cull_face_mode'; +import {type ColorMode} from '../color_mode'; import { fillUniformValues, fillPatternUniformValues, fillOutlineUniformValues, fillOutlinePatternUniformValues -} from './program/fill_program'; - -import type {Painter, RenderOptions} from './painter'; -import type {TileManager} from '../tile/tile_manager'; -import type {FillStyleLayer} from '../style/style_layer/fill_style_layer'; -import type {FillBucket} from '../data/bucket/fill_bucket'; -import type {OverscaledTileID} from '../tile/tile_id'; -import {updatePatternPositionsInProgram} from './update_pattern_positions_in_program'; -import {translatePosition} from '../util/util'; +} from '../program/fill_program'; + +import type {Painter, RenderOptions} from '../../render/painter'; +import type {TileManager} from '../../tile/tile_manager'; +import type {FillStyleLayer} from '../../style/style_layer/fill_style_layer'; +import type {FillBucket} from '../../data/bucket/fill_bucket'; +import type {OverscaledTileID} from '../../tile/tile_id'; +import {updatePatternPositionsInProgram} from '../../render/update_pattern_positions_in_program'; +import {translatePosition} from '../../util/util'; export function drawFill(painter: Painter, tileManager: TileManager, layer: FillStyleLayer, coords: OverscaledTileID[], renderOptions: RenderOptions) { const color = layer.paint.get('fill-color'); diff --git a/src/render/draw_fill_extrusion.ts b/src/webgl/draw/draw_fill_extrusion.ts similarity index 85% rename from src/render/draw_fill_extrusion.ts rename to src/webgl/draw/draw_fill_extrusion.ts index 26e19d0cff5..ae195b8bd09 100644 --- a/src/render/draw_fill_extrusion.ts +++ b/src/webgl/draw/draw_fill_extrusion.ts @@ -1,20 +1,20 @@ -import {DepthMode} from '../gl/depth_mode'; -import {StencilMode} from '../gl/stencil_mode'; -import {ColorMode} from '../gl/color_mode'; -import {CullFaceMode} from '../gl/cull_face_mode'; +import {DepthMode} from '../depth_mode'; +import {StencilMode} from '../stencil_mode'; +import {ColorMode} from '../color_mode'; +import {CullFaceMode} from '../cull_face_mode'; import { fillExtrusionUniformValues, fillExtrusionPatternUniformValues, -} from './program/fill_extrusion_program'; +} from '../program/fill_extrusion_program'; -import type {Painter, RenderOptions} from './painter'; -import type {TileManager} from '../tile/tile_manager'; -import type {FillExtrusionStyleLayer} from '../style/style_layer/fill_extrusion_style_layer'; -import type {FillExtrusionBucket} from '../data/bucket/fill_extrusion_bucket'; -import type {OverscaledTileID} from '../tile/tile_id'; +import type {Painter, RenderOptions} from '../../render/painter'; +import type {TileManager} from '../../tile/tile_manager'; +import type {FillExtrusionStyleLayer} from '../../style/style_layer/fill_extrusion_style_layer'; +import type {FillExtrusionBucket} from '../../data/bucket/fill_extrusion_bucket'; +import type {OverscaledTileID} from '../../tile/tile_id'; -import {updatePatternPositionsInProgram} from './update_pattern_positions_in_program'; -import {translatePosition} from '../util/util'; +import {updatePatternPositionsInProgram} from '../../render/update_pattern_positions_in_program'; +import {translatePosition} from '../../util/util'; export function drawFillExtrusion(painter: Painter, tileManager: TileManager, layer: FillExtrusionStyleLayer, coords: OverscaledTileID[], renderOptions: RenderOptions) { const opacity = layer.paint.get('fill-extrusion-opacity'); diff --git a/src/render/draw_heatmap.ts b/src/webgl/draw/draw_heatmap.ts similarity index 92% rename from src/render/draw_heatmap.ts rename to src/webgl/draw/draw_heatmap.ts index b20b2659cac..9a1f9f9d798 100644 --- a/src/render/draw_heatmap.ts +++ b/src/webgl/draw/draw_heatmap.ts @@ -1,23 +1,23 @@ -import {Texture} from './texture'; +import {Texture} from '../texture'; import {Color} from '@maplibre/maplibre-gl-style-spec'; -import {DepthMode} from '../gl/depth_mode'; -import {StencilMode} from '../gl/stencil_mode'; -import {ColorMode} from '../gl/color_mode'; -import {CullFaceMode} from '../gl/cull_face_mode'; -import {type Context} from '../gl/context'; -import {type Framebuffer} from '../gl/framebuffer'; -import {type Tile} from '../tile/tile'; +import {DepthMode} from '../depth_mode'; +import {StencilMode} from '../stencil_mode'; +import {ColorMode} from '../color_mode'; +import {CullFaceMode} from '../cull_face_mode'; +import {type Context} from '../context'; +import {type Framebuffer} from '../framebuffer'; +import {type Tile} from '../../tile/tile'; import { heatmapUniformValues, heatmapTextureUniformValues -} from './program/heatmap_program'; -import {HEATMAP_FULL_RENDER_FBO_KEY} from '../style/style_layer/heatmap_style_layer'; - -import type {Painter, RenderOptions} from './painter'; -import type {TileManager} from '../tile/tile_manager'; -import type {HeatmapStyleLayer} from '../style/style_layer/heatmap_style_layer'; -import type {HeatmapBucket} from '../data/bucket/heatmap_bucket'; -import type {OverscaledTileID} from '../tile/tile_id'; +} from '../program/heatmap_program'; +import {HEATMAP_FULL_RENDER_FBO_KEY} from '../../style/style_layer/heatmap_style_layer'; + +import type {Painter, RenderOptions} from '../../render/painter'; +import type {TileManager} from '../../tile/tile_manager'; +import type {HeatmapStyleLayer} from '../../style/style_layer/heatmap_style_layer'; +import type {HeatmapBucket} from '../../data/bucket/heatmap_bucket'; +import type {OverscaledTileID} from '../../tile/tile_id'; export function drawHeatmap(painter: Painter, tileManager: TileManager, layer: HeatmapStyleLayer, tileIDs: OverscaledTileID[], renderOptions: RenderOptions) { if (layer.paint.get('heatmap-opacity') === 0) { diff --git a/src/render/draw_hillshade.ts b/src/webgl/draw/draw_hillshade.ts similarity index 92% rename from src/render/draw_hillshade.ts rename to src/webgl/draw/draw_hillshade.ts index 9750b3a80a5..5696f5a33d6 100644 --- a/src/render/draw_hillshade.ts +++ b/src/webgl/draw/draw_hillshade.ts @@ -1,17 +1,17 @@ -import {Texture} from './texture'; -import {StencilMode} from '../gl/stencil_mode'; -import {DepthMode} from '../gl/depth_mode'; -import {CullFaceMode} from '../gl/cull_face_mode'; -import {type ColorMode} from '../gl/color_mode'; +import {Texture} from '../texture'; +import {StencilMode} from '../stencil_mode'; +import {DepthMode} from '../depth_mode'; +import {CullFaceMode} from '../cull_face_mode'; +import {type ColorMode} from '../color_mode'; import { hillshadeUniformValues, hillshadeUniformPrepareValues -} from './program/hillshade_program'; +} from '../program/hillshade_program'; -import type {Painter, RenderOptions} from './painter'; -import type {TileManager} from '../tile/tile_manager'; -import type {HillshadeStyleLayer} from '../style/style_layer/hillshade_style_layer'; -import type {OverscaledTileID} from '../tile/tile_id'; +import type {Painter, RenderOptions} from '../../render/painter'; +import type {TileManager} from '../../tile/tile_manager'; +import type {HillshadeStyleLayer} from '../../style/style_layer/hillshade_style_layer'; +import type {OverscaledTileID} from '../../tile/tile_id'; export function drawHillshade(painter: Painter, tileManager: TileManager, layer: HillshadeStyleLayer, tileIDs: OverscaledTileID[], renderOptions: RenderOptions) { if (painter.renderPass !== 'offscreen' && painter.renderPass !== 'translucent') return; diff --git a/src/render/draw_line.ts b/src/webgl/draw/draw_line.ts similarity index 91% rename from src/render/draw_line.ts rename to src/webgl/draw/draw_line.ts index af3b2d877bb..3f8619ea742 100644 --- a/src/render/draw_line.ts +++ b/src/webgl/draw/draw_line.ts @@ -1,26 +1,26 @@ -import {DepthMode} from '../gl/depth_mode'; -import {CullFaceMode} from '../gl/cull_face_mode'; -import {Texture} from './texture'; +import {DepthMode} from '../depth_mode'; +import {CullFaceMode} from '../cull_face_mode'; +import {Texture} from '../texture'; import { lineUniformValues, linePatternUniformValues, lineSDFUniformValues, lineGradientUniformValues, lineGradientSDFUniformValues -} from './program/line_program'; - -import type {Painter, RenderOptions} from './painter'; -import type {TileManager} from '../tile/tile_manager'; -import type {LineStyleLayer} from '../style/style_layer/line_style_layer'; -import type {LineBucket} from '../data/bucket/line_bucket'; -import type {OverscaledTileID} from '../tile/tile_id'; -import type {Tile} from '../tile/tile'; -import type {Context} from '../gl/context'; -import type {ProgramConfiguration} from '../data/program_configuration'; -import {clamp, nextPowerOfTwo} from '../util/util'; -import {renderColorRamp} from '../util/color_ramp'; -import {EXTENT} from '../data/extent'; -import type {RGBAImage} from '../util/image'; +} from '../program/line_program'; + +import type {Painter, RenderOptions} from '../../render/painter'; +import type {TileManager} from '../../tile/tile_manager'; +import type {LineStyleLayer} from '../../style/style_layer/line_style_layer'; +import type {LineBucket} from '../../data/bucket/line_bucket'; +import type {OverscaledTileID} from '../../tile/tile_id'; +import type {Tile} from '../../tile/tile'; +import type {Context} from '../context'; +import type {ProgramConfiguration} from '../../data/program_configuration'; +import {clamp, nextPowerOfTwo} from '../../util/util'; +import {renderColorRamp} from '../../util/color_ramp'; +import {EXTENT} from '../../data/extent'; +import type {RGBAImage} from '../../util/image'; type GradientTexture = { texture?: Texture; diff --git a/src/render/draw_raster.ts b/src/webgl/draw/draw_raster.ts similarity index 92% rename from src/render/draw_raster.ts rename to src/webgl/draw/draw_raster.ts index a0e7641ff41..22b1f496dd9 100644 --- a/src/render/draw_raster.ts +++ b/src/webgl/draw/draw_raster.ts @@ -1,20 +1,20 @@ -import {clamp} from '../util/util'; - -import {ImageSource} from '../source/image_source'; -import {now} from '../util/time_control'; -import {StencilMode} from '../gl/stencil_mode'; -import {DepthMode} from '../gl/depth_mode'; -import {CullFaceMode} from '../gl/cull_face_mode'; -import {rasterUniformValues} from './program/raster_program'; -import {EXTENT} from '../data/extent'; -import {FadingDirections} from '../tile/tile'; +import {clamp} from '../../util/util'; + +import {ImageSource} from '../../source/image_source'; +import {now} from '../../util/time_control'; +import {StencilMode} from '../stencil_mode'; +import {DepthMode} from '../depth_mode'; +import {CullFaceMode} from '../cull_face_mode'; +import {rasterUniformValues} from '../program/raster_program'; +import {EXTENT} from '../../data/extent'; +import {FadingDirections} from '../../tile/tile'; import Point from '@mapbox/point-geometry'; -import type {Painter, RenderOptions} from './painter'; -import type {TileManager} from '../tile/tile_manager'; -import type {RasterStyleLayer} from '../style/style_layer/raster_style_layer'; -import type {OverscaledTileID} from '../tile/tile_id'; -import type {Tile} from '../tile/tile'; +import type {Painter, RenderOptions} from '../../render/painter'; +import type {TileManager} from '../../tile/tile_manager'; +import type {RasterStyleLayer} from '../../style/style_layer/raster_style_layer'; +import type {OverscaledTileID} from '../../tile/tile_id'; +import type {Tile} from '../../tile/tile'; type FadeProperties = { parentTile: Tile; diff --git a/src/render/draw_sky.ts b/src/webgl/draw/draw_sky.ts similarity index 82% rename from src/render/draw_sky.ts rename to src/webgl/draw/draw_sky.ts index a1046783dae..28506baae91 100644 --- a/src/render/draw_sky.ts +++ b/src/webgl/draw/draw_sky.ts @@ -1,20 +1,20 @@ -import {StencilMode} from '../gl/stencil_mode'; -import {DepthMode} from '../gl/depth_mode'; -import {CullFaceMode} from '../gl/cull_face_mode'; -import {PosArray, TriangleIndexArray} from '../data/array_types.g'; -import posAttributes from '../data/pos_attributes'; -import {SegmentVector} from '../data/segment'; -import {skyUniformValues} from './program/sky_program'; -import {atmosphereUniformValues} from './program/atmosphere_program'; -import {type Sky} from '../style/sky'; -import {type Light} from '../style/light'; -import {Mesh} from './mesh'; +import {StencilMode} from '../stencil_mode'; +import {DepthMode} from '../depth_mode'; +import {CullFaceMode} from '../cull_face_mode'; +import {PosArray, TriangleIndexArray} from '../../data/array_types.g'; +import posAttributes from '../../data/pos_attributes'; +import {SegmentVector} from '../../data/segment'; +import {skyUniformValues} from '../program/sky_program'; +import {atmosphereUniformValues} from '../program/atmosphere_program'; +import {type Sky} from '../../style/sky'; +import {type Light} from '../../style/light'; +import {Mesh} from '../../render/mesh'; import {mat4, vec3, vec4} from 'gl-matrix'; -import {type IReadonlyTransform} from '../geo/transform_interface'; -import {ColorMode} from '../gl/color_mode'; -import type {Painter} from './painter'; -import {type Context} from '../gl/context'; -import {getGlobeRadiusPixels} from '../geo/projection/globe_utils'; +import {type IReadonlyTransform} from '../../geo/transform_interface'; +import {ColorMode} from '../color_mode'; +import type {Painter} from '../../render/painter'; +import {type Context} from '../context'; +import {getGlobeRadiusPixels} from '../../geo/projection/globe_utils'; function getMesh(context: Context, sky: Sky): Mesh { // Create the Sky mesh the first time we need it diff --git a/src/render/draw_symbol.test.ts b/src/webgl/draw/draw_symbol.test.ts similarity index 88% rename from src/render/draw_symbol.test.ts rename to src/webgl/draw/draw_symbol.test.ts index e4764d4e74e..91ca8251216 100644 --- a/src/render/draw_symbol.test.ts +++ b/src/webgl/draw/draw_symbol.test.ts @@ -1,34 +1,34 @@ import {describe, test, expect, vi, type Mock} from 'vitest'; import {mat4} from 'gl-matrix'; -import {OverscaledTileID} from '../tile/tile_id'; -import {SymbolBucket} from '../data/bucket/symbol_bucket'; -import {TileManager} from '../tile/tile_manager'; -import {Tile} from '../tile/tile'; -import {SymbolStyleLayer} from '../style/style_layer/symbol_style_layer'; -import {Painter, type RenderOptions} from './painter'; -import {Program} from './program'; +import {OverscaledTileID} from '../../tile/tile_id'; +import {SymbolBucket} from '../../data/bucket/symbol_bucket'; +import {TileManager} from '../../tile/tile_manager'; +import {Tile} from '../../tile/tile'; +import {SymbolStyleLayer} from '../../style/style_layer/symbol_style_layer'; +import {Painter, type RenderOptions} from '../../render/painter'; +import {Program} from '../program'; import {drawSymbols} from './draw_symbol'; -import * as symbolProjection from '../symbol/projection'; -import type {ZoomHistory} from '../style/zoom_history'; -import type {Map} from '../ui/map'; -import {type IReadonlyTransform} from '../geo/transform_interface'; -import type {EvaluationParameters} from '../style/evaluation_parameters'; +import * as symbolProjection from '../../symbol/projection'; +import type {ZoomHistory} from '../../style/zoom_history'; +import type {Map} from '../../ui/map'; +import {type IReadonlyTransform} from '../../geo/transform_interface'; +import type {EvaluationParameters} from '../../style/evaluation_parameters'; import type {SymbolLayerSpecification} from '@maplibre/maplibre-gl-style-spec'; -import {type Style} from '../style/style'; -import {MercatorProjection} from '../geo/projection/mercator_projection'; -import type {ProjectionData} from '../geo/projection/projection_data'; - -vi.mock('./painter'); -vi.mock('./program'); -vi.mock('../tile/tile_manager'); -vi.mock('../tile/tile'); -vi.mock('../data/bucket/symbol_bucket', () => { +import {type Style} from '../../style/style'; +import {MercatorProjection} from '../../geo/projection/mercator_projection'; +import type {ProjectionData} from '../../geo/projection/projection_data'; + +vi.mock('../../render/painter'); +vi.mock('../program'); +vi.mock('../../tile/tile_manager'); +vi.mock('../../tile/tile'); +vi.mock('../../data/bucket/symbol_bucket', () => { return { SymbolBucket: vi.fn() }; }); -vi.mock('../symbol/projection'); +vi.mock('../../symbol/projection'); (symbolProjection.getPitchedLabelPlaneMatrix as Mock).mockReturnValue(mat4.create()); function createMockTransform() { diff --git a/src/render/draw_symbol.ts b/src/webgl/draw/draw_symbol.ts similarity index 93% rename from src/render/draw_symbol.ts rename to src/webgl/draw/draw_symbol.ts index 67056abce11..b992fe09c67 100644 --- a/src/render/draw_symbol.ts +++ b/src/webgl/draw/draw_symbol.ts @@ -1,44 +1,44 @@ import Point from '@mapbox/point-geometry'; import {drawCollisionDebug} from './draw_collision_debug'; -import {SegmentVector} from '../data/segment'; -import {pixelsToTileUnits} from '../source/pixels_to_tile_units'; -import {type EvaluatedZoomSize, evaluateSizeForFeature, evaluateSizeForZoom} from '../symbol/symbol_size'; +import {SegmentVector} from '../../data/segment'; +import {pixelsToTileUnits} from '../../source/pixels_to_tile_units'; +import {type EvaluatedZoomSize, evaluateSizeForFeature, evaluateSizeForZoom} from '../../symbol/symbol_size'; import {mat4} from 'gl-matrix'; -import {StencilMode} from '../gl/stencil_mode'; -import {DepthMode} from '../gl/depth_mode'; -import {CullFaceMode} from '../gl/cull_face_mode'; -import {addDynamicAttributes} from '../data/bucket/symbol_bucket'; +import {StencilMode} from '../stencil_mode'; +import {DepthMode} from '../depth_mode'; +import {CullFaceMode} from '../cull_face_mode'; +import {addDynamicAttributes} from '../../data/bucket/symbol_bucket'; -import {getAnchorAlignment, WritingMode} from '../symbol/shaping'; -import ONE_EM from '../symbol/one_em'; +import {getAnchorAlignment, WritingMode} from '../../symbol/shaping'; +import ONE_EM from '../../symbol/one_em'; import { type SymbolIconUniformsType, symbolIconUniformValues, symbolSDFUniformValues, symbolTextAndIconUniformValues -} from './program/symbol_program'; - -import type {Painter, RenderOptions} from './painter'; -import type {TileManager} from '../tile/tile_manager'; -import type {SymbolStyleLayer} from '../style/style_layer/symbol_style_layer'; - -import type {Texture, TextureFilter} from '../render/texture'; -import type {OverscaledTileID, UnwrappedTileID} from '../tile/tile_id'; -import type {UniformValues} from './uniform_binding'; -import type {SymbolSDFUniformsType} from '../render/program/symbol_program'; -import type {CrossTileID, VariableOffset} from '../symbol/placement'; -import type {SymbolBucket, SymbolBuffers} from '../data/bucket/symbol_bucket'; -import type {TerrainData} from '../render/terrain'; +} from '../program/symbol_program'; + +import type {Painter, RenderOptions} from '../../render/painter'; +import type {TileManager} from '../../tile/tile_manager'; +import type {SymbolStyleLayer} from '../../style/style_layer/symbol_style_layer'; + +import type {Texture, TextureFilter} from '../texture'; +import type {OverscaledTileID, UnwrappedTileID} from '../../tile/tile_id'; +import type {UniformValues} from '../uniform_binding'; +import type {SymbolSDFUniformsType} from '../program/symbol_program'; +import type {CrossTileID, VariableOffset} from '../../symbol/placement'; +import type {SymbolBucket, SymbolBuffers} from '../../data/bucket/symbol_bucket'; +import type {TerrainData} from '../../render/terrain'; import type {SymbolLayerSpecification} from '@maplibre/maplibre-gl-style-spec'; -import type {IReadonlyTransform} from '../geo/transform_interface'; -import type {ColorMode} from '../gl/color_mode'; -import type {Program} from './program'; -import type {TextAnchor} from '../style/style_layer/variable_text_anchor'; -import {getGlCoordMatrix, getPerspectiveRatio, getPitchedLabelPlaneMatrix, hideGlyphs, projectWithMatrix, projectTileCoordinatesToClipSpace, projectTileCoordinatesToLabelPlane, type SymbolProjectionContext, updateLineLabels} from '../symbol/projection'; -import {translatePosition} from '../util/util'; -import type {ProjectionData} from '../geo/projection/projection_data'; +import type {IReadonlyTransform} from '../../geo/transform_interface'; +import type {ColorMode} from '../color_mode'; +import type {Program} from '../program'; +import type {TextAnchor} from '../../style/style_layer/variable_text_anchor'; +import {getGlCoordMatrix, getPerspectiveRatio, getPitchedLabelPlaneMatrix, hideGlyphs, projectWithMatrix, projectTileCoordinatesToClipSpace, projectTileCoordinatesToLabelPlane, type SymbolProjectionContext, updateLineLabels} from '../../symbol/projection'; +import {translatePosition} from '../../util/util'; +import type {ProjectionData} from '../../geo/projection/projection_data'; type SymbolTileRenderState = { segments: SegmentVector; diff --git a/src/render/draw_terrain.ts b/src/webgl/draw/draw_terrain.ts similarity index 92% rename from src/render/draw_terrain.ts rename to src/webgl/draw/draw_terrain.ts index 6183d1bb86d..2c7a189631f 100644 --- a/src/render/draw_terrain.ts +++ b/src/webgl/draw/draw_terrain.ts @@ -1,12 +1,12 @@ -import {StencilMode} from '../gl/stencil_mode'; -import {DepthMode} from '../gl/depth_mode'; -import {terrainUniformValues, terrainDepthUniformValues, terrainCoordsUniformValues} from './program/terrain_program'; -import type {Painter, RenderOptions} from './painter'; -import type {Tile} from '../tile/tile'; -import {CullFaceMode} from '../gl/cull_face_mode'; +import {StencilMode} from '../stencil_mode'; +import {DepthMode} from '../depth_mode'; +import {terrainUniformValues, terrainDepthUniformValues, terrainCoordsUniformValues} from '../program/terrain_program'; +import type {Painter, RenderOptions} from '../../render/painter'; +import type {Tile} from '../../tile/tile'; +import {CullFaceMode} from '../cull_face_mode'; import {Color} from '@maplibre/maplibre-gl-style-spec'; -import {ColorMode} from '../gl/color_mode'; -import {type Terrain} from './terrain'; +import {ColorMode} from '../color_mode'; +import {type Terrain} from '../../render/terrain'; /** * Redraw the Depth Framebuffer diff --git a/src/webgl/draw/index.ts b/src/webgl/draw/index.ts new file mode 100644 index 00000000000..39989f5b5a4 --- /dev/null +++ b/src/webgl/draw/index.ts @@ -0,0 +1,59 @@ +import {drawSymbols} from './draw_symbol'; +import {drawCircles} from './draw_circle'; +import {drawHeatmap} from './draw_heatmap'; +import {drawLine} from './draw_line'; +import {drawFill} from './draw_fill'; +import {drawFillExtrusion} from './draw_fill_extrusion'; +import {drawHillshade} from './draw_hillshade'; +import {drawColorRelief} from './draw_color_relief'; +import {drawRaster} from './draw_raster'; +import {drawBackground} from './draw_background'; +import {drawDebug, drawDebugPadding, selectDebugSource} from './draw_debug'; +import {drawCustom} from './draw_custom'; +import {drawDepth, drawCoords} from './draw_terrain'; +import {drawSky, drawAtmosphere} from './draw_sky'; + +export {drawSymbols, drawCircles, drawHeatmap, drawLine, drawFill, drawFillExtrusion, + drawHillshade, drawColorRelief, drawRaster, drawBackground, + drawDebug, drawDebugPadding, selectDebugSource, drawCustom, + drawDepth, drawCoords, drawSky, drawAtmosphere}; + +export type DrawFunctions = { + symbol: typeof drawSymbols; + circle: typeof drawCircles; + heatmap: typeof drawHeatmap; + line: typeof drawLine; + fill: typeof drawFill; + fillExtrusion: typeof drawFillExtrusion; + hillshade: typeof drawHillshade; + colorRelief: typeof drawColorRelief; + raster: typeof drawRaster; + background: typeof drawBackground; + sky: typeof drawSky; + atmosphere: typeof drawAtmosphere; + custom: typeof drawCustom; + debug: typeof drawDebug; + debugPadding: typeof drawDebugPadding; + terrainDepth: typeof drawDepth; + terrainCoords: typeof drawCoords; +}; + +export const webglDrawFunctions: DrawFunctions = { + symbol: drawSymbols, + circle: drawCircles, + heatmap: drawHeatmap, + line: drawLine, + fill: drawFill, + fillExtrusion: drawFillExtrusion, + hillshade: drawHillshade, + colorRelief: drawColorRelief, + raster: drawRaster, + background: drawBackground, + sky: drawSky, + atmosphere: drawAtmosphere, + custom: drawCustom, + debug: drawDebug, + debugPadding: drawDebugPadding, + terrainDepth: drawDepth, + terrainCoords: drawCoords, +}; diff --git a/src/gl/framebuffer.ts b/src/webgl/framebuffer.ts similarity index 100% rename from src/gl/framebuffer.ts rename to src/webgl/framebuffer.ts diff --git a/src/gl/index_buffer.ts b/src/webgl/index_buffer.ts similarity index 97% rename from src/gl/index_buffer.ts rename to src/webgl/index_buffer.ts index 1012e2b00ee..7513fc03e99 100644 --- a/src/gl/index_buffer.ts +++ b/src/webgl/index_buffer.ts @@ -1,7 +1,7 @@ import type {StructArray} from '../util/struct_array'; import type {TriangleIndexArray, LineIndexArray, LineStripIndexArray} from '../data/index_array_type'; -import type {Context} from '../gl/context'; +import type {Context} from './context'; /** * @internal diff --git a/src/render/program.ts b/src/webgl/program.ts similarity index 96% rename from src/render/program.ts rename to src/webgl/program.ts index 7db9b23146e..9ecbded9f82 100644 --- a/src/render/program.ts +++ b/src/webgl/program.ts @@ -1,16 +1,16 @@ import {type PreparedShader, shaders, transpileVertexShaderToWebGL1, transpileFragmentShaderToWebGL1} from '../shaders/shaders'; import {type ProgramConfiguration} from '../data/program_configuration'; import {VertexArrayObject} from './vertex_array_object'; -import {type Context} from '../gl/context'; -import {isWebGL2} from '../gl/webgl2'; +import {type Context} from './context'; +import {isWebGL2} from './webgl2'; import type {SegmentVector} from '../data/segment'; -import type {VertexBuffer} from '../gl/vertex_buffer'; -import type {IndexBuffer} from '../gl/index_buffer'; -import type {DepthMode} from '../gl/depth_mode'; -import type {StencilMode} from '../gl/stencil_mode'; -import type {ColorMode} from '../gl/color_mode'; -import type {CullFaceMode} from '../gl/cull_face_mode'; +import type {VertexBuffer} from './vertex_buffer'; +import type {IndexBuffer} from './index_buffer'; +import type {DepthMode} from './depth_mode'; +import type {StencilMode} from './stencil_mode'; +import type {ColorMode} from './color_mode'; +import type {CullFaceMode} from './cull_face_mode'; import type {UniformBindings, UniformValues, UniformLocations} from './uniform_binding'; import type {BinderUniform} from '../data/program_configuration'; import {terrainPreludeUniforms, type TerrainPreludeUniformsType} from './program/terrain_program'; diff --git a/src/render/program/atmosphere_program.ts b/src/webgl/program/atmosphere_program.ts similarity index 96% rename from src/render/program/atmosphere_program.ts rename to src/webgl/program/atmosphere_program.ts index 147deb16786..6597010240b 100644 --- a/src/render/program/atmosphere_program.ts +++ b/src/webgl/program/atmosphere_program.ts @@ -1,4 +1,4 @@ -import type {Context} from '../../gl/context'; +import type {Context} from '../../webgl/context'; import {type UniformValues, type UniformLocations, Uniform1f, Uniform3f, UniformMatrix4f} from '../uniform_binding'; import {type mat4, type vec3} from 'gl-matrix'; diff --git a/src/render/program/background_program.ts b/src/webgl/program/background_program.ts similarity index 97% rename from src/render/program/background_program.ts rename to src/webgl/program/background_program.ts index dc45a6a0d61..80cfcea3635 100644 --- a/src/render/program/background_program.ts +++ b/src/webgl/program/background_program.ts @@ -7,9 +7,9 @@ import { } from '../uniform_binding'; import {extend} from '../../util/util'; -import type {Painter} from '../painter'; +import type {Painter} from '../../render/painter'; import type {UniformValues, UniformLocations} from '../uniform_binding'; -import type {Context} from '../../gl/context'; +import type {Context} from '../../webgl/context'; import type {Color, ResolvedImage} from '@maplibre/maplibre-gl-style-spec'; import type {CrossFaded} from '../../style/properties'; import type {CrossfadeParameters} from '../../style/evaluation_parameters'; diff --git a/src/render/program/circle_program.ts b/src/webgl/program/circle_program.ts similarity index 96% rename from src/render/program/circle_program.ts rename to src/webgl/program/circle_program.ts index 1e720c7e7e3..4f922ec43eb 100644 --- a/src/render/program/circle_program.ts +++ b/src/webgl/program/circle_program.ts @@ -1,11 +1,11 @@ import {Uniform1i, Uniform1f, Uniform2f} from '../uniform_binding'; import {pixelsToTileUnits} from '../../source/pixels_to_tile_units'; -import type {Context} from '../../gl/context'; +import type {Context} from '../../webgl/context'; import type {UniformValues, UniformLocations} from '../uniform_binding'; import type {Tile} from '../../tile/tile'; import type {CircleStyleLayer} from '../../style/style_layer/circle_style_layer'; -import type {Painter} from '../painter'; +import type {Painter} from '../../render/painter'; import {EXTENT} from '../../data/extent'; export type CircleUniformsType = { diff --git a/src/render/program/collision_program.ts b/src/webgl/program/collision_program.ts similarity index 96% rename from src/render/program/collision_program.ts rename to src/webgl/program/collision_program.ts index e27c367236d..b28a4c6f2e8 100644 --- a/src/render/program/collision_program.ts +++ b/src/webgl/program/collision_program.ts @@ -1,5 +1,5 @@ import {Uniform2f} from '../uniform_binding'; -import type {Context} from '../../gl/context'; +import type {Context} from '../../webgl/context'; import type {UniformValues, UniformLocations} from '../uniform_binding'; import type {IReadonlyTransform} from '../../geo/transform_interface'; diff --git a/src/render/program/color_relief_program.ts b/src/webgl/program/color_relief_program.ts similarity index 97% rename from src/render/program/color_relief_program.ts rename to src/webgl/program/color_relief_program.ts index b6f8619dd81..745eddc0045 100644 --- a/src/render/program/color_relief_program.ts +++ b/src/webgl/program/color_relief_program.ts @@ -5,7 +5,7 @@ import { Uniform4f } from '../uniform_binding'; -import type {Context} from '../../gl/context'; +import type {Context} from '../../webgl/context'; import type {UniformValues, UniformLocations} from '../uniform_binding'; import type {ColorReliefStyleLayer} from '../../style/style_layer/color_relief_style_layer'; import type {DEMData} from '../../data/dem_data'; diff --git a/src/render/program/debug_program.ts b/src/webgl/program/debug_program.ts similarity index 94% rename from src/render/program/debug_program.ts rename to src/webgl/program/debug_program.ts index 2f790643866..597807a8fb9 100644 --- a/src/render/program/debug_program.ts +++ b/src/webgl/program/debug_program.ts @@ -1,6 +1,6 @@ import {UniformColor, Uniform1i, Uniform1f} from '../uniform_binding'; -import type {Context} from '../../gl/context'; +import type {Context} from '../../webgl/context'; import type {UniformValues, UniformLocations} from '../uniform_binding'; import type {Color} from '@maplibre/maplibre-gl-style-spec'; diff --git a/src/render/program/fill_extrusion_program.ts b/src/webgl/program/fill_extrusion_program.ts similarity index 97% rename from src/render/program/fill_extrusion_program.ts rename to src/webgl/program/fill_extrusion_program.ts index 4b0202a70c7..850ed486b57 100644 --- a/src/render/program/fill_extrusion_program.ts +++ b/src/webgl/program/fill_extrusion_program.ts @@ -9,8 +9,8 @@ import { import {mat3, vec3} from 'gl-matrix'; import {extend} from '../../util/util'; -import type {Context} from '../../gl/context'; -import type {Painter} from '../painter'; +import type {Context} from '../../webgl/context'; +import type {Painter} from '../../render/painter'; import type {OverscaledTileID} from '../../tile/tile_id'; import type {UniformValues, UniformLocations} from '../uniform_binding'; import type {CrossfadeParameters} from '../../style/evaluation_parameters'; diff --git a/src/render/program/fill_program.ts b/src/webgl/program/fill_program.ts similarity index 97% rename from src/render/program/fill_program.ts rename to src/webgl/program/fill_program.ts index 4e22e48c44a..e7bda821ca0 100644 --- a/src/render/program/fill_program.ts +++ b/src/webgl/program/fill_program.ts @@ -7,9 +7,9 @@ import { } from '../uniform_binding'; import {extend} from '../../util/util'; -import type {Painter} from '../painter'; +import type {Painter} from '../../render/painter'; import type {UniformValues, UniformLocations} from '../uniform_binding'; -import type {Context} from '../../gl/context'; +import type {Context} from '../../webgl/context'; import type {CrossfadeParameters} from '../../style/evaluation_parameters'; import type {Tile} from '../../tile/tile'; diff --git a/src/render/program/heatmap_program.ts b/src/webgl/program/heatmap_program.ts similarity index 96% rename from src/render/program/heatmap_program.ts rename to src/webgl/program/heatmap_program.ts index 5c1ed5db01a..874cf38e6b2 100644 --- a/src/render/program/heatmap_program.ts +++ b/src/webgl/program/heatmap_program.ts @@ -8,10 +8,10 @@ import { } from '../uniform_binding'; import {pixelsToTileUnits} from '../../source/pixels_to_tile_units'; -import type {Context} from '../../gl/context'; +import type {Context} from '../../webgl/context'; import type {Tile} from '../../tile/tile'; import type {UniformValues, UniformLocations} from '../uniform_binding'; -import type {Painter} from '../painter'; +import type {Painter} from '../../render/painter'; import type {HeatmapStyleLayer} from '../../style/style_layer/heatmap_style_layer'; import {EXTENT} from '../../data/extent'; diff --git a/src/render/program/hillshade_program.ts b/src/webgl/program/hillshade_program.ts similarity index 97% rename from src/render/program/hillshade_program.ts rename to src/webgl/program/hillshade_program.ts index 766a963e9b4..f7374a0ae21 100644 --- a/src/render/program/hillshade_program.ts +++ b/src/webgl/program/hillshade_program.ts @@ -13,10 +13,10 @@ import { import {EXTENT} from '../../data/extent'; import {MercatorCoordinate} from '../../geo/mercator_coordinate'; -import type {Context} from '../../gl/context'; +import type {Context} from '../../webgl/context'; import type {UniformValues, UniformLocations} from '../uniform_binding'; import type {Tile} from '../../tile/tile'; -import type {Painter} from '../painter'; +import type {Painter} from '../../render/painter'; import type {HillshadeStyleLayer} from '../../style/style_layer/hillshade_style_layer'; import type {DEMData} from '../../data/dem_data'; import type {OverscaledTileID} from '../../tile/tile_id'; diff --git a/src/render/program/line_program.ts b/src/webgl/program/line_program.ts similarity index 98% rename from src/render/program/line_program.ts rename to src/webgl/program/line_program.ts index ea1c02a2742..bf637a1cb26 100644 --- a/src/render/program/line_program.ts +++ b/src/webgl/program/line_program.ts @@ -2,12 +2,12 @@ import {Uniform1i, Uniform1f, Uniform2f, Uniform3f} from '../uniform_binding'; import {pixelsToTileUnits} from '../../source/pixels_to_tile_units'; import {extend, translatePosition} from '../../util/util'; -import type {Context} from '../../gl/context'; +import type {Context} from '../../webgl/context'; import type {UniformValues, UniformLocations} from '../uniform_binding'; import type {IReadonlyTransform} from '../../geo/transform_interface'; import type {Tile} from '../../tile/tile'; import type {LineStyleLayer} from '../../style/style_layer/line_style_layer'; -import type {Painter} from '../painter'; +import type {Painter} from '../../render/painter'; import type {CrossfadeParameters} from '../../style/evaluation_parameters'; export type LineUniformsType = { diff --git a/src/render/program/pattern.ts b/src/webgl/program/pattern.ts similarity index 98% rename from src/render/program/pattern.ts rename to src/webgl/program/pattern.ts index c5a5ca40713..e57cd733f6f 100644 --- a/src/render/program/pattern.ts +++ b/src/webgl/program/pattern.ts @@ -6,7 +6,7 @@ import { } from '../uniform_binding'; import {pixelsToTileUnits} from '../../source/pixels_to_tile_units'; -import type {Painter} from '../painter'; +import type {Painter} from '../../render/painter'; import type {OverscaledTileID} from '../../tile/tile_id'; import type {CrossFaded} from '../../style/properties'; import type {CrossfadeParameters} from '../../style/evaluation_parameters'; diff --git a/src/render/program/program_uniforms.ts b/src/webgl/program/program_uniforms.ts similarity index 100% rename from src/render/program/program_uniforms.ts rename to src/webgl/program/program_uniforms.ts diff --git a/src/render/program/projection_error_measurement_program.ts b/src/webgl/program/projection_error_measurement_program.ts similarity index 85% rename from src/render/program/projection_error_measurement_program.ts rename to src/webgl/program/projection_error_measurement_program.ts index c5b1cd4f131..3f7d52ed57f 100644 --- a/src/render/program/projection_error_measurement_program.ts +++ b/src/webgl/program/projection_error_measurement_program.ts @@ -1,6 +1,6 @@ import {Uniform1f} from '../uniform_binding'; -import type {Context} from '../../gl/context'; -import type {UniformValues, UniformLocations} from '../../render/uniform_binding'; +import type {Context} from '../../webgl/context'; +import type {UniformValues, UniformLocations} from '../uniform_binding'; export type ProjectionErrorMeasurementUniformsType = { 'u_input': Uniform1f; diff --git a/src/render/program/projection_program.ts b/src/webgl/program/projection_program.ts similarity index 97% rename from src/render/program/projection_program.ts rename to src/webgl/program/projection_program.ts index 3a01c7cfcea..1fa224fc55f 100644 --- a/src/render/program/projection_program.ts +++ b/src/webgl/program/projection_program.ts @@ -1,5 +1,5 @@ import {Uniform1f, Uniform4f, type UniformLocations, UniformMatrix4f} from '../uniform_binding'; -import {type Context} from '../../gl/context'; +import {type Context} from '../../webgl/context'; // This next import is needed for the "@link" in the documentation to work properly. import type {ProjectionData} from '../../geo/projection/projection_data'; diff --git a/src/render/program/raster_program.ts b/src/webgl/program/raster_program.ts similarity index 98% rename from src/render/program/raster_program.ts rename to src/webgl/program/raster_program.ts index 1db2048f193..b5af234b529 100644 --- a/src/render/program/raster_program.ts +++ b/src/webgl/program/raster_program.ts @@ -1,6 +1,6 @@ import {Uniform1i, Uniform1f, Uniform2f, Uniform3f, Uniform4f} from '../uniform_binding'; -import type {Context} from '../../gl/context'; +import type {Context} from '../../webgl/context'; import type {UniformValues, UniformLocations} from '../uniform_binding'; import type {RasterStyleLayer} from '../../style/style_layer/raster_style_layer'; import type Point from '@mapbox/point-geometry'; diff --git a/src/render/program/sky_program.ts b/src/webgl/program/sky_program.ts similarity index 97% rename from src/render/program/sky_program.ts rename to src/webgl/program/sky_program.ts index 9fcdeade94b..908286366f3 100644 --- a/src/render/program/sky_program.ts +++ b/src/webgl/program/sky_program.ts @@ -1,5 +1,5 @@ import {UniformColor, Uniform1f, Uniform2f} from '../uniform_binding'; -import type {Context} from '../../gl/context'; +import type {Context} from '../../webgl/context'; import type {UniformValues, UniformLocations} from '../uniform_binding'; import {type IReadonlyTransform} from '../../geo/transform_interface'; import {type Sky} from '../../style/sky'; diff --git a/src/render/program/symbol_program.ts b/src/webgl/program/symbol_program.ts similarity index 99% rename from src/render/program/symbol_program.ts rename to src/webgl/program/symbol_program.ts index 3befb1282d9..82984cda7ce 100644 --- a/src/render/program/symbol_program.ts +++ b/src/webgl/program/symbol_program.ts @@ -1,8 +1,8 @@ import {Uniform1i, Uniform1f, Uniform2f, UniformMatrix4f} from '../uniform_binding'; import {extend} from '../../util/util'; -import type {Context} from '../../gl/context'; -import type {Painter} from '../painter'; +import type {Context} from '../../webgl/context'; +import type {Painter} from '../../render/painter'; import type {UniformValues, UniformLocations} from '../uniform_binding'; import {type mat4} from 'gl-matrix'; diff --git a/src/render/program/terrain_program.test.ts b/src/webgl/program/terrain_program.test.ts similarity index 100% rename from src/render/program/terrain_program.test.ts rename to src/webgl/program/terrain_program.test.ts diff --git a/src/render/program/terrain_program.ts b/src/webgl/program/terrain_program.ts similarity index 97% rename from src/render/program/terrain_program.ts rename to src/webgl/program/terrain_program.ts index 9979d713d70..0ac1e55c4f6 100644 --- a/src/render/program/terrain_program.ts +++ b/src/webgl/program/terrain_program.ts @@ -5,8 +5,8 @@ import { UniformMatrix4f, UniformColor } from '../uniform_binding'; -import type {Context} from '../../gl/context'; -import type {UniformValues, UniformLocations} from '../../render/uniform_binding'; +import type {Context} from '../../webgl/context'; +import type {UniformValues, UniformLocations} from '../uniform_binding'; import {type Sky} from '../../style/sky'; import {Color} from '@maplibre/maplibre-gl-style-spec'; import {type mat4} from 'gl-matrix'; diff --git a/src/gl/render_pool.test.ts b/src/webgl/render_pool.test.ts similarity index 100% rename from src/gl/render_pool.test.ts rename to src/webgl/render_pool.test.ts diff --git a/src/gl/render_pool.ts b/src/webgl/render_pool.ts similarity index 98% rename from src/gl/render_pool.ts rename to src/webgl/render_pool.ts index 78fe03d3285..120a8c4906f 100644 --- a/src/gl/render_pool.ts +++ b/src/webgl/render_pool.ts @@ -1,4 +1,4 @@ -import {Texture} from '../render/texture'; +import {Texture} from './texture'; import {type Context} from './context'; import {type Framebuffer} from './framebuffer'; diff --git a/src/render/render_to_texture.test.ts b/src/webgl/render_to_texture.test.ts similarity index 96% rename from src/render/render_to_texture.test.ts rename to src/webgl/render_to_texture.test.ts index 8b1365269bc..6253ab2f6b6 100644 --- a/src/render/render_to_texture.test.ts +++ b/src/webgl/render_to_texture.test.ts @@ -1,11 +1,11 @@ import {beforeEach, describe, test, expect, vi, type Mock} from 'vitest'; import {RenderToTexture} from './render_to_texture'; -import type {Painter} from './painter'; +import type {Painter} from '../render/painter'; import type {LineStyleLayer} from '../style/style_layer/line_style_layer'; import type {SymbolStyleLayer} from '../style/style_layer/symbol_style_layer'; -import {Context} from '../gl/context'; -import {ColorMode} from '../gl/color_mode'; -import {Terrain} from './terrain'; +import {Context} from '../webgl/context'; +import {ColorMode} from '../webgl/color_mode'; +import {Terrain} from '../render/terrain'; import {type Style} from '../style/style'; import {Tile} from '../tile/tile'; import {type Map} from '../ui/map'; @@ -16,7 +16,7 @@ import {type FillStyleLayer} from '../style/style_layer/fill_style_layer'; import {type RasterStyleLayer} from '../style/style_layer/raster_style_layer'; import {type HillshadeStyleLayer} from '../style/style_layer/hillshade_style_layer'; import {type BackgroundStyleLayer} from '../style/style_layer/background_style_layer'; -import {DepthMode} from '../gl/depth_mode'; +import {DepthMode} from '../webgl/depth_mode'; describe('render to texture', () => { const gl = document.createElement('canvas').getContext('webgl'); @@ -71,7 +71,11 @@ describe('render to texture', () => { getDepthModeFor3D: () => DepthMode.disabled, useProgram: () => ({draw: () => { layersDrawn++; }}), _renderTileClippingMasks: vi.fn(), - renderLayer: vi.fn() + renderLayer: vi.fn(), + drawFunctions: { + terrainDepth: vi.fn(), + terrainCoords: vi.fn(), + } } as any as Painter; const map = {painter} as Map; diff --git a/src/render/render_to_texture.ts b/src/webgl/render_to_texture.ts similarity index 97% rename from src/render/render_to_texture.ts rename to src/webgl/render_to_texture.ts index fd2e771fccf..c2377169552 100644 --- a/src/render/render_to_texture.ts +++ b/src/webgl/render_to_texture.ts @@ -1,11 +1,11 @@ -import {type Painter, type RenderOptions} from './painter'; +import {type Painter, type RenderOptions} from '../render/painter'; import {type Tile} from '../tile/tile'; import {Color} from '@maplibre/maplibre-gl-style-spec'; import {type OverscaledTileID} from '../tile/tile_id'; -import {drawTerrain} from './draw_terrain'; +import {drawTerrain} from './draw/draw_terrain'; import {type Style} from '../style/style'; -import {type Terrain} from './terrain'; -import {RenderPool} from '../gl/render_pool'; +import {type Terrain} from '../render/terrain'; +import {RenderPool} from './render_pool'; import {type Texture} from './texture'; import type {StyleLayer} from '../style/style_layer'; import {ImageSource} from '../source/image_source'; @@ -98,7 +98,7 @@ export class RenderToTexture { this._coordsAscending[id][key].push(keys[key]); } } - + } this._rttFingerprints = {}; diff --git a/src/gl/state.test.ts b/src/webgl/state.test.ts similarity index 100% rename from src/gl/state.test.ts rename to src/webgl/state.test.ts diff --git a/src/gl/stencil_mode.ts b/src/webgl/stencil_mode.ts similarity index 100% rename from src/gl/stencil_mode.ts rename to src/webgl/stencil_mode.ts diff --git a/src/render/texture.test.ts b/src/webgl/texture.test.ts similarity index 98% rename from src/render/texture.test.ts rename to src/webgl/texture.test.ts index 0c908c4f3d6..b2fb76059ad 100644 --- a/src/render/texture.test.ts +++ b/src/webgl/texture.test.ts @@ -1,5 +1,5 @@ import {describe, expect, test} from 'vitest'; -import {Context} from '../gl/context'; +import {Context} from './context'; import {Texture} from './texture'; import {premultiplyAlpha, RGBAImage} from '../util/image'; diff --git a/src/render/texture.ts b/src/webgl/texture.ts similarity index 99% rename from src/render/texture.ts rename to src/webgl/texture.ts index 70a41d235bd..796210ea97e 100644 --- a/src/render/texture.ts +++ b/src/webgl/texture.ts @@ -1,4 +1,4 @@ -import type {Context} from '../gl/context'; +import type {Context} from './context'; import type {RGBAImage, AlphaImage} from '../util/image'; import {premultiplyAlpha} from '../util/image'; diff --git a/src/gl/types.ts b/src/webgl/types.ts similarity index 100% rename from src/gl/types.ts rename to src/webgl/types.ts diff --git a/src/render/uniform_binding.test.ts b/src/webgl/uniform_binding.test.ts similarity index 98% rename from src/render/uniform_binding.test.ts rename to src/webgl/uniform_binding.test.ts index 10f4e202c52..af7b37b34cc 100644 --- a/src/render/uniform_binding.test.ts +++ b/src/webgl/uniform_binding.test.ts @@ -1,6 +1,6 @@ import {describe, test, expect} from 'vitest'; import {type mat4} from 'gl-matrix'; -import {type Context} from '../gl/context'; +import {type Context} from './context'; import { Uniform1i, Uniform1f, diff --git a/src/render/uniform_binding.ts b/src/webgl/uniform_binding.ts similarity index 99% rename from src/render/uniform_binding.ts rename to src/webgl/uniform_binding.ts index 0c1a1850e2e..14397d16663 100644 --- a/src/render/uniform_binding.ts +++ b/src/webgl/uniform_binding.ts @@ -1,6 +1,6 @@ import {Color} from '@maplibre/maplibre-gl-style-spec'; -import type {Context} from '../gl/context'; +import type {Context} from './context'; import {type mat4, type vec2, type vec3, type vec4} from 'gl-matrix'; type $ObjMap any> = { diff --git a/src/gl/value.ts b/src/webgl/value.ts similarity index 100% rename from src/gl/value.ts rename to src/webgl/value.ts diff --git a/src/render/vertex_array_object.ts b/src/webgl/vertex_array_object.ts similarity index 97% rename from src/render/vertex_array_object.ts rename to src/webgl/vertex_array_object.ts index d30e376026b..fbc8dd4d855 100644 --- a/src/render/vertex_array_object.ts +++ b/src/webgl/vertex_array_object.ts @@ -1,8 +1,8 @@ import type {Program} from './program'; -import type {VertexBuffer} from '../gl/vertex_buffer'; -import type {IndexBuffer} from '../gl/index_buffer'; -import type {Context} from '../gl/context'; +import type {VertexBuffer} from './vertex_buffer'; +import type {IndexBuffer} from './index_buffer'; +import type {Context} from './context'; /** * @internal diff --git a/src/gl/vertex_buffer.test.ts b/src/webgl/vertex_buffer.test.ts similarity index 98% rename from src/gl/vertex_buffer.test.ts rename to src/webgl/vertex_buffer.test.ts index 00dffd9055c..479c3963054 100644 --- a/src/gl/vertex_buffer.test.ts +++ b/src/webgl/vertex_buffer.test.ts @@ -1,7 +1,7 @@ import {describe, beforeEach, test, expect, vi} from 'vitest'; import {VertexBuffer} from './vertex_buffer'; import {StructArrayLayout3i6} from '../data/array_types.g'; -import {Context} from '../gl/context'; +import {Context} from './context'; import {type StructArrayMember} from '../util/struct_array'; describe('VertexBuffer', () => { diff --git a/src/gl/vertex_buffer.ts b/src/webgl/vertex_buffer.ts similarity index 97% rename from src/gl/vertex_buffer.ts rename to src/webgl/vertex_buffer.ts index 50359dd5d5c..12c5096ec22 100644 --- a/src/gl/vertex_buffer.ts +++ b/src/webgl/vertex_buffer.ts @@ -4,8 +4,8 @@ import type { StructArrayMember } from '../util/struct_array'; -import type {Program} from '../render/program'; -import type {Context} from '../gl/context'; +import type {Program} from './program'; +import type {Context} from './context'; /** * An Enum for AttributeType diff --git a/src/gl/webgl2.ts b/src/webgl/webgl2.ts similarity index 100% rename from src/gl/webgl2.ts rename to src/webgl/webgl2.ts diff --git a/test/build/sourcemaps.test.ts b/test/build/sourcemaps.test.ts index b79e4b13e5a..507d41fd1cb 100644 --- a/test/build/sourcemaps.test.ts +++ b/test/build/sourcemaps.test.ts @@ -80,6 +80,6 @@ describe('main sourcemap', () => { const s1 = setMinus(actualEntriesInSourcemapJSON, expectedEntriesInSourcemapJSON); expect(s1.length).toBeLessThan(5); const s2 = setMinus(expectedEntriesInSourcemapJSON, actualEntriesInSourcemapJSON); - expect(s2.length).toBeLessThan(16); + expect(s2.length).toBeLessThan(17); }); });