Direct X 12 – Texture 贴图

9.6 Address Mode

一张贴图,结合了恒定插值或者线性插值,定义了函数T(u,v)=(r,g,b,a)。也就说,基于贴图坐标(u,v)∈[0,1],函数T返回了一个颜色向量(r,g,b,a)。而DX允许我们以4种方法(也被称为address mode)扩展T的函数域:wrap,border color,clamp,mirror。

1. wrap:在每个整数连接点重复图像,如下图所示。

2. border color:将每一个不在范围[0,1]的点(u,v)的颜色设为我们在程序中所定义的颜色,如下图所示。

3. clamp:将每一个不在范围[0,1]的点(u,v)的颜色设为距离其最近的在范围[0,1]内的点的颜色,如下图所示。

4. mirror:在每一个整数节点反转图像,如下图所示。

在我们设定了address mode之后便确定了贴图坐标超过范围[0,1]的点的颜色,address mode的默认值为wrap。同时wrap也是最常用的address mode;其允许我们在某些平面重复tile一张贴图。其也让我们在不需要增加数据的情况下就能增加贴图的分辨率。使用tiling需要注意贴图不可以有“缝隙”。例如,上图的木箱贴图就是有缝隙有边界的,所以在tiling贴图时,我们可以看到贴图在不断重复。但是,下图中的砖块贴图看上去是没有缝隙和边界的,而我们将其tiling或者说重复了2×3倍。

在DX12中address mode有枚举D3D12_TEXTURE_ADDRESS_MODE表示:

typedef
enum D3D12_TEXTURE_ADDRESS_MODE
    {
        D3D12_TEXTURE_ADDRESS_MODE_WRAP = 1,
        D3D12_TEXTURE_ADDRESS_MODE_MIRROR = 2,
        D3D12_TEXTURE_ADDRESS_MODE_CLAMP = 3,
        D3D12_TEXTURE_ADDRESS_MODE_BORDER = 4,
        D3D12_TEXTURE_ADDRESS_MODE_MIRROR_ONCE = 5
    }   D3D12_TEXTURE_ADDRESS_MODE;

《Direct X 12 – Texture 贴图》有5条留言

  1. 老铁,这本书的中译版正在走最后阶段,预计今年就要出版了……
    而且这本书坑很多,如果要翻译造福大家,请用心……
    谢谢!

    回复
    • 哈哈,中文版已经要出版啦,是在审核还是在翻译?是程序员翻译的么,还是那种大学老师翻译的?写这本书的老铁感觉没有写dx11时那么认真,里面有些东西直接从上一本拷过来。。坑的话我觉得还行吧,就是一些要点容易遗漏。。。

      回复
      • 已经在最后审核期了,大约几个月后就能出了吧~
        如果不是这些坑,这本书的中文版半年前可能就已经出来了……
        十分同意老铁的感觉,尤其是改得还不彻底,还漏了些东西。
        最坑的是阿三带领的微软团队,随着win10的更新方式的更改,隔半年就有新特性、新函数加进去,简直是坑神之神吗~ XD
        另外,题外话,就冲着win10,我感觉GitHub早晚要被微软玩儿坏……
        应该说算是程序员翻译的,之前做过相关的东西,我觉得中译本质量应该还算说得过去,如果出版社不坑的话……到现在,这本书已经翻译快满两年了,一个人翻译的……
        不管怎么说,也要感谢老铁在业余时间给大伙分享技术!
        DX 12与福尔康一样,偏底层,不好(容易)玩儿,到现在也没见有谁正经用它优化,做出什么强大的游戏来……
        您翻译的速度还真是挺快的……orz
        我记得今年八月rtr 4th就要来了,如果能翻译好,定是国内图形界的福音啦~ 🙂

        回复
        • 额。。。两年也太久了吧,辛苦啦,哈哈。我是觉得翻译的话,对书中知识点的理解挺有用的,如果只是粗略地看比较容易漏。。
          DX12可能还是微软自己旗下的工作室在用吧,这一个世代的xbx one肯定还是DX11为主。。看看下一代主机上新的话能不能普及DX12

          回复
          • 扎心啊,老铁!
            里面的事儿太多太杂,水深啊……如果愿意的话,届时买一本(估摸也不太可能……)看看就明白了……不过他马上就要弄完了,好歹算了了这件心事儿啦……据说裤衩都要当出去鸟……
            总是在黑暗的角落里暗想,这玩意儿也许他们自己也不会使的,驱动配合、无穷更新……统统加起来这玩意儿其实……
            嗯,这次1803倒没更新什么东西,说明相对趋于稳定了,或许这个节骨眼儿上发出中译本是个合适的时机?谁知道捏……
            最后再贫一句话,书里的错误有软有硬,所以就算是一字一句对着翻出来,结果也可想而知,这就是为什么这本要花那么长时间准备的原因之一啦,老铁!所以,我才会说如果要翻译给大家看,要用心啦……

留下评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据