import type { PrimitiveDataType, NormalizedDataType } from "../shadertypes/data-types/data-types.js"; import type { AttributeShaderType } from "../shadertypes/shader-types/shader-types.js"; import type { VertexFormat } from "../shadertypes/vertex-types/vertex-formats.js"; import type { ShaderLayout } from "../adapter/types/shader-layout.js"; import type { BufferLayout } from "../adapter/types/buffer-layout.js"; /** Resolved info for a buffer / attribute combination to help backend configure it correctly */ export type AttributeInfo = { /** Attribute name */ attributeName: string; /** Location in shader */ location: number; /** Type / precision used in shader (buffer values may be converted) */ shaderType: AttributeShaderType; /** Calculations are done in this type in the shader's attribute declaration */ primitiveType: PrimitiveDataType; /** Components refer to the number of components in the shader's attribute declaration */ shaderComponents: 1 | 2 | 3 | 4; /** It is the shader attribute declaration that determines whether GPU will process as integer or float */ integer: boolean; /** BufferName */ bufferName: string; /** Format of buffer data */ vertexFormat: VertexFormat; /** Memory data type refers to the data type in the buffer */ bufferDataType: NormalizedDataType; /** Components refer to the number of components in the buffer's vertex format */ bufferComponents: 1 | 2 | 3 | 4; /** Normalization is encoded in the buffer layout's vertex format... */ normalized: boolean; /** If not specified, the step mode is inferred from the attribute name in the shader (contains string instance) */ stepMode: 'vertex' | 'instance'; /** The byteOffset is encoded in or calculated from the buffer layout */ byteOffset: number; /** The byteStride is encoded in or calculated from the buffer layout */ byteStride: number; }; /** * Map from "attribute names" to "resolved attribute infos" * containing information about both buffer layouts and shader attribute declarations */ export declare function getAttributeInfosFromLayouts(shaderLayout: ShaderLayout, bufferLayout: BufferLayout[]): Record; /** * Array indexed by "location" holding "resolved attribute infos" */ export declare function getAttributeInfosByLocation(shaderLayout: ShaderLayout, bufferLayout: BufferLayout[], maxVertexAttributes?: number): AttributeInfo[]; //# sourceMappingURL=get-attribute-from-layouts.d.ts.map