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 | 1x 1x | import macro from 'vtk.js/Sources/macros'; /* eslint-disable no-bitwise */ // ---------------------------------------------------------------------------- // vtkWebGPUSampler methods // ---------------------------------------------------------------------------- function vtkWebGPUSampler(publicAPI, model) { // Set our className model.classHierarchy.push('vtkWebGPUSampler'); publicAPI.create = (device, options = {}) => { model.device = device; model.options.addressModeU = options.addressModeU ? options.addressModeU : 'clamp-to-edge'; model.options.addressModeV = options.addressModeV ? options.addressModeV : 'clamp-to-edge'; model.options.addressModeW = options.addressModeW ? options.addressModeW : 'clamp-to-edge'; model.options.magFilter = options.magFilter ? options.magFilter : 'nearest'; model.options.minFilter = options.minFilter ? options.minFilter : 'nearest'; model.options.mipmapFilter = options.mipmapFilter ? options.mipmapFilter : 'nearest'; model.options.label = model.label; model.handle = model.device.getHandle().createSampler(model.options); model.bindGroupTime.modified(); }; publicAPI.getShaderCode = (binding, group) => { const result = `@binding(${binding}) @group(${group}) var ${model.label}: sampler;`; return result; }; publicAPI.getBindGroupEntry = () => { const foo = { resource: model.handle, }; return foo; }; } // ---------------------------------------------------------------------------- // Object factory // ---------------------------------------------------------------------------- const DEFAULT_VALUES = { device: null, handle: null, label: null, options: null, }; // ---------------------------------------------------------------------------- export function extend(publicAPI, model, initialValues = {}) { Object.assign(model, DEFAULT_VALUES, initialValues); // Object methods macro.obj(publicAPI, model); model.options = {}; model.bindGroupLayoutEntry = { /* eslint-disable no-undef */ visibility: GPUShaderStage.VERTEX | GPUShaderStage.FRAGMENT, /* eslint-enable no-undef */ sampler: { // type: 'filtering', }, }; model.bindGroupTime = {}; macro.obj(model.bindGroupTime, { mtime: 0 }); macro.get(publicAPI, model, ['bindGroupTime', 'handle', 'options']); macro.setGet(publicAPI, model, ['bindGroupLayoutEntry', 'device', 'label']); vtkWebGPUSampler(publicAPI, model); } // ---------------------------------------------------------------------------- export const newInstance = macro.newInstance(extend); // ---------------------------------------------------------------------------- export default { newInstance, extend }; |