HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
particleFieldConversionSceneIndex.h
Go to the documentation of this file.
1 //
2 // Copyright 2026 Pixar
3 //
4 // Licensed under the terms set forth in the LICENSE.txt file available at
5 // https://openusd.org/license.
6 #ifndef PXR_IMAGING_HDSI_PARTICLE_FIELD_CONVERSION_SCENE_INDEX_H
7 #define PXR_IMAGING_HDSI_PARTICLE_FIELD_CONVERSION_SCENE_INDEX_H
8 
9 #include "pxr/pxr.h"
11 #include "pxr/imaging/hdsi/api.h"
12 
14 
15 #define HDSI_PARTICLE_FIELD_CONVERSION_TOKENS \
16  \
17  ((radianceSphericalHarmonicsCoefficients00, "radiance:sphericalHarmonicsCoefficients00")) \
18  \
19  ((radianceSphericalHarmonicsCoefficients10, "radiance:sphericalHarmonicsCoefficients10")) \
20  ((radianceSphericalHarmonicsCoefficients11, "radiance:sphericalHarmonicsCoefficients11")) \
21  ((radianceSphericalHarmonicsCoefficients12, "radiance:sphericalHarmonicsCoefficients12")) \
22  \
23  ((radianceSphericalHarmonicsCoefficients20, "radiance:sphericalHarmonicsCoefficients20")) \
24  ((radianceSphericalHarmonicsCoefficients21, "radiance:sphericalHarmonicsCoefficients21")) \
25  ((radianceSphericalHarmonicsCoefficients22, "radiance:sphericalHarmonicsCoefficients22")) \
26  ((radianceSphericalHarmonicsCoefficients23, "radiance:sphericalHarmonicsCoefficients23")) \
27  ((radianceSphericalHarmonicsCoefficients24, "radiance:sphericalHarmonicsCoefficients24")) \
28  \
29  ((radianceSphericalHarmonicsCoefficients30, "radiance:sphericalHarmonicsCoefficients30")) \
30  ((radianceSphericalHarmonicsCoefficients31, "radiance:sphericalHarmonicsCoefficients31")) \
31  ((radianceSphericalHarmonicsCoefficients32, "radiance:sphericalHarmonicsCoefficients32")) \
32  ((radianceSphericalHarmonicsCoefficients33, "radiance:sphericalHarmonicsCoefficients33")) \
33  ((radianceSphericalHarmonicsCoefficients34, "radiance:sphericalHarmonicsCoefficients34")) \
34  ((radianceSphericalHarmonicsCoefficients35, "radiance:sphericalHarmonicsCoefficients35")) \
35  ((radianceSphericalHarmonicsCoefficients36, "radiance:sphericalHarmonicsCoefficients36")) \
36 
37 TF_DECLARE_PUBLIC_TOKENS(HdsiParticleFieldConversionTokens, HDSI_PARTICLE_FIELD_CONVERSION_TOKENS);
38 
40 
41 // This scene index converts a particle field primitive to a points primitive
42 // for renderers which cannot natively render the particle field. It has three
43 // optional inputs:
44 // 1. constantWidth: A SampledDataSource if the renderer would like to render
45 // the points with a constant width. This datasource will be retuned as the
46 // primvar value for the width. Otherwise the plugin will use the average scales
47 // as the width if scales are present or 1.0 if not.
48 // 2. geometryOveral: Overlayed under the particle field if you want to
49 // provide additional render specific options when rendering these points.
50 // 3. materialOverlay: While a default UsdPreviewSurface approximation is
51 // provided you may want to use a more advanced material for your renderer. This
52 // will be overlayed with the default material under the render context you
53 // specify.
55 {
56 public:
57  HDSI_API
58  static HdsiParticleFieldConversionSceneIndexRefPtr
59  New(const HdSceneIndexBaseRefPtr& inputSceneIndex,
60  const HdSampledDataSourceHandle constantWidth,
61  const HdContainerDataSourceHandle geometryOverlay,
62  const HdContainerDataSourceHandle materialOverlay);
63 
64  HDSI_API
65  virtual HdSceneIndexPrim GetPrim(const SdfPath& primPath) const;
66 
67  HDSI_API
68  virtual SdfPathVector GetChildPrimPaths(const SdfPath& primPath) const;
69 
70 protected:
71  HdSampledDataSourceHandle _constantWidth;
72  HdContainerDataSourceHandle _geometryOverlay, _materialOverlay;
73 
75  const HdSceneIndexBaseRefPtr& inputSceneIndex,
76  const HdSampledDataSourceHandle constantWidth,
77  const HdContainerDataSourceHandle geometryOverlay,
78  const HdContainerDataSourceHandle materialOverlay);
79 
80  virtual void _PrimsAdded(
81  const HdSceneIndexBase& sender,
83 
84  virtual void _PrimsRemoved(
85  const HdSceneIndexBase& sender,
87 
88  virtual void _PrimsDirtied(
89  const HdSceneIndexBase& sender,
91 };
92 
94 
95 #endif // PXR_IMAGING_HDSI_PARTICLE_FIELD_CONVERSION_SCENE_INDEX_H
#define PXR_NAMESPACE_OPEN_SCOPE
Definition: pxr.h:73
virtual HDSI_API SdfPathVector GetChildPrimPaths(const SdfPath &primPath) const
static HDSI_API HdsiParticleFieldConversionSceneIndexRefPtr New(const HdSceneIndexBaseRefPtr &inputSceneIndex, const HdSampledDataSourceHandle constantWidth, const HdContainerDataSourceHandle geometryOverlay, const HdContainerDataSourceHandle materialOverlay)
#define HDSI_PARTICLE_FIELD_CONVERSION_TOKENS
virtual void _PrimsDirtied(const HdSceneIndexBase &sender, const HdSceneIndexObserver::DirtiedPrimEntries &entries)
std::vector< class SdfPath > SdfPathVector
virtual void _PrimsAdded(const HdSceneIndexBase &sender, const HdSceneIndexObserver::AddedPrimEntries &entries)
virtual HDSI_API HdSceneIndexPrim GetPrim(const SdfPath &primPath) const
Definition: path.h:280
#define HDSI_API
Definition: api.h:23
TF_DECLARE_PUBLIC_TOKENS(HdsiParticleFieldConversionTokens, HDSI_PARTICLE_FIELD_CONVERSION_TOKENS)
#define PXR_NAMESPACE_CLOSE_SCOPE
Definition: pxr.h:74
virtual void _PrimsRemoved(const HdSceneIndexBase &sender, const HdSceneIndexObserver::RemovedPrimEntries &entries)
TF_DECLARE_REF_PTRS(HdsiParticleFieldConversionSceneIndex)
HdsiParticleFieldConversionSceneIndex(const HdSceneIndexBaseRefPtr &inputSceneIndex, const HdSampledDataSourceHandle constantWidth, const HdContainerDataSourceHandle geometryOverlay, const HdContainerDataSourceHandle materialOverlay)