import { Dyno } from './base'; import { AllSamplerTypes, IsamplerTypes, NormalSamplerTypes, Sampler2DArrayTypes, Sampler2DTypes, Sampler3DTypes, SamplerCubeTypes, SamplerShadowTypes, SamplerTypes, UsamplerTypes } from './types'; import { DynoVal, DynoValue, HasDynoOut } from './value'; export declare const textureSize: (texture: DynoVal, lod?: DynoVal<"int">) => DynoVal>; export declare const texture: (texture: DynoVal, coord: DynoVal>, bias?: DynoVal<"float">) => DynoVal>; export declare const texelFetch: (texture: DynoVal, coord: DynoVal>, lod?: DynoVal<"int">) => DynoVal>; export declare class TextureSize extends Dyno<{ texture: T; lod: "int"; }, { size: TextureSizeType; }> implements HasDynoOut> { constructor({ texture, lod }: { texture: DynoVal; lod?: DynoVal<"int">; }); dynoOut(): DynoValue>; } export declare class Texture extends Dyno<{ texture: T; coord: TextureCoordType; bias: "float"; }, { sample: TextureReturnType; }> implements HasDynoOut> { constructor({ texture, coord, bias, }: { texture: DynoVal; coord: DynoVal>; bias?: DynoVal<"float">; }); dynoOut(): DynoValue>; } export declare class TexelFetch extends Dyno<{ texture: T; coord: TextureSizeType; lod: "int"; }, { texel: TextureReturnType; }> implements HasDynoOut> { constructor({ texture, coord, lod, }: { texture: DynoVal; coord: DynoVal>; lod?: DynoVal<"int">; }); dynoOut(): DynoValue>; } type TextureSizeType = T extends Sampler2DTypes | SamplerCubeTypes ? "ivec2" : T extends Sampler3DTypes | Sampler2DArrayTypes ? "ivec3" : never; type TextureCoordType = T extends Sampler2DTypes ? "vec2" : T extends Sampler3DTypes | Sampler2DArrayTypes | SamplerCubeTypes | Sampler2DArrayTypes ? "vec3" : T extends "samperCubeShadow" | "sampler2DArrayShadow" ? "vec4" : never; type TextureReturnType = T extends SamplerTypes ? "vec4" : T extends UsamplerTypes ? "uvec4" : T extends IsamplerTypes ? "ivec4" : T extends SamplerShadowTypes ? "float" : never; export {};