• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (c) 2024-2024 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16/**
17 * @file Defines 3D resource related interfaces
18 * @kit ArkGraphics3D
19 */
20
21import { Vec2, Vec3, Vec4, Aabb } from './SceneTypes';
22import { Callback } from '../@ohos.base';
23
24/**
25 * The enum of SceneResource type.
26 *
27 * @enum { number }
28 * @syscap SystemCapability.ArkUi.Graphics3D
29 * @since 12
30 */
31export enum SceneResourceType {
32  /**
33   * The resource is an Unknown.
34   *
35   * @syscap SystemCapability.ArkUi.Graphics3D
36   * @since 12
37   */
38  UNKNOWN = 0,
39
40  /**
41   * The resource is a Node.
42   *
43   * @syscap SystemCapability.ArkUi.Graphics3D
44   * @since 12
45   */
46  NODE = 1,
47
48  /**
49   * The resource is an Environment.
50   *
51   * @syscap SystemCapability.ArkUi.Graphics3D
52   * @since 12
53   */
54  ENVIRONMENT = 2,
55
56  /**
57   * The resource is a Material.
58   *
59   * @syscap SystemCapability.ArkUi.Graphics3D
60   * @since 12
61   */
62  MATERIAL = 3,
63
64  /**
65   * The resource is a Mesh.
66   *
67   * @syscap SystemCapability.ArkUi.Graphics3D
68   * @since 12
69   */
70  MESH = 4,
71
72  /**
73   * The resource is an Animation.
74   *
75   * @syscap SystemCapability.ArkUi.Graphics3D
76   * @since 12
77   */
78  ANIMATION = 5,
79
80  /**
81   * The resource is a Shader.
82   *
83   * @syscap SystemCapability.ArkUi.Graphics3D
84   * @since 12
85   */
86  SHADER = 6,
87
88  /**
89   * The resource is an Image.
90   *
91   * @syscap SystemCapability.ArkUi.Graphics3D
92   * @since 12
93   */
94  IMAGE = 7,
95
96  /**
97   * The resource is a mesh resource
98   *
99   * @syscap SystemCapability.ArkUi.Graphics3D
100   * @since 18
101   */
102  MESH_RESOURCE = 8,
103}
104
105/**
106 * Define scene resource extended by other 3d resource.
107 *
108 * @interface SceneResource
109 * @syscap SystemCapability.ArkUi.Graphics3D
110 * @since 12
111 */
112export interface SceneResource {
113  /**
114   * Scene resource name.
115   *
116   * @type { string }
117   * @syscap SystemCapability.ArkUi.Graphics3D
118   * @since 12
119   */
120  name: string;
121
122  /**
123   * Scene resource type.
124   *
125   * @type { SceneResourceType }
126   * @readonly
127   * @syscap SystemCapability.ArkUi.Graphics3D
128   * @since 12
129   */
130  readonly resourceType: SceneResourceType;
131
132  /**
133   * Scene resource uri.
134   *
135   * @type { ?ResourceStr }
136   * @readonly
137   * @syscap SystemCapability.ArkUi.Graphics3D
138   * @since 12
139   */
140  readonly uri?: ResourceStr;
141
142
143  /**
144   * Release scene resource.
145   *
146   * @syscap SystemCapability.ArkUi.Graphics3D
147   * @since 12
148   */
149  destroy(): void;
150}
151
152/**
153 * Shader resource.
154 *
155 * @extends SceneResource
156 * @interface Shader
157 * @syscap SystemCapability.ArkUi.Graphics3D
158 * @since 12
159 */
160export interface Shader extends SceneResource {
161  /**
162   * Shader inputs.
163   *
164   * @type { Record<string, number | Vec2 | Vec3 | Vec4 | Image> }
165   * @readonly
166   * @syscap SystemCapability.ArkUi.Graphics3D
167   * @since 12
168   */
169  readonly inputs: Record<string, number | Vec2 | Vec3 | Vec4 | Image>;
170}
171
172/**
173 * The enum of material type.
174 *
175 * @enum { number }
176 * @syscap SystemCapability.ArkUi.Graphics3D
177 * @since 12
178 */
179export enum MaterialType {
180  /**
181   * The material type is a Shader.
182   *
183   * @syscap SystemCapability.ArkUi.Graphics3D
184   * @since 12
185   */
186  SHADER = 1,
187
188  /**
189   * The material is a physically-based metallic roughness material.
190   *
191   * @syscap SystemCapability.ArkUi.Graphics3D
192   * @since 20
193   */
194  METALLIC_ROUGHNESS = 2,
195}
196
197/**
198 * The enum of PBR material cull mode.
199 *
200 * @enum { number }
201 * @syscap SystemCapability.ArkUi.Graphics3D
202 * @since 20
203 */
204export enum CullMode {
205  /**
206   * Disable culling.
207   *
208   * @syscap SystemCapability.ArkUi.Graphics3D
209   * @since 20
210   */
211  NONE = 0,
212
213  /**
214   * Front face culling.
215   *
216   * @syscap SystemCapability.ArkUi.Graphics3D
217   * @since 20
218   */
219  FRONT = 1,
220
221  /**
222   * Back face culling.
223   *
224   * @syscap SystemCapability.ArkUi.Graphics3D
225   * @since 20
226   */
227  BACK = 2
228}
229
230/**
231 * Blend interface.
232 *
233 * @interface Blend
234 * @syscap SystemCapability.ArkUi.Graphics3D
235 * @since 20
236 */
237export interface Blend {
238  /**
239   * Control whether blending is enabled
240   *
241   * @type { boolean }
242   * @syscap SystemCapability.ArkUi.Graphics3D
243   * @since 20
244   */
245  enabled: boolean;
246}
247
248/**
249 * Render sort Layer. Within a render slot a layer can define a sort layer order.
250 * There are 0-63 values available (0 first, 63 last). Default id value is 32.
251 * 1. Typical use case is to set render sort layer to objects which render with depth test without depth write.
252 * 2. Typical use case is to always render character and/or camera object first to cull large parts of the view.
253 * 3. Sort e.g. plane layers.
254 *
255 * @interface RenderSort
256 * @syscap SystemCapability.ArkUi.Graphics3D
257 * @since 20
258 */
259export interface RenderSort {
260  /**
261   * Sort layer used sorting submeshes in rendering in render slots.
262   * Valid values are 0 - 63.
263   *
264   * @type { ?number }
265   * @default 32 Default render sort layer id.
266   * @syscap SystemCapability.ArkUi.Graphics3D
267   * @since 20
268   */
269  renderSortLayer?: number;
270
271  /**
272   * Sort layer order to describe fine order within sort layer.
273   * Valid values are 0 - 255.
274   *
275   * @type { ?number }
276   * @default 0 Default render sort layer order.
277   * @syscap SystemCapability.ArkUi.Graphics3D
278   * @since 20
279   */
280  renderSortLayerOrder?: number;
281}
282
283/**
284 * Material resource.
285 *
286 * @extends SceneResource
287 * @interface Material
288 * @syscap SystemCapability.ArkUi.Graphics3D
289 * @since 12
290 */
291export interface Material extends SceneResource {
292  /**
293   * Material resource type.
294   *
295   * @type { MaterialType }
296   * @readonly
297   * @syscap SystemCapability.ArkUi.Graphics3D
298   * @since 12
299   */
300  readonly materialType: MaterialType;
301
302  /**
303   * Defines if the material can receive shadows.
304   *
305   * @type { ?boolean }
306   * @syscap SystemCapability.ArkUi.Graphics3D
307   * @since 20
308   */
309  shadowReceiver?: boolean;
310
311  /**
312   * Culling mode.
313   *
314   * @type { ?CullMode }
315   * @syscap SystemCapability.ArkUi.Graphics3D
316   * @since 20
317   */
318  cullMode?: CullMode;
319
320  /**
321   * Control whether the blend is enabled
322   *
323   * @type { ?Blend }
324   * @default undefined, which means that blending is disabled.
325   * @syscap SystemCapability.ArkUi.Graphics3D
326   * @since 20
327   */
328  blend?: Blend;
329
330  /**
331   * Alpha cutoff value [0,1]. Enabled if < 1.
332   *
333   * @type { ?number }
334   * @syscap SystemCapability.ArkUi.Graphics3D
335   * @since 20
336   */
337  alphaCutoff?: number;
338
339  /**
340   * Render sorting priority for layers.
341   *
342   * @type { ?RenderSort }
343   * @syscap SystemCapability.ArkUi.Graphics3D
344   * @since 20
345   */
346  renderSort?: RenderSort;
347}
348
349/**
350 * Material property interface.
351 *
352 * @interface MaterialProperty
353 * @syscap SystemCapability.ArkUi.Graphics3D
354 * @since 20
355 */
356export interface MaterialProperty {
357  /**
358   * Texture to use. If undefined, factor defines the diffuse color.
359   *
360   * @type { Image | null }
361   * @syscap SystemCapability.ArkUi.Graphics3D
362   * @since 20
363   */
364  image: Image | null;
365
366  /**
367   * Texture coefficient. Default is {1,1,1,1}, meaning no effect.
368   *
369   * @type { Vec4 }
370   * @syscap SystemCapability.ArkUi.Graphics3D
371   * @since 20
372   */
373  factor: Vec4;
374
375  /**
376   * Texture Sampler.
377   *
378   * @type { ?Sampler }
379   * @syscap SystemCapability.ArkUi.Graphics3D
380   * @since 20
381   */
382  sampler?: Sampler;
383}
384
385/**
386 * Physically-based metallic roughness material resource.
387 *
388 * @extends Material
389 * @interface MetallicRoughnessMaterial
390 * @syscap SystemCapability.ArkUi.Graphics3D
391 * @since 20
392 */
393export interface MetallicRoughnessMaterial extends Material {
394  /**
395   * Base color factor of PBR material.
396   * Value of factor.xyzw defines rgba color.
397   *
398   * @type { MaterialProperty }
399   * @syscap SystemCapability.ArkUi.Graphics3D
400   * @since 20
401   */
402  baseColor: MaterialProperty;
403
404  /**
405   * Normal factor of PBR material.
406   * Value of factor.x defines normal scale.
407   *
408   * @type { MaterialProperty }
409   * @syscap SystemCapability.ArkUi.Graphics3D
410   * @since 20
411   */
412  normal: MaterialProperty;
413
414  /**
415   * Metallic roughness material parameters.
416   * Value of factor.y defines roughness, factor.z defines metallic and factor.a defines reflectance.
417   *
418   * @type { MaterialProperty }
419   * @syscap SystemCapability.ArkUi.Graphics3D
420   * @since 20
421   */
422  material: MaterialProperty;
423
424  /**
425   * Ambient occlusion of PBR material.
426   * Value of factor.x defines ambient occlusion factor.
427   *
428   * @type { MaterialProperty }
429   * @syscap SystemCapability.ArkUi.Graphics3D
430   * @since 20
431   */
432  ambientOcclusion: MaterialProperty;
433
434  /**
435   * Emissive property of PBR material.
436   *
437   * @type { MaterialProperty }
438   * @syscap SystemCapability.ArkUi.Graphics3D
439   * @since 20
440   */
441  emissive: MaterialProperty;
442
443  /**
444   * Clearcoat intensity.
445   * Value of factor.x defines clearcoat layer intensity.
446   *
447   * @type { MaterialProperty }
448   * @syscap SystemCapability.ArkUi.Graphics3D
449   * @since 20
450   */
451  clearCoat: MaterialProperty;
452
453  /**
454   * Clearcoat roughness.
455   * Value of factor.y defines clearcoat layer roughness.
456   *
457   * @type { MaterialProperty }
458   * @syscap SystemCapability.ArkUi.Graphics3D
459   * @since 20
460   */
461  clearCoatRoughness: MaterialProperty;
462
463  /**
464   * Clearcoat normal.
465   * Value of factor.xyz defines RGB clearcoat normal scale.
466   *
467   * @type { MaterialProperty }
468   * @syscap SystemCapability.ArkUi.Graphics3D
469   * @since 20
470   */
471  clearCoatNormal: MaterialProperty;
472
473  /**
474   * Sheen color of PBR material.
475   * Value of factor.xyz defines RGB sheen color,
476   * Value of factor.w defines sheen roughness.
477   *
478   * @type { MaterialProperty }
479   * @syscap SystemCapability.ArkUi.Graphics3D
480   * @since 20
481   */
482  sheen: MaterialProperty;
483
484  /**
485   * Specular color of PBR material.
486   * Value of factor.xyz defines RGB specular color,
487   * Value of factor.w defines specular intensity.
488   *
489   * @type { MaterialProperty }
490   * @syscap SystemCapability.ArkUi.Graphics3D
491   * @since 20
492   */
493  specular: MaterialProperty;
494}
495
496/**
497 * Shader material resource.
498 *
499 * @extends Material
500 * @interface ShaderMaterial
501 * @syscap SystemCapability.ArkUi.Graphics3D
502 * @since 12
503 */
504export interface ShaderMaterial extends Material {
505  /**
506   * Color shader of material.
507   *
508   * @type { ?Shader }
509   * @syscap SystemCapability.ArkUi.Graphics3D
510   * @since 12
511   */
512  colorShader?: Shader;
513}
514
515/**
516 * Sampler filter Mode
517 *
518 * @enum { number }
519 * @syscap SystemCapability.ArkUi.Graphics3D
520 * @since 20
521 */
522export enum SamplerFilter {
523  /**
524   * Use nearest filtering
525   *
526   * @syscap SystemCapability.ArkUi.Graphics3D
527   * @since 20
528   */
529  NEAREST = 0,
530  /**
531   * Use linear filtering
532   *
533   * @syscap SystemCapability.ArkUi.Graphics3D
534   * @since 20
535   */
536  LINEAR = 1,
537}
538
539/**
540 * Addressing mode for Sampler
541 *
542 * @enum { number }
543 * @syscap SystemCapability.ArkUi.Graphics3D
544 * @since 20
545 */
546export enum SamplerAddressMode {
547  /**
548   * Repeat
549   *
550   * @syscap SystemCapability.ArkUi.Graphics3D
551   * @since 20
552   */
553  REPEAT = 0,
554
555  /**
556   * Mirrored repeat
557   *
558   * @syscap SystemCapability.ArkUi.Graphics3D
559   * @since 20
560   */
561  MIRRORED_REPEAT = 1,
562
563  /**
564   * clamp to edge
565   *
566   * @syscap SystemCapability.ArkUi.Graphics3D
567   * @since 20
568   */
569  CLAMP_TO_EDGE = 2,
570}
571
572/**
573 * Sampler interface
574 *
575 * @interface { Sampler }
576 * @syscap SystemCapability.ArkUi.Graphics3D
577 * @since 20
578 */
579export interface Sampler {
580  /**
581   * Mag filter
582   *
583   * @type { ?SamplerFilter }
584   * @syscap SystemCapability.ArkUi.Graphics3D
585   * @since 20
586   */
587  magFilter?: SamplerFilter;
588
589  /**
590   * Min filter
591   *
592   * @type { ?SamplerFilter }
593   * @syscap SystemCapability.ArkUi.Graphics3D
594   * @since 20
595   */
596  minFilter?: SamplerFilter;
597
598  /**
599   * Mip-map mode
600   *
601   * @type { ?SamplerFilter }
602   * @syscap SystemCapability.ArkUi.Graphics3D
603   * @since 20
604   */
605  mipMapMode?: SamplerFilter;
606
607  /**
608   * U addressing mode
609   *
610   * @type { ?SamplerAddressMode }
611   * @syscap SystemCapability.ArkUi.Graphics3D
612   * @since 20
613   */
614  addressModeU?: SamplerAddressMode;
615
616  /**
617   * V addressing mode
618   *
619   * @type { ?SamplerAddressMode }
620   * @syscap SystemCapability.ArkUi.Graphics3D
621   * @since 20
622   */
623  addressModeV?: SamplerAddressMode;
624}
625
626/**
627 * Sub mesh resource.
628 *
629 * @interface SubMesh
630 * @syscap SystemCapability.ArkUi.Graphics3D
631 * @since 12
632 */
633export interface SubMesh {
634  /**
635   * The name of the sub mesh.
636   *
637   * @type { string }
638   * @syscap SystemCapability.ArkUi.Graphics3D
639   * @since 12
640   */
641  name: string;
642
643  /**
644   * The material of the sub mesh.
645   *
646   * @type { Material }
647   * @syscap SystemCapability.ArkUi.Graphics3D
648   * @since 12
649   */
650  material: Material;
651
652  /**
653   * The axis aligned bounding box of the sub mesh.
654   *
655   * @type { Aabb }
656   * @readonly
657   * @syscap SystemCapability.ArkUi.Graphics3D
658   * @since 12
659   */
660  readonly aabb: Aabb;
661}
662
663/**
664 * Defines Morpher interface for specifying morph targets for Node's geometry.
665 *
666 * @interface Morpher
667 * @syscap SystemCapability.ArkUi.Graphics3D
668 * @since 20
669 */
670export interface Morpher {
671  /**
672   * Morph target names and weights
673   *
674   * @type { Record<string, number> }
675   * @readonly
676   * @syscap SystemCapability.ArkUi.Graphics3D
677   * @since 20
678   */
679  readonly targets: Record<string, number>;
680}
681
682/**
683 * Mesh resource.
684 *
685 * @extends SceneResource
686 * @interface Mesh
687 * @syscap SystemCapability.ArkUi.Graphics3D
688 * @since 12
689 */
690export interface Mesh extends SceneResource {
691  /**
692   * The sub meshes of the mesh.
693   *
694   * @type { SubMesh[] }
695   * @readonly
696   * @syscap SystemCapability.ArkUi.Graphics3D
697   * @since 12
698   */
699  readonly subMeshes: SubMesh[];
700
701  /**
702   * The axis aligned bounding box of the mesh.
703   *
704   * @type { Aabb }
705   * @readonly
706   * @syscap SystemCapability.ArkUi.Graphics3D
707   * @since 12
708   */
709  readonly aabb: Aabb;
710
711  /**
712   * The material override sub mesh's material.
713   *
714   * @type { ?Material }
715   * @syscap SystemCapability.ArkUi.Graphics3D
716   * @since 12
717   */
718  materialOverride?: Material;
719}
720
721/**
722 * Mesh resource.
723 *
724 *
725 * @extends SceneResource
726 * @interface MeshResource
727 * @syscap SystemCapability.ArkUi.Graphics3D
728 * @since 18
729 */
730export interface MeshResource extends SceneResource {
731}
732
733/**
734 * Animation resource.
735 *
736 * @extends SceneResource
737 * @interface Animation
738 * @syscap SystemCapability.ArkUi.Graphics3D
739 * @since 12
740 */
741export interface Animation extends SceneResource {
742  /**
743   * The animation is enabled.
744   *
745   * @type { boolean }
746   * @syscap SystemCapability.ArkUi.Graphics3D
747   * @since 12
748   */
749  enabled: boolean;
750
751  /**
752   * Animation speed factor
753   * A negative value runs the animation in reverse using the given speed factor
754   *
755   * @type { ?number }
756   * @syscap SystemCapability.ArkUi.Graphics3D
757   * @since 20
758   */
759  speed?: number;
760
761  /**
762   * The duration of the animation.
763   *
764   * @type { number }
765   * @readonly
766   * @syscap SystemCapability.ArkUi.Graphics3D
767   * @since 12
768   */
769  readonly duration: number;
770
771  /**
772   * Whether the animation is running.
773   *
774   * @type { boolean }
775   * @readonly
776   * @syscap SystemCapability.ArkUi.Graphics3D
777   * @since 12
778   */
779  readonly running: boolean;
780
781  /**
782   * The progress of the animation between 0~1.
783   *
784   * @type { number }
785   * @readonly
786   * @syscap SystemCapability.ArkUi.Graphics3D
787   * @since 12
788   */
789  readonly progress: number;
790
791  /**
792   * Register a callback when animation finished.
793   *
794   * @param { Callback<void> } callback - the callback invoked when animation finished
795   * @syscap SystemCapability.ArkUi.Graphics3D
796   * @since 12
797   */
798  onFinished(callback: Callback<void>): void;
799
800  /**
801   * Register a callback when animation started.
802   *
803   * @param { Callback<void> } callback - the callback invoked when animation started
804   * @syscap SystemCapability.ArkUi.Graphics3D
805   * @since 12
806   */
807  onStarted(callback: Callback<void>): void;
808
809  /**
810   * Pause the animation.
811   *
812   * @syscap SystemCapability.ArkUi.Graphics3D
813   * @since 12
814   */
815  pause(): void;
816
817  /**
818   * Restart the animation.
819   *
820   * @syscap SystemCapability.ArkUi.Graphics3D
821   * @since 12
822   */
823  restart(): void;
824
825  /**
826   * Seek the animation to the position.
827   *
828   * @param { number } position - the position seek between 0~1
829   * @syscap SystemCapability.ArkUi.Graphics3D
830   * @since 12
831   */
832  seek(position: number): void;
833
834  /**
835   * Start the animation.
836   *
837   * @syscap SystemCapability.ArkUi.Graphics3D
838   * @since 12
839   */
840  start(): void;
841
842  /**
843   * Stop the animation and seek the position to the beginning.
844   *
845   * @syscap SystemCapability.ArkUi.Graphics3D
846   * @since 12
847   */
848  stop(): void;
849
850  /**
851   * Finish the animation and seek the position to the end.
852   *
853   * @syscap SystemCapability.ArkUi.Graphics3D
854   * @since 12
855   */
856  finish(): void;
857}
858
859/**
860 * The enum of environment background type.
861 * @enum { number }
862 * @syscap SystemCapability.ArkUi.Graphics3D
863 * @since 12
864 */
865export enum EnvironmentBackgroundType {
866  /**
867   * The background is none.
868   *
869   * @syscap SystemCapability.ArkUi.Graphics3D
870   * @since 12
871   */
872  BACKGROUND_NONE = 0,
873
874  /**
875   * The background is image.
876   *
877   * @syscap SystemCapability.ArkUi.Graphics3D
878   * @since 12
879   */
880  BACKGROUND_IMAGE = 1,
881
882  /**
883   * The background is cubemap.
884   *
885   * @syscap SystemCapability.ArkUi.Graphics3D
886   * @since 12
887   */
888  BACKGROUND_CUBEMAP = 2,
889
890  /**
891   * The background is equirectangular.
892   *
893   * @syscap SystemCapability.ArkUi.Graphics3D
894   * @since 12
895   */
896  BACKGROUND_EQUIRECTANGULAR = 3,
897}
898
899/**
900 * Environment resource.
901 *
902 * @extends SceneResource
903 * @interface Environment
904 * @syscap SystemCapability.ArkUi.Graphics3D
905 * @since 12
906 */
907export interface Environment extends SceneResource {
908  /**
909   * The background type of the environment.
910   *
911   * @type { EnvironmentBackgroundType }
912   * @syscap SystemCapability.ArkUi.Graphics3D
913   * @since 12
914   */
915  backgroundType: EnvironmentBackgroundType;
916
917  /**
918   * The indirect diffuse factor of the environment.
919   *
920   * @type { Vec4 }
921   * @syscap SystemCapability.ArkUi.Graphics3D
922   * @since 12
923   */
924  indirectDiffuseFactor: Vec4;
925
926  /**
927   * The indirect specular factor of the environment.
928   *
929   * @type { Vec4 }
930   * @syscap SystemCapability.ArkUi.Graphics3D
931   * @since 12
932   */
933  indirectSpecularFactor: Vec4;
934
935  /**
936   * The environment map factor of the environment.
937   *
938   * @type { Vec4 }
939   * @syscap SystemCapability.ArkUi.Graphics3D
940   * @since 12
941   */
942  environmentMapFactor: Vec4;
943
944  /**
945   * The environment image of the environment.
946   *
947   * @type { ?(Image | null) }
948   * @syscap SystemCapability.ArkUi.Graphics3D
949   * @since 12
950   */
951  environmentImage?: Image | null;
952
953  /**
954   * The radiance image of the environment.
955   *
956   * @type { ?(Image | null) }
957   * @syscap SystemCapability.ArkUi.Graphics3D
958   * @since 12
959   */
960  radianceImage?: Image | null;
961
962  /**
963   * The irradiance coefficients (array of nine Vec3).
964   *
965   * @type { ?Vec3[] }
966   * @syscap SystemCapability.ArkUi.Graphics3D
967   * @since 12
968   */
969  irradianceCoefficients?: Vec3[];
970}
971
972/**
973 * Image resource.
974 *
975 * @extends SceneResource
976 * @interface Image
977 * @syscap SystemCapability.ArkUi.Graphics3D
978 * @since 12
979 */
980export interface Image extends SceneResource {
981  /**
982   * The width of the image.
983   *
984   * @type { number }
985   * @readonly
986   * @syscap SystemCapability.ArkUi.Graphics3D
987   * @since 12
988   */
989  readonly width: number;
990
991  /**
992   * The height of the image.
993   *
994   * @type { number }
995   * @readonly
996   * @syscap SystemCapability.ArkUi.Graphics3D
997   * @since 12
998   */
999  readonly height: number;
1000}
1001