pixi.js
Version:
<p align="center"> <a href="https://pixijs.com" target="_blank" rel="noopener noreferrer"> <img height="150" src="https://files.pixijs.download/branding/pixijs-logo-transparent-dark.svg?v=1" alt="PixiJS logo"> </a> </p> <br/> <p align="center">
42 lines (39 loc) • 1.62 kB
JavaScript
import { warn } from '../../../../../utils/logging/warn.mjs';
import { getAttributeInfoFromFormat } from '../../../shared/geometry/utils/getAttributeInfoFromFormat.mjs';
;
function ensureAttributes(geometry, extractedData) {
for (const i in geometry.attributes) {
const attribute = geometry.attributes[i];
const attributeData = extractedData[i];
if (attributeData) {
attribute.format ?? (attribute.format = attributeData.format);
attribute.offset ?? (attribute.offset = attributeData.offset);
attribute.instance ?? (attribute.instance = attributeData.instance);
} else {
warn(`Attribute ${i} is not present in the shader, but is present in the geometry. Unable to infer attribute details.`);
}
}
ensureStartAndStride(geometry);
}
function ensureStartAndStride(geometry) {
const { buffers, attributes } = geometry;
const tempStride = {};
const tempStart = {};
for (const j in buffers) {
const buffer = buffers[j];
tempStride[buffer.uid] = 0;
tempStart[buffer.uid] = 0;
}
for (const j in attributes) {
const attribute = attributes[j];
tempStride[attribute.buffer.uid] += getAttributeInfoFromFormat(attribute.format).stride;
}
for (const j in attributes) {
const attribute = attributes[j];
attribute.stride ?? (attribute.stride = tempStride[attribute.buffer.uid]);
attribute.start ?? (attribute.start = tempStart[attribute.buffer.uid]);
tempStart[attribute.buffer.uid] += getAttributeInfoFromFormat(attribute.format).stride;
}
}
export { ensureAttributes };
//# sourceMappingURL=ensureAttributes.mjs.map