一种实现高动态光照范围的方法及系统技术方案

技术编号:2946385 阅读:250 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种实现高动态光照范围的方法及系统,用以解决目前在固定管线中无法实现高动态光照范围效果的问题。本发明专利技术方法包括步骤:A.将压缩后得到的高位整数纹理等分成低位整数纹理;B.逐一将各个低位整数纹理在固定管线中渲染,并解压缩;C.将解压缩后的整数纹理合并,以实现高动态光照范围的效果。通过本发明专利技术的实施,可以在固定管线中实现用HDR的效果,从而使配置了只支持固定管线的低端显卡的用户可以享受更好的光影体验。

【技术实现步骤摘要】

本专利技术涉及图像处理领域,特别是涉及一种实现高动态光照范围的方法及系统
技术介绍
计算机在表示图像时,以及显示器显示图像时是用8bit(256)级来区分图像的亮度的,但显然以几百为单位的亮度级别是无法再现真实的光照情况的。例如未经过高动态光照范围(HDR)技术处理的普通图形文件中的每个像素限制在0至255的亮度范围内。一张普通的白天风景图片中,白云和太阳可能都呈现同样的亮度(都是纯白色),但实际上白云与太阳的亮度不可能一样。HDR技术是一种图像处理技术。支持DirectX9.0标准的显卡可以采用HDR技术将源浮点纹理压缩为不低于64位的整数纹理。64位整数纹理(每个像素由64位来保存)有RGBA四个通道,分别占16位,并以整数值保存。通过公式R(16int)=R(float)/16int_max×65535对R通道进行压缩(其他通道相同),在CPU对源浮点纹理压缩前,任一通道在程序中都是0到65535的整数值;在压缩并输出到显卡中后,由显卡表示0到1的亮度值,其中0表示最暗,1表示最亮,精度为1/655535。例如R通道在程序中的值为18,则在显卡中它的值为18/655535。在显卡对压缩纹理解压后,可以在显示器上显示超出0到1的亮度范围。应用HDR技术的目的是为了联合使用曝光技术,以达到更好的图像效果。曝光是对场景的整个颜色和亮度进行调整,曝光度E>0。对于非HDR进行曝光,则会产生色块或使整个场景变暗,得到的图像与现实不匹配;曝光对于HDR才有意义。目前HDR广泛应用于游戏领域中。HDR在游戏中特指HDR特效,HDR特效是与Vertex Shader/ShaderModel/Soft shadows/Parallax Mapping等并列的图像渲染特效。若要实现HDR特效,使用的显卡必须支持DirectX9.0标准,例如nVIDIA的显卡必须是GeForce 6系列或更高,ATI显卡至少是Radeon 9500或以上。但是一些低端显卡只能处理32位纹理,即不支持HDR效果。32位纹理指纹理的每个像素由32位来保存,每个像素有RGBA四个通道,分别占8位,并以整数值保存,即其中任一通道在程序中都是0到255的整数值,而在显卡中表示0到1的颜色值,0表示最暗,1表示最亮,精度为1/255。例如R通道在程序中的值为16,则在显卡中它的值为16/255。针对上述一些低端显卡不支持HDR效果的问题,业界提供了一种双32位整数纹理实现HDR的方法,使一些不支持DirectX9.0标准的低端显卡也可实现HDR效果。参见图1所示,即以两张32位整数纹理分别保存64位整数纹理的高32位和低32位,在输出时,将两张32位整数纹理拼接,以模拟64位整数纹理,从而实现HDR效果。该方法的具体内容如下1、两张32位纹理(high和low)分别存储64位纹理的每个通道的高8位和低8位。2、压缩(以R通道为例) 式1 式2注式1和式2都向下取整。源浮点纹理,参见图2所示;压缩后的高8位纹理,参见图3所示;压缩后的低8位纹理,参见图4所示。3、解压在显卡中R=(R(H)+R(L)/256)×Scale,Scale=16int_max时,颜色还原到压缩前的正常状态。Scale应该小于256/16int_max。但是目前还有一些低端显卡只支持固定管线。所述固定管线是与可编程管线相对的,其在渲染图形时,大部分操作已经固化,而只能操作少部分功能的处理流水线。具体来说,固定管线只能以2元运算完成图像处理,即只能以下列操作完成顶点颜色与纹理颜色之间或纹理颜色与纹理颜色之间的运算D3DTOP_MODULATE(相乘),D3DTOP_MODULATE2X(相乘再乘以2),D3DTOP_MODULATE4X(相乘再乘以4),D3DTOP_ADD(相加);并且固定管线中的纹理层最大为2层。基于固定管线的局限性,只支持固定管线的低端显卡仍然无法适用上述双32位整数纹理实现HDR的方法。即目前在固定管线中无法实现HDR的效果。
技术实现思路
本专利技术提供一种实现高动态光照范围的方法及系统,用以解决目前在固定管线中无法实现高动态光照范围效果的问题。本专利技术方法用于在固定管线中进行图像处理,包括下列步骤A、将压缩后得到的高位整数纹理等分成低位整数纹理;B、逐一将各个低位整数纹理在固定管线中渲染,并解压缩;C、将解压缩后的整数纹理合并,以实现高动态光照范围的效果。其中,所述整数纹理包括4个通道;步骤A中,将64位整数纹理等分成2个32位整数纹理后,其任一通道均包括由高至低的2个8位通道片断。所述任一高8位通道片段的整数纹理为 低8位通道片段的整数纹理为 其中,R(FLOAT)为源浮点纹理的任一通道;16int_max为解压后亮度的最大值。其中,步骤B中所述对渲染后的高32位整数纹理解压缩是对各个渲染后的高8位通道片段进行整数倍扩大。进一步,所述固定管线以2元运算完成图像处理,以及所述固定管线中的纹理层最大为2层。对任一渲染后的高8位通道片段进行整数倍扩大,包括以固定管线中的纹理层为1层或2层为前提,通过若干次2元运算扩大到预设的整数倍。步骤B中所述对渲染后的低32位整数纹理解压缩是以预设的扩大整数倍数除以256,再与各个渲染后的低8位通道片段相乘。其中,所述步骤C中,将解压缩后的各个整数纹理的颜色相加,以实现合并。本专利技术的实现高动态光照范围的系统,包括压缩单元,用于将源浮点纹理压缩为高位整数纹理;分割单元,用于将所述压缩单元输出的高位整数纹理等分成低位整数纹理;固定管线,用于逐一对分割单元输出的低位整数纹理进行渲染和解压缩;合并单元,用于将固定管线各次输出的解压后的整数纹理进行合并。本专利技术有益效果如下本专利技术方法首先利用现有的双32位整数纹理实现HDR技术,将源浮点纹理压缩后得到的64位整数纹理等分成32位整数纹理。之后,基于固定管线的特性,逐一将各个低位整数纹理在固定管线中渲染,并解压缩。其中,以固定管线中的纹理层为1层或2层为前提,通过若干次2元运算扩大到预设的整数倍,从而实现对高32位整数纹理的解压缩;以预设的扩大整数倍数除以256,再与各个渲染后的低8位通道片段相乘,从而实现对低32位整数纹理的解压缩。最后,将解压缩后的整数纹理合并,即将解压缩后的各个整数纹理的颜色相加,以实现高动态光照范围的效果。为了支撑本专利技术方法,本专利技术还提供了一种实现高动态光照范围的系统。综上所述,通过本专利技术的实施,可以在固定管线中实现HDR的效果,从而使配置了只支持固定管线的低端显卡的用户可以享受更好的光影体验。附图说明图1为现有双32位整数纹理实现HDR的原理图;图2为源浮点纹理效果图;图3为以现有双32位整数纹理实现HDR的方法,压缩后的高8位纹理;图4为以现有双32位整数纹理实现HDR的方法,压缩后的低8位纹理;图5为本专利技术系统结构示意图;图6为本专利技术方法步骤流程图;图7-1至图7-32为本专利技术实施后,Scale=1至32,16int_max=8,曝光度=Scale/16int_max的场景效果图。具体实施例方式为了在固定管线中实现HDR的效果,从而使配置了只支持固定管线的低端显卡的用户可以享受更好的光影体验,本专利技术提供了一种实现高动态光照范围的系统,参见5所示本文档来自技高网
...

【技术保护点】
一种实现高动态光照范围的方法,用于在固定管线中进行图像处理,其特征在于,包括下列步骤:A、将压缩后得到的高位整数纹理等分成低位整数纹理;B、逐一将各个低位整数纹理在固定管线中渲染,并解压缩;C、将解压缩后的整数纹理合 并,以实现高动态光照范围的效果。

【技术特征摘要】

【专利技术属性】
技术研发人员:刘皓
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:94[中国|深圳]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1