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

    文章

    5087

    浏览量

    103937
  • gpu
    gpu
    +关注

    关注

    28

    文章

    4798

    浏览量

    129509
收藏 人收藏

    评论

    相关推荐

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

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

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

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

    ADS1115返回值不连续是怎么回事?

    ADS1115返回值不连续,每次都是0.16.32.48......变化,不是0.1.2.3.4.....变化的,用逻辑分析仪看了读的是对的,求教!!!
    发表于 12-02 07:31

    ADS8332数据不刷新,每个通道返回值都是1.7V左右,而且会慢慢上升,为什么?

    ADS8332数据不刷新,每个通道返回值都是1.7V左右,而且会慢慢上升
    发表于 11-29 12:20

    同样是函数,在C和C++中有什么区别

    同样是函数,在 C 和 C++ 中有什么区别? 第一个返回值。 C语言的函数可以不写返回值类型,编译器会默认为返回 int。 但是 C++
    的头像 发表于 11-29 10:25 470次阅读

    常用SQL函数及其用法

    的 SQL 函数及其用法: 一、聚合函数(Aggregate Functions) 聚合函数对一组执行
    的头像 发表于 11-19 10:18 514次阅读

    C语言经典笔试题集锦

    有以下程序,如果 x 等于 254,则函数返回值是多少?
    的头像 发表于 11-09 11:39 293次阅读

    HTTP相关返回值异常如何解决(上篇)

    ​ 今天我们讲讲HTTP相关返回值异常如何解决(实例持续更新中) HTTP介绍 HTTP(超文本传输协议,Hypertext Transfer Protocol)是用于在网络上进行数据交换的应用层
    的头像 发表于 10-20 16:40 462次阅读
    HTTP相关<b class='flag-5'>返回值</b>异常如何解决(上篇)

    面试常考+1:函数指针与指针函数、数组指针与指针数组

    函数是指返回值为指针的函数。语法:返回值类型*函数名(参数列表)。示例代码:#include#includeint*getNumber(in
    的头像 发表于 08-10 08:11 1011次阅读
    面试常考+1:<b class='flag-5'>函数</b>指针与指针<b class='flag-5'>函数</b>、数组指针与指针数组

    PGA280发送指令后无返回值是怎么回事?

    在调试PGA280的时候,给PGA280的寄存器3”set BUF time-out”(如图)发送十六进制指令8300,本应该获得一个19的返回值,但我们却什么都没有收到,PGA280没有反应。 我们怀疑芯片因为供电的原因没有工作。 这是我们测试板的原理图 这是官
    发表于 08-07 06:12

    espconn_send返回值错误的原因?

    ); GPIO_OUTPUT_SET(0, 1);//用于通知主机,数据已经读取完成 在这段函数里面我的espconn_send发送函数返回值串口打印出来为244,而且我接受buff的服务端也没有接收到数据。所以请问一下这个2
    发表于 07-09 07:28

    一站式统一返回值封装、异常处理、异常错误码解决方案—最强的Sping Boot接口优雅响应处理器

    1. 前言 统一返回值封装、统一异常处理和异常错误码体系的意义在于提高代码的可维护性和可读性,使得代码更加健壮和稳定。统一返回值封装可以避免每一个接口都需要手工拼装响应报文;统一异常处理可以将异常
    的头像 发表于 06-20 15:42 669次阅读

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

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

    请问MDK Middleware Network 中的回调函数netTCP_cb_t的返回值我在程序中怎样才能得到并使用?

    请问MDK Middleware Network 中的回调函数netTCP_cb_t的返回值我在程序中怎样才能得到并使用?
    发表于 04-22 07:19

    使用stm32h745zi-q nucleo开发板调试时,发现使用-specs=nano.specs时sscanf返回值错误,为什么?

    使用stm32h745zi-q nucleo开发板调试时,发现使用-specs=nano.specs时sscanf返回值错误,使用标准c库时返回值正确,但内存溢出了,请教如何查找问题。
    发表于 04-01 08:00