7#ifndef PXR_IMAGING_PLUGIN_HD_EMBREE_LIGHT_H
8#define PXR_IMAGING_PLUGIN_HD_EMBREE_LIGHT_H
13#include "pxr/imaging/hd/light.h"
14#include "pxr/imaging/plugin/hdEmbree/pxrIES/pxrIES.h"
16#include <embree4/rtcore_common.h>
17#include <embree4/rtcore_geometry.h>
22PXR_NAMESPACE_OPEN_SCOPE
106struct HdEmbree_UnknownLight
108struct HdEmbree_Cylinder
119struct HdEmbree_Distant
121 float halfAngleRadians;
134struct HdEmbree_Sphere
139using HdEmbree_LightVariant = std::variant<
140 HdEmbree_UnknownLight,
148struct HdEmbree_LightTexture
150 std::vector<GfVec3f> pixels;
158 bool normalize =
false;
159 float angleScale = 0.0f;
162struct HdEmbree_Shaping
166 float coneAngle = 180.0f;
167 float coneSoftness = 0.0f;
171struct HdEmbree_LightData
177 HdEmbree_LightTexture texture;
178 float intensity = 1.0f;
179 float diffuse = 1.0f;
180 float exposure = 0.0f;
181 float colorTemperature = 6500.0f;
182 bool enableColorTemperature =
false;
183 HdEmbree_LightVariant lightVariant;
184 bool normalize =
false;
186 HdEmbree_Shaping shaping;
189class HdEmbree_Light final :
public HdLight
198 HdDirtyBits* dirtyBits)
override;
207 HdEmbree_LightData
const& LightData()
const {
211 bool IsDome()
const {
212 return std::holds_alternative<HdEmbree_Dome>(_lightData.lightVariant);
216 HdEmbree_LightData _lightData;
220PXR_NAMESPACE_CLOSE_SCOPE
Stores a 3x3 matrix of float elements.
Stores a 4x4 matrix of float elements.
Basic type for a vector of 3 float components.
HdEmbreeRenderer implements a renderer on top of Embree's raycasting abilities.
A light model, used in conjunction with HdRenderPass.
The HdRenderParam is an opaque (to core Hydra) handle, to an object that is obtained from the render ...
Adapter class providing data exchange with the client scene graph.
virtual HD_API void Finalize(HdRenderParam *renderParam)
Finalizes object resources.
virtual HdDirtyBits GetInitialDirtyBitsMask() const =0
Returns the minimal set of dirty bits to place in the change tracker for use in the first sync of thi...
virtual void Sync(HdSceneDelegate *sceneDelegate, HdRenderParam *renderParam, HdDirtyBits *dirtyBits)=0
Synchronizes state from the delegate to this object.
Extends / overrides some functionality of standard IESFile.
A path value used to locate objects in layers or scenegraphs.
Token for efficient comparison, assignment, and hashing of known strings.