Skip to content

feat: Shader module system and dynamic injection#120

Merged
kylebarron merged 12 commits intomainfrom
kyle/subclass-mesh-fragments
Jan 2, 2026
Merged

feat: Shader module system and dynamic injection#120
kylebarron merged 12 commits intomainfrom
kyle/subclass-mesh-fragments

Conversation

@kylebarron
Copy link
Member

@kylebarron kylebarron commented Dec 29, 2025

Change list

  • Updates RasterLayer to take in renderPipeline prop, which is either an ImageData (for convenience) or a sequence of RasterModule objects that defines a "render pipeline"
  • Modify MeshLayer subclass of SimpleMeshLayer to use our custom fragment shader, which removes the hard-coded sampler2D normalized texture uniform.
  • Creates initial raster modules:
    • CreateTexture: creates a normalized texture and sets it to the variable color
    • FilterNoDataVal: discards pixels that equal a nodata value
    • Colormap: applies a colormap given the value in the first channel of color
  • Update example apps to use latest module system

Closes #92

relates to:

}

// We initialize color here before passing into DECKGL_FILTER_COLOR
vec4 color;
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This still assumes that color will be a unorm vec4. Maybe we'll want to also allow the parameter into DECKGL_FILTER_COLOR to be a uvec4 or an ivec4?

@kylebarron kylebarron changed the title Move mesh-layer into folder Example shader module injection Dec 29, 2025
@kylebarron kylebarron marked this pull request as ready for review January 2, 2026 02:51
@kylebarron kylebarron changed the title Example shader module injection feat: Shader module system and dynamic injection Jan 2, 2026
@kylebarron kylebarron merged commit 7f40813 into main Jan 2, 2026
1 check passed
@kylebarron kylebarron deleted the kyle/subclass-mesh-fragments branch January 2, 2026 03:45
@ds-release-bot ds-release-bot bot mentioned this pull request Jan 26, 2026
kylebarron pushed a commit that referenced this pull request Jan 26, 2026
🤖 I have created a release *beep* *boop*
---


<details><summary>0.2.0</summary>

##
[0.2.0](v0.1.0...v0.2.0)
(2026-01-26)


### Features

* Mosaic tile layer
([#184](#184))
([acc6904](acc6904))
* Update land-cover example text
([#163](#163))
([790b5f5](790b5f5))


### Bug Fixes

* handle lowercase units
([#195](#195))
([918c241](918c241))


### Performance Improvements

* remove unnecessary object creation
([#181](#181))
([62c0c23](62c0c23))
</details>

<details><summary>deck.gl-geotiff: 0.2.0</summary>

##
[0.2.0](deck.gl-geotiff-v0.1.0...deck.gl-geotiff-v0.2.0)
(2026-01-26)


### Features

* Allow user-defined texture loader in COGLayer
([#101](#101))
([010e800](010e800))
* Direct rendering of paletted COG in Land Cover example
([#102](#102))
([5d8d6f1](5d8d6f1))
* Generic projection handler & NLCD example
([#81](#81))
([f2bf383](f2bf383))
* **geotiff:** Set up texture mapping from tiff tags to luma.gl texture
format
([#98](#98))
([9e766c3](9e766c3))
* Infer default COG render pipeline based on GeoTIFF metadata
([#154](#154))
([8fddeec](8fddeec))
* Mosaic tile layer
([#184](#184))
([acc6904](acc6904))
* Parse GeoTIFF ColorMap tag
([#116](#116))
([0bb7eed](0bb7eed))
* Pass geographic bounds in onGeoTIFFLoad callback
([#130](#130))
([d0e3677](d0e3677))
* Set up namespace exports
([#148](#148))
([933561c](933561c))
* Shader module system and dynamic injection
([#120](#120))
([7f40813](7f40813))
* Stabler `renderPipeline` inference with props placeholder
([#157](#157))
([61a46cc](61a46cc))
* Support varied input for GeoTIFF source
([#128](#128))
([cbcd1e4](cbcd1e4))


### Bug Fixes

* Ensure `loadTexture` returns `Texture`, not `TextureProps`
([#113](#113))
([20ce0c0](20ce0c0))
* handle lowercase units
([#195](#195))
([918c241](918c241))
* throw error when maxError is non-positive
([#151](#151))
([e57d17e](e57d17e)),
closes
[#18](#18)


### Performance Improvements

* Only compute COG bounds when the user supplies onGeoTIFFLoad callback
([#137](#137))
([125de6f](125de6f))
* remove unnecessary object creation
([#181](#181))
([62c0c23](62c0c23))
</details>

<details><summary>deck.gl-raster: 0.2.0</summary>

##
[0.2.0](deck.gl-raster-v0.1.0...deck.gl-raster-v0.2.0)
(2026-01-26)


### Features

* combine debug layer into main layer
([#49](#49))
([4d388df](4d388df))
* Extract TileMatrixSet definition from GeoTIFF object
([#50](#50))
([bde296c](bde296c))
* Generic projection handler & NLCD example
([#81](#81))
([f2bf383](f2bf383))
* Infer default COG render pipeline based on GeoTIFF metadata
([#154](#154))
([8fddeec](8fddeec))
* initial RasterLayer and RasterDebugLayer
([#40](#40))
([4a28770](4a28770))
* Set up namespace exports
([#148](#148))
([933561c](933561c))
* Set up shader injection through RasterLayer
([#99](#99))
([d7714e3](d7714e3))
* Shader module system and dynamic injection
([#120](#120))
([7f40813](7f40813))
* Stabler `renderPipeline` inference with props placeholder
([#157](#157))
([61a46cc](61a46cc))
* Update land-cover example text
([#163](#163))
([790b5f5](790b5f5))


### Bug Fixes

* Fix off-by-one error in RasterLayer mesh generation
([#63](#63))
([8d3f288](8d3f288))
* move deck.gl dependencies to peer dependencies
([#43](#43))
([4877f2f](4877f2f))
* throw error when maxError is non-positive
([#151](#151))
([e57d17e](e57d17e)),
closes
[#18](#18)
</details>

<details><summary>deck.gl-zarr: 0.2.0</summary>

##
[0.2.0](deck.gl-zarr-v0.1.0...deck.gl-zarr-v0.2.0)
(2026-01-26)


### Features

* Set up namespace exports
([#148](#148))
([933561c](933561c))


### Bug Fixes

* move deck.gl dependencies to peer dependencies
([#43](#43))
([4877f2f](4877f2f))
</details>

<details><summary>raster-reproject: 0.2.0</summary>

##
[0.2.0](raster-reproject-v0.1.0...raster-reproject-v0.2.0)
(2026-01-26)


### Features

* Set up namespace exports
([#148](#148))
([933561c](933561c))


### Bug Fixes

* move deck.gl dependencies to peer dependencies
([#43](#43))
([4877f2f](4877f2f))
* throw error when maxError is non-positive
([#151](#151))
([e57d17e](e57d17e)),
closes
[#18](#18)
</details>

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: ds-release-bot[bot] <116609932+ds-release-bot[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Custom raster gpu pass injection

1 participant