/*
* Copyright (c) 2026 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
struct [[ge::params(type=SDF_EDGE_LIGHT_EFFECT, name="SDFEdgeLightEffect")]] GESDFEdgeLightEffectParams {
[[ge::prop(name="SDFEdgeLightEffect_SpreadFactor", min=0.0f, max=4096.0f)]]
float sdfSpreadFactor = 64.0f;
[[ge::prop(name="SDFEdgeLightEffect_BloomIntensityCutoff", min=0.0f, max=1.0f)]]
float bloomIntensityCutoff = 0.1f;
[[ge::prop(name="SDFEdgeLightEffect_LightMaxIntensity", min=0.0f, max=4096.0f)]]
float maxIntensity = 1.0f;
[[ge::prop(name="SDFEdgeLightEffect_MaxBloomIntensity", min=0.0f, max=4096.0f)]]
float maxBloomIntensity = 1.0f;
[[ge::prop(name="SDFEdgeLightEffect_BloomFalloffPow", min=0.0f, max=4096.0f)]]
float bloomFalloffPow = 2.0f;
[[ge::prop(name="SDFEdgeLightEffect_MinBorderWidth", min=0.0f, max=4096.0f)]]
float minBorderWidth = 2.0f;
[[ge::prop(name="SDFEdgeLightEffect_MaxBorderWidth", min=0.0f, max=4096.0f)]]
float maxBorderWidth = 5.0f;
[[ge::prop(name="SDFEdgeLightEffect_InnerBorderBloomWidth", min=0.0f, max=4096.0f)]]
float innerBorderBloomWidth = 30.0f;
[[ge::prop(name="SDFEdgeLightEffect_OuterBorderBloomWidth", min=0.0f, max=4096.0f)]]
float outerBorderBloomWidth = 30.0f;
[[ge::prop(name="SDFEdgeLightEffect_Color", min={0.0f, 0.0f, 0.0f}, max={1.0f, 1.0f, 1.0f})]]
Vector3f color = Vector3f(1.0f, 1.0f, 1.0f);
[[ge::prop("SDFEdgeLightEffect_SDFImage")]]
std::shared_ptr<Drawing::Image> sdfImage;
[[ge::prop("SDFEdgeLightEffect_LightMask")]]
std::shared_ptr<GEShaderMask> lightMask;
[[ge::prop(name="SDFEdgeLightEffect_SDFShape", cast_from="std::shared_ptr<GEShaderShape>")]]
std::shared_ptr<Drawing::GESDFShaderShape> sdfShape;
};