7 #ifndef PXR_IMAGING_HDX_PICK_TASK_H 
    8 #define PXR_IMAGING_HDX_PICK_TASK_H 
   36 #define HDX_PICK_TOKENS              \ 
   41     (pickPrimsAndInstances)          \ 
   45     (pickPointsAndInstances)         \ 
   48     (resolveNearestToCamera)         \ 
   49     (resolveNearestToCenter)         \ 
  176     static std::vector<HdxPrimOriginInfo>
 
  178                 const std::vector<HdxPickHit> &hits);
 
  188         const TfToken &nameInPrimOrigin =
 
  189                     HdPrimOriginSchemaTokens->scenePath) 
const;
 
  199         const TfToken &nameInPrimOrigin =
 
  200                     HdPrimOriginSchemaTokens->scenePath) 
const;
 
  249         , 
pickTarget(HdxPickTokens->pickPrimsAndInstances)
 
  250         , 
resolveMode(HdxPickTokens->resolveNearestToCamera)
 
  318         return (int32_t(idColor[0] & 0xff) << 0)  |
 
  319                (int32_t(idColor[1] & 0xff) << 8)  |
 
  320                (int32_t(idColor[2] & 0xff) << 16) |
 
  321                (int32_t(idColor[3] & 0xff) << 24);
 
  328     bool _useOverlayPass;
 
  334     void _InitIfNeeded();
 
  335     void _CreateAovBindings();
 
  336     void _CleanupAovBindings();
 
  337     void _ResizeOrCreateBufferForAOV(
 
  340     void _ConditionStencilWithGLCallback(
 
  344     bool _UseOcclusionPass() 
const;
 
  345     bool _UseOverlayPass() 
const;
 
  346     void _UpdateUseOverlayPass();
 
  348     void _ClearPickBuffer();
 
  353     _ReadAovBuffer(
TfToken const & aovName) 
const;
 
  371     std::vector<std::unique_ptr<HdStRenderBuffer>> _pickableAovBuffers;
 
  374     size_t _pickableDepthIndex;
 
  376     std::unique_ptr<HdStRenderBuffer> _overlayDepthStencilBuffer;
 
  410                   int const* instanceIds,
 
  411                   int const* elementIds,
 
  430     HdxPickResult& 
operator=(HdxPickResult &&);
 
  459     bool _ResolveHit(
int index, 
int x, 
int y, 
float z, 
HdxPickHit* hit) 
const;
 
  461     size_t _GetHash(
int index) 
const;
 
  462     bool _IsValidHit(
int index) 
const;
 
  466     int _GetPrimId(
int index)
 const {
 
  467         return _primIds ? _primIds[
index] : -1;
 
  469     int _GetInstanceId(
int index)
 const {
 
  470         return _instanceIds ? _instanceIds[
index] : -1;
 
  472     int _GetElementId(
int index)
 const {
 
  473         return _elementIds ? _elementIds[
index] : -1;
 
  475     int _GetEdgeId(
int index)
 const {
 
  476         return _edgeIds ? _edgeIds[
index] : -1;
 
  478     int _GetPointId(
int index)
 const {
 
  479         return _pointIds ? _pointIds[
index] : -1;
 
  485     GfVec3f _GetNormal(
int index) 
const;
 
  488     int const* _instanceIds;
 
  489     int const* _elementIds;
 
  491     int const* _pointIds;
 
  493     float const* _depths;
 
  536 #endif // PXR_IMAGING_HDX_PICK_TASK_H 
bool enableSceneMaterials
 
std::shared_ptr< class HdRenderPassState > HdRenderPassStateSharedPtr
 
GfVec3f worldSpaceHitNormal
 
std::shared_ptr< class HdStShaderCode > HdStShaderCodeSharedPtr
 
int instanceId
Index of the picked instance. 
 
HDX_API size_t GetHash() const 
 
std::shared_ptr< class HdRenderPass > HdRenderPassSharedPtr
 
HDX_API void Execute(HdTaskContext *ctx) override
Execute the pick task. 
 
std::vector< HdxPickHit > HdxPickHitVector
 
GLdouble GLdouble GLdouble z
 
HDX_API void ResolveUnique(HdxPickHitVector *allHits) const 
 
bool IsEmpty() const noexcept
Returns true if this is the empty path (SdfPath::EmptyPath()). 
 
GfVec3d worldSpaceHitPoint
 
HdxPickHitVector * outHits
 
bool doUnpickablesOcclude
 
TF_DECLARE_PUBLIC_TOKENS(HdxPickTokens, HDX_API, HDX_PICK_TOKENS)
 
HdxPickTaskContextParams()
 
HDX_API HdInstancerContext ComputeInstancerContext(const TfToken &nameInPrimOrigin=HdPrimOriginSchemaTokens->scenePath) const 
 
DepthMaskCallback depthMaskCallback
 
std::vector< std::pair< SdfPath, int > > HdInstancerContext
Instancer context: a pair of instancer paths and instance indices. 
 
HDX_API void ResolveNearestToCenter(HdxPickHitVector *allHits) const 
 
HDX_API ~HdxPickTask() override
 
bool operator!=(const Mat3< T0 > &m0, const Mat3< T1 > &m1)
Inequality operator, does exact floating point comparisons. 
 
static HDX_API HdxPrimOriginInfo FromPickHit(HdRenderIndex *renderIndex, const HdxPickHit &hit)
 
HDX_API HdxPickResult & operator=(HdxPickResult &&)
 
std::vector< TfToken > TfTokenVector
Convenience types. 
 
HDX_API void ResolveAll(HdxPickHitVector *allHits) const 
 
A utility class for resolving ID buffers into hits. 
 
HDX_API SdfPath GetFullPath(const TfToken &nameInPrimOrigin=HdPrimOriginSchemaTokens->scenePath) const 
 
HDX_API const TfTokenVector & GetRenderTags() const override
 
HDX_API std::ostream & operator<<(std::ostream &out, const HdxPickHit &h)
 
std::unordered_map< TfToken, VtValue, TfToken::HashFunctor > HdTaskContext
 
HdContainerDataSourceHandle primOrigin
 
GfMatrix4d projectionMatrix
 
HDX_API void Sync(HdSceneDelegate *delegate, HdTaskContext *ctx, HdDirtyBits *dirtyBits) override
Sync the render pass resources. 
 
HDX_API void Prepare(HdTaskContext *ctx, HdRenderIndex *renderIndex) override
Prepare the pick task. 
 
GLfloat GLfloat GLfloat GLfloat h
 
HDX_API bool IsValid() const 
Return whether the result was given well-formed parameters. 
 
static HDX_API std::vector< HdxPrimOriginInfo > FromPickHits(HdRenderIndex *renderIndex, const std::vector< HdxPickHit > &hits)
 
PXR_NAMESPACE_CLOSE_SCOPE PXR_NAMESPACE_OPEN_SCOPE
 
HDX_API HdxPickResult(int const *primIds, int const *instanceIds, int const *elementIds, int const *edgeIds, int const *pointIds, int const *neyes, float const *depths, HdRenderIndex const *index, TfToken const &pickTarget, GfMatrix4d const &viewMatrix, GfMatrix4d const &projectionMatrix, GfVec2f const &depthRange, GfVec2i const &bufferSize, GfVec4i const &subRect)
 
static int DecodeIDRenderColor(unsigned char const idColor[4])
Utility: Given a UNorm8Vec4 pixel, unpack it into an int32 ID. 
 
HDX_API bool operator<(HdxPickHit const &lhs, HdxPickHit const &rhs)
 
HdContainerDataSourceHandle instancePrimOrigin
 
#define PXR_NAMESPACE_CLOSE_SCOPE
 
std::shared_ptr< HdBufferArrayRange > HdBufferArrayRangeSharedPtr
 
SdfPath instancerSceneIndexPath
The path of the instancer in the scene index. 
 
std::vector< GfVec4d > clipPlanes
 
std::vector< HdRenderPassAovBinding > HdRenderPassAovBindingVector
 
std::vector< HdxInstancerContext > instancerContexts
 
HdRprimCollection collection
 
HDX_API void ResolveNearestToCamera(HdxPickHitVector *allHits) const 
 
HdContainerDataSourceHandle instancerPrimOrigin
The prim origin data source of the instancer. 
 
bool operator==(const Mat3< T0 > &m0, const Mat3< T1 > &m1)
Equality operator, does exact floating point comparisons. 
 
SdfPath instanceSceneIndexPath
 
std::function< void(void)> DepthMaskCallback