【LearnOpenGL 学习笔记】高级光照

学习LearnOpenGL时记录的一些简单的笔记,教程网址为LearOpenGL CN

Gamma校正

显示器输入电压产生约为输入电压的2.2次幂的亮度,一般显示器gamma=2.2,对于(0,1)之间的rgb值,就是变暗了

校正方法:在最终的颜色输出上应用显示器gamma的倒数

gamma=2.2:sRGB颜色空间

HDR(High Dynamic Range)

大于1.0的颜色值也会被规范到1.0,导致场景中很亮的区域变成一片白色

使用浮点帧缓冲,如GL_RGB15F等,值可以超过1.0f

色调映射:把范围更大的颜色值转换到[0.0,1.0]

ReinHard色调映射

c o l o r = h d r C o l o r h d r C o l o r + 1.0 color=\frac{hdrColor}{hdrColor+1.0} color=hdrColor+1.0hdrColor

曝光

c o l o r = 1.0 − e − h d r C o l o r ⋅ e x p o s u r e color=1.0-e^{-hdrColor\cdot exposure} color=1.0ehdrColorexposure

泛光(Bloom)

原理:提取亮色+模糊

HDR对Bloom的好处:亮色的阈值可以超过1.0,否则只能≤1.0,会导致光晕效果过重

延迟渲染

Forward管线的问题:对每个需要渲染的物体,都要对每个光源每个片段进行计算,而大部分片段着色器的输出都会被覆盖

延迟渲染的思路:把大部分计算量非常大的渲染defer到后期进行处理

first pass:渲染一遍场景,把几何信息存进G-Buffer(position、normal、albedo、specular…)

second pass:用G-Buffer进行光照计算

问题:占显存比较大,尤其是高精度的位置信息;只能用同一套光照算法;不支持混合

解决方法:结合defer和forward,先用defer渲染不透明物体,再用forward渲染透明物体,使用G-Buffer中的深度信息,就可以实现混合效果

光体积(light volume):计算光源的可达范围,仅当片段位于光源体积内时才计算光照,减少计算量

需要继续了解的:

  • 延迟光照

  • 切片式延迟着色法

法线贴图

每个fragment使用各自的法线,代替一个面上所有fragment使用同一个法线的技术。这样模型的面数不用增加,只通过法线贴图增加大量细节。

法线在[-1,1]之间,而rgb颜色值在[0,1]之间,通过公式映射:
r g b _ n o r m a l = n o r m a l × 0.5 + 0.5 rgb\_normal=normal\times 0.5 + 0.5 rgb_normal=normal×0.5+0.5

切线空间:

x轴:切线 (1,0,0) ->(1,0.5,0.5) 红色

z轴:模型法线 (0,0,1) -> (0.5,0.5,1) 蓝色

y轴: 副切线

使用切线空间的好处:不受表面实际朝向的影响

法线贴图上大部分位置都是蓝色,也就是法线指向z轴,表示法线就是模型法线,而法线贴图上是红色或绿色的地方表示此处法线与模型法线垂直,就是凹凸出来的地方。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值