当前位置:网站首页>【TA-霜狼_may-《百人计划》】1.3纹理的秘密
【TA-霜狼_may-《百人计划》】1.3纹理的秘密
2022-07-01 03:24:00 【zczplus】
【TA-霜狼_may-《百人计划》】1.3 纹理的秘密
1.3 纹理三大问
1.3.1 纹理是什么?
任何一张图片都可以是纹理,
从计算机渲染的角度来说,是一种可供着色器读写的结构化存储形式。
纹理可以不仅仅是图片,也可以包含采样纹理时的各种设置。
1.3.2 为什么需要纹理?
通过牺牲几何细节,达到大幅度降低工作量的目的,能够有效节省存储空间并提升读取速度。
1.3.3 纹理管线
纹理管线的全流程:
模型空间位置 =》
投影函数(与之前渲染管线整体流程中几何阶段中的投影完全不同,注意区分)=》
纹理映射=》
纹理坐标=》
通讯函数=》
新纹理坐标=》
纹理采样(避免依赖纹理读取)=》
纹理值
例子

1.3.4 纹理采样设置之Wrap Mode
决定UV值在[0,1]以外的表现
OpenGL ——“包装模式” (Wrapping Model)
DirectX ——“纹理寻址模式”(Texture Addressing Model)
以下为Wrap Mode的四中常见方法,用以解决当uv坐标映射到[0,1]以外时的问题。分为:Repeat,Mirror,Clamp,Border

1.3.5 纹理采样设置之Filter Mode
当纹理由于拉伸而产生变化的时候要采用哪一种滤波模式来调整自身的表现。简单来说:用以对抗由于图形畸变造成的失真(我自己总结的)。
一般情况而言,纹理过滤是在专有硬件上通过一系列的特定技术来完成的,同样可以在软件中完成,也可以进行软硬件的结合。
1.3.5.1 放大:
最近邻
- 通过多个像素采样同一个纹素的方法,达到放大的目的,从而产生像素化的现象。
- 开销较小
双线性插值
- 例子如下:

(u’,v’)的由来:
- 通过uv坐标获得当前纹素的中心坐标,
- 由此推得能够包裹当前纹素位置的最近的四个像素点,
- 再以该四个点为基础组成坐标,
- 纹素在该坐标系下的位置就是上述的(u’,v’)。
- 底部公式通过四次权重相加的方式达到线性插值的目的,效果是最近邻的四倍。
- 例子如下:
立方卷积
- 简单了解,自己去搞搞

- 简单了解,自己去搞搞
Qu’iLez光滑线性插值
- 常见的曲线有如下两种:

光滑曲线的插值过程:
- 常见的曲线有如下两种:
四种方法效果对比图:
1.3.5.2 缩小:
- 最邻近

- 双线性插值
- 表现与最近邻类似,2x2的采样方式还是不太能够抵抗上图中举出的闪烁情况。
- Mipmap
- 以原始图片作为金字塔的底部
- 将2x2的4个相邻的纹理的平均值作为下一级的新的纹素值
- 依次重复直到像素大小为1x1
- 整体数据占用量只多了1/3
- 关键问题在于选择正确的level(重要)
- 有一个问题:overblur
- 利用各向异性过滤
- SAT
- (这一部分需要game101的基础,恶补一下gkd)
渲染优化常见方式
- 针对CPU:纹理图集 / 数组
- 促使CPU和GPU并行工作
- DrawCall是其中一种,瓶颈主要在于CPU
- GPU的优化主要从带宽入手 - 纹理压缩
常见纹理介绍
- 立方体贴图 CubeMap(常用于环境贴图)

- 凹凸贴图 Bump Mapping

- 位移贴图 Displacement Mapping

总结
Filter Mode有哪几种?
- 放大:
- 最近邻:从单一纹素直接取值
- 双线性插值:取2x2的纹素进行插值
- q曲线插值:效果介于双线性插值和立方卷积插值之间
- 立方卷积插值:取4x4像素,并且考虑变化速率
- 缩小:
- 最近邻
- 双线性插值
- mipmap(重 难 再看games101)
纹理优化方法和原理:
- cpu优化,利用纹理数组合,纹理集合,提升CPU性能,减少DrawCall
- gpu优化,利用纹理压缩,有效利用有限的带宽。
边栏推荐
- 完全背包问题
- Listener listener
- 5、【WebGIS实战】软件操作篇——服务发布及权限管理
- Take you through a circuit board, from design to production (dry goods)
- Feign remote call and getaway gateway
- How do I use Google Chrome 11's Upload Folder feature in my own code?
- 过滤器 Filter
- You cannot right-click F12 to view the source code solution on the web page
- jeecgboot输出日志,@Slf4j的使用方法
- multiple linear regression
猜你喜欢

Cygwin的下载和安装配置

Filter

How to display scrollbars on the right side of the background system and how to solve the problem of double scrollbars

在线公网安备案保姆级教程【伸手党福利】

C语言的sem_t变量类型

Listener listener

谷粒学院微信扫码登录过程记录以及bug解决

Download and installation configuration of cygwin

过滤器 Filter

pytorch中的双线性插值上采样(Bilinear Upsampling)、F.upsample_bilinear
随机推荐
家居网购项目
RSN:Learning to Exploit Long-term Relational Dependencies in Knowledge Graphs
还在浪费脑细胞自学吗,这份面试笔记绝对是C站天花板
pytorch nn. AdaptiveAvgPool2d(1)
Research on target recognition and tracking based on 3D laser point cloud
Blueprism registration, download and install -rpa Chapter 1
Avalanche problem and the use of sentinel
5、【WebGIS实战】软件操作篇——服务发布及权限管理
multiple linear regression
Implement pow (x, n) function
SEM of C language_ Tvariable type
Leetcode:829. 连续整数求和
使用selenium自动化测试工具爬取高考相关院校专业招生分数线及排名情况
242. 有效的字母异位词
How do I use Google Chrome 11's Upload Folder feature in my own code?
在 C 中声明函数之前调用函数会发生什么?
Golang multi graph generation gif
The shell script uses two bars to receive external parameters
Are you still wasting brain cells for self-study? This interview note is definitely the ceiling of station C
Ridge regression and lasso regression