Variable: CompositeBands
constCompositeBands:object
Defined in: composite-bands.ts:42
A shader module that samples up to 4 band textures with per-band UV
transforms and composites them into a vec4 color.
Uses fixed uniform slots (band0–band3) for textures (bound via
getUniforms) and a uniform block for scalar values (uvTransform0–
uvTransform3, channelMap).
Type Declaration
fs
readonlyfs: "uniform compositeBandsUniforms {\n vec4 uvTransform0;\n vec4 uvTransform1;\n vec4 uvTransform2;\n vec4 uvTransform3;\n ivec4 channelMap;\n} compositeBands;\n"
getUniforms
readonlygetUniforms: (props) =>object
Parameters
props
Returns
object
band0
band0:
Texture|undefined=props.band0
band1
band1:
Texture|undefined=props.band1
band2
band2:
Texture|undefined=props.band2
band3
band3:
Texture|undefined=props.band3
channelMap
channelMap: [
number,number,number,number]
uvTransform0
uvTransform0:
UvTransform
uvTransform1
uvTransform1:
UvTransform
uvTransform2
uvTransform2:
UvTransform
uvTransform3
uvTransform3:
UvTransform
inject
readonlyinject:object
inject.fs:#decl
readonlyfs:#decl: "\nuniform sampler2D band0;\nuniform sampler2D band1;\nuniform sampler2D band2;\nuniform sampler2D band3;\n\nvec2 compositeBands_applyUv(vec2 uv, vec4 transform) {\n return uv * transform.zw + transform.xy;\n}\n\nfloat compositeBands_sampleSlot(int slot, vec2 uv) {\n if (slot == 0) return texture(band0, compositeBands_applyUv(uv, compositeBands.uvTransform0)).r;\n if (slot == 1) return texture(band1, compositeBands_applyUv(uv, compositeBands.uvTransform1)).r;\n if (slot == 2) return texture(band2, compositeBands_applyUv(uv, compositeBands.uvTransform2)).r;\n if (slot == 3) return texture(band3, compositeBands_applyUv(uv, compositeBands.uvTransform3)).r;\n return 0.0;\n}\n"
inject.fs:DECKGL_FILTER_COLOR
readonlyfs:DECKGL_FILTER_COLOR: "\n float r = compositeBands.channelMap.r >= 0 ? compositeBands_sampleSlot(compositeBands.channelMap.r, geometry.uv) : 0.0;\n float g = compositeBands.channelMap.g >= 0 ? compositeBands_sampleSlot(compositeBands.channelMap.g, geometry.uv) : 0.0;\n float b = compositeBands.channelMap.b >= 0 ? compositeBands_sampleSlot(compositeBands.channelMap.b, geometry.uv) : 0.0;\n float a = compositeBands.channelMap.a >= 0 ? compositeBands_sampleSlot(compositeBands.channelMap.a, geometry.uv) : 1.0;\n color = vec4(r, g, b, a);\n"
name
readonlyname:"compositeBands"=MODULE_NAME
uniformTypes
readonlyuniformTypes:object
uniformTypes.channelMap
readonlychannelMap:"vec4<i32>"="vec4<i32>"
uniformTypes.uvTransform0
readonlyuvTransform0:"vec4<f32>"="vec4<f32>"
uniformTypes.uvTransform1
readonlyuvTransform1:"vec4<f32>"="vec4<f32>"
uniformTypes.uvTransform2
readonlyuvTransform2:"vec4<f32>"="vec4<f32>"
uniformTypes.uvTransform3
readonlyuvTransform3:"vec4<f32>"="vec4<f32>"
See
- CompositeBandsProps
- buildCompositeBandsProps for a helper that maps named bands to slot indices.