Skip to content

PathOutlineLayer / PathMarkerLayer: incomplete v9 port, example non-functional #485

@charlieforward9

Description

@charlieforward9

Summary

PathOutlineLayer and PathMarkerLayer in @deck.gl-community/layers were never fully ported from deck.gl/luma.gl v8 to v9. The path-marker-outline example (added in #403) renders plain colored paths with no visible outlines and no directional arrow markers.

#403 added the example, docs, and partial parameter updates, but was generated by Codex and only verified with lint/vitest — never visually tested. It also removed a dummyTexture workaround from an earlier incomplete v9 migration attempt, introducing a WebGL feedback loop.

Broken APIs (pre-existing, predate #403)

These v8 patterns were present before #403 and have never worked with v9:

  • model.updateModuleSettings() — removed in luma.gl v9 (replaced by model.shaderInputs.setProps())
  • model.draw({uniforms, parameters, framebuffer}) — v8 API; v9 requires model.draw(renderPass)
  • GL.UNSIGNED_BYTE for attribute type — v9 expects string types like uint8
  • this.state.attributeManager — deprecated, should be this.getAttributeManager()
  • Shader: texture2DProj — GLSL ES 1.0; must be textureProj in ES 3.0
  • Shader: #version 300 es in module code — should not be in shader modules
  • Shader: duplicate out vec4 fragColor — declared in outline module and main shader
  • Shader: vec4(color.rgb * 0.5, color.a) — creates value but never assigns it; outline darken effect was always a no-op
  • Arrow2DGeometry — texCoords array has 3 components per vertex but declares size 2, causing vertex count mismatch
  • depthTest: false in PathMarkerLayer — not a valid luma.gl v9 parameter

Introduced by #403

  • Removed the dummyTexture from state and bound shadowmapTexture as both sampler input and framebuffer render target, causing a WebGL feedback loop

Questions

  1. Should these layers be deprecated? The outline effect uses custom multi-pass rendering with a shadowmap, which is fragile against luma.gl API changes. The arrow markers could be achieved with simpler approaches (e.g. IconLayer placed along paths).
  2. If kept, they need a proper v9 rewrite — the draw method needs render pass management, shader modules need updating to v9 patterns, and the example needs visual verification.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions