- 光照模型
- Lambertian
- 各向同性的光照模型,与视角无关,效率高,用于低模的情况较多,属于 Unity 内置光照模型,使用时只需要声明 #pragma surface surfFunc Lambertian 即可,不需要额外方法
- 光照强度,即该表面顶点处的颜色的相关性: I = NdotL = dot (normal, lightDir)
- 简单的自定义光照模型,#pragma surface surfFunc modelFunc,然后声明一个方法 Lighting + modelFunc 即可,会自动调用,参数为 (SurfaceOutput s, half3 lightDir, half3 viewDir, half atten)
- atten 是光照的衰减量
- Phong
- I = Ia Ka + Id Kd + Is Ks
- N = normal
- L = lightDir
- V = viewDir
- R = reflect(N, L) = normalize(2.0 * normal * NdotL - lightDir)
- Kd = NdotL
- Ks = pow(max(RdotV, 0), power)
- I = Ia Ka + Id Kd + Is Ks
- Blinn Phone
- 与 Phone 不同之处在于 Ks,原因是 RdotV = |R||V|cos(a),当 a 超过九十度的时候变黑丢失细节了,视角与光源在被照射物体同一侧时很容易发生,所以需要改善
- H = normalize(V + L)
- Ks = pow(max(NdotH, 0), power)
- Toon Shader
- 属于非真实渲染的着色方式
- 基于冷色和暖色调的渲染,采用一些光照模型,并将明暗与色调相结合
- Lambertian
【Unity Shader】光照模型
猜你喜欢
转载自blog.csdn.net/weixin_42561030/article/details/82227212
今日推荐
周排行