Q&A——光照贴图
来源:互联网 发布:妖精帝国知乎 编辑:程序博客网 时间:2024/05/16 11:47
Q1:Lightmap在PC上显示正常,但是转到Android平台上存在色差,颜色普遍偏暗。
一般来讲,有两种情况可能会导致色偏和亮度差异。
1.Unity烘焙的Lightmap是32bit的HDR图,而移动设备通常不支持HDR图(32bit per channel),会按照LDR图(8bit per channel)的形式进行处理,因此会出现色偏问题。因此我们建议:
- 在移动平台下使用Mobile/Diffuse材质,可载入Standard Assets(Mobile) package获得。如果要获得更合适的效果,需要自行修改Lightmap的DecodeLightmap函数,该函数可在Unity\Editor\Data\CGIncludes\UnityCG.cginc文件中找到。需要说明的是,这种方法也不能达到与PC端完全一致的效果。
- 如果需要PC和移动平台的显示效果一致,可以用图像编辑软体修改Lightmap為LDR格式,例如PNG(8bit per channel)。
- 为了避免类似问题,请不要使用过于强烈的Light进行烘焙,因為Light的强度(Intensity)越高,色偏问题会越严重。若有阴影丢失时,可以尝试检查一下模型的Lightmapindex、Lightmapscaleoffset、UV2等影响Lightmap采样的一些参数。
2.另一种可能是存在过曝现象,可以尝试将playersettings -> use direct3d 11关闭,看问题是否解决。
Q2:Lightmap丢失。用Unity5.1.2的AssetBundle做热更新,资源导出的时候分析了所有的依赖项单文件导出。比如在导出场景的时候场景的烘焙出来的LightmapSnapshot.asset文件导出不了,导致运行的时候场景的Lightmap丢失了。
LightmapSnapshot.asset 本身是Editor下使用的,并不能单独被打包进AssetBundle。 运行时加载Lightmap,一种方法是把场景(.unity 文件)打成AssetBundle加载,Lightmap 信息会打入场景AssetBundle(因为Lightmap信息和场景绑定)。另一种是通过Lightmapsettings.Lightmaps方法来运行时设置。需要注意的是,同时还需要重设Prefab的Lightmap信息(Lightmapindex和Lightmapscaleoffset),因为Lightmap信息在Unity 5.x下不会保存在Prefab 上。
另外存在一种可能,Unity 5.x中加入了Shader Stripping功能,在打包时,默认情况下会根据当前场景的Lightmap及Fog设置对资源中的Shader进行代码剥离。这意味着,如果在一个空场景下进行打包,则Bundle中的Shader会失去对Lightmap和Fog的支持,从而出现运行时Lightmap和Fog丢失的情况。 而通过将Edit->Project Settings->Gaphics下Shader Stripping中的modes改为Manual,并勾选相应的Mode即可避免这一问题。
- Q&A——光照贴图
- 光照贴图
- 光照贴图
- 光照贴图
- Q&A——其他
- Q&A——物理
- Q&A——性能
- Q&A——UI
- Q&A——NGUI
- Q&A——物理性能
- 读书笔记——添加光照之后再应用纹理贴图以保证镜面亮点
- LightMaps 光照贴图
- 光照贴图 lightmapping
- Unity3d 光照贴图 LightMapping
- UDK光照贴图教程
- Unity光照贴图
- 光照贴图打包处理
- 加载光照贴图
- 给大家推荐一个免费的论文查重网站PaperTime:http://www.papertime.cc
- 5-4周练博客
- 优化算法之遗传算法
- java内存区域与内存溢出异常
- 正则表达式中的那些事儿
- Q&A——光照贴图
- GregorianCalendar日期处理
- thinkphp 中引用文件路径设置 以及变量输出
- 使用Vue框架实现NGA客户端
- Q&A——AssetBundle(资源打包)
- 1043. 输出PATest(20) PAT
- WSN之振荡器和时钟
- Spring的Applicationcontext配置文件
- html转pdf生成