24 #ifndef PXR_IMAGING_HD_UNIT_TEST_DELEGATE_H 25 #define PXR_IMAGING_HD_UNIT_TEST_DELEGATE_H 28 #include "pxr/imaging/hd/api.h" 29 #include "pxr/imaging/hd/enums.h" 30 #include "pxr/imaging/hd/material.h" 31 #include "pxr/imaging/hd/sceneDelegate.h" 32 #include "pxr/imaging/hd/tokens.h" 45 PXR_NAMESPACE_OPEN_SCOPE
59 void SetUseInstancePrimvars(
bool v) { _hasInstancePrimvars = v; }
62 void SetRefineLevel(
int level);
65 void SetVisibility(
bool vis);
70 void AddMesh(
SdfPath const&
id);
75 VtVec3fArray
const &points,
76 VtIntArray
const &numVerts,
77 VtIntArray
const &verts,
80 TfToken const &scheme=PxOsdOpenSubdivTokens->catmullClark,
81 TfToken const &orientation=HdTokens->rightHanded,
82 bool doubleSided=
false);
87 VtVec3fArray
const &points,
88 VtIntArray
const &numVerts,
89 VtIntArray
const &verts,
90 VtIntArray
const &holes,
93 HdInterpolation colorInterpolation,
95 HdInterpolation opacityInterpolation,
98 TfToken const &scheme=PxOsdOpenSubdivTokens->catmullClark,
99 TfToken const &orientation=HdTokens->rightHanded,
100 bool doubleSided=
false);
103 void AddMesh(
SdfPath const &
id,
105 VtVec3fArray
const &points,
106 VtIntArray
const &numVerts,
107 VtIntArray
const &verts,
108 VtIntArray
const &holes,
111 VtIntArray
const &colorIndices,
112 HdInterpolation colorInterpolation,
114 VtIntArray
const &opacityIndices,
115 HdInterpolation opacityInterpolation,
118 TfToken const &scheme=PxOsdOpenSubdivTokens->catmullClark,
119 TfToken const &orientation=HdTokens->rightHanded,
120 bool doubleSided=
false);
123 void SetMeshCullStyle(
SdfPath const &
id, HdCullStyle
const &cullstyle);
129 TfToken const &scheme=PxOsdOpenSubdivTokens->catmullClark);
134 bool rightHanded=
true,
bool doubleSided=
false,
141 bool rightHanded=
true,
bool doubleSided=
false,
148 bool rightHanded=
true,
bool doubleSided=
false,
155 bool rightHanded=
true,
bool doubleSided=
false,
160 void AddGridWithCustomColor(
SdfPath const &
id,
int nx,
int ny,
163 HdInterpolation colorInterpolation,
164 bool rightHanded=
true,
bool doubleSided=
false,
170 HdInterpolation colorInterp,
188 void AddBasisCurves(
SdfPath const &
id,
189 VtVec3fArray
const &points,
190 VtIntArray
const &curveVertexCounts,
191 VtIntArray
const &curveIndices,
192 VtVec3fArray
const &normals,
196 HdInterpolation colorInterpolation,
198 HdInterpolation opacityInterpolation,
200 HdInterpolation widthInterpolation,
207 HdInterpolation colorInterp=HdInterpolationConstant,
208 HdInterpolation widthInterp=HdInterpolationConstant,
209 bool authoredNormals=
false,
216 void AddPoints(
SdfPath const &
id,
217 VtVec3fArray
const &points,
219 HdInterpolation colorInterpolation,
221 HdInterpolation opacityInterpolation,
223 HdInterpolation widthInterpolation,
228 void AddPoints(
SdfPath const &
id,
230 HdInterpolation colorInterp=HdInterpolationConstant,
231 HdInterpolation widthInterp=HdInterpolationConstant,
241 void SetInstancerProperties(
SdfPath const &
id,
242 VtIntArray
const &prototypeIndex,
243 VtVec3fArray
const &scale,
244 VtVec4fArray
const &rotate,
245 VtVec3fArray
const &translate);
248 void UpdateInstancer(
SdfPath const& rprimId,
SdfPath const& instancerId);
255 HdInterpolation
const& interp,
257 VtIntArray
const& indices=VtIntArray(0));
260 void UpdatePrimvarValue(
SdfPath const&
id,
263 VtIntArray
const& indices=VtIntArray(0));
283 void BindMaterial(
SdfPath const &rprimId,
SdfPath const &materialId);
294 void UpdateRenderBuffer(
SdfPath const &
id,
307 _tasks[id] = _Task();
322 void HideRprim(
SdfPath const &
id);
326 void UnhideRprim(
SdfPath const &
id);
334 void SetRefineLevel(
SdfPath const &
id,
int refineLevel);
338 void SetVisibility(
SdfPath const &
id,
bool vis);
345 void UpdatePositions(
SdfPath const &
id,
float time);
347 void UpdateRprims(
float time);
349 void UpdateInstancerPrimvars(
float time);
351 void UpdateInstancerPrototypes(
float time);
353 void UpdateCurvePrimvarsInterpMode(
float time);
359 GfVec3f PopulateBasicTestSet();
361 GfVec3f PopulateInvalidPrimsSet();
393 VtIntArray *outIndices)
override;
397 virtual HdPrimvarDescriptorVector
399 HdInterpolation interpolation)
override;
403 SdfPath const& prototypeId)
override;
420 virtual VtValue GetMaterialResource(
SdfPath const &materialId)
override;
424 TfToken const ¶mName)
override;
444 VtVec3fArray
const &points,
445 VtIntArray
const &numVerts,
446 VtIntArray
const &verts,
447 VtIntArray
const &holes,
451 scheme(scheme), orientation(orientation),
452 transform(transform),
453 points(points), numVerts(numVerts), verts(verts),
454 holes(holes), subdivTags(subdivTags), guide(guide),
455 doubleSided(doubleSided), cullStyle(HdCullStyleDontCare) { }
468 HdCullStyle cullStyle;
472 _Curves(VtVec3fArray
const &points,
473 VtIntArray
const &curveVertexCounts,
474 VtIntArray
const &curveIndices,
477 TfToken const &wrap = HdTokens->nonperiodic) :
478 points(points), curveVertexCounts(curveVertexCounts),
479 curveIndices(curveIndices), type(type), basis(basis), wrap(wrap) { }
482 VtIntArray curveVertexCounts;
483 VtIntArray curveIndices;
490 _Points(VtVec3fArray
const &points) : points(points) { }
496 _Instancer(VtVec3fArray
const &scale,
497 VtVec4fArray
const &rotate,
498 VtVec3fArray
const &translate,
500 scale(scale), rotate(rotate), translate(translate),
501 rootTransform(rootTransform) {
505 VtVec3fArray translate;
506 VtIntArray prototypeIndices;
509 std::vector<SdfPath> prototypes;
515 HdInterpolation
const& _interp,
517 VtIntArray
const& _indices=VtIntArray(0)) :
526 HdInterpolation interp;
530 using _Primvars = std::vector<_Primvar>;
533 bool _FindPrimvar(
SdfPath const&
id,
535 _Primvars::iterator *pvIt);
547 struct _RenderBuffer {
549 _RenderBuffer(
GfVec3i const &d, HdFormat f,
bool ms)
550 : dims(d), format(f), multiSampled(ms) {}
556 std::map<SdfPath, _Mesh> _meshes;
557 std::map<SdfPath, _Curves> _curves;
558 std::map<SdfPath, _Points> _points;
559 std::map<SdfPath, _Instancer> _instancers;
560 std::map<SdfPath, _Primvars> _primvars;
561 std::map<SdfPath, VtValue> _materials;
562 std::map<SdfPath, _Camera> _cameras;
563 std::map<SdfPath, _RenderBuffer> _renderBuffers;
564 std::map<SdfPath, _Light> _lights;
565 std::map<SdfPath, _Task> _tasks;
566 TfHashSet<SdfPath, SdfPath::Hash> _hiddenRprims;
568 typedef std::map<SdfPath, SdfPath> SdfPathMap;
569 SdfPathMap _materialBindings;
570 SdfPathMap _instancerBindings;
572 bool _hasInstancePrimvars;
575 std::map<SdfPath, int> _refineLevels;
576 std::map<SdfPath, bool> _visibilities;
580 PXR_NAMESPACE_CLOSE_SCOPE
582 #endif // PXR_IMAGING_HD_UNIT_TEST_DELEGATE_H HD_API void AddGridWithFaceVaryingColor(SdfPath const &id, int x, int y, GfMatrix4f const &transform, bool rightHanded=true, bool doubleSided=false, SdfPath const &instancerId=SdfPath())
Add a grid with division x*y.
Stores a 4x4 matrix of float elements.
The Hydra render index is a flattened representation of the client scene graph, which may be composed...
Basic type: 3-dimensional floating point range.
HD_API void RebindMaterial(SdfPath const &rprimId, SdfPath const &materialId)
Example to update a material binding on the fly.
HD_API void AddCurves(SdfPath const &id, TfToken const &type, TfToken const &basis, GfMatrix4f const &transform, HdInterpolation colorInterp=HdInterpolationConstant, HdInterpolation widthInterp=HdInterpolationConstant, bool authoredNormals=false, SdfPath const &instancerId=SdfPath())
Add a basis curves prim containing two curves.
HD_API void AddSubdiv(SdfPath const &id, GfMatrix4f const &transform, SdfPath const &insatancerId=SdfPath())
Add a subdiv with various tags.
Describes how the geometry of a prim should be displayed.
virtual HD_API GfMatrix4d GetTransform(SdfPath const &id) override
Returns the object space transform, including all parent transforms.
virtual HD_API VtValue Get(SdfPath const &id, TfToken const &key) override
Returns a named value.
virtual HD_API HdMeshTopology GetMeshTopology(SdfPath const &id) override
Gets the topological mesh data for a given prim.
HD_API void AddCamera(SdfPath const &id)
Camera.
A map with string keys and VtValue values.
Describes the allocation structure of a render buffer bprim.
virtual HD_API VtValue GetIndexedPrimvar(SdfPath const &id, TfToken const &key, VtIntArray *outIndices) override
Returns a named primvar value.
Basic type for a vector of 3 float components.
virtual HD_API HdRenderBufferDescriptor GetRenderBufferDescriptor(SdfPath const &id) override
Returns the allocation descriptor for a given render buffer prim.
virtual HD_API HdBasisCurvesTopology GetBasisCurvesTopology(SdfPath const &id) override
Gets the topological curve data for a given prim.
virtual HD_API bool GetDoubleSided(SdfPath const &id) override
Returns the doubleSided state for the given prim.
HD_API void UpdateMaterialResource(SdfPath const &materialId, VtValue materialResource)
Update a material resource.
HD_API void AddGridWithFaceColor(SdfPath const &id, int x, int y, GfMatrix4f const &transform, bool rightHanded=true, bool doubleSided=false, SdfPath const &instancerId=SdfPath())
Add a grid with division x*y.
HD_API void AddGridWithVertexColor(SdfPath const &id, int x, int y, GfMatrix4f const &transform, bool rightHanded=true, bool doubleSided=false, SdfPath const &instancerId=SdfPath())
Add a grid with division x*y.
HD_API void AddRenderBuffer(SdfPath const &id, HdRenderBufferDescriptor const &desc)
Render buffers.
virtual HD_API SdfPath GetInstancerId(SdfPath const &primId) override
Returns the parent instancer of the given rprim or instancer.
virtual HD_API HdCullStyle GetCullStyle(SdfPath const &id) override
Returns the cullstyle for the given prim.
HD_API void AddCube(SdfPath const &id, GfMatrix4f const &transform, bool guide=false, SdfPath const &instancerId=SdfPath(), TfToken const &scheme=PxOsdOpenSubdivTokens->catmullClark)
Add a cube.
Token for efficient comparison, assignment, and hashing of known strings.
HD_API void MarkRprimDirty(SdfPath path, HdDirtyBits flag)
Marks an rprim in the RenderIndex as dirty with the given dirty flags.
virtual HD_API PxOsdSubdivTags GetSubdivTags(SdfPath const &id) override
Gets the subdivision surface tags (sharpness, holes, etc).
Stores a 4x4 matrix of double elements.
Adapter class providing data exchange with the client scene graph.
HD_API void AddPolygons(SdfPath const &id, GfMatrix4f const &transform, HdInterpolation colorInterp, SdfPath const &instancerId=SdfPath())
Add a triangle, quad and pentagon.
HD_API void AddGrid(SdfPath const &id, int x, int y, GfMatrix4f const &transform, bool rightHanded=true, bool doubleSided=false, SdfPath const &instancerId=SdfPath())
Add a grid with division x*y.
std::vector< TfToken > TfTokenVector
Convenience types.
Basic type for a vector of 3 int components.
HD_API void AddInstancer(SdfPath const &id, SdfPath const &parentId=SdfPath(), GfMatrix4f const &rootTransform=GfMatrix4f(1))
Instancer.
A path value used to locate objects in layers or scenegraphs.
virtual HD_API HdReprSelector GetReprSelector(SdfPath const &id) override
Returns the authored repr (if any) for the given prim.
Topology data for basisCurves.
virtual HD_API HdDisplayStyle GetDisplayStyle(SdfPath const &id) override
Returns the refinement level for the given prim in the range [0,8].
virtual HD_API HdPrimvarDescriptorVector GetPrimvarDescriptors(SdfPath const &id, HdInterpolation interpolation) override
Returns descriptors for all primvars of the given interpolation type.
HD_API void AddMaterialResource(SdfPath const &id, VtValue materialResource)
Material.
virtual HD_API SdfPath GetMaterialId(SdfPath const &rprimId) override
Returns the material ID bound to the rprim rprimId.
virtual HD_API TfToken GetRenderTag(SdfPath const &id) override
Returns the render tag that will be used to bucket prims during render pass bucketing.
This file defines some macros that are useful for declaring and using static TfTokens.
Describes one or more authored display representations for an rprim.
virtual HD_API bool GetVisible(SdfPath const &id) override
Returns the authored visible state of the prim.
HD_API void Remove(SdfPath const &id)
Remove a prim.
virtual HD_API GfMatrix4d GetInstancerTransform(SdfPath const &instancerId) override
Returns the instancer transform.
HD_API void Clear()
Clear all prims.
virtual HD_API VtValue GetCameraParamValue(SdfPath const &cameraId, TfToken const ¶mName) override
Returns a single value for a given camera and parameter.
virtual HD_API GfRange3d GetExtent(SdfPath const &id) override
Gets the axis aligned bounds of a prim.
void AddTask(SdfPath const &id)
Tasks.
HD_API void UpdateTransform(SdfPath const &id, GfMatrix4f const &mat)
Transform.
void InsertTask(HdSceneDelegate *delegate, SdfPath const &id)
Inserts a new task into the render index with an identifier of id.
HD_API void AddFaceVaryingPolygons(SdfPath const &id, GfMatrix4f const &transform, SdfPath const &instancerId=SdfPath())
Add a triangle, quad and pentagon with face-varying displayColor and displayOpacity.
Topology data for meshes.
virtual HD_API SdfPathVector GetInstancerPrototypes(SdfPath const &instancerId) override
Returns a list of prototypes of this instancer.
HdRenderIndex & GetRenderIndex()
Returns the RenderIndex owned by this delegate.
A simple delegate class for unit test driver.
Provides a container which may hold any type, and provides introspection and iteration over array typ...
HD_API void AddPrimvar(SdfPath const &id, TfToken const &name, VtValue const &value, HdInterpolation const &interp, TfToken const &role, VtIntArray const &indices=VtIntArray(0))
Primvars.
virtual HD_API VtIntArray GetInstanceIndices(SdfPath const &instancerId, SdfPath const &prototypeId) override
Gets the extracted indices array of the prototype id used in the instancer.