最近我在尝试光照和阴影效果,突然有个想法:如果让光照本身也像素化会怎样呢?
我觉得效果还挺不错的!
大致做法如下:
游戏计算光照时,需要世界空间位置、法线向量和视线方向。我用给定的步数对位置进行量化处理:
floor(x * stepCount) / stepCount
这样光照就呈现出像素化效果。
为了防止闪烁,在量化位置前,我会沿着法线方向添加一个小的偏移量。
对于像素化的镜面高光,我还将视线方向替换为从相机位置到量化后位置的归一化向量:
viewDir = normalize(cameraPos - WorldPos);
阴影也用了类似的方法:对位置进行量化,并额外添加法线偏移来避免闪烁。
还在继续尝试中,不过目前的效果已经让我挺满意的了!
非常欢迎提出反馈意见!
评论 (0)