import type { BufferAttribute } from 'three'; export interface HasDefines { defines: Record; needsUpdate: boolean; } /** * Sets or unsets a define directive according to the condition. * The material is updated only if the directive has changed, avoiding unnecessary recompilations. * * @param material - The material to update. * @param name - The name of the directive * @param condition - The condition to enable the directive. * @example * * setDefine(mat, 'ENABLE_FOO', true); // material.needsUpdate === true; * setDefine(mat, 'ENABLE_FOO', true); // material.needsUpdate === false; * setDefine(mat, 'ENABLE_FOO', false); // material.needsUpdate === true; */ declare function setDefine(material: M, name: K, condition: boolean | undefined | null): void; /** * Sets or unsets a valued define directive. * The material is updated only if the value has changed, avoiding unnecessary recompilations. * * @param material - The material to update. * @param name - The name of the directive * @param value - The value of the define. * @returns `true` if the define value has actually changed, `false` otherwise. * @example * * setValueDefine(mat, 'FOO_COUNT', 5); // material.needsUpdate === true; * setValueDefine(mat, 'FOO_COUNT', 5); // material.needsUpdate === false; * setValueDefine(mat, 'FOO_COUNT', 4); // material.needsUpdate === true; */ declare function setDefineValue(material: M, name: K, value?: number | string): boolean; export type VertexAttributeType = 'int' | 'uint' | 'float'; /** * Returns the GLSL attribute type that most closely matches the type of the {@link BufferAttribute}. */ declare function getVertexAttributeType(attribute: BufferAttribute): VertexAttributeType; declare const _default: { setDefine: typeof setDefine; setDefineValue: typeof setDefineValue; getVertexAttributeType: typeof getVertexAttributeType; }; export default _default; //# sourceMappingURL=MaterialUtils.d.ts.map