// luma.gl // SPDX-License-Identifier: MIT // Copyright (c) vis.gl contributors /** * Extracts a table suitable for `console.table()` from a shader layout to assist in debugging. * @param layout shader layout * @param name app should provide the most meaningful name, usually the model or pipeline name / id. * @returns */ export function getDebugTableForShaderLayout(layout, name) { const table = {}; const header = 'Values'; // '`Shader Layout for ${name}`; if (layout.attributes.length === 0 && !layout.varyings?.length) { return { 'No attributes or varyings': { [header]: 'N/A' } }; } for (const attributeDeclaration of layout.attributes) { if (attributeDeclaration) { const glslDeclaration = `${attributeDeclaration.location} ${attributeDeclaration.name}: ${attributeDeclaration.type}`; table[`in ${glslDeclaration}`] = { [header]: attributeDeclaration.stepMode || 'vertex' }; } } for (const varyingDeclaration of layout.varyings || []) { const glslDeclaration = `${varyingDeclaration.location} ${varyingDeclaration.name}`; table[`out ${glslDeclaration}`] = { [header]: JSON.stringify(varyingDeclaration.accessor) }; } return table; }