OpenGL3.3_C++_Windows(30泛光)

demo
 

demo

泛光

  1. 泛光:光芒从光源向四周发散。给观众一种这些光源或明亮的区域非常亮的错觉,有了HDR之后再实现泛光就更简单了
  2. 过程:正常渲染场景至HDR颜色缓冲->提取所有超出一定亮度的fragment->将这个超过一定亮度阈限的纹理进行模糊处理->添加到原来的HDR场景纹理之上
  3. //

MRT:

  1. 多渲染目标MRT(Multiple Render Targets):指定多个像素着色器输出,像素着色器的输出前,我们指定一个布局location标识符,这样我们便可控制一个像素着色器写入到哪个颜色缓冲:必要条件:有多个颜色附件附加到了当前绑定的帧缓冲对象上。
  2. glDrawBuffers(index,附件枚举enum)需要显式告知OpenGL我们正在通过glDrawBuffers渲染到多个颜色缓冲,否则OpenGL只会渲染到帧缓冲的第一个颜色附件,而忽略所有其他的。
  3. //

提取亮色:

  1. 正常渲染到location1作为scene的输出,通过点积计算计算亮度,如果超过了一定阈限,就同时输出到location2颜色缓冲
  2. //

高斯模糊:

  1. 从周围像素采样,近处的样本拥有最大的优先权,权重随着距离变大逐渐减小
  2. 性能优化:卷积核32×32,每个fragment从一个纹理中采样1024次!
  3. 建立两个帧缓冲,把二维方程分解为两个更小的方程:一个描述水平权重,另一个描述垂直权重。,我们实现像乒乓球一样的帧缓冲来实现高斯模糊,一个帧缓冲计算后,绑定另一个的纹理附件(首次绑定HDR普通帧缓冲的第2个颜色纹理附件,之后在pingpong纹理互传)
  4. //

混合:

  1. 现在我们有scene的渲染纹理,光的模糊纹理,需要混合在一起,新的shader接收2个simple Texture,根据HDR色调映射,计算final的Quad 的color
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值