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"
45PXR_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,
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;
580PXR_NAMESPACE_CLOSE_SCOPE
Stores a 4x4 matrix of double elements.
Stores a 4x4 matrix of float elements.
Basic type: 3-dimensional floating point range.
Basic type for a vector of 3 float components.
Basic type for a vector of 3 int components.
Topology data for basisCurves.
Topology data for meshes.
The Hydra render index is a flattened representation of the client scene graph, which may be composed...
void InsertTask(HdSceneDelegate *delegate, SdfPath const &id)
Inserts a new task into the render index with an identifier of id.
Describes one or more authored display representations for an rprim.
Adapter class providing data exchange with the client scene graph.
HdRenderIndex & GetRenderIndex()
Returns the RenderIndex owned by this delegate.
A simple delegate class for unit test driver.
virtual HD_API VtValue Get(SdfPath const &id, TfToken const &key) override
Returns a named value.
virtual HD_API GfRange3d GetExtent(SdfPath const &id) override
Gets the axis aligned bounds of a prim.
virtual HD_API HdMeshTopology GetMeshTopology(SdfPath const &id) override
Gets the topological mesh data for a given prim.
virtual HD_API SdfPath GetInstancerId(SdfPath const &primId) override
Returns the parent instancer of the given rprim or instancer.
HD_API void Remove(SdfPath const &id)
Remove a prim.
virtual HD_API HdRenderBufferDescriptor GetRenderBufferDescriptor(SdfPath const &id) override
Returns the allocation descriptor for a given render buffer prim.
virtual HD_API bool GetDoubleSided(SdfPath const &id) override
Returns the doubleSided state for the given prim.
virtual HD_API SdfPath GetMaterialId(SdfPath const &rprimId) override
Returns the material ID bound to the rprim rprimId.
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.
HD_API void Clear()
Clear all prims.
virtual HD_API SdfPathVector GetInstancerPrototypes(SdfPath const &instancerId) override
Returns a list of prototypes of this instancer.
HD_API void AddMaterialResource(SdfPath const &id, VtValue materialResource)
Material.
void AddTask(SdfPath const &id)
Tasks.
HD_API void UpdateMaterialResource(SdfPath const &materialId, VtValue materialResource)
Update a material resource.
HD_API void AddInstancer(SdfPath const &id, SdfPath const &parentId=SdfPath(), GfMatrix4f const &rootTransform=GfMatrix4f(1))
Instancer.
virtual HD_API HdCullStyle GetCullStyle(SdfPath const &id) override
Returns the cullstyle for the given prim.
HD_API void MarkRprimDirty(SdfPath path, HdDirtyBits flag)
Marks an rprim in the RenderIndex as dirty with the given dirty flags.
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.
virtual HD_API HdReprSelector GetReprSelector(SdfPath const &id) override
Returns the authored repr (if any) for the given prim.
virtual HD_API HdDisplayStyle GetDisplayStyle(SdfPath const &id) override
Returns the refinement level for the given prim in the range [0,8].
HD_API void AddCamera(SdfPath const &id)
Camera.
virtual HD_API HdBasisCurvesTopology GetBasisCurvesTopology(SdfPath const &id) override
Gets the topological curve data for a given prim.
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 AddPolygons(SdfPath const &id, GfMatrix4f const &transform, HdInterpolation colorInterp, SdfPath const &instancerId=SdfPath())
Add a triangle, quad and pentagon.
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
HD_API void AddPoints(SdfPath const &id, GfMatrix4f const &transform, HdInterpolation colorInterp=HdInterpolationConstant, HdInterpolation widthInterp=HdInterpolationConstant, SdfPath const &instancerId=SdfPath())
Add a points prim.
virtual HD_API TfToken GetRenderTag(SdfPath const &id) override
Returns the render tag that will be used to bucket prims during render pass bucketing.
virtual HD_API VtValue GetIndexedPrimvar(SdfPath const &id, TfToken const &key, VtIntArray *outIndices) override
Returns a named primvar value.
virtual HD_API HdPrimvarDescriptorVector GetPrimvarDescriptors(SdfPath const &id, HdInterpolation interpolation) override
Returns descriptors for all primvars of the given interpolation type.
HD_API void AddSubdiv(SdfPath const &id, GfMatrix4f const &transform, SdfPath const &insatancerId=SdfPath())
Add a subdiv with various tags.
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.
HD_API void UpdateTransform(SdfPath const &id, GfMatrix4f const &mat)
Transform.
virtual HD_API GfMatrix4d GetTransform(SdfPath const &id) override
Returns the object space transform, including all parent transforms.
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.
HD_API void RebindMaterial(SdfPath const &rprimId, SdfPath const &materialId)
Example to update a material binding on the fly.
virtual HD_API GfMatrix4d GetInstancerTransform(SdfPath const &instancerId) override
Returns the instancer transform.
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.
HD_API void AddRenderBuffer(SdfPath const &id, HdRenderBufferDescriptor const &desc)
Render buffers.
virtual HD_API VtValue GetCameraParamValue(SdfPath const &cameraId, TfToken const ¶mName) override
Returns a single value for a given camera and parameter.
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 bool GetVisible(SdfPath const &id) override
Returns the authored visible state of the prim.
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.
virtual HD_API PxOsdSubdivTags GetSubdivTags(SdfPath const &id) override
Gets the subdivision surface tags (sharpness, holes, etc).
A path value used to locate objects in layers or scenegraphs.
Token for efficient comparison, assignment, and hashing of known strings.
A map with string keys and VtValue values.
Provides a container which may hold any type, and provides introspection and iteration over array typ...
This file defines some macros that are useful for declaring and using static TfTokens.
Describes how the geometry of a prim should be displayed.
Describes the allocation structure of a render buffer bprim.
std::vector< TfToken > TfTokenVector
Convenience types.