【Bug修复记录】Unity Fog真机不生效相关问题

# 前言

最近在场景中使用了unity自带的global fog时出现了真机上不生效的问题。这篇博客主要是记录这个问题的解决过程。

# 正文

## 问题描述

在Editor模式下模型能够与雾效融合实现雾效效果,但是到了真机出现了模型不能跟雾效融合,导致模型感觉在雾效上面。

## 问题原因

先说下原因,是因为之前使用的模型shader使用的surface shader,在shader中设置了Emission自发光参数导致,但是我看到编译后的shader(如下图)也使用了UNITY_APPLY_FOG来与雾效融合。这里我猜测出现问题的原因还是很多,没有一一验证,可能这条指令在手机上由于机型限制无法生效,或者是没有针对指定类型(我项目中使用的Liner类型)雾效处理。

## 解决方法

### 开启多类型编译宏

//在shader中添加一条编译指令即可

#pragma multi_compile_fog

文档说明:https://docs.unity3d.com/Manual/SL-MultipleProgramVariants.html

添加这条指令,可以应对处理不同雾效类型。

### 暴力删除Emission自发光

如果你这个对象是不需要自发光,那可以再surf函数中删除对于Emission的赋值,这样也可以正确得到雾效效果。

文档说明:https://docs.unity3d.com/540/Documentation/Manual/StandardShaderMaterialParameterEmission.html

关于这个问题的内容就算完了,下面列几个关于雾效的几个设置问题。

# 后记更多问题记录

## 雾效设置

window->Rendering->Lighting Setting->Other Setttings

开启fog,设置雾效类型即可

## shader关闭雾效

添加指令即可关闭

#pragma nofog

猜你喜欢

转载自blog.csdn.net/weixin_36719607/article/details/117294273