GCC Code Coverage Report


ernie/
Coverage:
low: ≥ 0%
medium: ≥ 75.0%
high: ≥ 90.0%
Lines:
41 / 41
100.0%
Branches:
160 / 304
52.6%
Functions:
25 / 25
100.0%

scene/schema/lux.cpp
Line Branch Exec Source
1 // SPDX-License-Identifier: BSD-3-Clause
2 /// @file lux.cpp
3 /// @brief UsdLux's registry entries and the shaped lights' extents, as UsdLux computes them, and
4 /// the laser's: its emitter.
5 #include "ernie/scene/schema/lux.h"
6
7 #include <algorithm>
8
9 namespace ernie {
10 namespace {
11
12 /// Sphere and disk lights: their radius, in the xy plane for a disk.
13 3 template <bool kDisk> auto RadiusHalves(const ExtentRows& rows) {
14 3 return [radius = rows.Column<double>(SphereLight::kRadius)](std::uint32_t row) {
15 return glm::dvec3(radius[row], radius[row], kDisk ? 0.0 : radius[row]);
16 3 };
17 }
18
19 /// Rect and portal lights alike: their width and height in the xy plane.
20 2 auto RectHalves(const ExtentRows& rows) {
21 2 return [width = rows.Column<double>(RectLight::kWidth),
22 2 height = rows.Column<double>(RectLight::kHeight)](std::uint32_t row) {
23 2 return glm::dvec3(0.5 * width[row], 0.5 * height[row], 0.0);
24 2 };
25 }
26
27 1 auto CylinderLightHalves(const ExtentRows& rows) {
28 1 return [radius = rows.Column<double>(CylinderLight::kRadius),
29 1 length = rows.Column<double>(CylinderLight::kLength)](std::uint32_t row) {
30 1 return glm::dvec3(0.5 * length[row], radius[row], radius[row]);
31 1 };
32 }
33
34 /// A laser's emitter: the larger of its aperture and waist.
35 1 auto EmitterHalves(const ExtentRows& rows) {
36 1 return [aperture = rows.Column<double>(LaserLight::kApertureRadius),
37 1 waist = rows.Column<glm::dvec2>(LaserLight::kWaistRadius)](std::uint32_t row) {
38 1 const double radius = std::max({aperture[row], waist[row].x, waist[row].y});
39 1 return glm::dvec3(radius, radius, 0.0);
40 1 };
41 }
42
43 } // namespace
44
45 // LightAPI carries its light-linking collections, as USD's does: which prims a light lights and
46 // which cast its shadows, everything unless they say otherwise. Every light has it built in.
47
14/28
✓ Branch 0 taken 146 times.
✓ Branch 1 taken 7 times.
✓ Branch 3 taken 146 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 146 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 146 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 146 times.
✗ Branch 13 not taken.
✓ Branch 30 taken 146 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 146 times.
✗ Branch 34 not taken.
✓ Branch 36 taken 146 times.
✗ Branch 37 not taken.
✗ Branch 39 not taken.
✓ Branch 40 taken 146 times.
✓ Branch 43 taken 292 times.
✓ Branch 44 taken 146 times.
✓ Branch 46 taken 2628 times.
✓ Branch 47 taken 146 times.
✗ Branch 67 not taken.
✗ Branch 68 not taken.
✗ Branch 73 not taken.
✗ Branch 74 not taken.
✗ Branch 94 not taken.
✗ Branch 95 not taken.
5701 ERNIE_DEFINE_SCHEMA(LightAPI, SingleApply, kInheritExtent, ERNIE_LIGHT_API_ATTRIBUTES,
48 .builtinApis = {"CollectionAPI:lightLink", "CollectionAPI:shadowLink"},
49 .fallbackOverrides = {{"collection:lightLink:includeRoot", true},
50 {"collection:shadowLink:includeRoot", true}})
51
8/14
✓ Branch 0 taken 146 times.
✓ Branch 1 taken 876 times.
✓ Branch 3 taken 146 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 146 times.
✗ Branch 7 not taken.
✓ Branch 10 taken 146 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 146 times.
✗ Branch 14 not taken.
✓ Branch 17 taken 146 times.
✓ Branch 18 taken 146 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
1314 ERNIE_DEFINE_SCHEMA(BoundableLightBase, Abstract, kInheritExtent,
52 ERNIE_BOUNDABLE_LIGHT_BASE_ATTRIBUTES, .builtinApis = {"LightAPI"})
53
5/8
✓ Branch 0 taken 146 times.
✓ Branch 1 taken 438 times.
✓ Branch 3 taken 146 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 146 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 146 times.
✗ Branch 10 not taken.
584 ERNIE_DEFINE_SCHEMA(NonboundableLightBase, Abstract, kUnbounded, ERNIE_NO_ATTRIBUTES,
54 .builtinApis = {"LightAPI"})
55 // Emitting geometry: its LightAPI is built in, its material's glow tinting the light.
56
10/20
✓ Branch 0 taken 146 times.
✓ Branch 1 taken 3 times.
✓ Branch 3 taken 146 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 146 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 146 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 146 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 146 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 146 times.
✗ Branch 19 not taken.
✓ Branch 22 taken 292 times.
✓ Branch 23 taken 146 times.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
441 ERNIE_DEFINE_SCHEMA(MeshLightAPI, SingleApply, kInheritExtent, ERNIE_NO_ATTRIBUTES,
57 .builtinApis = {"LightAPI"},
58 .fallbackOverrides = {{"light:shaderId", "MeshLight"},
59 {"light:materialSyncMode", "materialGlowTintsLight"}},
60 .appliesTo = {"Mesh"})
61
10/20
✓ Branch 0 taken 146 times.
✓ Branch 1 taken 2 times.
✓ Branch 3 taken 146 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 146 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 146 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 146 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 146 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 146 times.
✗ Branch 19 not taken.
✓ Branch 22 taken 292 times.
✓ Branch 23 taken 146 times.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
440 ERNIE_DEFINE_SCHEMA(VolumeLightAPI, SingleApply, kInheritExtent, ERNIE_NO_ATTRIBUTES,
62 .builtinApis = {"LightAPI"},
63 .fallbackOverrides = {{"light:shaderId", "VolumeLight"},
64 {"light:materialSyncMode", "materialGlowTintsLight"}},
65 .appliesTo = {"Volume"})
66
10/18
✓ Branch 0 taken 146 times.
✓ Branch 1 taken 13 times.
✓ Branch 3 taken 146 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 146 times.
✗ Branch 7 not taken.
✓ Branch 11 taken 146 times.
✗ Branch 12 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 146 times.
✓ Branch 18 taken 146 times.
✓ Branch 19 taken 146 times.
✓ Branch 21 taken 292 times.
✓ Branch 22 taken 146 times.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 32 not taken.
✗ Branch 33 not taken.
889 ERNIE_DEFINE_SCHEMA(DistantLight, Concrete, kInheritExtent, ERNIE_DISTANT_LIGHT_ATTRIBUTES,
67 .fallbackOverrides = {{"inputs:intensity", 50000.0}})
68
7/12
✓ Branch 0 taken 146 times.
✓ Branch 1 taken 2 times.
✓ Branch 3 taken 146 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 146 times.
✗ Branch 7 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 146 times.
✓ Branch 14 taken 146 times.
✓ Branch 15 taken 146 times.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
440 ERNIE_DEFINE_SCHEMA(DiskLight, Concrete, ComputedExtent(CentredExtent<RadiusHalves<true>>),
69 ERNIE_DISK_LIGHT_ATTRIBUTES)
70
8/16
✓ Branch 0 taken 146 times.
✓ Branch 1 taken 2 times.
✓ Branch 3 taken 146 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 146 times.
✗ Branch 7 not taken.
✓ Branch 11 taken 146 times.
✗ Branch 12 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 146 times.
✓ Branch 18 taken 438 times.
✓ Branch 19 taken 146 times.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
1024 ERNIE_DEFINE_SCHEMA(RectLight, Concrete, ComputedExtent(CentredExtent<RectHalves>),
71 ERNIE_RECT_LIGHT_ATTRIBUTES)
72
7/12
✓ Branch 0 taken 146 times.
✓ Branch 1 taken 20 times.
✓ Branch 3 taken 146 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 146 times.
✗ Branch 7 not taken.
✗ Branch 11 not taken.
✓ Branch 12 taken 146 times.
✓ Branch 15 taken 292 times.
✓ Branch 16 taken 146 times.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
750 ERNIE_DEFINE_SCHEMA(SphereLight, Concrete, ComputedExtent(CentredExtent<RadiusHalves<false>>),
73 ERNIE_SPHERE_LIGHT_ATTRIBUTES)
74
7/12
✓ Branch 0 taken 146 times.
✓ Branch 1 taken 2 times.
✓ Branch 3 taken 146 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 146 times.
✗ Branch 7 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 146 times.
✓ Branch 16 taken 438 times.
✓ Branch 17 taken 146 times.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
1024 ERNIE_DEFINE_SCHEMA(CylinderLight, Concrete, ComputedExtent(CentredExtent<CylinderLightHalves>),
75 ERNIE_CYLINDER_LIGHT_ATTRIBUTES)
76
12/26
✓ Branch 0 taken 146 times.
✓ Branch 1 taken 4 times.
✓ Branch 3 taken 146 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 146 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 146 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 146 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 146 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 146 times.
✗ Branch 19 not taken.
✓ Branch 22 taken 146 times.
✗ Branch 23 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 146 times.
✓ Branch 30 taken 730 times.
✓ Branch 31 taken 146 times.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✗ Branch 48 not taken.
✗ Branch 49 not taken.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
1610 ERNIE_DEFINE_SCHEMA(DomeLight, Concrete, kInheritExtent, ERNIE_DOME_LIGHT_ATTRIBUTES)
77
7/12
✓ Branch 0 taken 146 times.
✓ Branch 1 taken 2 times.
✓ Branch 3 taken 146 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 146 times.
✗ Branch 7 not taken.
✗ Branch 11 not taken.
✓ Branch 12 taken 146 times.
✓ Branch 15 taken 292 times.
✓ Branch 16 taken 146 times.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
732 ERNIE_DEFINE_SCHEMA(PortalLight, Concrete, ComputedExtent(CentredExtent<RectHalves>),
78 ERNIE_PORTAL_LIGHT_ATTRIBUTES)
79
7/14
✓ Branch 0 taken 146 times.
✓ Branch 1 taken 2 times.
✓ Branch 3 taken 146 times.
✗ Branch 4 not taken.
✓ Branch 10 taken 146 times.
✗ Branch 11 not taken.
✗ Branch 15 not taken.
✓ Branch 16 taken 146 times.
✓ Branch 19 taken 1022 times.
✓ Branch 20 taken 146 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
2192 ERNIE_DEFINE_SCHEMA(ShapingAPI, SingleApply, kInheritExtent, ERNIE_SHAPING_API_ATTRIBUTES)
80
6/10
✓ Branch 0 taken 146 times.
✓ Branch 1 taken 2 times.
✓ Branch 3 taken 146 times.
✗ Branch 4 not taken.
✗ Branch 11 not taken.
✓ Branch 12 taken 146 times.
✓ Branch 15 taken 730 times.
✓ Branch 16 taken 146 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
1608 ERNIE_DEFINE_SCHEMA(ShadowAPI, SingleApply, kInheritExtent, ERNIE_SHADOW_API_ATTRIBUTES)
81
6/10
✓ Branch 0 taken 146 times.
✓ Branch 1 taken 2 times.
✓ Branch 3 taken 146 times.
✗ Branch 4 not taken.
✗ Branch 9 not taken.
✓ Branch 10 taken 146 times.
✓ Branch 13 taken 438 times.
✓ Branch 14 taken 146 times.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
1024 ERNIE_DEFINE_SCHEMA(PhotometricAreaLightAPI, SingleApply, kInheritExtent,
82 ERNIE_PHOTOMETRIC_AREA_LIGHT_API_ATTRIBUTES)
83
6/10
✓ Branch 0 taken 146 times.
✓ Branch 1 taken 2 times.
✓ Branch 3 taken 146 times.
✗ Branch 4 not taken.
✗ Branch 7 not taken.
✓ Branch 8 taken 146 times.
✓ Branch 11 taken 146 times.
✓ Branch 12 taken 146 times.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
440 ERNIE_DEFINE_SCHEMA(PhotometricDistantLightAPI, SingleApply, kInheritExtent,
84 ERNIE_PHOTOMETRIC_DISTANT_LIGHT_API_ATTRIBUTES)
85
5/10
✓ Branch 0 taken 146 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 146 times.
✗ Branch 4 not taken.
✗ Branch 7 not taken.
✓ Branch 8 taken 146 times.
✓ Branch 11 taken 146 times.
✓ Branch 12 taken 146 times.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
438 ERNIE_DEFINE_SCHEMA(PhotometricDomeLightAPI, SingleApply, kInheritExtent,
86 ERNIE_PHOTOMETRIC_DOME_LIGHT_API_ATTRIBUTES)
87
9/18
✓ Branch 0 taken 146 times.
✓ Branch 1 taken 5 times.
✓ Branch 3 taken 146 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 146 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 146 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 146 times.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✓ Branch 16 taken 146 times.
✓ Branch 19 taken 292 times.
✓ Branch 20 taken 146 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
735 ERNIE_DEFINE_SCHEMA(PhysicalLightIlluminantAPI, SingleApply, kInheritExtent,
88 ERNIE_PHYSICAL_LIGHT_ILLUMINANT_API_ATTRIBUTES)
89
16/34
✓ Branch 0 taken 146 times.
✓ Branch 1 taken 2 times.
✓ Branch 3 taken 146 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 146 times.
✗ Branch 7 not taken.
✓ Branch 16 taken 146 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 146 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 146 times.
✗ Branch 24 not taken.
✓ Branch 26 taken 146 times.
✗ Branch 27 not taken.
✓ Branch 42 taken 146 times.
✗ Branch 43 not taken.
✓ Branch 45 taken 146 times.
✗ Branch 46 not taken.
✓ Branch 53 taken 146 times.
✗ Branch 54 not taken.
✗ Branch 56 not taken.
✓ Branch 57 taken 146 times.
✓ Branch 60 taken 292 times.
✓ Branch 61 taken 146 times.
✓ Branch 63 taken 4234 times.
✓ Branch 64 taken 146 times.
✗ Branch 96 not taken.
✗ Branch 97 not taken.
✗ Branch 102 not taken.
✗ Branch 103 not taken.
✗ Branch 111 not taken.
✗ Branch 112 not taken.
✗ Branch 138 not taken.
✗ Branch 139 not taken.
8908 ERNIE_DEFINE_SCHEMA(LaserLight, Concrete, ComputedExtent(CentredExtent<EmitterHalves>),
90 ERNIE_LASER_LIGHT_ATTRIBUTES,
91 .fallbackOverrides = {{"ernie:power", 0.001},
92 {"ernie:polarization:degree", 0.98}})
93
94 } // namespace ernie
95