/*! * Copyright (c) Microsoft Corporation. * Licensed under the MIT License. */ import { quat, vec2, vec3, vec4 } from "gl-matrix"; import { AABB } from "./aabb.js"; import { Material } from "./material.js"; export declare const HittableType: { readonly sphere: 0; readonly box: 1; readonly cylinder: 2; readonly hexPrism: 3; readonly rotatedBox: 4; readonly xyRect: 5; readonly xzRect: 6; readonly yzRect: 7; readonly rotatedXyRect: 8; readonly fontXyRect: 9; readonly rotatedFontXyRect: 10; readonly boxSdf: 11; readonly cylinderSdf: 12; readonly hexPrismSdf: 13; readonly constantMedium: 14; readonly sdfXyRect: 15; readonly rotatedSdfXyRect: 16; readonly rotatedBoxSdf: 17; readonly xYDisk: 18; readonly rotatedXyDisk: 19; readonly ringSdf: 20; readonly rotatedRingSdf: 21; readonly sphereSdf: 22; readonly tubeSdf: 23; }; export type HittableType = (typeof HittableType)[keyof typeof HittableType]; export declare class HittableBufferData extends Float32Array { static readonly SIZE: number; readonly CENTER0_OFFSET: number; readonly TYPE_OFFSET: number; readonly SIZE0_OFFSET: number; readonly MATERIAL_ID_OFFSET: number; readonly ROTATION0_OFFSET: number; readonly ROTATION1_OFFSET: number; readonly TEXCOORD0_OFFSET: number; readonly TEXCOORD1_OFFSET: number; readonly CENTER1_OFFSET: number; readonly ROUNDING_OFFSET: number; readonly SIZE1_OFFSET: number; readonly BOUNDARY_TYPE_OFFSET: number; readonly TIME0_OFFSET: number; readonly TIME1_OFFSET: number; readonly TEX_ID_OFFSET: number; readonly SDF_BUFFER_OFFSET: number; readonly SDF_BORDER_OFFSET: number; readonly PARAMETER_1_OFFSET: number; readonly PARAMETER_2_OFFSET: number; readonly MATERIAL_FUZZ_OFFSET: number; readonly MATERIAL_GLOSS_OFFSET: number; readonly MATERIAL_DENSITY_OFFSET: number; readonly MATERIAL_REFRACTIVE_INDEX_OFFSET: number; readonly MATERIAL_COLOR_OFFSET: number; readonly MATERIAL_TYPE_ID_OFFSET: number; readonly SEGMENT_COLOR_OFFSET: number; readonly TEXTURE_TYPE_ID_OFFSET: number; readonly TEXTURE_ID_OFFSET: number; constructor(count: number); getType(index: number): number; setType(index: number, value: number): void; getCenter0(index: number, value: vec3): void; setCenter0(index: number, value: vec3): void; getCenter1(index: number, value: vec3): void; setCenter1(index: number, value: vec3): void; getTime0(index: number): number; setTime0(index: number, value: number): void; getTime1(index: number): number; setTime1(index: number, value: number): void; getSize0(index: number, value: vec3): void; setSize0(index: number, value: vec3): void; getSize1(index: number, value: vec3): void; setSize1(index: number, value: vec3): void; getRotation0(index: number, value: quat): void; setRotation0(index: number, value: quat): void; getRotation1(index: number, value: quat): void; setRotation1(index: number, value: quat): void; getTexCoord0(index: number, value: vec2): void; setTexCoord0(index: number, value: vec2): void; getTexCoord1(index: number, value: vec2): void; setTexCoord1(index: number, value: vec2): void; getRounding(index: number): number; setRounding(index: number, value: number): void; getParameter1(index: number): number; setParameter1(index: number, value: number): void; getParameter2(index: number): number; setParameter2(index: number, value: number): void; getBoundaryType(index: number): number; setBoundaryType(index: number, value: number): void; getTexId(index: number): number; setTexId(index: number, value: number): void; getSdfBuffer(index: number): number; setSdfBuffer(index: number, value: number): void; getSdfBorder(index: number): number; setSdfBorder(index: number, value: number): void; getMaterialTypeId(index: number): number; setMaterialTypeId(index: number, value: number): void; getMaterialFuzz(index: number): number; setMaterialFuzz(index: number, value: number): void; getMaterialDensity(index: number): number; setMaterialDensity(index: number, value: number): void; getMaterialGloss(index: number): number; setMaterialGloss(index: number, value: number): void; getMaterialRefractiveIndex(index: number): number; setMaterialRefractiveIndex(index: number, value: number): void; getMaterialColor(index: number, value: [number, number, number] | vec3): void; setMaterialColor(index: number, value: [number, number, number] | vec3): void; getSegmentColor(index: number, value: [number, number, number, number] | vec4): void; setSegmentColor(index: number, value: [number, number, number, number] | vec4): void; } export interface IHittableOptions { center0?: vec3; center1?: vec3; time0?: number; time1?: number; materialType?: number; materialColor?: [number, number, number] | vec3; materialFuzz?: number; materialRefractiveIndex?: number; materialGloss?: number; materialDensity?: number; segmentColor?: [number, number, number, number] | vec4; } export declare abstract class Hittable { protected _center0: vec3; get center0(): vec3; protected _center1: vec3; get center1(): vec3; protected _time0: number; get time0(): number; protected _time1: number; get time1(): number; protected _bounds: AABB; get bounds(): AABB; protected _offset0: vec3; get offset0(): vec3; protected _offset1: vec3; get offset1(): vec3; materialFuzz: number; materialType: number; materialGloss: number; materialDensity: number; materialRefractiveIndex: number; materialColor: [number, number, number] | vec3; segmentColor: [number, number, number, number] | vec4; constructor(options: IHittableOptions); toBuffer(buffer: HittableBufferData, index: number): void; } export interface IHittableSphereOptions extends IHittableOptions { radius: number; } export declare class HittableSphere extends Hittable { private _radius; get radius(): number; constructor(options: IHittableSphereOptions); toBuffer(buffer: HittableBufferData, index: number): void; } export interface IHittableXyDiskOptions extends IHittableOptions { radius0: number; radius1: number; texCoord0: vec2; texCoord1: vec2; } export interface IHittableRotatedXyDiskOptions extends IHittableXyDiskOptions { rotation0: quat; rotation1: quat; } export declare class HittableXyDisk extends Hittable { protected readonly _thickness = 0.00001; protected _radius0: number; protected _radius1: number; protected _texCoord0: vec2; get texCoord0(): vec2; protected _texCoord1: vec2; get texCoord1(): vec2; constructor(options: IHittableXyDiskOptions); toBuffer(buffer: HittableBufferData, index: number): void; } export declare class HittableRotatedXyDisk extends HittableXyDisk { protected _rotation0: quat; protected _rotation1: quat; constructor(options: IHittableRotatedXyDiskOptions); toBuffer(buffer: HittableBufferData, index: number): void; } export interface IHittableRingSdfOptions extends IHittableOptions { size0: vec3; size1: vec3; angle0: number; innerRadius0: number; rounding: number; } export declare class HittableRingSdf extends Hittable { protected _size0: vec3; protected _size1: vec3; protected _angle: number; protected _innerRadius: number; protected _rounding: number; constructor(options: IHittableRingSdfOptions); toBuffer(buffer: HittableBufferData, index: number): void; } export interface IHittableRotatedRingSdfOptions extends IHittableRingSdfOptions { rotation0: quat; rotation1: quat; } export declare class HittableRotatedRingSdf extends HittableRingSdf { private _rotation0; private _rotation1; constructor(options: IHittableRotatedRingSdfOptions); toBuffer(buffer: HittableBufferData, index: number): void; } export interface IHittableTubeSdfOptions extends IHittableOptions { innerRadius: number; outerRadius: number; height: number; rounding: number; } export declare class HittableTubeSdf extends Hittable { protected _innerRadius: number; protected _outerRadius: number; protected _height: number; protected _rounding: number; constructor(options: IHittableTubeSdfOptions); toBuffer(buffer: HittableBufferData, index: number): void; } export interface IHittableBoxOptions extends IHittableOptions { size0: vec3; size1: vec3; } export declare class HittableBox extends Hittable { protected _size0: vec3; protected _size1: vec3; constructor(options: IHittableBoxOptions); toBuffer(buffer: HittableBufferData, index: number): void; } export interface IHittableBoxSdfOptions extends IHittableBoxOptions { rounding: number; } export declare class HittableSphereSdf extends HittableSphere { toBuffer(buffer: HittableBufferData, index: number): void; } export interface IHittableBoxSdfOptions extends IHittableBoxOptions { rounding: number; } export declare class HittableBoxSdf extends HittableBox { private _rounding; constructor(options: IHittableBoxSdfOptions); toBuffer(buffer: HittableBufferData, index: number): void; } export interface IHittableRotatedBoxSdfOptions extends IHittableBoxSdfOptions { rotation0: quat; rotation1: quat; } export declare class HittableRotatedBoxSdf extends HittableBoxSdf { private _rotation0; private _rotation1; constructor(options: IHittableRotatedBoxSdfOptions); toBuffer(buffer: HittableBufferData, index: number): void; } export interface IHittableRotatedBoxOptions extends IHittableBoxOptions { rotation0: quat; rotation1: quat; } export declare class HittableRotatedBox extends HittableBox { private _rotation0; private _rotation1; constructor(options: IHittableRotatedBoxOptions); toBuffer(buffer: HittableBufferData, index: number): void; } export interface IHittableCylinderOptions extends IHittableOptions { radius: number; height: number; rotation0?: quat; rotation1?: quat; } export declare class HittableCylinder extends Hittable { protected _radius: number; get radius(): number; protected _height: number; get height(): number; protected _rotation0: quat; protected _rotation1: quat; constructor(options: IHittableCylinderOptions); toBuffer(buffer: HittableBufferData, index: number): void; } export interface IHittableCylinderSdfOptions extends IHittableCylinderOptions { rounding: number; } export declare class HittableCylinderSdf extends HittableCylinder { private _rounding; constructor(options: IHittableCylinderSdfOptions); toBuffer(buffer: HittableBufferData, index: number): void; } export interface IHittableHexPrismOptions extends IHittableOptions { radius: number; height: number; } export declare class HittableHexPrism extends Hittable { protected _radius: number; get radius(): number; protected _height: number; get height(): number; constructor(options: IHittableHexPrismOptions); toBuffer(buffer: HittableBufferData, index: number): void; } export interface IHittableHexPrismSdfOptions extends IHittableHexPrismOptions { rounding: number; } export declare class HittableHexPrismSdf extends HittableHexPrism { private _rounding; constructor(options: IHittableHexPrismSdfOptions); toBuffer(buffer: HittableBufferData, index: number): void; } export interface IHittableRectOptions extends IHittableOptions { size0: vec2; size1: vec2; texCoord0: vec2; texCoord1: vec2; } export declare abstract class HittableRect extends Hittable { protected readonly _thickness = 0.00001; protected _size0: vec2; protected _size1: vec2; protected _sizeY: number; protected _texCoord0: vec2; get texCoord0(): vec2; protected _texCoord1: vec2; get texCoord1(): vec2; constructor(options: IHittableRectOptions); protected abstract _setBounds(): void; toBuffer(buffer: HittableBufferData, index: number): void; } export declare class HittableXyRect extends HittableRect { protected _setBounds(): void; toBuffer(buffer: HittableBufferData, index: number): void; } export declare class HittableXzRect extends HittableRect { protected _setBounds(): void; toBuffer(buffer: HittableBufferData, index: number): void; } export declare class HittableYzRect extends HittableRect { protected _setBounds(): void; toBuffer(buffer: HittableBufferData, index: number): void; } export interface IHittableFontOptions extends IHittableRotatedXyRectOptions { sdfBuffer: number; } export declare class HittableFontXyRect extends HittableXyRect { private _sdfBuffer; constructor(options: IHittableFontOptions); toBuffer(buffer: HittableBufferData, index: number): void; } export interface IHittableSdfOptions extends IHittableRotatedXyRectOptions { texId: number; sdfBuffer: number; sdfBorder: number; } export declare class HittableSdfXyRect extends HittableXyRect { private _texId; private _sdfBuffer; private _sdfBorder; constructor(options: IHittableSdfOptions); toBuffer(buffer: HittableBufferData, index: number): void; } export interface IHittableRotatedXyRectOptions extends IHittableRectOptions { rotation0: quat; rotation1: quat; } export declare class HittableRotatedXyRect extends HittableXyRect { protected _rotation0: quat; protected _rotation1: quat; constructor(options: IHittableRotatedXyRectOptions); toBuffer(buffer: HittableBufferData, index: number): void; } export declare class HittableRotatedFontXyRect extends HittableRotatedXyRect { private _sdfBuffer; constructor(options: IHittableFontOptions); toBuffer(buffer: HittableBufferData, index: number): void; } export declare class HittableRotatedSdfXyRect extends HittableRotatedXyRect { private _texId; private _sdfBuffer; private _sdfBorder; constructor(options: IHittableSdfOptions); toBuffer(buffer: HittableBufferData, index: number): void; } export interface IHittableConstantMediumOptions extends IHittableOptions { boundary: Hittable; boundaryMaterial?: Material; } export declare class HittableConstantMedium extends Hittable { private _boundary; get boundary(): Hittable; constructor(options: IHittableConstantMediumOptions); toBuffer(buffer: HittableBufferData, index: number): void; }