URL
status
type
date
slug
summary
tag
category
password
icon
首先,Unity的渲染先后顺序是由Render Mode与光源的强度,距离,和颜色共同决定的,当场景中出现多种不同类型的光源时,就需要注意到这一点,通过调整这些属性,去达到自己想要的光照效果。
当光源的Render Mode设置为AutoImportantNot Important同时存在于场景中时,Unity会根据一定的逻辑来决定哪些光源被处理为逐像素光照(Pixel Light),哪些被处理为逐顶点光照(Vertex Light)。这个逻辑主要基于光源的重要性,同时考虑光源的Render Mode设置。

源排序和分配逻辑

  1. 光源的重要性计算
      • 强度(Intensity):光源的亮度。
      • 距离(Distance):光源与物体的距离。
      • 颜色亮度(Color Brightness):光源颜色的最大分量值。
  1. 光源Render Mode的影响
      • Important:尽可能作为逐像素光照处理。
      • Auto:根据光源的重要性自动决定。
      • Not Important:优先作为逐顶点光照处理。

具体处理步骤

  1. 计算每个光源的重要性
      • 对所有光源(无论Render Mode如何)计算其重要性。
  1. 按重要性排序光源
      • 将光源按重要性从高到低排序。
  1. 分配逐像素光照和逐顶点光照
      • 首先处理Important光源:将所有Important光源放入逐像素光照的候选列表中。
      • 处理Auto光源:将剩余的Auto光源按重要性依次加入逐像素光照的候选列表,直到达到逐像素光照的最大限制(默认是4个)。
      • 处理Not Important光源:将所有Not Important光源放入逐顶点光照的列表中。

具体示例

假设你有一个场景,其中包含以下光源:
  • Directional Light:1个(最亮的平行光)
  • Point Light
    • 3个Important光源
    • 4个Auto光源
    • 2个Not Important光源
  • Spot Light
    • 2个Important光源
    • 3个Auto光源
    • 1个Not Important光源
在这个场景中,Unity会处理这些光源如下:
  1. Directional Light
      • 作为最重要的光源,通常会被处理为逐像素光照。
  1. Point Light
      • 3个Important光源会被处理为逐像素光照。
      • 4个Auto光源按重要性排序,前1个会被处理为逐像素光照,其余3个会被处理为逐顶点光照。
      • 2个Not Important光源会被处理为逐顶点光照。
  1. Spot Light
      • 2个Important光源会被处理为逐像素光照。
      • 3个Auto光源按重要性排序,前1个会被处理为逐像素光照,其余2个会被处理为逐顶点光照。
      • 1个Not Important光源会被处理为逐顶点光照。

总结

  1. 重要性计算:所有光源(无论Render Mode如何)都会根据强度、距离和颜色亮度等因素计算其重要性。
  1. 排序:将光源按重要性从高到低排序。
  1. 分配
      • 优先处理Important光源,将其作为逐像素光照。
      • 处理Auto光源,按重要性依次加入逐像素光照的候选列表,直到达到逐像素光照的最大限制。
      • 剩余的光源(包括Not Important和多余的Auto光源)会被处理为逐顶点光照。
通过这种方式,Unity能够合理地分配光源,确保在保持高质量光照效果的同时,优化性能。
选举投票是否应该采取匿名形式学习打卡帖
Loading...
Cloud
Cloud
Stay hungry.Stay foolish.
最新发布
选举投票是否应该采取匿名形式
2024-11-15
Unity中不同光照的渲染顺序
2024-11-11
UnityShader的空间变换过程
2024-11-11
UnityShader基础
2024-11-11
学习打卡帖
2024-11-8
游戏现实主义与现实主义的“游戏”
2024-11-7
公告
这是一只懒狗,什么都没有写……