saturate函数可以将最终的结果限制在0到1之间 计算光照时,根据兰伯特余弦定定律,我们需要忽略从负方向过来的光,所以我们可以通过max函数限制小于0的值都为0,如 max(0, dot(world_normal, world_light_dir)) 但是看了很多unity的shader都是用的saturate函数而不是max函数,而且我也没有从结果上看出任何区别,好奇就特意查了一番,直到我看到catlikecoding的教程 也就是从理论来说余弦值永远不会超过1,但是由于不同平台计算浮点精度的问题,可能会导致…