gpu-curtains
Version:
gpu-curtains is a 3D WebGPU rendering engine. It can be used as a standalone 3D engine, but also includes extra classes focused on mapping 3d objects to DOM elements; It allows users to synchronize values such as position, sizing, or scale between them.
30 lines (29 loc) • 1.1 kB
JavaScript
//#region src/core/materials/utils.ts
/**
* Compare two sets of {@link RenderMaterialRenderingOptions | rendering options} and returns an array of different options keys if any.
* @param newOptions - Rendering new options to compare.
* @param baseOptions - Rendering options to compare with.
* @returns - An array with the options keys that differ, if any.
*/
const compareRenderingOptions = (newOptions = {}, baseOptions = {}) => {
return [
"useProjection",
"transparent",
"depth",
"depthWriteEnabled",
"depthCompare",
"depthFormat",
"cullMode",
"sampleCount",
"targets",
"stencil",
"verticesOrder",
"topology"
].map((key) => {
if (newOptions[key] !== void 0 && baseOptions[key] === void 0 || baseOptions[key] !== void 0 && newOptions[key] === void 0) return key;
else if (Array.isArray(newOptions[key]) || typeof newOptions[key] === "object") return JSON.stringify(newOptions[key]) !== JSON.stringify(baseOptions[key]) ? key : false;
else return newOptions[key] !== baseOptions[key] ? key : false;
}).filter(Boolean);
};
//#endregion
export { compareRenderingOptions };