ae28d55f81
Source: RGB-D -> Dyn-HaMR -> L20 retargeting -> FoundationPose -> reference repair -> SPIDER, documented in docs/PIPELINE_LATEST.md and docs/SETUP_AND_WEIGHTS.md. Adds FoundationPose and nvdiffrast upstream snapshots, requirements/pipeline_venv.txt and the FoundationPose weight manifest/downloader. Assets (Git LFS): weights/ (WiLoR detector, HandFlow denoiser, UniDepth-L), FoundationPose checkpoints, HaMeR checkpoint, Dyn-HaMR HMP model and BMC constraints, L20 URDF/meshes, the 20260915_171525 D405 recording and the two box CADs. MANO models are not redistributed (third_party/hamer/_DATA/data/mano/README.txt). Environments, caches and run outputs excluded. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
103 lines
4.4 KiB
C++
103 lines
4.4 KiB
C++
// Copyright (c) 2009-2022, NVIDIA CORPORATION. All rights reserved.
|
|
//
|
|
// NVIDIA CORPORATION and its licensors retain all intellectual property
|
|
// and proprietary rights in and to this software, related documentation
|
|
// and any modifications thereto. Any use, reproduction, disclosure or
|
|
// distribution of this software and related documentation without an express
|
|
// license agreement from NVIDIA CORPORATION is strictly prohibited.
|
|
|
|
#pragma once
|
|
#include "PrivateDefs.hpp"
|
|
#include "Buffer.hpp"
|
|
#include "../CudaRaster.hpp"
|
|
|
|
namespace CR
|
|
{
|
|
//------------------------------------------------------------------------
|
|
|
|
class RasterImpl
|
|
{
|
|
public:
|
|
RasterImpl (void);
|
|
~RasterImpl (void);
|
|
|
|
void setBufferSize (Vec3i size);
|
|
void setViewport (Vec2i size, Vec2i offset);
|
|
void setRenderModeFlags (U32 flags) { m_renderModeFlags = flags; }
|
|
void deferredClear (U32 color) { m_deferredClear = true; m_clearColor = color; }
|
|
void setVertexBuffer (void* ptr, int numVertices) { m_vertexPtr = ptr; m_numVertices = numVertices; } // GPU pointer.
|
|
void setIndexBuffer (void* ptr, int numTriangles) { m_indexPtr = ptr; m_numTriangles = numTriangles; } // GPU pointer.
|
|
bool drawTriangles (const Vec2i* ranges, bool peel, cudaStream_t stream);
|
|
void* getColorBuffer (void) { return m_colorBuffer.getPtr(); } // GPU pointer.
|
|
void* getDepthBuffer (void) { return m_depthBuffer.getPtr(); } // GPU pointer.
|
|
void swapDepthAndPeel (void);
|
|
size_t getTotalBufferSizes (void) const;
|
|
|
|
private:
|
|
void launchStages (bool instanceMode, bool peel, cudaStream_t stream);
|
|
|
|
// State.
|
|
|
|
unsigned int m_renderModeFlags;
|
|
bool m_deferredClear;
|
|
unsigned int m_clearColor;
|
|
void* m_vertexPtr;
|
|
void* m_indexPtr;
|
|
int m_numVertices; // Input buffer size.
|
|
int m_numTriangles; // Input buffer size.
|
|
size_t m_bufferSizesReported; // Previously reported buffer sizes.
|
|
|
|
// Surfaces.
|
|
|
|
Buffer m_colorBuffer;
|
|
Buffer m_depthBuffer;
|
|
Buffer m_peelBuffer;
|
|
int m_numImages;
|
|
Vec2i m_bufferSizePixels; // Internal buffer size.
|
|
Vec2i m_bufferSizeVp; // Total viewport size.
|
|
Vec2i m_sizePixels; // Internal size at which all computation is done, buffers reserved, etc.
|
|
Vec2i m_sizeVp; // Size to which output will be cropped outside, determines viewport size.
|
|
Vec2i m_offsetPixels; // Viewport offset for tiled rendering.
|
|
Vec2i m_sizeBins;
|
|
S32 m_numBins;
|
|
Vec2i m_sizeTiles;
|
|
S32 m_numTiles;
|
|
|
|
// Launch sizes etc.
|
|
|
|
S32 m_numSMs;
|
|
S32 m_numCoarseBlocksPerSM;
|
|
S32 m_numFineBlocksPerSM;
|
|
S32 m_numFineWarpsPerBlock;
|
|
|
|
// Global intermediate buffers. Individual images have offsets to these.
|
|
|
|
Buffer m_crAtomics;
|
|
HostBuffer m_crAtomicsHost;
|
|
HostBuffer m_crImageParamsHost;
|
|
Buffer m_crImageParamsExtra;
|
|
Buffer m_triSubtris;
|
|
Buffer m_triHeader;
|
|
Buffer m_triData;
|
|
Buffer m_binFirstSeg;
|
|
Buffer m_binTotal;
|
|
Buffer m_binSegData;
|
|
Buffer m_binSegNext;
|
|
Buffer m_binSegCount;
|
|
Buffer m_activeTiles;
|
|
Buffer m_tileFirstSeg;
|
|
Buffer m_tileSegData;
|
|
Buffer m_tileSegNext;
|
|
Buffer m_tileSegCount;
|
|
|
|
// Actual buffer sizes.
|
|
|
|
S32 m_maxSubtris;
|
|
S32 m_maxBinSegs;
|
|
S32 m_maxTileSegs;
|
|
};
|
|
|
|
//------------------------------------------------------------------------
|
|
} // namespace CR
|
|
|