|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#pragma once |
|
#include "framework.h" |
|
|
|
|
|
|
|
|
|
#define TEX_DEBUG_MIP_RETAIN_VARIANCE 0 |
|
#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 |
|
#define TEX_MODE_NEAREST 0 |
|
#define TEX_MODE_LINEAR 1 |
|
#define TEX_MODE_LINEAR_MIPMAP_NEAREST 2 |
|
#define TEX_MODE_LINEAR_MIPMAP_LINEAR 3 |
|
#define TEX_MODE_COUNT 4 |
|
#define TEX_BOUNDARY_MODE_CUBE 0 |
|
#define TEX_BOUNDARY_MODE_WRAP 1 |
|
#define TEX_BOUNDARY_MODE_CLAMP 2 |
|
#define TEX_BOUNDARY_MODE_ZERO 3 |
|
#define TEX_BOUNDARY_MODE_COUNT 4 |
|
|
|
|
|
|
|
|
|
struct TextureKernelParams |
|
{ |
|
const float* tex[TEX_MAX_MIP_LEVEL]; |
|
const float* uv; |
|
const float* uvDA; |
|
const float* mipLevelBias; |
|
const float* dy; |
|
float* out; |
|
float* gradTex[TEX_MAX_MIP_LEVEL]; |
|
float* gradUV; |
|
float* gradUVDA; |
|
float* gradMipLevelBias; |
|
int enableMip; |
|
int filterMode; |
|
int boundaryMode; |
|
int texConst; |
|
int mipLevelLimit; |
|
int channels; |
|
int imgWidth; |
|
int imgHeight; |
|
int texWidth; |
|
int texHeight; |
|
int texDepth; |
|
int n; |
|
int mipLevelMax; |
|
int mipLevelOut; |
|
}; |
|
|
|
|
|
|
|
|
|
void raiseMipSizeError(NVDR_CTX_ARGS, const TextureKernelParams& p); |
|
int calculateMipInfo(NVDR_CTX_ARGS, TextureKernelParams& p, int* mipOffsets); |
|
|
|
|
|
|
|
|
|
#define mipLevelSize(p, i) make_int2(((p).texWidth >> (i)) > 1 ? ((p).texWidth >> (i)) : 1, ((p).texHeight >> (i)) > 1 ? ((p).texHeight >> (i)) : 1) |
|
|
|
|
|
|