161847f8eSopenharmony_ci/*
261847f8eSopenharmony_ci * Copyright (c) 2024-2024 Huawei Device Co., Ltd.
361847f8eSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
461847f8eSopenharmony_ci * you may not use this file except in compliance with the License.
561847f8eSopenharmony_ci * You may obtain a copy of the License at
661847f8eSopenharmony_ci *
761847f8eSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
861847f8eSopenharmony_ci *
961847f8eSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
1061847f8eSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
1161847f8eSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1261847f8eSopenharmony_ci * See the License for the specific language governing permissions and
1361847f8eSopenharmony_ci * limitations under the License.
1461847f8eSopenharmony_ci */
1561847f8eSopenharmony_ci
1661847f8eSopenharmony_ci/**
1761847f8eSopenharmony_ci * @file Defines 3D resource related interfaces
1861847f8eSopenharmony_ci * @kit ArkGraphics3D
1961847f8eSopenharmony_ci */
2061847f8eSopenharmony_ci
2161847f8eSopenharmony_ciimport { Vec2, Vec3, Vec4, Aabb } from './SceneTypes';
2261847f8eSopenharmony_ciimport { Callback } from '../@ohos.base';
2361847f8eSopenharmony_ci
2461847f8eSopenharmony_ci/**
2561847f8eSopenharmony_ci * The enum of SceneResource type.
2661847f8eSopenharmony_ci *
2761847f8eSopenharmony_ci * @enum { number }
2861847f8eSopenharmony_ci * @syscap SystemCapability.ArkUi.Graphics3D
2961847f8eSopenharmony_ci * @since 12
3061847f8eSopenharmony_ci */
3161847f8eSopenharmony_ciexport enum SceneResourceType {
3261847f8eSopenharmony_ci  /**
3361847f8eSopenharmony_ci   * The resource is an Unknown.
3461847f8eSopenharmony_ci   *
3561847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
3661847f8eSopenharmony_ci   * @since 12
3761847f8eSopenharmony_ci   */
3861847f8eSopenharmony_ci  UNKNOWN = 0,
3961847f8eSopenharmony_ci
4061847f8eSopenharmony_ci  /**
4161847f8eSopenharmony_ci   * The resource is a Node.
4261847f8eSopenharmony_ci   *
4361847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
4461847f8eSopenharmony_ci   * @since 12
4561847f8eSopenharmony_ci   */
4661847f8eSopenharmony_ci  NODE = 1,
4761847f8eSopenharmony_ci
4861847f8eSopenharmony_ci  /**
4961847f8eSopenharmony_ci   * The resource is an Environment.
5061847f8eSopenharmony_ci   *
5161847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
5261847f8eSopenharmony_ci   * @since 12
5361847f8eSopenharmony_ci   */
5461847f8eSopenharmony_ci  ENVIRONMENT = 2,
5561847f8eSopenharmony_ci
5661847f8eSopenharmony_ci  /**
5761847f8eSopenharmony_ci   * The resource is a Material.
5861847f8eSopenharmony_ci   *
5961847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
6061847f8eSopenharmony_ci   * @since 12
6161847f8eSopenharmony_ci   */
6261847f8eSopenharmony_ci  MATERIAL = 3,
6361847f8eSopenharmony_ci
6461847f8eSopenharmony_ci  /**
6561847f8eSopenharmony_ci   * The resource is a Mesh.
6661847f8eSopenharmony_ci   *
6761847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
6861847f8eSopenharmony_ci   * @since 12
6961847f8eSopenharmony_ci   */
7061847f8eSopenharmony_ci  MESH = 4,
7161847f8eSopenharmony_ci
7261847f8eSopenharmony_ci  /**
7361847f8eSopenharmony_ci   * The resource is an Animation.
7461847f8eSopenharmony_ci   *
7561847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
7661847f8eSopenharmony_ci   * @since 12
7761847f8eSopenharmony_ci   */
7861847f8eSopenharmony_ci  ANIMATION = 5,
7961847f8eSopenharmony_ci
8061847f8eSopenharmony_ci  /**
8161847f8eSopenharmony_ci   * The resource is a Shader.
8261847f8eSopenharmony_ci   *
8361847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
8461847f8eSopenharmony_ci   * @since 12
8561847f8eSopenharmony_ci   */
8661847f8eSopenharmony_ci  SHADER = 6,
8761847f8eSopenharmony_ci
8861847f8eSopenharmony_ci  /**
8961847f8eSopenharmony_ci   * The resource is an Image.
9061847f8eSopenharmony_ci   *
9161847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
9261847f8eSopenharmony_ci   * @since 12
9361847f8eSopenharmony_ci   */
9461847f8eSopenharmony_ci  IMAGE = 7,
9561847f8eSopenharmony_ci}
9661847f8eSopenharmony_ci
9761847f8eSopenharmony_ci/**
9861847f8eSopenharmony_ci * Define scene resource extended by other 3d resource.
9961847f8eSopenharmony_ci *
10061847f8eSopenharmony_ci * @interface SceneResource
10161847f8eSopenharmony_ci * @syscap SystemCapability.ArkUi.Graphics3D
10261847f8eSopenharmony_ci * @since 12
10361847f8eSopenharmony_ci */
10461847f8eSopenharmony_ciexport interface SceneResource {
10561847f8eSopenharmony_ci  /**
10661847f8eSopenharmony_ci   * Scene resource name.
10761847f8eSopenharmony_ci   *
10861847f8eSopenharmony_ci   * @type { string }
10961847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
11061847f8eSopenharmony_ci   * @since 12
11161847f8eSopenharmony_ci   */
11261847f8eSopenharmony_ci  name: string;
11361847f8eSopenharmony_ci
11461847f8eSopenharmony_ci  /**
11561847f8eSopenharmony_ci   * Scene resource type.
11661847f8eSopenharmony_ci   *
11761847f8eSopenharmony_ci   * @type { SceneResourceType }
11861847f8eSopenharmony_ci   * @readonly
11961847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
12061847f8eSopenharmony_ci   * @since 12
12161847f8eSopenharmony_ci   */
12261847f8eSopenharmony_ci  readonly resourceType: SceneResourceType;
12361847f8eSopenharmony_ci
12461847f8eSopenharmony_ci  /**
12561847f8eSopenharmony_ci   * Scene resource uri.
12661847f8eSopenharmony_ci   *
12761847f8eSopenharmony_ci   * @type { ?ResourceStr }
12861847f8eSopenharmony_ci   * @readonly
12961847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
13061847f8eSopenharmony_ci   * @since 12
13161847f8eSopenharmony_ci   */
13261847f8eSopenharmony_ci  readonly uri?: ResourceStr;
13361847f8eSopenharmony_ci
13461847f8eSopenharmony_ci
13561847f8eSopenharmony_ci  /**
13661847f8eSopenharmony_ci   * Release scene resource.
13761847f8eSopenharmony_ci   *
13861847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
13961847f8eSopenharmony_ci   * @since 12
14061847f8eSopenharmony_ci   */
14161847f8eSopenharmony_ci  destroy(): void;
14261847f8eSopenharmony_ci}
14361847f8eSopenharmony_ci
14461847f8eSopenharmony_ci/**
14561847f8eSopenharmony_ci * Shader resource.
14661847f8eSopenharmony_ci *
14761847f8eSopenharmony_ci * @interface Shader
14861847f8eSopenharmony_ci * @extends SceneResource
14961847f8eSopenharmony_ci * @syscap SystemCapability.ArkUi.Graphics3D
15061847f8eSopenharmony_ci * @since 12
15161847f8eSopenharmony_ci */
15261847f8eSopenharmony_ciexport interface Shader extends SceneResource {
15361847f8eSopenharmony_ci  /**
15461847f8eSopenharmony_ci   * Shader inputs.
15561847f8eSopenharmony_ci   * 
15661847f8eSopenharmony_ci   * @type { Record<string, number | Vec2 | Vec3 | Vec4 | Image> }
15761847f8eSopenharmony_ci   * @readonly
15861847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
15961847f8eSopenharmony_ci   * @since 12
16061847f8eSopenharmony_ci   */
16161847f8eSopenharmony_ci  readonly inputs: Record<string, number | Vec2 | Vec3 | Vec4 | Image>;
16261847f8eSopenharmony_ci}
16361847f8eSopenharmony_ci
16461847f8eSopenharmony_ci/**
16561847f8eSopenharmony_ci * The enum of material type.
16661847f8eSopenharmony_ci *
16761847f8eSopenharmony_ci * @enum { number }
16861847f8eSopenharmony_ci * @syscap SystemCapability.ArkUi.Graphics3D
16961847f8eSopenharmony_ci * @since 12
17061847f8eSopenharmony_ci */
17161847f8eSopenharmony_ciexport enum MaterialType {
17261847f8eSopenharmony_ci  /**
17361847f8eSopenharmony_ci   * The material type is a Shader.
17461847f8eSopenharmony_ci   *
17561847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
17661847f8eSopenharmony_ci   * @since 12
17761847f8eSopenharmony_ci   */
17861847f8eSopenharmony_ci  SHADER = 1,
17961847f8eSopenharmony_ci}
18061847f8eSopenharmony_ci
18161847f8eSopenharmony_ci/**
18261847f8eSopenharmony_ci * Material resource.
18361847f8eSopenharmony_ci *
18461847f8eSopenharmony_ci * @interface Material
18561847f8eSopenharmony_ci * @extends SceneResource
18661847f8eSopenharmony_ci * @syscap SystemCapability.ArkUi.Graphics3D
18761847f8eSopenharmony_ci * @since 12
18861847f8eSopenharmony_ci */
18961847f8eSopenharmony_ciexport interface Material extends SceneResource {
19061847f8eSopenharmony_ci  /**
19161847f8eSopenharmony_ci   * Material resource type.
19261847f8eSopenharmony_ci   *
19361847f8eSopenharmony_ci   * @type { MaterialType }
19461847f8eSopenharmony_ci   * @readonly
19561847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
19661847f8eSopenharmony_ci   * @since 12
19761847f8eSopenharmony_ci   */
19861847f8eSopenharmony_ci  readonly materialType: MaterialType;
19961847f8eSopenharmony_ci}
20061847f8eSopenharmony_ci
20161847f8eSopenharmony_ci/**
20261847f8eSopenharmony_ci * Shader material resource.
20361847f8eSopenharmony_ci *
20461847f8eSopenharmony_ci * @interface ShaderMaterial
20561847f8eSopenharmony_ci * @extends Material
20661847f8eSopenharmony_ci * @syscap SystemCapability.ArkUi.Graphics3D
20761847f8eSopenharmony_ci * @since 12
20861847f8eSopenharmony_ci */
20961847f8eSopenharmony_ciexport interface ShaderMaterial extends Material {
21061847f8eSopenharmony_ci  /**
21161847f8eSopenharmony_ci   * Color shader of material.
21261847f8eSopenharmony_ci   *
21361847f8eSopenharmony_ci   * @type { ?Shader }
21461847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
21561847f8eSopenharmony_ci   * @since 12
21661847f8eSopenharmony_ci   */
21761847f8eSopenharmony_ci  colorShader?: Shader;
21861847f8eSopenharmony_ci}
21961847f8eSopenharmony_ci
22061847f8eSopenharmony_ci/**
22161847f8eSopenharmony_ci * Sub mesh resource.
22261847f8eSopenharmony_ci *
22361847f8eSopenharmony_ci * @interface SubMesh
22461847f8eSopenharmony_ci * @syscap SystemCapability.ArkUi.Graphics3D
22561847f8eSopenharmony_ci * @since 12
22661847f8eSopenharmony_ci */
22761847f8eSopenharmony_ciexport interface SubMesh {
22861847f8eSopenharmony_ci  /**
22961847f8eSopenharmony_ci   * The name of the sub mesh.
23061847f8eSopenharmony_ci   *
23161847f8eSopenharmony_ci   * @type { string }
23261847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
23361847f8eSopenharmony_ci   * @since 12
23461847f8eSopenharmony_ci   */
23561847f8eSopenharmony_ci  name: string;
23661847f8eSopenharmony_ci
23761847f8eSopenharmony_ci  /**
23861847f8eSopenharmony_ci   * The material of the sub mesh.
23961847f8eSopenharmony_ci   *
24061847f8eSopenharmony_ci   * @type { Material }
24161847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
24261847f8eSopenharmony_ci   * @since 12
24361847f8eSopenharmony_ci   */
24461847f8eSopenharmony_ci  material: Material;
24561847f8eSopenharmony_ci
24661847f8eSopenharmony_ci  /**
24761847f8eSopenharmony_ci   * The axis aligned bounding box of the sub mesh.
24861847f8eSopenharmony_ci   *
24961847f8eSopenharmony_ci   * @type { Aabb }
25061847f8eSopenharmony_ci   * readonly
25161847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
25261847f8eSopenharmony_ci   * @since 12
25361847f8eSopenharmony_ci   */
25461847f8eSopenharmony_ci  readonly aabb: Aabb;
25561847f8eSopenharmony_ci}
25661847f8eSopenharmony_ci
25761847f8eSopenharmony_ci/**
25861847f8eSopenharmony_ci * Mesh resource.
25961847f8eSopenharmony_ci *
26061847f8eSopenharmony_ci * @interface Mesh
26161847f8eSopenharmony_ci * @extends SceneResource
26261847f8eSopenharmony_ci * @syscap SystemCapability.ArkUi.Graphics3D
26361847f8eSopenharmony_ci * @since 12
26461847f8eSopenharmony_ci */
26561847f8eSopenharmony_ciexport interface Mesh extends SceneResource {
26661847f8eSopenharmony_ci  /**
26761847f8eSopenharmony_ci   * The sub meshes of the mesh.
26861847f8eSopenharmony_ci   *
26961847f8eSopenharmony_ci   * @type { SubMesh[] }
27061847f8eSopenharmony_ci   * @readonly
27161847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
27261847f8eSopenharmony_ci   * @since 12
27361847f8eSopenharmony_ci   */
27461847f8eSopenharmony_ci  readonly subMeshes: SubMesh[];
27561847f8eSopenharmony_ci
27661847f8eSopenharmony_ci  /**
27761847f8eSopenharmony_ci   * The axis aligned bounding box of the mesh.
27861847f8eSopenharmony_ci   *
27961847f8eSopenharmony_ci   * @type { Aabb }
28061847f8eSopenharmony_ci   * readonly
28161847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
28261847f8eSopenharmony_ci   * @since 12
28361847f8eSopenharmony_ci   */
28461847f8eSopenharmony_ci  readonly aabb: Aabb;
28561847f8eSopenharmony_ci
28661847f8eSopenharmony_ci  /**
28761847f8eSopenharmony_ci   * The material override sub mesh's material.
28861847f8eSopenharmony_ci   *
28961847f8eSopenharmony_ci   * @type { ?Material }
29061847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
29161847f8eSopenharmony_ci   * @since 12
29261847f8eSopenharmony_ci   */
29361847f8eSopenharmony_ci  materialOverride?: Material;
29461847f8eSopenharmony_ci}
29561847f8eSopenharmony_ci
29661847f8eSopenharmony_ci/**
29761847f8eSopenharmony_ci * Animation resource.
29861847f8eSopenharmony_ci *
29961847f8eSopenharmony_ci * @interface Animation
30061847f8eSopenharmony_ci * @extends SceneResource
30161847f8eSopenharmony_ci * @syscap SystemCapability.ArkUi.Graphics3D
30261847f8eSopenharmony_ci * @since 12
30361847f8eSopenharmony_ci */
30461847f8eSopenharmony_ciexport interface Animation extends SceneResource {
30561847f8eSopenharmony_ci  /**
30661847f8eSopenharmony_ci   * The animation is enabled.
30761847f8eSopenharmony_ci   *
30861847f8eSopenharmony_ci   * @type { boolean }
30961847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
31061847f8eSopenharmony_ci   * @since 12
31161847f8eSopenharmony_ci   */
31261847f8eSopenharmony_ci  enabled: boolean;
31361847f8eSopenharmony_ci
31461847f8eSopenharmony_ci  /**
31561847f8eSopenharmony_ci   * The duration of the animation.
31661847f8eSopenharmony_ci   *
31761847f8eSopenharmony_ci   * @type { number }
31861847f8eSopenharmony_ci   * @readonly
31961847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
32061847f8eSopenharmony_ci   * @since 12
32161847f8eSopenharmony_ci   */
32261847f8eSopenharmony_ci  readonly duration: number;
32361847f8eSopenharmony_ci
32461847f8eSopenharmony_ci  /**
32561847f8eSopenharmony_ci   * Whether the animation is running.
32661847f8eSopenharmony_ci   *
32761847f8eSopenharmony_ci   * @type { boolean }
32861847f8eSopenharmony_ci   * @readonly
32961847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
33061847f8eSopenharmony_ci   * @since 12
33161847f8eSopenharmony_ci   */
33261847f8eSopenharmony_ci  readonly running: boolean;
33361847f8eSopenharmony_ci
33461847f8eSopenharmony_ci  /**
33561847f8eSopenharmony_ci   * The progress of the animation between 0~1.
33661847f8eSopenharmony_ci   *
33761847f8eSopenharmony_ci   * @type { number }
33861847f8eSopenharmony_ci   * @readonly
33961847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
34061847f8eSopenharmony_ci   * @since 12
34161847f8eSopenharmony_ci   */
34261847f8eSopenharmony_ci  readonly progress: number;
34361847f8eSopenharmony_ci
34461847f8eSopenharmony_ci  /**
34561847f8eSopenharmony_ci   * Register a callback when animation finished.
34661847f8eSopenharmony_ci   *
34761847f8eSopenharmony_ci   * @param { Callback<void> } callback - the callback invoked when animation finished
34861847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
34961847f8eSopenharmony_ci   * @since 12
35061847f8eSopenharmony_ci   */
35161847f8eSopenharmony_ci  onFinished(callback: Callback<void>): void;
35261847f8eSopenharmony_ci
35361847f8eSopenharmony_ci  /**
35461847f8eSopenharmony_ci   * Register a callback when animation started.
35561847f8eSopenharmony_ci   *
35661847f8eSopenharmony_ci   * @param { Callback<void> } callback - the callback invoked when animation started
35761847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
35861847f8eSopenharmony_ci   * @since 12
35961847f8eSopenharmony_ci   */
36061847f8eSopenharmony_ci  onStarted(callback: Callback<void>): void;
36161847f8eSopenharmony_ci
36261847f8eSopenharmony_ci  /**
36361847f8eSopenharmony_ci   * Pause the animation.
36461847f8eSopenharmony_ci   *
36561847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
36661847f8eSopenharmony_ci   * @since 12
36761847f8eSopenharmony_ci   */
36861847f8eSopenharmony_ci  pause(): void;
36961847f8eSopenharmony_ci
37061847f8eSopenharmony_ci  /**
37161847f8eSopenharmony_ci   * Restart the animation.
37261847f8eSopenharmony_ci   *
37361847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
37461847f8eSopenharmony_ci   * @since 12
37561847f8eSopenharmony_ci   */
37661847f8eSopenharmony_ci  restart(): void;
37761847f8eSopenharmony_ci
37861847f8eSopenharmony_ci  /**
37961847f8eSopenharmony_ci   * Seek the animation to the position.
38061847f8eSopenharmony_ci   *
38161847f8eSopenharmony_ci   * @param { number } position - the position seek between 0~1
38261847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
38361847f8eSopenharmony_ci   * @since 12
38461847f8eSopenharmony_ci   */
38561847f8eSopenharmony_ci  seek(position: number): void;
38661847f8eSopenharmony_ci
38761847f8eSopenharmony_ci  /**
38861847f8eSopenharmony_ci   * Start the animation.
38961847f8eSopenharmony_ci   *
39061847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
39161847f8eSopenharmony_ci   * @since 12
39261847f8eSopenharmony_ci   */
39361847f8eSopenharmony_ci  start(): void;
39461847f8eSopenharmony_ci
39561847f8eSopenharmony_ci  /**
39661847f8eSopenharmony_ci   * Stop the animation and seek the position to the beginning.
39761847f8eSopenharmony_ci   *
39861847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
39961847f8eSopenharmony_ci   * @since 12
40061847f8eSopenharmony_ci   */
40161847f8eSopenharmony_ci  stop(): void;
40261847f8eSopenharmony_ci
40361847f8eSopenharmony_ci  /**
40461847f8eSopenharmony_ci   * Finish the animation and seek the position to the end.
40561847f8eSopenharmony_ci   *
40661847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
40761847f8eSopenharmony_ci   * @since 12
40861847f8eSopenharmony_ci   */
40961847f8eSopenharmony_ci  finish(): void;
41061847f8eSopenharmony_ci}
41161847f8eSopenharmony_ci
41261847f8eSopenharmony_ci/**
41361847f8eSopenharmony_ci * The enum of environment background type.
41461847f8eSopenharmony_ci * @enum { number }
41561847f8eSopenharmony_ci * @syscap SystemCapability.ArkUi.Graphics3D
41661847f8eSopenharmony_ci * @since 12
41761847f8eSopenharmony_ci */
41861847f8eSopenharmony_ciexport enum EnvironmentBackgroundType {
41961847f8eSopenharmony_ci  /**
42061847f8eSopenharmony_ci   * The background is none.
42161847f8eSopenharmony_ci   *
42261847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
42361847f8eSopenharmony_ci   * @since 12
42461847f8eSopenharmony_ci   */
42561847f8eSopenharmony_ci  BACKGROUND_NONE = 0,
42661847f8eSopenharmony_ci
42761847f8eSopenharmony_ci  /**
42861847f8eSopenharmony_ci   * The background is image.
42961847f8eSopenharmony_ci   *
43061847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
43161847f8eSopenharmony_ci   * @since 12
43261847f8eSopenharmony_ci   */
43361847f8eSopenharmony_ci  BACKGROUND_IMAGE = 1,
43461847f8eSopenharmony_ci
43561847f8eSopenharmony_ci  /**
43661847f8eSopenharmony_ci   * The background is cubemap.
43761847f8eSopenharmony_ci   *
43861847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
43961847f8eSopenharmony_ci   * @since 12
44061847f8eSopenharmony_ci   */
44161847f8eSopenharmony_ci  BACKGROUND_CUBEMAP = 2,
44261847f8eSopenharmony_ci
44361847f8eSopenharmony_ci  /**
44461847f8eSopenharmony_ci   * The background is equirectangular.
44561847f8eSopenharmony_ci   *
44661847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
44761847f8eSopenharmony_ci   * @since 12
44861847f8eSopenharmony_ci   */
44961847f8eSopenharmony_ci  BACKGROUND_EQUIRECTANGULAR = 3,
45061847f8eSopenharmony_ci}
45161847f8eSopenharmony_ci
45261847f8eSopenharmony_ci/**
45361847f8eSopenharmony_ci * Environment resource.
45461847f8eSopenharmony_ci *
45561847f8eSopenharmony_ci * @interface Environment
45661847f8eSopenharmony_ci * @extends SceneResource
45761847f8eSopenharmony_ci * @syscap SystemCapability.ArkUi.Graphics3D
45861847f8eSopenharmony_ci * @since 12
45961847f8eSopenharmony_ci */
46061847f8eSopenharmony_ciexport interface Environment extends SceneResource {
46161847f8eSopenharmony_ci  /**
46261847f8eSopenharmony_ci   * The background type of the environment.
46361847f8eSopenharmony_ci   *
46461847f8eSopenharmony_ci   * @type { EnvironmentBackgroundType }
46561847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
46661847f8eSopenharmony_ci   * @since 12
46761847f8eSopenharmony_ci   */
46861847f8eSopenharmony_ci  backgroundType: EnvironmentBackgroundType;
46961847f8eSopenharmony_ci
47061847f8eSopenharmony_ci  /**
47161847f8eSopenharmony_ci   * The indirect diffuse factor of the environment.
47261847f8eSopenharmony_ci   *
47361847f8eSopenharmony_ci   * @type { Vec4 }
47461847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
47561847f8eSopenharmony_ci   * @since 12
47661847f8eSopenharmony_ci   */
47761847f8eSopenharmony_ci  indirectDiffuseFactor: Vec4;
47861847f8eSopenharmony_ci
47961847f8eSopenharmony_ci  /**
48061847f8eSopenharmony_ci   * The indirect specular factor of the environment.
48161847f8eSopenharmony_ci   *
48261847f8eSopenharmony_ci   * @type { Vec4 }
48361847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
48461847f8eSopenharmony_ci   * @since 12
48561847f8eSopenharmony_ci   */
48661847f8eSopenharmony_ci  indirectSpecularFactor: Vec4;
48761847f8eSopenharmony_ci
48861847f8eSopenharmony_ci  /**
48961847f8eSopenharmony_ci   * The environment map factor of the environment.
49061847f8eSopenharmony_ci   *
49161847f8eSopenharmony_ci   * @type { Vec4 }
49261847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
49361847f8eSopenharmony_ci   * @since 12
49461847f8eSopenharmony_ci   */
49561847f8eSopenharmony_ci  environmentMapFactor: Vec4;
49661847f8eSopenharmony_ci
49761847f8eSopenharmony_ci  /**
49861847f8eSopenharmony_ci   * The environment image of the environment.
49961847f8eSopenharmony_ci   *
50061847f8eSopenharmony_ci   * @type { ?(Image | null) }
50161847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
50261847f8eSopenharmony_ci   * @since 12
50361847f8eSopenharmony_ci   */
50461847f8eSopenharmony_ci  environmentImage?: Image | null;
50561847f8eSopenharmony_ci
50661847f8eSopenharmony_ci  /**
50761847f8eSopenharmony_ci   * The radiance image of the environment.
50861847f8eSopenharmony_ci   *
50961847f8eSopenharmony_ci   * @type { ?(Image | null) }
51061847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
51161847f8eSopenharmony_ci   * @since 12
51261847f8eSopenharmony_ci   */
51361847f8eSopenharmony_ci  radianceImage?: Image | null;
51461847f8eSopenharmony_ci
51561847f8eSopenharmony_ci  /**
51661847f8eSopenharmony_ci   * The irradiance coefficients (array of nine Vec3).
51761847f8eSopenharmony_ci   *
51861847f8eSopenharmony_ci   * @type { ?Vec3[] }
51961847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
52061847f8eSopenharmony_ci   * @since 12
52161847f8eSopenharmony_ci   */
52261847f8eSopenharmony_ci  irradianceCoefficients?: Vec3[];
52361847f8eSopenharmony_ci}
52461847f8eSopenharmony_ci
52561847f8eSopenharmony_ci/**
52661847f8eSopenharmony_ci * Image resource.
52761847f8eSopenharmony_ci *
52861847f8eSopenharmony_ci * @interface Image
52961847f8eSopenharmony_ci * @extends SceneResource
53061847f8eSopenharmony_ci * @syscap SystemCapability.ArkUi.Graphics3D
53161847f8eSopenharmony_ci * @since 12
53261847f8eSopenharmony_ci */
53361847f8eSopenharmony_ciexport interface Image extends SceneResource {
53461847f8eSopenharmony_ci  /**
53561847f8eSopenharmony_ci   * The width of the image.
53661847f8eSopenharmony_ci   *
53761847f8eSopenharmony_ci   * @type { number }
53861847f8eSopenharmony_ci   * @readonly
53961847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
54061847f8eSopenharmony_ci   * @since 12
54161847f8eSopenharmony_ci   */
54261847f8eSopenharmony_ci  readonly width: number;
54361847f8eSopenharmony_ci
54461847f8eSopenharmony_ci  /**
54561847f8eSopenharmony_ci   * The height of the image.
54661847f8eSopenharmony_ci   *
54761847f8eSopenharmony_ci   * @type { number }
54861847f8eSopenharmony_ci   * @readonly
54961847f8eSopenharmony_ci   * @syscap SystemCapability.ArkUi.Graphics3D
55061847f8eSopenharmony_ci   * @since 12
55161847f8eSopenharmony_ci   */
55261847f8eSopenharmony_ci  readonly height: number;
55361847f8eSopenharmony_ci}
554