实时渲染入门:(四)纹理、着色器、材质

纹理(Texture)

纹理在导入时会被压缩。这个纹理跟视频编码里的纹理是相同的概念,也就是图像的轮廓和边缘,这里老师讲了一些压缩方面的东西,主要是格式相关,比如DXTC1,就没有阿尔法通道,而BC70是质量最高的方式。
压缩纹理是因为内存和带宽空间有限,每个着色器的纹理也同样存在上限。
多级渐进纹理(Mipmap)
一张图片的多级渐进纹理,由许多个由原来图片1/4纹理的图片构成。每个图片都是前者的1/4。
在这里插入图片描述
比如导入一张图片,原始分辨率为20482048,第一层就是10241024,第二层就是512*512。等等。

如果没有多级渐进纹理,纹理的噪声点回非常多。根据距离的远近,会切换纹理,当摄像机很近,就会是一张高分辨率的纹理,如果摄像机很远,就是一张低分辨率的纹理。这个就是纹理流送的过程。
同时也有不需要多层渐进纹理的情况,比如菜单(Interface)这样的交互界面。

像素着色器(Pixel Shaders)

它由GPU执行,是一个可以同时执行的简单的程序,大多数像素都设计到这个运算,它贯穿着渲染的每一个步骤。
像素着色器使用像素着色器语言编写。在DirectX中,使用的语言是HLSL。
在这里插入图片描述
着色器中通常会有一些未定义的关键变量,比如使用哪些纹理,定义光源如何与纹理相互影响,反射等等。
举个栗子:
可以从材质(Materials)里选择一个材质。双击进入。
在这里插入图片描述
在这里插入图片描述
当它被apply或者save的时候,实际上会被编译成HLSL代码。
在这里插入图片描述
打开之后就能看见HLSL的代码
在这里插入图片描述

在左下角能够看到有很多不同的着色器。
在这里插入图片描述
着色器越简单越好,如果把着色器写成一个大的,复杂的着色器,是很得不偿失的。

渲染管线(Pipeline)
在这里插入图片描述
1,输入汇编(Input Assembler)
2,顶点着色器(Vertex Shader)
3,凸包着色器(置换贴图)(Hull Shader)
4,域着色器(Domain Shader)
5,几何体着色器(Geometry Shader)
6,光栅化(Rasterizer)
7,像素着色器(Pixel Shader)
8,输出合并(Output Merger)

基于物理的渲染(PBR)材质管线
PBR使用高光,金属色,和粗糙度作为输入。它被用来计算环境中几乎所有的着色。
PBR被称为统一着色,因为几乎所有图像,模型,材质,它们的底层中都是建立在相同的着色,在PBR系统中。
为什么使用PBR?
在这里插入图片描述
有上述三点,但是目前我还无法理解。
我们通常会渲染多张图然后将它们合成到一起,这意味着对材质所做的一切,都必须在G-buffer中完成,它需要的所有信息都来自与G-buffer。G-buffer有颜色信息,光照信息,深度信息等等。因此要找到一个着色器,能够依靠G-buffer的信息就可以使用。

材质的性质
1,材质或者着色器能够查看的纹理采样器,是拥有数量上限的,通常是16,其中13个是常用的。也可以使用至多128个共享的采样器,但仅限于DX11。
2,纹理大小主要导致延迟和卡顿,而不是丢帧。这通常是带宽或者内存不足的问题。
3,像素着色器对于性能会有很大的影响。
4,分辨率越高,材质就越复杂,影响就越大。
5,像素着色的损耗取决于屏幕上的具体像素数量,因此远距离使用复杂材质更好一些。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值