7#ifndef PXR_IMAGING_HD_UNIT_TEST_DELEGATE_H
8#define PXR_IMAGING_HD_UNIT_TEST_DELEGATE_H
11#include "pxr/imaging/hd/api.h"
12#include "pxr/imaging/hd/enums.h"
13#include "pxr/imaging/hd/material.h"
14#include "pxr/imaging/hd/sceneDelegate.h"
15#include "pxr/imaging/hd/tokens.h"
28PXR_NAMESPACE_OPEN_SCOPE
42 void SetUseInstancePrimvars(
bool v) { _hasInstancePrimvars = v; }
45 void SetRefineLevel(
int level);
48 void SetVisibility(
bool vis);
53 void AddMesh(
SdfPath const&
id);
58 VtVec3fArray
const &points,
59 VtIntArray
const &numVerts,
60 VtIntArray
const &verts,
63 TfToken const &scheme=PxOsdOpenSubdivTokens->catmullClark,
64 TfToken const &orientation=HdTokens->rightHanded,
65 bool doubleSided=
false);
70 VtVec3fArray
const &points,
71 VtIntArray
const &numVerts,
72 VtIntArray
const &verts,
73 VtIntArray
const &holes,
76 HdInterpolation colorInterpolation,
78 HdInterpolation opacityInterpolation,
81 TfToken const &scheme=PxOsdOpenSubdivTokens->catmullClark,
82 TfToken const &orientation=HdTokens->rightHanded,
83 bool doubleSided=
false);
88 VtVec3fArray
const &points,
89 VtIntArray
const &numVerts,
90 VtIntArray
const &verts,
91 VtIntArray
const &holes,
94 VtIntArray
const &colorIndices,
95 HdInterpolation colorInterpolation,
97 VtIntArray
const &opacityIndices,
98 HdInterpolation opacityInterpolation,
101 TfToken const &scheme=PxOsdOpenSubdivTokens->catmullClark,
102 TfToken const &orientation=HdTokens->rightHanded,
103 bool doubleSided=
false);
106 void SetMeshCullStyle(
SdfPath const &
id, HdCullStyle
const &cullstyle);
112 TfToken const &scheme=PxOsdOpenSubdivTokens->catmullClark);
117 bool rightHanded=
true,
bool doubleSided=
false,
124 bool rightHanded=
true,
bool doubleSided=
false,
131 bool rightHanded=
true,
bool doubleSided=
false,
138 bool rightHanded=
true,
bool doubleSided=
false,
143 void AddGridWithCustomColor(
SdfPath const &
id,
int nx,
int ny,
146 HdInterpolation colorInterpolation,
147 bool rightHanded=
true,
bool doubleSided=
false,
153 HdInterpolation colorInterp,
171 void AddBasisCurves(
SdfPath const &
id,
172 VtVec3fArray
const &points,
173 VtIntArray
const &curveVertexCounts,
174 VtIntArray
const &curveIndices,
175 VtVec3fArray
const &normals,
179 HdInterpolation colorInterpolation,
181 HdInterpolation opacityInterpolation,
183 HdInterpolation widthInterpolation,
190 HdInterpolation colorInterp=HdInterpolationConstant,
191 HdInterpolation widthInterp=HdInterpolationConstant,
192 bool authoredNormals=
false,
199 void AddPoints(
SdfPath const &
id,
200 VtVec3fArray
const &points,
202 HdInterpolation colorInterpolation,
204 HdInterpolation opacityInterpolation,
206 HdInterpolation widthInterpolation,
213 HdInterpolation colorInterp=HdInterpolationConstant,
214 HdInterpolation widthInterp=HdInterpolationConstant,
224 void SetInstancerProperties(
SdfPath const &
id,
225 VtIntArray
const &prototypeIndex,
226 VtVec3fArray
const &scale,
227 VtVec4fArray
const &rotate,
228 VtVec3fArray
const &translate);
231 void UpdateInstancer(
SdfPath const& rprimId,
SdfPath const& instancerId);
238 HdInterpolation
const& interp,
240 VtIntArray
const& indices=VtIntArray(0));
243 void UpdatePrimvarValue(
SdfPath const&
id,
246 VtIntArray
const& indices=VtIntArray(0));
266 void BindMaterial(
SdfPath const &rprimId,
SdfPath const &materialId);
277 void UpdateRenderBuffer(
SdfPath const &
id,
290 _tasks[id] = _Task();
305 void HideRprim(
SdfPath const &
id);
309 void UnhideRprim(
SdfPath const &
id);
317 void SetRefineLevel(
SdfPath const &
id,
int refineLevel);
321 void SetVisibility(
SdfPath const &
id,
bool vis);
328 void UpdatePositions(
SdfPath const &
id,
float time);
330 void UpdateRprims(
float time);
332 void UpdateInstancerPrimvars(
float time);
334 void UpdateInstancerPrototypes(
float time);
336 void UpdateCurvePrimvarsInterpMode(
float time);
342 GfVec3f PopulateBasicTestSet();
344 GfVec3f PopulateInvalidPrimsSet();
376 VtIntArray *outIndices)
override;
380 virtual HdPrimvarDescriptorVector
382 HdInterpolation interpolation)
override;
386 SdfPath const& prototypeId)
override;
403 virtual VtValue GetMaterialResource(
SdfPath const &materialId)
override;
407 TfToken const ¶mName)
override;
427 VtVec3fArray
const &points,
428 VtIntArray
const &numVerts,
429 VtIntArray
const &verts,
430 VtIntArray
const &holes,
434 scheme(scheme), orientation(orientation),
435 transform(transform),
436 points(points), numVerts(numVerts), verts(verts),
437 holes(holes), subdivTags(subdivTags), guide(guide),
438 doubleSided(doubleSided), cullStyle(HdCullStyleDontCare) { }
451 HdCullStyle cullStyle;
455 _Curves(VtVec3fArray
const &points,
456 VtIntArray
const &curveVertexCounts,
457 VtIntArray
const &curveIndices,
460 TfToken const &wrap = HdTokens->nonperiodic) :
461 points(points), curveVertexCounts(curveVertexCounts),
462 curveIndices(curveIndices), type(type), basis(basis), wrap(wrap) { }
465 VtIntArray curveVertexCounts;
466 VtIntArray curveIndices;
473 _Points(VtVec3fArray
const &points) : points(points) { }
479 _Instancer(VtVec3fArray
const &scale,
480 VtVec4fArray
const &rotate,
481 VtVec3fArray
const &translate,
483 scale(scale), rotate(rotate), translate(translate),
484 rootTransform(rootTransform) {
488 VtVec3fArray translate;
489 VtIntArray prototypeIndices;
492 std::vector<SdfPath> prototypes;
498 HdInterpolation
const& _interp,
500 VtIntArray
const& _indices=VtIntArray(0)) :
509 HdInterpolation interp;
513 using _Primvars = std::vector<_Primvar>;
516 bool _FindPrimvar(
SdfPath const&
id,
518 _Primvars::iterator *pvIt);
530 struct _RenderBuffer {
532 _RenderBuffer(
GfVec3i const &d, HdFormat f,
bool ms)
533 : dims(d), format(f), multiSampled(ms) {}
539 std::map<SdfPath, _Mesh> _meshes;
540 std::map<SdfPath, _Curves> _curves;
541 std::map<SdfPath, _Points> _points;
542 std::map<SdfPath, _Instancer> _instancers;
543 std::map<SdfPath, _Primvars> _primvars;
544 std::map<SdfPath, VtValue> _materials;
545 std::map<SdfPath, _Camera> _cameras;
546 std::map<SdfPath, _RenderBuffer> _renderBuffers;
547 std::map<SdfPath, _Light> _lights;
548 std::map<SdfPath, _Task> _tasks;
549 TfHashSet<SdfPath, SdfPath::Hash> _hiddenRprims;
551 typedef std::map<SdfPath, SdfPath> SdfPathMap;
552 SdfPathMap _materialBindings;
553 SdfPathMap _instancerBindings;
555 bool _hasInstancePrimvars;
558 std::map<SdfPath, int> _refineLevels;
559 std::map<SdfPath, bool> _visibilities;
563PXR_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.