天天看点

unity中后处理toneMapping和FBO,VBO,IBO的含义

unity中常见名词解析:

(1)亮度,饱和度,对比度

(三者的顺序不可改变)

亮度:颜色* 系数

fixed4 renderTex = tex2D(_MainTex,i.uv);
fixed3 finalColor = renderTex.rgb * _Brightness;
           

饱和度:调节完亮度后, 求出“灰度”, 灰度值和 此处的颜色插值

//求出灰度
fixed luminance = dot(renderTex.rgb,fixed3(0.215,0.715,0.0721));
fixed3 luminanceColor = fixed3(luminance,luminance,luminance);
finalColor = lerp(luminanceColor,finalColor,_Saturation);

           

对比度:和“纯色”对比, 此处颜色插值

//纯色
fixed3 avgColor = fixed3(0.5,0.5,0.5);
finalColor = lerp(avgColor,finalColor,_Contrast);
           

(2)toneMapping:色调映射

作用:最大限度的保留亮度信息(主要是作用将HDR 和bloom的效果修饰的更自然)

因为HDR的亮度是超过1

普通的颜色 是8位存储 0-255中表示

HDR的颜色 是32位存储,所以用toneMapping可以是亮度更自然。

unity中后处理toneMapping和FBO,VBO,IBO的含义

暗部信息的细节 和 亮度信息的细节都得到保存

将横轴 1至6.5的值,缓慢映射到 纵轴0.8至1: 所以亮度的细节得到更真实的展现

tonemap的解释

(3)FBO(FrameBuffObject):renderTexture就是fbo 的一种表现形式

FBO的解释

(4)VBO : 在显存中保存的 顶点信息

(5)IBO :在显存中保存的 顶点的索引信息

VBO和IBO的解释

(6)在知道了上面的名词的意义后: 对“带宽”是不是有了更清晰的了解

继续阅读