DX纹理映射

需要DX的第三方库:DirectXTK的DDSTextureLoader.cpp  .h

DirectDraw Surface(DDS):有损压缩

DXT1:无alpha        DXT3         DXT5

DDS读入DX后

BC1        RGB         A        叶子

BC2        RGB        4A        近似模拟透明

BC3        RGB        8A        半透

BC4        R                        只有一个颜色通道  灰度图

BC5        RG

BC6        HDR

BC7                                   高效压缩,不回损失类似法线的内容

纹素:纹理的像素

UV坐标对应像素坐标提取颜色(通重心坐标实现像素坐标向纹理坐标的转换)

Mipmap技术:

解决1.纹理像素缩小        2.纹理像素放大(插值)

层级:根据点距离视口的距离觉得它所在层

        1*1*4=4

        2*2*4=16

        4*4*4=64

        8*8*4=256

        16*16*4=1024

插值

三线性插值:解决一个像素只映射到一个文素的一小部分

红圈是像素映射到的点

V_{1}=Lerp(x,C_{1},C_{2}) ; V_{2}=Lerp(x,C_{3},C_{4})

f(u,v)=Lerp(V,V_{1},V_{2})        (uv坐标)

Minimap和(层级)插值的结合解决了层导致的分裂问题,如图:

但这种正方形式的插值(不考虑x、y轴和屏幕的角度问题)会导致画面模糊。各向异性过滤解决了这个问题:

各向异性过滤ANISOTROPIC:随x、y缩放

纹理上的拉伸模拟了屏幕上的拉伸(而不是像之前一样四四方方就投影过来)。

这样比超级采样所消耗的性能小

Minimap:节省了三分之一的内存

各向异性:三倍内存。如图红圈是比原来多的图片

EWA:更加费性能,但擅长处理外来歪曲的纹理。(各向异性擅长处理x、y拉伸的纹理)

DX的纹理采样:

代码上在根签名描述处增加静态采样。对应Shader的s0寄存器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值