1. unpack()和pack()函数我个人的理解是为了增加数值精度而设置的,深度信息是一个连续的浮点数,它的范围和精度可能超出了一个8位通道(RGBA的A)所能提供的。直接将这样的深度值存储在一个8位通道中会导致大量的精度丢失,从而导致阴影效果不正确。因此我们可以充分利用其他的三个通道,也就是将深度值编码到多个通道中。存的时候用pack,用的时候unpack。
另外助教发了个项目更正,pack()和unpack()函数的256改为255。
2. PCF效果看起来有点脏?感觉是ShadowMap的大小不够大导致的。具体来说是textureSize太小了。没看代码不太清楚。