小结
又是一个周末,好想看s赛啊! 又写了一些只有我自己才看的懂得笔记,emmmm 说不定过几天,我也看不懂。
难怪别人说 shader 够搞几年的。还真的是。。。 对自己的创造力稍微有点没信心啊。
【前向渲染路径】:渲染该对象渲染图,计算两个缓存区信息。深度缓存区判断是否可见,并决定颜色缓存区的更新。
处理光源的方式:1逐顶点 2 逐像素3 球谐函数 (决定处理方式:光源类型,渲染模式(是否重要))
标签: ForwardBase; ForwardAdd 设置标签后添加 #pragma multi_compile_fwdbase 类似编译指令
ForwardAdd:不计算环境光和自发光;可以开启混合模式(覆盖?)
内置光照变量;内置光照函数
【顶点照明渲染路径】:配置要求低,运算性能高,效果差。不支持逐像素才能达到的效果(阴影,法线映射,高精度
高光反射) 仅仅作为前向渲染的子集。无法应对多光源的复杂情况。
【延迟渲染路径】:颜色缓存+深度缓存+G缓存
G缓存:含有表面其他信息(法线,位置,材质属性等)
2Pass:1 不进行光照计算,处理可见性问题 ,如果可见,将相关信息存入G缓存。2 利用G缓存计算光照
延迟渲染不依赖场景复杂度(光源数目),与屏幕空间大小有关。
缺点:不支持真正的抗锯齿(??) 不能处理半透明物体(??) 吃显卡
G缓存包含渲染纹理:漫反射颜色;高光反射颜色;法线;深度缓存,颜色缓存
光源类型:
前向渲染中处理:如果场景中含有多个平行光,Unity会选择最亮的平行光进行逐像素处理,其余平行光会按
逐顶点或者在Add Pass中按逐像素处理。对于Bass Pass来说 它处理的逐像素光源类型一定是平行光。
Add 处理光照方式一般与Bass一样,但是没有环境光 自发光,逐顶点光照部分,且其处理的光源类型没有
限制。