///
import { ShaderMaterial, Vector3, Vector2, Texture } from "three";
import type { Data3DTexture, IUniform } from "three";
import { GradientTextureOptions } from "@three3d/tools";
/**
* 体积渲染样式
*/
export declare enum VolumeRenderStyle {
/**
* 密度投影
* @remarks
* 会显示出几何体的外面
*/
MIP = 0,
/**
* 标准的样式
*/
ISO = 1
}
/**
* 体积材质选项
*/
export interface ExampleVolumeMaterial_1Options {
/**
* 渲染样式
*/
style?: VolumeRenderStyle | null;
/**
* 渲染最低阈值
* @remarks
* 只对 ISO 样式有效;
*
* 当三维纹理中的值低于该值时,不会被渲染,即视为空
*/
threshold?: number | null;
/**
* 映射区间
* @remarks
* x 为最小值,y 为最大值
*/
clim?: Vector2 | null;
/**
* 三维纹理
*/
map?: Data3DTexture | null;
/**
* 颜色映射纹理
*/
gradient?: GradientTextureOptions | null;
}
export interface ExampleVolumeMaterial_1Uniforms {
u_size: IUniform;
u_renderstyle: IUniform;
u_renderthreshold: IUniform;
u_clim: IUniform;
u_data: IUniform;
u_cmdata: IUniform;
}
/**
* 体积材质
*/
export declare class ExampleVolumeMaterial_1 extends ShaderMaterial {
readonly isExampleVolumeMaterial_1 = true;
constructor(options?: ExampleVolumeMaterial_1Options);
uniforms: ExampleVolumeMaterial_1Uniforms;
/**
* 三维纹理
*/
get map(): Data3DTexture | null;
set map(value: Data3DTexture | null);
/**
* 颜色映射纹理
* @remarks
* 会将垂直居中的那条水平像素从左到右映射到 clim 表示的限制区间,
* 即 clim.x 对应最左边的像素,clim.y 对应最右边的像素
*/
get gradientMap(): Texture | null;
protected _gradient?: null | GradientTextureOptions;
/**
* 颜色映射选项
*/
get gradient(): GradientTextureOptions | null | undefined;
set gradient(value: GradientTextureOptions | null | undefined);
/**
* 三维纹理的尺寸
* @remarks
* 三维纹理的尺寸 要 和 Geometry 的尺寸是一样的,不但比列一样,大小也是一样的
* 但 mesh 本身可以进行几何变换;
* Geometry 左下角的坐标要从 (0,0,0) 开始;
*/
get size(): Vector3;
set size(value: Vector3);
/**
* 渲染样式
*/
get style(): VolumeRenderStyle;
set style(value: VolumeRenderStyle);
/**
* 映射区间
* @remarks
* x 为最小值,y 为最大值
*/
get clim(): Vector2;
set clim(value: Vector2);
/**
* 渲染最低阈值
* @remarks
* 只对 ISO 样式有效;
*
* 当三维纹理中的值低于该值时,不会被渲染,即视为空
*/
get threshold(): number;
set threshold(value: number);
}
//# sourceMappingURL=ExampleVolumeMaterial_1.d.ts.map