0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何计算Texture Functions的纹理函数返回值

星星科技指导员 来源:NVIDIA 作者:Ken He 2022-05-07 15:19 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本附录给出了用于计算 Texture Functions 的纹理函数返回值的公式,具体取决于纹理引用的各种属性(请参阅纹理和表面内存)。

绑定到纹理引用的纹理表示为一个数组 T

一维纹理的 N 个texels,

二维纹理的 N x M texels,

三维纹理的 N x M x L texels。

它是使用非归一化纹理坐标 x、y 和 z 或归一化纹理坐标 x/N、y/M 和 z/L 获取的,如纹理内存中所述。 在本附录中,假定坐标在有效范围内。 纹理内存解释了如何根据寻址模式将超出范围的坐标重新映射到有效范围。

J.1. Nearest-Point Sampling

在这种过滤模式下,纹理获取返回的值是

tex(x)=T[i] 对于一维纹理,

tex(x,y)=T[i,j] 对于二维纹理,

tex(x,y,z)=T[i,j,k] 对于三维纹理,

其中 i=floor(x),j=floor(y),k=floor(z)。

下图 说明了 N=4 的一维纹理的最近点采样。

对于整数纹理,纹理获取返回的值可以选择重新映射到 [0.0, 1.0](请参阅纹理内存)。

1.png

J.2. Linear Filtering

在这种仅适用于浮点纹理的过滤模式下,纹理获取返回的值是

tex(x)=(1−α)T[i]+αT[i+1] for a one-dimensional texture,

tex(x,y)=(1−α)(1−β)T[i,j]+α(1−β)T[i+1,j]+(1−α)βT[i,j+1]+αβT[i+1,j+1] for a two-dimensional texture,

tex(x,y,z) =(1−α)(1−β)(1−γ)T[i,j,k]+α(1−β)(1−γ)T[i+1,j,k]+(1−α)β(1−γ)T[i,j+1,k]+αβ(1−γ)T[i+1,j+1,k]+(1−α)(1−β)γT[i,j,k+1]+α(1−β)γT[i+1,j,k+1]+(1−α)βγT[i,j+1,k+1]+αβγT[i+1,j+1,k+1]for a three-dimensional texture,

其中:

i=floor(xB), α=frac(xB), xB=x-0.5,

j=floor(yB), β=frac(yB), yB=y-0.5,

k=floor(zB), γ=frac(zB), zB= z-0.5,

α、β 和 γ 以 9 位定点格式存储,带有 8 位小数值(因此精确表示 1.0)。

下图 说明了 N=4 的一维纹理的线性过滤。

2.png

J.3. Table Lookup

x 跨越区间 [0,R] 的查表 TL(x) 可以实现为 TL(x)=tex((N-1)/R)x+0.5) 以确保 TL(0)= T[0] 和 TL(R)=T[N-1]。

下图 说明了使用纹理过滤从 N=4 的一维纹理中实现 R=4 或 R=1 的表查找。

3.png

关于作者

