视频录制图像偏黑的解决方法

在Unity中使用线性空间渲染时,视频录制容易出现图像偏暗的问题。此现象源于OnRenderImage后的gamma校正导致图像提亮不足。解决办法是在OnRenderImage中通过shader对src进行gamma处理,确保RenderTexture的图像亮度正常。
部署运行你感兴趣的模型镜像

制作视频录制功能时,经常遇到明明应用的图像播放时正常的,但录制出来的图像缺偏黑。

------原因:

这种情况一般发生在应用使用线性空间渲染的方式;即playersettings-》colorspace 是linear渲染模式。

graphics api 要使用 ipengles3;

视频录制一般采用RenderTexture 进行图像采样; 但因为线性空间渲染 会在OnRenderImage 后进行屏幕投射时进行一次gamma校正;即图像提亮;

这个时候的RenderTexture 的图像就是偏暗的设置。

 

------解决方法

在OnRenderImage 里面将src 用shader进行一个gamma处理,

  private void OnRenderImage (RenderTexture src, RenderTexture dst) {

            Graphics.Blit(src, frameTexture , recordingMaterial);
  
            Graphics.Blit(src, dst);
        }

---frameTexture 就是我们视频需要的RenderTexture

        var frameTexture = RenderTexture.GetTemporary(
                videoFormat.width,
                videoFormat.height,
                24,
                RenderTextureFormat.ARGB32,
                RenderTextureReadWrite.sRGB,
                1
            );

 

---shader:

 

    fixed4 frag(v2f i) : COLOR
    {
        //从_MainTex中根据uv坐标进行采样
        fixed4 renderTex = tex2D(_MainTex, i.uv)*i.color;
    //brigtness亮度直接乘以一个系数,也就是RGB整体缩放,调整亮度
    fixed3 finalColor = renderTex * _Brightness;
    finalColor = pow(finalColor, 1.0 / 2.2);

return fixed4(finalColor, renderTex.a);

}

 

 

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值