本文共 2493 字,大约阅读时间需要 8 分钟。
在前一节中,我们通过Unity内置的Shadow生成算法实现了阴影效果,但在需要柔和的阴影效果时,调高Quality Level、Shadow Resolution等参数会显著增加性能开销。本节将使用一个免费的Unity插件Dynamic Shadow Projector来实现更柔和的阴影效果,同时保持较低的性能消耗。
Dynamic Shadow Projector插件通过投影方式生成阴影,而非使用传统的shadowmap技术。这种方法特别适用于移动平台,几乎在所有设备上都能运行。该插件可以作为替代内置阴影生成的有效方案。
关闭Unity内置阴影生成
在Hierarchy窗口中,选中Directional Light,设置Shadow Type为No Shadows,禁止其生成阴影。创建带有Shadow Projector的虚拟对象prefab
设置Projector组件
调整Projector位置和方向
在Scene窗口中,调整Projector的位置和旋转方向,确保在右下角的Shadow Texture小窗口中能看到阴影效果。排除阴影渲染对象
调整阴影设置
生成prefab并应用到场景
将Softspider制作成prefab并从Hierarchy窗口中删除。将prefab赋给AR Session Origin对象上的Appcontroller脚本的Spawn prefab属性。由于ARPlane已放置到prefab中,无需再实例化ARPlane。运行后可以看到,Projector阴影比Soft Shadow柔和,性能消耗与Close Fit的Soft Shadow基本相当或略有增加。
除了投影阴影,Dynamic Shadow Projector还支持斑点阴影(Blob Shadow)。这种超柔和的阴影效果模拟真实场景中的环境光阴影效果。通过将渲染材质替换为BlobShadowProjector即可实现。运行效果如图所示。
Dynamic Shadow Projector提供了丰富的参数控制选项,适用于不同场景需求。以下是Shadow Texture Renderer中影响阴影生成的关键参数:
参数属性 | 描述 |
---|---|
Shadow Color | 阴影颜色。设置为黑色可提高性能。 |
Texture Width | 渲染纹理宽度。 |
Texture Height | 渲染纹理高度。 |
Multi Sampling | 抗锯齿等级。需要硬件支持。 |
Super Sampling | 高级抗锯齿设置。建议在移动平台仅使用Multi Sampling。 |
Blur Level | 模糊程度,0为硬阴影,1-3为软阴影。值越高阴影越柔和,但性能开销增加。 |
Blur Size | 模糊过滤器尺寸,只有在软阴影模式下有效。 |
Mip Level | 设置mipMap级别,默认为0。 |
Single Pass Mipmap Blur | 使用单个Shader pass进行mipMap模糊,可提高性能。 |
Mipmap Blur Size | 模糊过滤器尺寸。 |
Don’t update while out of view | 勾选时,阴影Projector在视锥平截头体之外时不更新阴影。 |
Blur Filter | 模糊过滤器类型,Uniform适合软阴影,Gaussian适合斑点阴影。 |
Mipmap Falloff | mipMap衰竭类型,通常选择linear。 |
Near Clip Plane | 渲染纹理的近平面,默认为0.01。 |
Blur Shader | 模糊Shader,使用默认值即可。 |
Downsample Shader | 降采样Shader,使用默认值即可。 |
Copy Mipmap Shader | 复制Shader,使用默认值即可。 |
Preferred Texture Formats | 优先纹理格式设置,默认为ARGB32。 |
通过Dynamic Shadow Projector,我们可以在不显著增加性能消耗的情况下,获得比内置阴影更柔和的效果。该插件支持投影阴影和斑点阴影,提供高度可控的阴影渲染参数,适用于多种实际场景需求。
转载地址:http://bfbb.baihongyu.com/