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 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 | 1x 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 vtkWebGPUPolyDataMapper(publicAPI, model) { // Set our className model.classHierarchy.push('vtkWebGPUPolyDataMapper'); publicAPI.createCellArrayMapper = () => vtkWebGPUCellArrayMapper.newInstance(); publicAPI.buildPass = (prepass) => { if (prepass) { model.WebGPUActor = publicAPI.getFirstAncestorOfType('vtkWebGPUActor'); 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); cellOffset += prims[i].getNumberOfCells(); cellMappers.push(cellMapper); } else { model.primitives[i] = null; } } if (model.WebGPUActor.getRenderable().getProperty().getEdgeVisibility()) { for ( let i = PrimitiveTypes.TriangleEdges; i <= PrimitiveTypes.TriangleStripEdges; i++ ) { if (prims[i - 2].getNumberOfValues() > 0) { if (!model.primitives[i]) { model.primitives[i] = publicAPI.createCellArrayMapper(); } const cellMapper = model.primitives[i]; cellMapper.setCellArray(prims[i - 2]); cellMapper.setCurrentInput(poly); cellMapper.setCellOffset(model.primitives[i - 2].getCellOffset()); cellMapper.setPrimitiveType(i); cellMapper.setRenderable(model.renderable); cellMappers.push(cellMapper); } else { model.primitives[i] = null; } } } publicAPI.prepareNodes(); publicAPI.addMissingChildren(cellMappers); publicAPI.removeUnusedNodes(); }; } // ---------------------------------------------------------------------------- // Object factory // ---------------------------------------------------------------------------- const DEFAULT_VALUES = { primitives: null, }; // ---------------------------------------------------------------------------- export function extend(publicAPI, model, initialValues = {}) { Object.assign(model, DEFAULT_VALUES, initialValues); // Inheritance vtkViewNode.extend(publicAPI, model, initialValues); model.primitives = []; // Object methods vtkWebGPUPolyDataMapper(publicAPI, model); } // ---------------------------------------------------------------------------- export const newInstance = macro.newInstance(extend, 'vtkWebGPUPolyDataMapper'); // ---------------------------------------------------------------------------- export default { newInstance, extend }; // Register ourself to WebGPU backend if imported registerOverride('vtkMapper', newInstance); |