34 const Light *light =
static_cast<const Light *
>(context.object->data);
35 pxr::UsdLuxLightAPI usd_light_api;
37 switch (light->
type) {
41 pxr::UsdLuxRectLight rect_light = pxr::UsdLuxRectLight::Define(stage,
usd_path);
42 set_attribute(rect_light.CreateWidthAttr(pxr::VtValue(),
true),
46 set_attribute(rect_light.CreateHeightAttr(pxr::VtValue(),
true),
50 usd_light_api = rect_light.LightAPI();
54 pxr::UsdLuxRectLight rect_light = pxr::UsdLuxRectLight::Define(stage,
usd_path);
55 set_attribute(rect_light.CreateWidthAttr(pxr::VtValue(),
true),
59 set_attribute(rect_light.CreateHeightAttr(pxr::VtValue(),
true),
63 usd_light_api = rect_light.LightAPI();
67 pxr::UsdLuxDiskLight disk_light = pxr::UsdLuxDiskLight::Define(stage,
usd_path);
68 set_attribute(disk_light.CreateRadiusAttr(pxr::VtValue(),
true),
72 usd_light_api = disk_light.LightAPI();
77 pxr::UsdLuxDiskLight disk_light = pxr::UsdLuxDiskLight::Define(stage,
usd_path);
78 set_attribute(disk_light.CreateRadiusAttr(pxr::VtValue(),
true),
82 usd_light_api = disk_light.LightAPI();
90 pxr::UsdLuxSphereLight sphere_light = pxr::UsdLuxSphereLight::Define(stage,
usd_path);
91 set_attribute(sphere_light.CreateRadiusAttr(pxr::VtValue(),
true),
95 set_attribute(sphere_light.CreateTreatAsPointAttr(pxr::VtValue(),
true),
101 pxr::UsdLuxShapingAPI shaping_api = pxr::UsdLuxShapingAPI::Apply(sphere_light.GetPrim());
103 set_attribute(shaping_api.CreateShapingConeAngleAttr(pxr::VtValue(),
true),
107 set_attribute(shaping_api.CreateShapingConeSoftnessAttr(pxr::VtValue(),
true),
114 usd_light_api = sphere_light.LightAPI();
118 pxr::UsdLuxDistantLight distant_light = pxr::UsdLuxDistantLight::Define(stage,
usd_path);
119 set_attribute(distant_light.CreateAngleAttr(pxr::VtValue(),
true),
123 usd_light_api = distant_light.LightAPI();
134 intensity = light->
energy / 4.0f;
142 usd_light_api.CreateIntensityAttr(pxr::VtValue(),
true), intensity, time,
usd_value_writer_);
143 set_attribute(usd_light_api.CreateExposureAttr(pxr::VtValue(),
true),
148 set_attribute(usd_light_api.CreateColorAttr(pxr::VtValue(),
true),
149 pxr::GfVec3f(light->
r, light->
g, light->
b),
152 set_attribute(usd_light_api.CreateEnableColorTemperatureAttr(
157 set_attribute(usd_light_api.CreateColorTemperatureAttr(pxr::VtValue(),
true),
162 set_attribute(usd_light_api.CreateDiffuseAttr(pxr::VtValue(),
true),
166 set_attribute(usd_light_api.CreateSpecularAttr(pxr::VtValue(),
true),
170 set_attribute(usd_light_api.CreateNormalizeAttr(pxr::VtValue(),
true),
175 pxr::UsdPrim prim = usd_light_api.GetPrim();
179 if (
auto boundable = pxr::UsdGeomBoundable(prim)) {