Ken He 是 NVIDIA 企业级开发者社区经理 & 高级讲师,拥有多年的 GPU人工智能开发经验。自 2017 年加入 NVIDIA 开发者社区以来,完成过上百场培训,帮助上万个开发者了解人工智能和 GPU 编程开发。在计算机视觉,高性能计算领域完成过多个独立项目。并且,在机器人无人机领域,有过丰富的研发经验。对于图像识别,目标的检测与跟踪完成过多种解决方案。曾经参与 GPU 版气象模式GRAPES,是其主要研发者。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • NVIDIA
    +关注

    关注

    14

    文章

    5508

    浏览量

    109119
  • gpu
    gpu
    +关注

    关注

    28

    文章

    5105

    浏览量

    134487
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    函数指针及指针函数的区别

    指针的函数,即本质是一个函数函数返回类型是某一类型的指针   类型标识符 *函数名(参数表)   int *f(x,y);   首先它是一
    发表于 12-12 06:34

    函数指针的概念

    函数返回值类型 (* 指针变量名) (函数参数列表); “函数返回值类型”表示该指针变量可以指向具有什么
    发表于 12-11 08:10

    使用setjmp及longjmp函数处理异常

    ) { // 调用foo函数,传入一个非零 foo(10); // 调用foo函数,传入一个零 foo(0); } else { // 如果
    发表于 12-11 08:00

    检查函数返回值的错误和异常处理方法

    检查函数返回值:这是最常见也最基本的错误处理和异常处理方法,就是在调用一个函数后,检查其返回值是否符合预期或是否表示出错或失败。如果出错或失败,则根据
    发表于 12-11 06:48

    如何获取易贝EBAY商品详情 API 返回值说明?

    的API获取商品详情时,通常会返回一个JSON或XML格式的响应,这个响应包含了商品的详细信息。以下是一个简化的JSON格式的eBay商品详情API返回值示例及说明:   json代码解读复制代码
    的头像 发表于 11-19 11:57 120次阅读

    如何获得速卖通aliexpress分类详情 API 返回值说明

    的API返回值会取决于你使用的API版本和请求类型。 以下是一个假设性的速卖通分类详情API返回值的说明,但请注意,这并非实际的API返回结构,因为速卖通的具体API文档可能不为公众公开。在实际开发中,你应当查阅速卖通官方的AP
    的头像 发表于 11-09 17:46 1024次阅读

    蜂鸟E203的GPIO读取的返回值注意事项

    蜂鸟E203使用Nuclei Studio开发,使用库函数中的gpio_read()读取IO口的输入时,当IO口是高电平时,使用函数所得到的返回值与IO口的编号存在一定的关系。 例如
    发表于 10-22 08:05

    使用jQuery的常用方法与返回值分析

    使用jQuery的常用方法与返回值分析 jQuery是一个轻量级的JavaScript库,旨在简化HTML文档遍历和操作、事件处理以及动画效果的创建。本文将介绍一些常用的jQuery方法及其返回值
    发表于 10-01 20:18

    请问CY68013上位机发送的返回值到底代表什么意思?

    ,为0时代表发送失败,刚开始一直没问题,FPGA端接收也正常,上位机返回值也是1, 最后返回值一直是0,所以我一直认为发送失败了,但是今天在FPGA一端抓波形发现,数据是发送过去了的,请问这个返回值到底是什么意思? 在FPGA端
    发表于 05-22 07:16

    迅为RK3568开发板篇Openharmony配置HDF控制UART-实操-HDF驱动配置UART-UART应用开发-UART驱动API接口介绍

    返回值为负数表示 UART 设置设备属性失败。 (5) UartGetAttribute 设置 UART 的设备属性后,可以通过获取设备属性接口来查看 UART 当前的设备属性。函数原型如下所示
    发表于 03-24 11:19

    cubeide中浮点函数返回值错误是怎么回事?

    我在某个.c文件中定义了一个float函数,在函数内设置断点查看return运算结果是正确的,但我在另一个.c文件中引用这个函数给某个变量赋值时,变量的就错误了。感觉像是cubeid
    发表于 03-13 07:45

    迅为RK3568开发板篇Openharmony配置HDF控制UART-实操-HDF驱动配置UART-UART应用开发-UART驱动API接口介绍

    属性成功,返回值为负数表示 UART 设置设备属性失败。 (5) UartGetAttribute 设置 UART 的设备属性后,可以通过获取设备属性接口来查看 UART 当前的设备属性。函数原型如下
    发表于 03-11 10:27

    C语言如何处理函数返回值

    当你在函数的最后写上 return 0 的时候,它是如何返回给调用函数的? 比如 test 函数,为了待会更好的看懂汇编代码,我写成了 return 1234。 处理
    的头像 发表于 01-16 09:21 772次阅读

    如何把两个数据返回给调用函数

    函数的处理结果包含两个数据,如何把两个数据返回给调用函数? 第一种,把两个数据封装成一个结构体,函数返回结构体。 调用
    的头像 发表于 01-08 10:15 687次阅读

    ADS1298寄存器写入后,读取CH5—CH8通道寄存器返回值为0,为什么?

    我最近在做ADS1298。发现ADS1298寄存器写入后,读取CH5—CH8通道寄存器返回值为0。 此外,VREFP也不输出2.4V参考电压。但是内部晶振时钟能正常输出。芯片的ID号读取为80
    发表于 01-06 07:16