我想为渲染的3D对象实现内部和外部发光。此处的发光仅应用于启用了发光而不适用于整个场景的3D模型。
stackoverflow中有一篇文章讨论了如何使用修改网格来实现它,在我看来这是很困难和密集的。
想知道是否可以通过多次渲染实现吗?类似于应用于场景中特定对象的绽放效果,仅适用于内部和外部边界。
答案 0 :(得分:1)
我假设你想要只在对象的轮廓附近发光?
我使用多遍方法(在所有“常规”绘图之后)进行了外部发光:
使用常量输出着色器(使用发光颜色作为输出)将对象绘制到纹理(清除为完全透明),在过程中标记模板缓冲区。如果您只想在屏幕上实际可见对象的部分周围发光,请使用EQUAL深度测试。显然使用深度缓冲区来进行正常的场景绘制。
此纹理上分离的高斯模糊。
将结果混合到输出缓冲区中,以查找步骤1中没有标记模板缓冲区的所有像素。
对于内部+外部发光,您可以对(1)的结果进行边缘检测,仅保留边界附近的标记像素,然后是模糊和未屏蔽的混合。
您还可以尝试通过使用过滤器来组合边缘检测和模糊,该过滤器根据其半径中所有样本的方差来缩放其输出。虽然......这是不可分离的。