来源摘要:Unity Shader 入门——光照模型

摘要

该素材记录 Unity 中常用光照模型的实现方式:兰伯特模型(漫反射,diffuse = max(0, dot(N,L)) × lightColor)附带完整 Shader 代码;半兰伯特模型通过 dot(N,L)×0.5+0.5 改善背光面过暗;Phong 高光模型使用 pow(max(0,dot(R,V)), gloss) × specColor。

要点

  • 兰伯特光照模型:diffuse = max(0, dot(N, L)) × lightColor,附完整 ShaderLab/CGPROGRAM 示例。
  • 半兰伯特模型:diffuse = (dot(N, L) × 0.5 + 0.5) × lightColor,改善背光面过暗。
  • Phong 高光模型:高光反射 = pow(max(0, dot(R, V)), gloss) × specColor。
  • 待办清单:验证兰伯特效果(已完成)、实现半兰伯特变体、添加 Phong 高光。
  • 来源:https://docs.unity3d.com/Manual/Shaders.html

关联概念/实体

来源