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