1 /* 2 * Copyright (C) 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 #ifndef OHOS_RENDER_3D_ENVIRONMENTJS_H 17 #define OHOS_RENDER_3D_ENVIRONMENTJS_H 18 #include "BaseObjectJS.h" 19 #include "SceneResourceImpl.h" 20 #include "Vec4Proxy.h" 21 class EnvironmentJS : public BaseObject<EnvironmentJS>, SceneResourceImpl { 22 public: 23 static constexpr uint32_t ID = 90; 24 static void Init(napi_env env, napi_value exports); 25 26 EnvironmentJS(napi_env, napi_callback_info); 27 ~EnvironmentJS() override; 28 void* GetInstanceImpl(uint32_t id) override; 29 30 private: 31 napi_value Dispose(NapiApi::FunctionContext<>& ctx); 32 void DisposeNative() override; 33 void Finalize(napi_env env) override; 34 // JS properties 35 enum EnvironmentBackgroundType { 36 /** 37 * The background is none. 38 * 39 * @syscap SystemCapability.ArkUi.Graphics3D 40 * @since 12 41 */ 42 BACKGROUND_NONE = 0, 43 44 /** 45 * The background is image. 46 * 47 * @syscap SystemCapability.ArkUi.Graphics3D 48 * @since 12 49 */ 50 BACKGROUND_IMAGE = 1, 51 52 /** 53 * The background is cubmap. 54 * 55 * @syscap SystemCapability.ArkUi.Graphics3D 56 * @since 12 57 */ 58 BACKGROUND_CUBEMAP = 2, 59 60 /** 61 * The background is equirectangular. 62 * 63 * @syscap SystemCapability.ArkUi.Graphics3D 64 * @since 12 65 */ 66 BACKGROUND_EQUIRECTANGULAR = 3, 67 }; 68 69 napi_value GetBackgroundType(NapiApi::FunctionContext<>& ctx); 70 void SetBackgroundType(NapiApi::FunctionContext<uint32_t>& ctx); 71 napi_value GetEnvironmentImage(NapiApi::FunctionContext<>& ctx); 72 void SetEnvironmentImage(NapiApi::FunctionContext<NapiApi::Object>& ctx); 73 napi_value GetRadianceImage(NapiApi::FunctionContext<>& ctx); 74 void SetRadianceImage(NapiApi::FunctionContext<NapiApi::Object>& ctx); 75 napi_value GetIrradianceCoefficients(NapiApi::FunctionContext<>& ctx); 76 void SetIrradianceCoefficients(NapiApi::FunctionContext<NapiApi::Array>& ctx); 77 78 napi_value GetIndirectDiffuseFactor(NapiApi::FunctionContext<>& ctx); 79 void SetIndirectDiffuseFactor(NapiApi::FunctionContext<NapiApi::Object>& ctx); 80 81 napi_value GetIndirectSpecularFactor(NapiApi::FunctionContext<>& ctx); 82 void SetIndirectSpecularFactor(NapiApi::FunctionContext<NapiApi::Object>& ctx); 83 84 napi_value GetEnvironmentMapFactor(NapiApi::FunctionContext<>& ctx); 85 void SetEnvironmentMapFactor(NapiApi::FunctionContext<NapiApi::Object>& ctx); 86 BASE_NS::unique_ptr<Vec4Proxy> diffuseFactor_; 87 BASE_NS::unique_ptr<Vec4Proxy> specularFactor_; 88 BASE_NS::unique_ptr<Vec4Proxy> environmentFactor_; 89 90 // weak reference to the owning scene. 91 }; 92 #endif // OHOS_RENDER_3D_ENVIRONMENTJS_H