[HDR]开启HDR的Alpha
[HDR]开启HDR的Alpha
[HDR]开启HDR的Alpha
00 前言
Unity在URP管线下, 开启HDR后, 会丢失渲染结果的Alpha, 在HDRP下, 是可以开启的, 将Buffer格式设置为R16G16B16A16_SFloat. 即可输出渲染结果的Alpha. 而URP下面没有这个设置, 默认的HDR的Buffer格式为B10G11R11_UFloatPack32, 无Alpha值.
01 处理方法
PlayerSetting中是有这个设置的, 只是被屏蔽了. 通过PlayerSettings.preserveFramebufferAlpha的设置, 可以开启. 具体方法见源代码部分. 注意: 这个只是编辑器设置, 打包设置需要另查.
02 源代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/// <summary>
/// 强制开启HDR下的输出图的Alpha通道, 会让输出的Buffer大小加倍
/// </summary>
public static class PreserveFrameBufferAlphaMenu
{
[MenuItem("LookDev/PreserveFrameBufferAlpha/On")]
private static void PreserveFrameBufferAlphaOn()
{
PlayerSettings.preserveFramebufferAlpha = true;
}
[MenuItem("LookDev/PreserveFrameBufferAlpha/Off")]
private static void PreserveFrameBufferAlphaOff()
{
PlayerSettings.preserveFramebufferAlpha = false;
}
}
参考网页
本文由作者按照 CC BY 4.0 进行授权