我刚刚发布了Unity 6的胶囊效果shader,下面是如何工作的。 主要的技巧是厚度。 在胶囊被绘制之前,单独的通道渲染了胶囊的背面到纹理中,这样shader就知道光线在每个像素上穿过多少胶囊。 薄边缘保持清晰和淡色,中间部分变深和饱和。 这一件事大部分是让它看起来像胶囊而不是彩色玻璃。 在此之上: * 光线进入和再次通过背面,伴随着一些颜色分散 * 通过体积进行短程的散射、内部辉光和内在噪声 * 清漆、微观法线和小表面闪烁 * 体积内的闪烁闪光,plus可选浮动粒子 * 地面上的阴影和着色。 这些是伪造的:一个过程模式投影在物体的脚印形状下,而不是追踪光线。 在平坦地面上看起来很好,但在不平整的地面上就不那么好了。 有四个质量级别。 Ultra做了16步的行进,6个采样色谱分散,High降低到9步,RGB分散,Medium降低到5。 Low跳过背面通道和行进,估计厚度从简单的盒子中,适用于XR和移动设备。 它带有8个形状和18种颜色的预设,但材质可以应用于任何网格。 还有一个可选的静止摆动/摇摆,仅仅是动画,而不是软体物理。 它在Asset Store上作为Ultimate Jelly,分离的URP和HDRP版本。