@tolokoban/tgd
Version:
ToloGameDev library for WebGL2
56 lines • 2.24 kB
TypeScript
import { type TgdMat2, type TgdMat3, type TgdMat4, TgdVec2, TgdVec3, TgdVec4 } from "../math";
import { TgdProgram } from "../program";
import { type TgdCodeBloc } from "../shader";
import type { TgdContext } from "./../context/context";
type UniformBufferObjectType = "bool" | "int" | "uint" | "float" | "double" | "vec2" | "bvec2" | "ivec2" | "uvec2" | "dvec2" | "vec3" | "bvec3" | "ivec3" | "uvec3" | "dvec3" | "vec4" | "bvec4" | "ivec4" | "uvec4" | "dvec4" | "mat2" | "mat3" | "mat4";
export interface TgdUniformBufferObjectOptions<S extends string = string, T extends Record<S, UniformBufferObjectType> = Record<S, UniformBufferObjectType>> {
uniforms: T;
values?: Partial<{
[key in keyof T]: Values[T[key]];
}>;
}
export declare class TgdUniformBufferObject<S extends string = string, T extends Record<S, UniformBufferObjectType> = Record<S, UniformBufferObjectType>> {
readonly context: TgdContext;
readonly bindingPoint: number;
readonly values: { [key in S]: Values[T[key]]; };
private readonly data;
private readonly view;
private readonly uniforms;
private readonly buffer;
private dirty;
constructor(context: TgdContext, { uniforms, values }: TgdUniformBufferObjectOptions<S, T>);
get names(): string[];
delete(): void;
bindToProgram(program: TgdProgram | WebGLProgram, blockName: string): void;
updateData(): void;
toShaderCode(blockName: string, instanceName?: string): TgdCodeBloc;
debug(caption?: string): void;
private makeAccessor;
}
type Values = {
bool: number;
int: number;
uint: number;
float: number;
double: number;
vec2: Readonly<TgdVec2>;
bvec2: Readonly<TgdVec2>;
ivec2: Readonly<TgdVec2>;
uvec2: Readonly<TgdVec2>;
dvec2: Readonly<TgdVec2>;
vec3: Readonly<TgdVec3>;
bvec3: Readonly<TgdVec3>;
ivec3: Readonly<TgdVec3>;
uvec3: Readonly<TgdVec3>;
dvec3: Readonly<TgdVec3>;
vec4: Readonly<TgdVec4>;
bvec4: Readonly<TgdVec4>;
ivec4: Readonly<TgdVec4>;
uvec4: Readonly<TgdVec4>;
dvec4: Readonly<TgdVec4>;
mat2: Readonly<TgdMat2>;
mat3: Readonly<TgdMat3>;
mat4: Readonly<TgdMat4>;
};
export {};
//# sourceMappingURL=uniform-buffer-object.d.ts.map