taontech / githublog

一个基于github issues的博客系统,实时呈现,零依赖,零代码部署,不用打包不用上线。
4 stars 1 forks source link

Screen-Door Transparency #62

Open taontech opened 1 year ago

taontech commented 1 year ago

透明混合简易办法

真正的颜色混合由于不能做遮挡剔除,则需要绘制的片元数量轻则翻倍,重则大一个量级,那么有没有简单的办法能够实现混合呢?

Screen-Door Transparency 是一种实现起来非常简单的半透明混合方式。原理是使用一定模式的像素蒙版,将特定位置的像素遮住,这样从远处观察时,达到自然的半透明效果。 当然也可以在shader的片元里直接discard来实现 下图显示了使用 4x4 的mask 蒙版时,不同透明度下的效果。

效果图

人物

这种方式的优点是实现起来非常简单,而且不需要前后层之前进行排序。缺点就是透明度只能是几个特定的值,如果需要多层的半透明混合,就需要在不同的层使用不同的 mask 模式,且层数不能太多。