提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
图形 1.3 纹理的秘密
PPT:
纹理介绍
一、纹理三大问
1.是什么?
• 什么是纹理:可以供shader读写的结构化存储形式(理解为一个容器)
eg:二维的纹理:ijk,ij对应的就是像素点,k对应的就是像素点的RGBA值
• 纹理除了包含存储的信息以外,还会包含纹理采样的设置。
2.为什么?
a.降低建模工作量 = 牺牲几何细节
b.降低存储空间
c.提高读取速度
3.如何?
在下面的纹理管线里继续
二、纹理管线
1.Projector function投影函数
• 获取要渲染的,将模型空间投影到纹理坐标空间中,转化为纹理坐标
//此处的投影和摄像机中的投影不是一个概念
• 投影函数一般在模型建模的过程中使用(展UV时),投影的结果存在顶点数据中(我们一般直接使用顶点数据)
//作为了解:
①有些特殊渲染方式读取特定投影函数(eg:环境贴图)
②建模中常用的函数:球形、圆柱形、平面投影
2.Corresponder function通讯函数
• uv坐标可以通过通讯函数进行灵活的扩展
• eg:实现平移、缩放、旋转 / 控制图像应用方式
• 经过灵活扩展之后,得到的纹理空间的坐标,就可以拿这个坐标获取纹理值(这个过程就是纹理采样)
• 着色器中的纹理通常会以sample variable (采样变量) 的形式存在
• 是一种Uniform类型的变量(理解为全局变量),在处理不同的片元时,这个变量是一直不变的
• 一个Sample是和一个texture对应的
• 采样过程中的一个概念:依赖纹理读取
• 当我们使用texture2D或者类似的方式访问纹理时,只要像素着色器不是直接用顶点shader传过来的数据,而是用需要计算的数据,就会产生这个叫作依赖纹理读取的东西(哪怕是简单的交换uv坐标)
• 它会影响到性能
• 这就是uv偏移计算放在顶点shader的原因
3.shader三种变量类型
3.1 Uniform变量
• uniform变量是外部application程序传递给(vertex和fragment)shader的变量。因此它是application通过函数glUniform**&#