(
layer: Layer,
effects: Effect[] | undefined,
pass: string,
overrides: any
)
| 422 | } |
| 423 | |
| 424 | private _getShaderModuleProps( |
| 425 | layer: Layer, |
| 426 | effects: Effect[] | undefined, |
| 427 | pass: string, |
| 428 | overrides: any |
| 429 | ): any { |
| 430 | // @ts-expect-error TODO - assuming WebGL context |
| 431 | const devicePixelRatio = this.device.canvasContext.cssToDeviceRatio(); |
| 432 | const layerProps = layer.internalState?.propsInTransition || layer.props; |
| 433 | |
| 434 | const shaderModuleProps = { |
| 435 | layer: layerProps, |
| 436 | picking: { |
| 437 | isActive: false |
| 438 | } satisfies PickingProps, |
| 439 | project: { |
| 440 | viewport: layer.context.viewport, |
| 441 | devicePixelRatio, |
| 442 | modelMatrix: layerProps.modelMatrix, |
| 443 | coordinateSystem: layerProps.coordinateSystem, |
| 444 | coordinateOrigin: layerProps.coordinateOrigin, |
| 445 | autoWrapLongitude: layer.wrapLongitude |
| 446 | } satisfies ProjectProps |
| 447 | }; |
| 448 | |
| 449 | if (effects) { |
| 450 | for (const effect of effects) { |
| 451 | mergeModuleParameters( |
| 452 | shaderModuleProps, |
| 453 | effect.getShaderModuleProps?.(layer, shaderModuleProps) |
| 454 | ); |
| 455 | } |
| 456 | } |
| 457 | |
| 458 | // Ensure all default shader modules have an entry so their getUniforms is called. |
| 459 | // Without this, default modules added by effects (e.g. terrain) may not get their |
| 460 | // bindings set when rendered in passes that don't include those effects (e.g. mask pass). |
| 461 | for (const module of layer.context.defaultShaderModules) { |
| 462 | if (!(module.name in shaderModuleProps)) { |
| 463 | shaderModuleProps[module.name] = {}; |
| 464 | } |
| 465 | } |
| 466 | |
| 467 | return mergeModuleParameters( |
| 468 | shaderModuleProps, |
| 469 | this.getShaderModuleProps(layer, effects, shaderModuleProps), |
| 470 | overrides |
| 471 | ); |
| 472 | } |
| 473 | } |
| 474 | |
| 475 | // If the _index prop is defined, return a layer index that's relative to its parent |
no test coverage detected