Unity Shader学习(一)

本章没有讲述具体编程过程,而是从以下三个角度进行阐述:

1.计算机渲染流程
2.CPU和GPU的关系
3.着色器语言

1.计算机渲染流程

–1.1应用阶段
这个阶段主要做三件事情:
//a.准备场景数据(模型,光照等等),把视野范围外的数据剔除.
//b.设置好模型的渲染信息(材质,纹理等)
//c.最后输出渲染图元到GPU的显存中,一般来说渲染图元就是点,线,三角面等数据,也称为一次DrawCall
总之,这个阶段主要就是处理一些逻辑数据计算,由CPU完成.

–1.2几何阶段
当GPU收到渲染图元后,进入几何阶段,这个阶段对渲染图元进行操作,进行各种坐标变换和顶点信息配置(配置每一个顶点的颜色信息),最后将这些顶点对应到屏幕空间的二维坐标进行显示.
总结,这个阶段主要处理顶点的颜色信息,以及计算该顶点在屏幕空间中的位置,由GPU完成.

–1.3光栅化阶段
这个阶段负责完成最后的工作,根据屏幕空间的二维顶点数据,在屏幕上操作每个像素点绘制图形.
(为什么需要这个操作?在计算机上的模型都是由一个个的三角面组成,每一个三角面有三个顶点,在中间没有顶点的,而在几何阶段仅仅是渲染了顶点的颜色,中间的颜色还有渲染,就需要通过该阶段进行一个差值计算,将中间的颜色渲染完成)
总结,这个阶段主要配置顶点与顶点之间的像素颜色(即一个差值运算),这个阶段由GPU完成.

2.CPU和GPU的关系

CPU:计算机的中央处理器,主要用于处理计算机软件中的数据计算以及逻辑判断等.
GPU:图形处理器,显卡中的核心组件.主要处理计算中的图形计算以及显示等工作.
显存:也叫做帧缓存,它的作用是来存储GPU处理过或即将提取的渲染数据,是用来存储要处理的图形信息的部件.

两者的关系:
首先要知道,CPU和GPU之间虽然都是在工作,却是两个并行工作,即两个同时在按照自己的节奏工作.
当一个应用程序需要渲染图形在屏幕上时,会发送渲染信息给缓冲区(这个缓冲区是什么不大清楚,可能是显存也可能是内存).
而GPU的工作就是从上述缓冲区中读取渲染命令,读到了就进行计算渲染.

总结:由此可知,一台点处理图形的能力由最差的组件决定,即时显卡再好,没有数据传输过来依旧会出现卡顿;而CPU处理的再快,GPU不去处理,同样会出现卡顿.(至于两者的卡顿是否有不同,目前暂未接触到)

3.着色器语言

着色器语言(Shader Language),是一类专门用来编写着色器的编程语言,这类语言使用"颜色","法线"等特殊的数据类型.

常见的使用领域有离线渲染和实时渲染

1.离线渲染:(不是重点)
离线渲染所使用的着色器语言通常可以生成高质量的图像,这种着色器语言中,对材质属性进行了高度抽象,使用时需要少量的编程知识,不需要硬件知识.

特点:这类着色器通常可以到达照片级的效果,但是同时也需要大量的时间和算力.

2.实时渲染:
该类渲染语言在实时计算机图形领域有着广泛应用,给与了程序员更大的灵活性,可以更好的渲染过程.

常见的实时渲染着色器语言有:OpenGL,DirectX,CG

其中,OpenGL使用GLSL编写,适用于移动平台
DirectX使用HSSL编写,适用于PC平台
CG则是一个种跨平台的语言.

总结,计算机渲染有专门的编程语言进行处理,称为着色器语言,且有两种渲染领域:离线渲染和实时渲染,其中游戏中用到的为实时渲染,实时渲染也包括多种着色器语言,由于CG支持跨平台,所以多数采用CG,而在Unity中则对CG再次封装,更加的简单实用.

你可能感兴趣的:(UnityShader)