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>
79 lines
4.5 KiB
C
79 lines
4.5 KiB
C
// Copyright (c) 2020, 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 "framework.h"
|
|
|
|
//------------------------------------------------------------------------
|
|
// Constants.
|
|
|
|
#define TEX_DEBUG_MIP_RETAIN_VARIANCE 0 // For debugging
|
|
#define TEX_FWD_MAX_KERNEL_BLOCK_WIDTH 8
|
|
#define TEX_FWD_MAX_KERNEL_BLOCK_HEIGHT 8
|
|
#define TEX_FWD_MAX_MIP_KERNEL_BLOCK_WIDTH 8
|
|
#define TEX_FWD_MAX_MIP_KERNEL_BLOCK_HEIGHT 8
|
|
#define TEX_GRAD_MAX_KERNEL_BLOCK_WIDTH 8
|
|
#define TEX_GRAD_MAX_KERNEL_BLOCK_HEIGHT 8
|
|
#define TEX_GRAD_MAX_MIP_KERNEL_BLOCK_WIDTH 8
|
|
#define TEX_GRAD_MAX_MIP_KERNEL_BLOCK_HEIGHT 8
|
|
#define TEX_MAX_MIP_LEVEL 16 // Currently a texture cannot be larger than 2 GB because we use 32-bit indices everywhere.
|
|
#define TEX_MODE_NEAREST 0 // Nearest on base level.
|
|
#define TEX_MODE_LINEAR 1 // Bilinear on base level.
|
|
#define TEX_MODE_LINEAR_MIPMAP_NEAREST 2 // Bilinear on nearest mip level.
|
|
#define TEX_MODE_LINEAR_MIPMAP_LINEAR 3 // Trilinear.
|
|
#define TEX_MODE_COUNT 4
|
|
#define TEX_BOUNDARY_MODE_CUBE 0 // Cube map mode.
|
|
#define TEX_BOUNDARY_MODE_WRAP 1 // Wrap (u, v).
|
|
#define TEX_BOUNDARY_MODE_CLAMP 2 // Clamp (u, v).
|
|
#define TEX_BOUNDARY_MODE_ZERO 3 // Pad with zeros.
|
|
#define TEX_BOUNDARY_MODE_COUNT 4
|
|
|
|
//------------------------------------------------------------------------
|
|
// CUDA kernel params.
|
|
|
|
struct TextureKernelParams
|
|
{
|
|
const float* tex[TEX_MAX_MIP_LEVEL]; // Incoming texture buffer with mip levels.
|
|
const float* uv; // Incoming texcoord buffer.
|
|
const float* uvDA; // Incoming uv pixel diffs or NULL.
|
|
const float* mipLevelBias; // Incoming mip level bias or NULL.
|
|
const float* dy; // Incoming output gradient.
|
|
float* out; // Outgoing texture data.
|
|
float* gradTex[TEX_MAX_MIP_LEVEL]; // Outgoing texture gradients with mip levels.
|
|
float* gradUV; // Outgoing texcoord gradient.
|
|
float* gradUVDA; // Outgoing texcoord pixel differential gradient.
|
|
float* gradMipLevelBias; // Outgoing mip level bias gradient.
|
|
int enableMip; // If true, we have uv_da and/or mip_level_bias input(s), and a mip tensor.
|
|
int filterMode; // One of the TEX_MODE_ constants.
|
|
int boundaryMode; // One of the TEX_BOUNDARY_MODE_ contants.
|
|
int texConst; // If true, texture is known to be constant.
|
|
int mipLevelLimit; // Mip level limit coming from the op.
|
|
int channels; // Number of texture channels.
|
|
int imgWidth; // Image width.
|
|
int imgHeight; // Image height.
|
|
int texWidth; // Texture width.
|
|
int texHeight; // Texture height.
|
|
int texDepth; // Texture depth.
|
|
int n; // Minibatch size.
|
|
int mipLevelMax; // Maximum mip level index. Zero if mips disabled.
|
|
int mipLevelOut; // Mip level being calculated in builder kernel.
|
|
};
|
|
|
|
//------------------------------------------------------------------------
|
|
// C++ helper function prototypes.
|
|
|
|
void raiseMipSizeError(const TextureKernelParams& p);
|
|
int calculateMipInfo(TextureKernelParams& p, int* mipOffsets);
|
|
|
|
//------------------------------------------------------------------------
|
|
// Macros.
|
|
|
|
#define mipLevelSize(p, i) make_int2(((p).texWidth >> (i)) > 1 ? ((p).texWidth >> (i)) : 1, ((p).texHeight >> (i)) > 1 ? ((p).texHeight >> (i)) : 1)
|
|
|
|
//------------------------------------------------------------------------
|