Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update the pixar/dev branch #20

Merged
merged 43 commits into from
Aug 17, 2019
Merged

Conversation

pmolodo
Copy link
Contributor

@pmolodo pmolodo commented Aug 17, 2019

No description provided.

Paul Molodowitch and others added 30 commits June 10, 2019 15:28
the non-ROI get_pixels overloads were removed in this version, and USD was
still using it, despite the fact that it was deprecated.

This adds a version switch, so that the ROI version is used if available
slipped through because it was in a template that's not used by core
(but is by HdPrman)
the targeted output does not exist.  Previously, we misleadingly
only required the host target *prim* to exist to indicate success.

UsdImagingMaterialAdapter was also not processing connections
to material inputs properly: if the material input has no value, then
we must take the value authored on the connected input, if it
exists.

Also update dox for affected methods, and add a new section to
UsdShade's overview.dox that explains connection semantics,
also fixing upstream/downstream confusion in the examples.

(Internal change: 1987950)
[imaging] fix another sign compare issue

(Internal change: 1987983)
done by passing in a non-null riley callback to Riley::Begin.

(Internal change: 1988115)
…sers and move to SdrShaderProperty

* Add new _ConformDefaultValue utility to SdrShaderProperty to conform the type of the given default value when a new SdrShaderProperty is instantiated.  The logic in this function was factored out from the specific Sdr parser plugins, across which this logic was duplicated.
* Remove special logic from sdrOslParser, rmanOslParser, rmanArgsParser.
* No work needed on usdShadeShaderDefParser because it reads values directly into VtValues

(Internal change: 1988139)
(Internal change: 1988844)
to VtArray<T> copies. This change replaces copies with constant
references when possible.

(Internal change: 1988165)
…the OIT buffers has been moved to HdxOitResolveTask::Prepare and is happening if a OIT

render task sets the oitRequestFlag in the task context. The OIT buffers are cleared in Execute of the first OIT render task with draw items. To coordinate
this, a flag oitClearedFlag is used in the task context.
The communication between the render tasks and the resolve tasks is encapsulated in the helper class HdxOitBufferAccessor.

(Internal change: 1988199)
(Internal change: 1988240)
(Internal change: 1989121)
…le format example

(Internal change: 1988230)
… pass and before the resolve.

The new task is dedicated to volumes as indicated by the new material tag token
HdStMaterialTagTokens->volume.

(Internal change: 1988259)
fix for OpenImageIO >= 1.9.1

(Internal change: 1988422)
…using accelerations to calculate instance transforms

(Internal change: 1988471)
… UsdPrimCompositionQuery class

(Internal change: 1988576)
(Internal change: 1988718)
(Internal change: 1988847)
…tion, where necessary.

Some features of the new baking process include:
   - parallel writes over multiple data layers
   - (approximate) memory management for pending writes
   - unvarying value caching
   - animation sharing (where possible)
   - more efficient comutation of mesh extents
   - improved tracking of dependencies, allowing computations to be bypassed in more cases
   - addressing long-standing bug with UsdSkelBakeSkinning not respecting the passed in interval

The older UsdSkelBakeSkinning() calls remain intact, but use the new imlementation internally
For greater control, an additional function form taking a UsdSkelBakeSkinningParms object has been added.

Given the complexity of the new implementation, moving the bulk of UsdSkelBakeSkinning to bakeSkinning.cpp

Fixing lbs.usda test case to store extentsHint at an appropriate scope for exercsing extents hint updates

(Internal change: 1988704)
(Internal change: 1988841)
This makes the Render() method a simple wrapper around calls to
PrepareBatch() and RenderBatch(). The code paths were already
the same, but this removes the duplicated source code.

(Internal change: 1989019)
… GPU frustum culling

- Absence of bounds (extents) is represented as [FLT_MAX, -FLT_MAX], making the min > max. This is used in the frustum culling code to disable culling for the prim. Add comments to clarify this.
- Add check in frustum culling code for the presence of infinity in the bounds. In such a case, we disable culling for the prim, and will thus, always submit a draw call for it.
- Add guard in stageView when the computed stage BBox is infinite in any dimension to return an empty BBox. This is used in setting the free camera's frustum, and currently results in NaN's in the xform matrix and nothing being rendered. With the fix, that isn't the case.
- Add test wherein a mesh has an infinite point, but no authored extents.

(Internal change: 1989168)
(Internal change: 1993411)
The call to TfStringify was broken because there was
no variable named "time" in function scope. This may
have been picking up the "time" C stdlib function
instead. This didn't break any of our regular builds
but broke test builds on GCC 6.3.1.

(Internal change: 1989312)
Because prim ids are always assigned sequentially, it is trivial to
map them by indexing into a vector.  In addition to being
algorithmically superior and friendlier to caches, we save
40 bytes/rprim relative to std::map.

(Internal change: 1989415)
…atrix types are

trivial.  Update half to OpenEXR version 2.3.

(Internal change: 1989436)
(Internal change: 1989531)
(Internal change: 1989569)
- Add static Create and CreateExplicit functions for
  creating a list op and populating the various lists
  in a single call. This required adding Python
  container conversions for vector<SdfUnregisteredValue>.

