将对象的体积创建为雾
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将对象的体积创建为雾相关的知识,希望对你有一定的参考价值。
但是,此着色器只是采用纹理并将其滑动到对象的表面上。它适用于2D雾,但我还想创建一个填充对象体积的着色器。我知道Unity中的内置雾效果,但是我希望能够集中到一个物体的大小。
这是通过着色器实现的,还是我必须走另一条路?我试过搞乱ShaderLab:Legacy Fog,但似乎已经过时且无法有效工作。
答案
有多种方法可以实现这一点,其中大多数都属于雾量类别。如果您是着色器编程的新手,那么任务可能会有点令人生畏,但您可以使用周围的样本和资产。
问题是着色器只知道正在处理的点的全局常量和局部信息(因此给定的像素无法访问其周围环境的描述)。要实现您想要的效果,像素需要有关其所属形状或其环境的一些信息。
对于任意网格,最简单的方法是在该点采样场景的深度(预渲染并存储在纹理中)。 There are a bunch of macro to help you with that。一旦你知道了点后面的深度和点本身的深度,你就可以做一堆操作来计算出那个点的雾的强度。
您可以查看built-in shaders中的软粒子着色器,它正在执行精确处理以淡化对象,因为它们更接近其他不透明的几何体。
以上是关于将对象的体积创建为雾的主要内容,如果未能解决你的问题,请参考以下文章
HMC Core 6.0全球上线图形计算服务新插件,助力高画质3D手游创新