(nowMs: number)
| 2653 | binding.nodeId, |
| 2654 | binding.stageIndex, |
| 2655 | binding.name, |
| 2656 | ); |
| 2657 | } |
| 2658 | shaderUniformSlotIdsByWindow.set(windowId, slotIds); |
| 2659 | } |
| 2660 | |
| 2661 | function takeDirtyCompositionNodeIds( |
| 2662 | windowId: string, |
| 2663 | cache: CompositionEvaluationCache, |
| 2664 | ): string[] { |
| 2665 | const nodeIds = new Set(takeDirtyWindowNodeIds(windowId)); |
| 2666 | const bindingKeys = new Set( |
| 2667 | takeDirtyWindowShaderUniformBindingKeys(windowId), |
| 2668 | ); |
| 2669 | if (bindingKeys.size > 0) { |
| 2670 | for (const binding of cache.shaderUniformBindings) { |
| 2671 | if (bindingKeys.has(binding.key)) { |
| 2672 | nodeIds.add(binding.nodeId); |
| 2673 | } |
| 2674 | } |
| 2675 | } |
| 2676 | return Array.from(nodeIds); |
| 2677 | } |
| 2678 | |
| 2679 | function collectShaderUniformPatches( |
| 2680 | previousTree: unknown, |
| 2681 | nextTree: unknown, |
| 2682 | dirtyNodeIds: readonly string[], |
| 2683 | allDirtyNodeIds: readonly string[], |
| 2684 | ): NativeShaderUniformPatch[] | null { |
| 2685 | const patches: NativeShaderUniformPatch[] = []; |
| 2686 | for (const nodeId of dirtyNodeIds) { |
| 2687 | if ( |
| 2688 | allDirtyNodeIds.some( |
| 2689 | (candidate) => |
| 2690 | candidate !== nodeId && |
no test coverage detected