- Previously, the string output for a list-op with an
  empty explicit list would just be "SdfListOp()". This
  was misleading, since the default constructed SdfListOp
  is an empty, non-explicit list op; in addition, having
  an empty explicit list is meaningful. This output is
  now "SdfListOp(Explicit Items: [])".

- Also put the full typename alias of the listop in the
  string output for clarity, e.g. "SdfTokenListOp".

- Replace boost::lexical_cast with TfStringify.

(Internal change: 1989593)
mattyjams and others added 13 commits August 5, 2019 21:58
…te 1

(Internal change: 1989610)
(Internal change: 1989797)
(Internal change: 1990044)
…ng them to the instance array child (before, they were being set on both the instancer and the instance array). This prevents per-instance primvars from being inherited by the instancer's prototypes.

Update ops that were inadvertently taking advantage of this unintended inheritance.

Fixes Autodesk#893

(Internal change: 1989753)
…ome cases, which merit further investigation.

(Internal change: 1990134)
During batch validation (HdSt_DrawBatch::Validate), we compute the front draw item's bufferArraysHash and compare it with the batch's previous hash.
This hash incorporates the version number of all the BARs known to the draw item (the BARs themselves are "owned" by the RprimSharedData object on the Rprim).
HdDrawItem::GetBufferArraysHash factors the various primvar frequency BARs, topology BARs and instance BARs to compute the hash.
Living in the base class, it didn't factor in the shader param BAR managed by HdStSurfaceShader in HdStDrawItem, and thus meant that the batches and/or the dispatch buffer for the (indirect) draw batch was not updated correctly. This situation can be triggered via garbage collection of a BAR that shared the buffer array for the shader param data.
When garbage collection happens, the version number of the HdBufferArray is bumped up. Calling GetVersion on the HdBufferArrayRange returns the version of the underlying buffer array.

Changes:
- Add virtual _GetBufferArraysHash to HdDrawItem to allow derived classes to compute hashes of any buffers they manage/know about.
- Add implementation in HdStDrawItem that returns the version of the shader param BAR.

(Internal change: 1990382)
HdRepr holds a vector of (raw) pointers to draw items, and is responsible for deleting them during destruction (which happens on Rprim removal). Failure to do so leaks CPU memory.
While HdDrawItem doesn't manage any BAR (and instead delegates to RprimSharedData), HdStDrawItem holds a handle to the surface shader, which manages a BAR for the params array, leading to GPU memory that was never being released when using Storm (HdSt).

(Internal change: 1990426)
…enShape to allow python lists to be passed.

This makes the python wrappers more consistent with other USD wrappers.
Also updating CreateNormalOffsetsAttr() to accept a default value, to be consistent with common schema API.

(Internal change: 1990677)
UsdGeomPointInstancer::ComputeInstanceTransformsAtTime

(Internal change: 1993231)
…ntBased to compute points at given times using velocities and accelerations. Moved all functions shared between PointBased and PointInstancer to SamplingUtils. The preamble in PointInstancer now computes values for only ProtoIndices, PrototypePaths, and the mask. ComputeInstanceTransformsAtTime in PointInstancer now calls on ComputeInstanceTransformsAtTimes in order to reduce repeated code, as does ComputePointsAtTime in PointBased, which calls on ComputePointsAtTimes.

(Internal change: 1993290)
(Internal change: 1993412)
Moving fallback volume shader out of the HdSt_VolumeShaderKey into its separate file.
Changing HdStVolume::_UpdateDrawItem to use the fallback volume shader if no material is provided for a volume prim.
Adding HioGlslfx::GetVolumeSource to read volumeShader technique from GLSLFX
file.

(Internal change: 1993388)
Updated texture resouce binding in HdStSurfaceShader to
add a level of indirection between the shader's texture
descriptors and the underlying GL texture resource IDs.

This is exposed as a concept only within HdSt and does not change
the HdSceneDelegate interface.

This is implemented by registering an HdStTextureResourceHandle
in the HdStResourceRegistry which can be used to resolve
the current texture resource for a given texture handle ID
The texture handle ID is the ID of a texture prim or draw target
attachment.

Using texture resource handles allows some common cases
of texture updates (e.g. animated texture cards) to proceed
without needing to update material parameters.

We still need to propagate texture resource changes to
materials in some cases, i.e. when the texture type has changed
(e.g. UV vs Ptex, etc) or when using bindless textures.

(Internal change: 1993404)
…terial if

outputs:surface is not connected. If it follows the outputs:volume, it uses the
volumeShader technique instead of the surfaceShader technique from a GLSLFX
file.

Ideally, the query of the render delegate to the scene delegate for a shader
would specify whether it is for a surface or volume shader. In this change, this
distinction is not made and the shader is used according to whether it is
consumed by a volume prim or not.
The proper time to fix this is when we switch from the
UsdImagingGLHydraMaterialAdapter to HdNetworkMaterialMap which will have
different entries for the surface and volume shader.

(Internal change: 1993410)
@kxl-adsk kxl-adsk merged commit 4594655 into Autodesk:pixar/dev Aug 17, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.