Equalizer中的图像获取与合成

    作为一个并行渲染框架,Equalizer支持多种形式的图像合成,这之中包括多种颜色格式,像素格式下的帧缓冲数据获取与传输,基于GPU或CPU的图像合成处理。其基本流程可以概括为,各个图形绘制客户端在完成一帧图像生成后,将帧缓冲数据从GPU读回到系统内存,经过打包后发送给服务器,由服务器将同一帧图像进行合成后输出。

        图像获取中的流程入下图所示:


         图像的获取从图形绘制客户端的 eq::channel 开始,它在接收到来自服务器的 FrameReadBack 消息后,消息响应系统调用 Channel::_reqFrameReadback( eqNet::Command& command ) ,后者调用 void  Channel::frameReadback(  const  uint32_t frameID )执行真正的帧缓冲数据读回操作。
 

        每个eq::Channel有一个_outputFrame列表用于保存读回到系统内存后并将要输出的帧数据,通过遍历这个列表,调用每个FrameFrame::startReadback()函数进行帧缓存数据的拷贝。 eq::Frame类用于保存帧数据的参数并提供操作接口,而实际的帧数据则保存在FrameData类及其下的Image类中。每个Image对象表示一组像素数据,可以包括颜色或深度数据,同时Image类负责真正的帧缓存拷贝,目前eq采用的是glReadPixel 


        图像的合成过程与图像的获取类似,都是通过客户端的eq::Channel对象响应消息开始的,并且都是通过Image对象保存和管理像素数据。差别在于合成过程中采用一个独立的Compositor类来完成合成任务的操作,其中既提供了不同类型的合成方式,也提供了采用CPUGPU进行合成的选择。 

        此外 ,在图像合成时会有多种操作方式,例如 CPU 合成,基于简单的颜色缓存的 2D 合成,基于深度或透明的 DB 合成,以及通过 glsl shader 实现的图像合成。  

对延期着色的G-BUFFER图像合成的考虑

    要将Equalizer扩展以支持Deferred Shading,需要每个像素占用16字节,而正常的sort-first情况下,每个像素只需要4字节。这时为了获取像素数据,并进行传输、合成,需要对eq::Image内部的很多函数进行修改。 

    首先,eq::Image中的像素格式只有两类,即FRAME_COLORFRAME_DEPTH,前者为BGRA格式,且每个通道为unsigned byte类型;后者为一个float类型浮点数。可见,这两种像素格式都不适合存储DS所需要的fat texture数据。 

    可以考虑的像素格式为BGRA格式,但是每个通道都采用float类型浮点数,这样每个像素占用16字节。当然在使用时不能直接对各个通道赋数值,而应当对16字节的数据通过按位与操作赋值。这就要求在现有的两类像素格式外提供第三种,可以命名为FRAME_FATTEXTURE,这需要在frame.h文件中进行相应的修改,并且需要在eqc文件的解析过程中获取该设置。 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
图像均衡化算法是将图像的亮度分布变得更加均匀,以增强图像的细节。算法的基本思想是将出现频率较小的亮度级并入到邻近的亮度级,从而拉开亮度间隔,减少亮度等级,使其呈均匀分布,弱化反差。该算法的实现方法如下: 1. 首先对图像进行直方图信息统计,统计每个亮度级的出现次数。 2. 计算每个亮度级的出现概率,即每个亮度级的出现次数除以总像素数。 3. 根据均衡化的基本思想,计算每个亮度级的累计概率和累计亮度级。 4. 根据累计亮度级和累计概率的关系,生成一个256级亮度的映射表。 5. 最后根据映射表对图像进行亮度映射处理,将原图像的每个像素的亮度值替换为对应的映射值。 然而,图像均衡化算法也存在一些缺点。首先,变换后的图像亮度级减少,可能导致某些细节信息的丢失。其次,某些图像经过处理后,对比度可能过分被增强。因此,在应用图像均衡化算法时,需要根据具体情况选择合适的参数和调整处理图像的效果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [色彩均衡化算法](https://blog.csdn.net/just_sort/article/details/94430129)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值