Unity中Shader光照模型Phong

文章目录

  • 前言
  • 一、Phong光照模型
  • 二、图示解释Phone光照模型
    • 1、由图可得,R 可以由 -L 加上 P 得出
    • 2、P等于2*M
    • 3、因为 N 和 L 均为单位向量,所以 M 的模可以由 N 和 L得出
    • 4、得到M的模后,乘以 单位向量N,得到M
    • 5、最后得出 P 和 R


前言

Unity中Shader光照模型Phong,也是一个经验型光照模型,非物理光照模型,用于低性能的解决高光效果,之前的Lambert光照模型是漫反射光照模型,做不到高光效果,用Phong模型来弥补。


一、Phong光照模型

Unity中Shader光照模型Phong_第1张图片

Phone光照公式:Specular = SpecularColor * Ks * pow(max(0,dot(R,V)),Shininess)

Specular: 最后返回的高光效果
SpecularColor:可以指定高光的颜色
Ks:用于控制高光的反射强弱
R:入射光经过反射后的单位向量
V:反射的顶点到摄像机的单位向量
Shininess:高光指数,用于模型高光的范围


二、图示解释Phone光照模型

Phone光照公式:Specular = SpecularColor * Ks * pow(max(0,dot(R,V)),Shininess)

图中,向量画的不标准,已知向量都是单位向量,所以M的模长可以直接由点积得出

R 是公式中,我们未知的量,需要计算得出

1、由图可得,R 可以由 -L 加上 P 得出

2、P等于2*M

3、因为 N 和 L 均为单位向量,所以 M 的模可以由 N 和 L得出

4、得到M的模后,乘以 单位向量N,得到M

5、最后得出 P 和 R

你可能感兴趣的:(Unity,unity,游戏引擎)