基于2D平铺的平滑照明



我已经有了一个实用的光照贴图和照明算法:tiles w/lightmap

我没有使用OpenGl,我不需要光线投射的阴影,我只希望光照贴图在光照贴图的顶点之间以渐变的方式混合,这样它是平滑的,而不是块状的。我看到的一种方法是:为每个包含光照贴图数据的瓦片绘制一个像素的图像,然后使用瓦片的大小和插值将其放大。然而,我不明白如何做到这一点以及如何使用这一点lightmapimage.getScaledInstance(w,h,Image.SCALE_SMOOTH)只是产生了与上图相同的效果,只是速度慢得令人难以置信。如何以资源高效的方式平滑照明?

我想明白了。对于任何对基于2D瓦片的平滑照明感兴趣的人来说,这里是我的解决方案:在将光照贴图绘制到每个像素代表一个瓦片的小比例图像后,使用双线性类型的AffineTransformOp。(瓷砖尺寸为10x10(

BufferedImage after = new BufferedImage(lightmap.getWidth()*10, lightmap.getHeight()*10, BufferedImage.TYPE_INT_ARGB);
AffineTransform at = new AffineTransform();
at.scale(10, 10);
AffineTransformOp scaleOp = new AffineTransformOp(at, AffineTransformOp.TYPE_BILINEAR);
after = scaleOp.filter(lightmap, after);
g.drawImage(after,0,0,null);

最新更新