图形学是一门将图像信息输出为模拟信号,用于绘制的学科,而计算机视觉恰恰相反,通过分析图像,提取出图形的特征。
最开始的硬件中,cpu包含了处理图形渲染相关的单元,但是后面单独分离出来了,其中用于计算的芯片叫gpu,计算能力十分强大,图形渲染设计为流水线形式,效率十分高。随着发展,出现了可编程渲染管线,通过hook函数来实现自定义某些渲染过程,也就出现了可编程渲染管线,scriptable render pipeline,unity中的URP渲染管线就是一种通用的可编程渲染管线。
渲染管线分为三个过程,应用程序阶段(cpu处理需要渲染的图元,输出顶点数据),几何化阶段(gpu,处理顶点数据,经过各种坐标系变换,顶点着色然后进行屏幕映射等输出三角形顶点),光栅化阶段(gpu,输入三角形顶点,算出三角面,覆盖的像素(片元),片元着色,然后合批(远近关系需要进一步融合)得到最终的像素点信息)最终输出帧缓存,屏幕定时会读取帧缓存输出到屏幕。
帧缓存存了屏幕的颜色信息,分为颜色位面法(R,G,B三种颜色三个位面融合)和颜色索引表(存了个颜色表,帧缓存里面存的是每个像素点颜色在表里的索引)。
glsl作为opengl的shading language,以文本形式存在,cpu不处理,不会预先编译,而是在运行时由gpu去翻译执行。
数据类型包括标量(int uint,float,bool)、矢量(vec2-4)、矩阵、数组和结构体(基本语法同c),参数由in,inout和out指定参数类型,in代表形参,inout和out代表形参会复制给实参从而可以改变参数。
三个重要概念,EBO(element buffer object ,也叫IBO,index buffer object),存储顶点索引信息对象。VBO(vetex buffer object)顶点缓冲区对象,存储在gpu中,VAO(vertex array object),多个VBO对象的引用,一组顶点信息存在一起,方便使用。
光栅扫描算法:主要思想就是选取尽可能近的点,过程中实现增量计算(高效算法)
tobe continue