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/material.h" 30 #include "pxr/imaging/hd/sceneDelegate.h" 31 #include "pxr/imaging/hd/tokens.h" 44 PXR_NAMESPACE_OPEN_SCOPE
58 void SetUseInstancePrimvars(
bool v) { _hasInstancePrimvars = v; }
61 void SetRefineLevel(
int level);
64 void SetVisibility(
bool vis);
69 void AddMesh(
SdfPath const&
id);
74 VtVec3fArray
const &points,
75 VtIntArray
const &numVerts,
76 VtIntArray
const &verts,
79 TfToken const &scheme=PxOsdOpenSubdivTokens->catmullClark,
80 TfToken const &orientation=HdTokens->rightHanded,
81 bool doubleSided=
false);
86 VtVec3fArray
const &points,
87 VtIntArray
const &numVerts,
88 VtIntArray
const &verts,
89 VtIntArray
const &holes,
92 HdInterpolation colorInterpolation,
94 HdInterpolation opacityInterpolation,
97 TfToken const &scheme=PxOsdOpenSubdivTokens->catmullClark,
98 TfToken const &orientation=HdTokens->rightHanded,
99 bool doubleSided=
false);
102 void AddMesh(
SdfPath const &
id,
104 VtVec3fArray
const &points,
105 VtIntArray
const &numVerts,
106 VtIntArray
const &verts,
107 VtIntArray
const &holes,
110 VtIntArray
const &colorIndices,
111 HdInterpolation colorInterpolation,
113 VtIntArray
const &opacityIndices,
114 HdInterpolation opacityInterpolation,
117 TfToken const &scheme=PxOsdOpenSubdivTokens->catmullClark,
118 TfToken const &orientation=HdTokens->rightHanded,
119 bool doubleSided=
false);
125 TfToken const &scheme=PxOsdOpenSubdivTokens->catmullClark);
130 bool rightHanded=
true,
bool doubleSided=
false,
137 bool rightHanded=
true,
bool doubleSided=
false,
144 bool rightHanded=
true,
bool doubleSided=
false,
151 bool rightHanded=
true,
bool doubleSided=
false,
156 void AddGridWithCustomColor(
SdfPath const &
id,
int nx,
int ny,
159 HdInterpolation colorInterpolation,
160 bool rightHanded=
true,
bool doubleSided=
false,
166 HdInterpolation colorInterp,
184 void AddBasisCurves(
SdfPath const &
id,
185 VtVec3fArray
const &points,
186 VtIntArray
const &curveVertexCounts,
187 VtIntArray
const &curveIndices,
188 VtVec3fArray
const &normals,
192 HdInterpolation colorInterpolation,
194 HdInterpolation opacityInterpolation,
196 HdInterpolation widthInterpolation,
203 HdInterpolation colorInterp=HdInterpolationConstant,
204 HdInterpolation widthInterp=HdInterpolationConstant,
205 bool authoredNormals=
false,
209 void AddPoints(
SdfPath const &
id,
210 VtVec3fArray
const &points,
212 HdInterpolation colorInterpolation,
214 HdInterpolation opacityInterpolation,
216 HdInterpolation widthInterpolation,
221 void AddPoints(
SdfPath const &
id,
223 HdInterpolation colorInterp=HdInterpolationConstant,
224 HdInterpolation widthInterp=HdInterpolationConstant,
234 void SetInstancerProperties(
SdfPath const &
id,
235 VtIntArray
const &prototypeIndex,
236 VtVec3fArray
const &scale,
237 VtVec4fArray
const &rotate,
238 VtVec3fArray
const &translate);
241 void UpdateInstancer(
SdfPath const& rprimId,
SdfPath const& instancerId);
248 HdInterpolation
const& interp,
250 VtIntArray
const& indices=VtIntArray(0));
253 void UpdatePrimvarValue(
SdfPath const&
id,
256 VtIntArray
const& indices=VtIntArray(0));
276 void BindMaterial(
SdfPath const &rprimId,
SdfPath const &materialId);
287 void UpdateRenderBuffer(
SdfPath const &
id,
300 _tasks[id] = _Task();
315 void HideRprim(
SdfPath const &
id);
319 void UnhideRprim(
SdfPath const &
id);
327 void SetRefineLevel(
SdfPath const &
id,
int refineLevel);
331 void SetVisibility(
SdfPath const &
id,
bool vis);
338 void UpdatePositions(
SdfPath const &
id,
float time);
340 void UpdateRprims(
float time);
342 void UpdateInstancerPrimvars(
float time);
344 void UpdateInstancerPrototypes(
float time);
346 void UpdateCurvePrimvarsInterpMode(
float time);
352 GfVec3f PopulateBasicTestSet();
354 GfVec3f PopulateInvalidPrimsSet();
384 VtIntArray *outIndices)
override;
388 virtual HdPrimvarDescriptorVector
390 HdInterpolation interpolation)
override;
394 SdfPath const& prototypeId)
override;
411 virtual VtValue GetMaterialResource(
SdfPath const &materialId)
override;
415 TfToken const ¶mName)
override;
435 VtVec3fArray
const &points,
436 VtIntArray
const &numVerts,
437 VtIntArray
const &verts,
438 VtIntArray
const &holes,
442 scheme(scheme), orientation(orientation),
443 transform(transform),
444 points(points), numVerts(numVerts), verts(verts),
445 holes(holes), subdivTags(subdivTags), guide(guide),
446 doubleSided(doubleSided) { }
462 _Curves(VtVec3fArray
const &points,
463 VtIntArray
const &curveVertexCounts,
464 VtIntArray
const &curveIndices,
467 points(points), curveVertexCounts(curveVertexCounts),
468 curveIndices(curveIndices), type(type), basis(basis) { }
471 VtIntArray curveVertexCounts;
472 VtIntArray curveIndices;
478 _Points(VtVec3fArray
const &points) : points(points) { }
484 _Instancer(VtVec3fArray
const &scale,
485 VtVec4fArray
const &rotate,
486 VtVec3fArray
const &translate,
488 scale(scale), rotate(rotate), translate(translate),
489 rootTransform(rootTransform) {
493 VtVec3fArray translate;
494 VtIntArray prototypeIndices;
497 std::vector<SdfPath> prototypes;
503 HdInterpolation
const& _interp,
505 VtIntArray
const& _indices=VtIntArray(0)) :
514 HdInterpolation interp;
518 using _Primvars = std::vector<_Primvar>;
521 bool _FindPrimvar(
SdfPath const&
id,
523 _Primvars::iterator *pvIt);
535 struct _RenderBuffer {
537 _RenderBuffer(
GfVec3i const &d, HdFormat f,
bool ms)
538 : dims(d), format(f), multiSampled(ms) {}
544 std::map<SdfPath, _Mesh> _meshes;
545 std::map<SdfPath, _Curves> _curves;
546 std::map<SdfPath, _Points> _points;
547 std::map<SdfPath, _Instancer> _instancers;
548 std::map<SdfPath, _Primvars> _primvars;
549 std::map<SdfPath, VtValue> _materials;
550 std::map<SdfPath, _Camera> _cameras;
551 std::map<SdfPath, _RenderBuffer> _renderBuffers;
552 std::map<SdfPath, _Light> _lights;
553 std::map<SdfPath, _Task> _tasks;
554 TfHashSet<SdfPath, SdfPath::Hash> _hiddenRprims;
556 typedef std::map<SdfPath, SdfPath> SdfPathMap;
557 SdfPathMap _materialBindings;
558 SdfPathMap _instancerBindings;
560 bool _hasInstancePrimvars;
563 std::map<SdfPath, int> _refineLevels;
564 std::map<SdfPath, bool> _visibilities;
568 PXR_NAMESPACE_CLOSE_SCOPE
570 #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.
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.