渲染管线

前向渲染

  1. “LightMode” = “ForwardBase”,

延迟渲染

后处理

灯光设置

  1. 灯光可以设置Auto/Important/UnImportant,Auto:当满足逐像素光照则为逐像素,不满足则为逐顶点,都不满足则SH处理,Important:逐像素光照,UnImportant:逐顶点光照或SH处理。
  2. 光源的Cookie:灯光照下的样子,点光源使用立方体贴图CubeMap,聚光灯使用2D贴图,使用时需要将贴图类型设置为Cookie
  3. 平行光(Directional Light),全局平行光,
  4. 点光源(Point Light),球形灯光,一般用SH球谐函数在ForwardBase中就算顶点光照
  5. 聚光灯(Spot Light),锥形灯光,一般用SH球谐函数在ForwardBase中就算顶点光照

伽马(Gamma)

  1. 显示器用于颜色矫正,通常值为2.2,对颜色进行灰度,亮度矫正
    打个比方,功率为50%的灰色,人眼实际感知亮度为:0.5的2.2开根 = 0.7297
    而人眼认为的50%中灰色,实际功率为:0.5的2.2次幂 = 0.2176
  2. Unity中可选择的颜色空间线性空间,伽马空间。

常用API记录

API 定义 注释
EnergyConservationBetweenDiffuseAndSpecular 定义于UnityStandardUtils.cgine 漫反射和镜面反射的能力守恒函数
DiffuseAndSpecularFromMetallic 定义于UnityStandardUtils.cgine 金属性设置,其中金属性参数需要标记[Gamma],受Gamma矫正后的参数
UNITY_BDRP_PBS 定义于UnityPBSLighting.cgine 基于物理的着色,双向反射率分布函数
UNITY_LIGHT_ATTENUATION 定义于AutoLight.cginc 光照衰减值
#pragma multi_compile 多重定义宏 如#pragma multi_compile DIRECTIONAL POINT SPOT 可以define(..)判断哪些宏被定义了,然后执行特定的逻辑,C#处可以启用/关闭Shader宏:Shader.EnableKeyword(string);Shader.DisableKeyword(string);
ShadeSH9 UnityCG.cginc 球谐函数,
ComputeScreenPos 计算屏幕坐标 计算屏幕坐标:参数 顶点坐标
COMPUTE_EYEDEPTH 计算视野深度 计算视野深度:参数 返回值(视野深度)
UNITY_DECLARE_DEPTH_TEXTURE(_CameraDepthTexture) 获取相机深度图 获取相机深度图
SAMPLE_DEPTH_TEXTURE_PROJ 采样深度图 相当于:tex2Dproj(sampler, uv).r
LinearEyeDepth 线性视野深度0-1区间
ddx,ddy 求当前像素的值其临近像素上的变化率,分别对应x轴/y轴

常见效果实现记录

参考

基础渲染系列教程20篇
UnityShader入门精要
计算渐变颜色网站
免费材质贴图