Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 | 1x 1x 1x | import * as macro from 'vtk.js/Sources/macros'; import vtkWebGPUBufferManager from 'vtk.js/Sources/Rendering/WebGPU/BufferManager'; import vtkWebGPUCellArrayMapper from 'vtk.js/Sources/Rendering/WebGPU/CellArrayMapper'; import vtkViewNode from 'vtk.js/Sources/Rendering/SceneGraph/ViewNode'; import { registerOverride } from 'vtk.js/Sources/Rendering/WebGPU/ViewNodeFactory'; const { PrimitiveTypes } = vtkWebGPUBufferManager; // ---------------------------------------------------------------------------- // vtkWebGPUPolyDataMapper methods // ---------------------------------------------------------------------------- function vtkWebGPUPolyDataMapper2D(publicAPI, model) { // Set our className model.classHierarchy.push('vtkWebGPUPolyDataMapper2D'); publicAPI.createCellArrayMapper = () => vtkWebGPUCellArrayMapper.newInstance(); publicAPI.buildPass = (prepass) => { if (prepass) { model.WebGPUActor = publicAPI.getFirstAncestorOfType('vtkWebGPUActor2D'); if (!model.renderable.getStatic()) { model.renderable.update(); } const poly = model.renderable.getInputData(); model.renderable.mapScalars(poly, 1.0); publicAPI.updateCellArrayMappers(poly); } }; publicAPI.updateCellArrayMappers = (poly) => { const prims = [ poly.getVerts(), poly.getLines(), poly.getPolys(), poly.getStrips(), ]; // we instantiate a cell array mapper for each cellArray that has cells // and they handle the rendering of that cell array const cellMappers = []; let cellOffset = 0; for (let i = PrimitiveTypes.Points; i <= PrimitiveTypes.Triangles; i++) { if (prims[i].getNumberOfValues() > 0) { if (!model.primitives[i]) { model.primitives[i] = publicAPI.createCellArrayMapper(); } const cellMapper = model.primitives[i]; cellMapper.setCellArray(prims[i]); cellMapper.setCurrentInput(poly); cellMapper.setCellOffset(cellOffset); cellMapper.setPrimitiveType(i); cellMapper.setRenderable(model.renderable); cellMapper.setIs2D(true); cellOffset += prims[i].getNumberOfCells(); cellMappers.push(cellMapper); } else { model.primitives[i] = null; } } publicAPI.prepareNodes(); publicAPI.addMissingChildren(cellMappers); publicAPI.removeUnusedNodes(); }; } // ---------------------------------------------------------------------------- // Object factory // ---------------------------------------------------------------------------- function defaultValues(initialValues) { return { primitives: [], ...initialValues }; } // ---------------------------------------------------------------------------- export function extend(publicAPI, model, initialValues = {}) { Object.assign(model, defaultValues(initialValues)); // Inheritance vtkViewNode.extend(publicAPI, model, initialValues); model.primitives = []; // Object methods vtkWebGPUPolyDataMapper2D(publicAPI, model); } // ---------------------------------------------------------------------------- export const newInstance = macro.newInstance( extend, 'vtkWebGPUPolyDataMapper2D' ); // ---------------------------------------------------------------------------- export default { newInstance, extend }; // Register ourself to WebGPU backend if imported registerOverride('vtkMapper2D', newInstance); |