• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • YouClaw
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
休息还是睡觉好
博客园    首页    新随笔    联系   管理    订阅  订阅

CommandBuffer 描边效果(附加颜色空间的一些记录)

  • 设置渲染目标
buf.Blit();
buf.SetRenderTarget();
// 下面用于清理,经过测试RT不会自动清理上次渲染的信息,所有这里需要手动清理下。
// RenderTexture.GetTemporary()和CommandBuffer.GetTemporaryRT()
// 全局的通过new RenderTexutre()出来的对象都需要进行清理。
buf.ClearRenderTarget(true, true, Color.black); 

没有设置渲染目标:

buf.GetTemporaryRT(_TEMP1, -1, -1, 0, FilterMode.Bilinear, RenderTextureFormat.ARGB32, RenderTextureReadWrite.Linear);
//buf.Blit(BuiltinRenderTextureType.CurrentActive, _TEMP1);//buf.ClearRenderTarget(true, true, Color.black);
buf.DrawRenderer(renderer, mMaterial, 0, 1);

渲染效果: 

当没有设置渲染目标的时候CommandBuffer直接把图元写在了原始图像上

 

 设置渲染目标但是没有清理图元

        buf.GetTemporaryRT(_TEMP1, -1, -1, 0, FilterMode.Bilinear, RenderTextureFormat.ARGB32, RenderTextureReadWrite.Linear);
        buf.Blit(BuiltinRenderTextureType.CurrentActive, _TEMP1);//buf.ClearRenderTarget(true, true, Color.black);
        buf.DrawRenderer(renderer, mMaterial, 0, 1);

渲染效果:

CommandBuffer把对象的图像信息写入新的RT,因为没有清理新RT的原始信息, 所以左上角图像Object对象没有单独渲染出来

 

设置渲染目标并且清理目标图元

        buf.GetTemporaryRT(_TEMP1, -1, -1, 0, FilterMode.Bilinear, RenderTextureFormat.ARGB32, RenderTextureReadWrite.Linear);
        buf.Blit(BuiltinRenderTextureType.CurrentActive, _TEMP1);
        buf.ClearRenderTarget(true, true, Color.black);
        buf.DrawRenderer(renderer, mMaterial, 0, 1);

渲染效果

由此也可以看到CommandBuffer的当前RenderTarget可以通过Blit来设置,即Blit后就是CommandBuffer当前渲染目标(RenderTarget)。

 

Shader中判断颜色空间的宏定义

BuiltinShaderDefine.UNITY_COLORSPACE_GAMMA

宏定义详细地址: https://docs.unity3d.com/ScriptReference/Rendering.BuiltinShaderDefine.html

Shader中颜色空间值变换:

m = LinearToGammaSpace(m);
m = GammaToLinearSpace(m);

C# 中颜色空间值变化

m = Mathf.LinearToGammaSpace(m);
m = Mathf.GammaToLinearSpace(m);

 

posted on 2018-11-04 20:59  休息还是睡觉好  阅读(599)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3