模型渲染成像分为几大阶段;应用:几何;光栅化
应用阶段在cpu中进行,来准备三维空间中模型的信息(顶点,法线,贴图..)传递给下一阶段
几何;光栅化阶段在gpu上运行,
1:顶点着色器(vertex)来接收应用阶段传递过来的数据,并进行处理(顶点动画)
其中最重要的就是坐标空间位置的转换,模型上的一个顶点,先从自身的模型空间下位置,转换到世界空间,再转换到摄像机空间,
2:裁剪(cull),进入到摄像机空间后,这一步将摄像机近裁面以及远裁面间之外的数据剔除
3:投射(projection):通过这一步将摄像机空间内的点全部投射成为二维平面
4:三角形遍历:将模型上的三角形经过遍历生成片元(像素)
5:片元着色器(frag)来接受顶点着色器传递过来的数据,并进行处理输出片元颜色(计算光照等)
6:合并:最终进行深度测试以及进行混合输出到屏幕上
在shader中:我们只可以对顶点着色器和片元着色器进行计算
1:声明属性
2:引用cg数据库;声明标签,渲染队列等
3:定义用来传递属性的结构体(appdata,v2f)
4:顶点着色器中进行最基本的空间转换(mvp矩阵)
5;片元着色器进行光照计算,纹理颜色等;
6:return
ShaderLab使用两种语义,CG和HLSL
着色器语言都是为了方便人员使用,进行了封装,用最少的操作最大的控制结果(世界是属于懒人的)
navmesh与collider
寻路烘焙可以控制行走范围,同样能提供给ai进行处理(仅限地面层次)
碰撞则是在三维空间下的物理检测
二者搭配使用
模型方面:贴图要在albeo通道上表现出立体层次感(亮面暗面),不同材质对应反射不同,玻璃的反射多,金属的高光对比强
卡通渲染(toon):顶点着色器:将模型顶点沿法线外扩,并且剔除正面,生成黑色描边,外扩距离等于描边粗细
片元着色器:色阶:lambert光照模型:dot(N,L) ,通过step函数来减弱色阶
高光:dot(V,R)
边缘光:dot(N,V)=== fresnel effect