@awayjs/stage
Version:
Stage for AwayJS
122 lines • 4.36 kB
TypeScript
import { ContextGLProfile } from '../base/ContextGLProfile';
import { ShaderRegisterElement } from './ShaderRegisterElement';
/**
* ShaderRegister Cache provides the usage management system for all registers during shading compilers.
*/
export declare class ShaderRegisterCache {
private _fragmentTempCache;
private _vertexTempCache;
private _varyingCache;
private _fragmentConstantsCache;
private _vertexConstantsCache;
private _textureCache;
private _vertexAttributesCache;
private _fragmentOutputRegister;
private _vertexOutputRegister;
private _numUsedVertexConstants;
private _numUsedFragmentConstants;
private _numUsedStreams;
private _numUsedTextures;
private _numUsedVaryings;
private _profile;
/**
* Create a new ShaderRegisterCache object.
*
* @param profile The compatibility profile used by the renderer.
*/
constructor(profile: ContextGLProfile);
/**
* Resets all registers.
*/
reset(): void;
/**
* Disposes all resources used.
*/
dispose(): void;
/**
* Marks a fragment temporary register as used, so it cannot be retrieved. The register won't be able to be used until removeUsage
* has been called usageCount times again.
* @param register The register to mark as used.
* @param usageCount The amount of usages to add.
*/
addFragmentTempUsages(register: ShaderRegisterElement, usageCount: number): void;
/**
* Removes a usage from a fragment temporary register. When usages reach 0, the register is freed again.
* @param register The register for which to remove a usage.
*/
removeFragmentTempUsage(register: ShaderRegisterElement): void;
/**
* Marks a vertex temporary register as used, so it cannot be retrieved. The register won't be able to be used
* until removeUsage has been called usageCount times again.
* @param register The register to mark as used.
* @param usageCount The amount of usages to add.
*/
addVertexTempUsages(register: ShaderRegisterElement, usageCount: number): void;
/**
* Removes a usage from a vertex temporary register. When usages reach 0, the register is freed again.
* @param register The register for which to remove a usage.
*/
removeVertexTempUsage(register: ShaderRegisterElement): void;
/**
* Retrieve an entire fragment temporary register that's still available. The register won't be able to be used until removeUsage
* has been called usageCount times again.
*/
getFreeFragmentVectorTemp(): ShaderRegisterElement;
/**
* Retrieve a single component from a fragment temporary register that's still available.
*/
getFreeFragmentSingleTemp(): ShaderRegisterElement;
/**
* Retrieve an available varying register
*/
getFreeVarying(): ShaderRegisterElement;
/**
* Retrieve an available fragment constant register
*/
getFreeFragmentConstant(): ShaderRegisterElement;
/**
* Retrieve an available vertex constant register
*/
getFreeVertexConstant(): ShaderRegisterElement;
/**
* Retrieve an entire vertex temporary register that's still available.
*/
getFreeVertexVectorTemp(): ShaderRegisterElement;
/**
* Retrieve a single component from a vertex temporary register that's still available.
*/
getFreeVertexSingleTemp(): ShaderRegisterElement;
/**
* Retrieve an available vertex attribute register
*/
getFreeVertexAttribute(): ShaderRegisterElement;
/**
* Retrieve an available texture register
*/
getFreeTextureReg(): ShaderRegisterElement;
/**
* The fragment output register.
*/
get fragmentOutputRegister(): ShaderRegisterElement;
/**
* The amount of used vertex constant registers.
*/
get numUsedVertexConstants(): number;
/**
* The amount of used fragment constant registers.
*/
get numUsedFragmentConstants(): number;
/**
* The amount of used vertex streams.
*/
get numUsedStreams(): number;
/**
* The amount of used texture slots.
*/
get numUsedTextures(): number;
/**
* The amount of used varying registers.
*/
get numUsedVaryings(): number;
}
//# sourceMappingURL=ShaderRegisterCache.d.ts.map