一、环境光遮蔽

环境光遮蔽(Ambient Occlution),简单点说,就是一个取样点上被其他几何体覆盖的程度,它是被通常用来模拟全局光照效果的简单方法。

1、SSAO

最简单的方法就是SSAO(Screen Space Ambient Occlution),他的思想很简单,就是我们视线相交的点,以这个点为圆心在一定范围内采样多个点,将这些点到视线的距离与z-buffer比较得到不可见点的数目,这样我们就知道可被遮挡光的比例,按照这个比例去减弱光强。那么进一步我们实际上只要计算半球面,所以有了SSAO+的算法,就是以法线方向作半球面再进行SSAO。

2、HBAO

当然简单算法也有它的问题。这里提到另一个算法,HBAO(Horizon-based Ambient Occlution),这个算法的核心思想就是根据附近遮挡的仰角高度去积分计算遮挡百分比,这里有一个attenuation function就是要判断仰角遮挡物与当前点的距离,如果过远就置零不去计算。

3、GTAO

实际上直射下来的光照贡献度和斜照的贡献度是不同的,基于解决这个问题,提出了GTAO(Ground Truth-based Ambient Occlution),并且这个算法拟合出了光照在表面弹射的性质。

 

二、雾效

1、Depth Fog

雾效最简单的方式就是Depth Fog,按照距离进行遮挡,其中最常用的就是二阶的指数型雾。

 

2、Height Fog

此外,还有一种体积型的雾,这种雾是有一定高度的,当前高度在这个高度以下,值就是雾的值,当前高度在这个高度以上时,雾的值是指数降低的。在我们在雾外看雾内的东西,我们只能用Ray Marching的方法进行积分,雾的浓度值与通透值线性相关,可以直接将浓度作为通透值。

3、Voxel-based Volumetric Fog

现在技术要求雾更加具有体积感视线类似于丁达尔效应的效果,Voxel-based Volumetric Fog这个算法将视锥进行体素化(Voxelize),在这些体素化的部分进行各种Marching的计算,之后以视场大小为基准进行存储。

三、抗锯齿

抗锯齿(Anti-aliasing)是必要的,简单的办法的就按照实际物体占像素的比例去设置颜色。

1、SSAA & MSAA

基础的算法有SSAA(Super-sample AA),这种算法就是将原有分辨率增加一倍去计算当前像素的颜色占比,这样将会产生额外的z-buffer存储。MSAA(Multi-sample AA)做出了优化,每个像素有4个采样点,当像素在三角形中心(四个采样点相同)则只作一次shading,当像素在三角形边缘(四个采样点不同)则进行多次shading之后取比例。这个方法仍然需要四倍的buffer,但节省了shading的时间。

以上是两种远古的AA方式,但现在游戏一个像素之内已经可能有多个三角形,所以用以上两种方式进行AA是不好的。这里介绍了另外两种AA方式。

2、FXAA

快速估算的抗锯齿方法(Fast Approximate AA),不再使用更高精度的buffer去存储,而是对图像边缘进行插值。第一步是获得边界,就是先将图像投影到亮度空间,再进行十字形滤波,如果上下左右综合色差超过某个阈值的时候,则判断为边界点。

之后根据上下左右的像素插值确定颜色突变方向,与突变方向像素点形成一个像素对,对像素对取均值,根据相邻像素对均值可以计算出边缘长度。

之后根据当前像素对在边缘的位置,判断加权比例。

3、TAA

时域的抗锯齿(Temporal AA)主要思想是将过去帧与当前帧进行加权计算。

四、后处理

1、Bloom Effect

通俗来说就是发光物体的光晕效果。如何产生光晕效果,首先要取出发光的部分,即映射到亮度空间,取出大于某个阈值的部分。第二步进行一次高斯模糊,为了减少计算,我们先将图像降采样,降到一定程度进行blur,之后再与原图相加再上采样,这样避免用到较大的Kernel运算。最终我们将高斯模糊后的图与原图进行相加即可。

2、Tone Mapping

现在的画面基本都是HDR,也就是光直射的地方会特别亮,阴影的地方特别暗,所以我们需要一个曝光曲线将亮度限制在一个范围当中。

这里给出了一条 filmic s-curve tone-mapping 曲线,还有著名的ACES曲线。

3、Color Grading

Color Grading是表达情绪的要点。在制作上是用了LUT的方法,即从一个颜色空间到另一个颜色空间的映射。

【GAMES104】 渲染的其他内容相关推荐

  1. chrome v46渲染partial html内容的一个问题

    Chrome v46版本的一个页面渲染问题 问题场景: 应用中有一个ajax请求,会获取到一段partial HTML内容,加入到页面中显示.这段html结构如下: <div> ... & ...

  2. element el-popover 要渲染较多内容,特定格式,以及在table 显示不完整。

    效果图: 公司项目,不方便展示,打了马赛克. 对于一些格式的内容,就可以使用 <template solt="label"></template> 在里面定 ...

  3. iphone 低版本渲染不出来内容的一种解决办法

    最近的一次项目中,出现了一个bug, 这里我就是用的简单的vue赋值,所以我怀疑问题出现在css上,发现可能是 overflow: hidden;text-overflow: ellipsis;dis ...

  4. Python爬虫:Selenium+ BeautifulSoup 爬取JS渲染的动态内容(雪球网新闻)

    最近要有一个任务,要爬取https://xueqiu.com/#/cn 网页上的文章,作为后续自然语言处理的源数据. 爬取目标:下图中红色方框部分的文章内容.(需要点击每篇文章的链接才能获得文章内容) ...

  5. html实现银行卡中间四位显示为*号,用正则给银行卡号部分加*号显示。。vue中根据不同的值,渲染相应的内容。。...

    先上效果图: 一.HTML部分: 实现功能: 1.在未知银行卡位数的情况下要显示出银行卡的实际位数,其中后四位数字显示,其他位数以星号代替 js实现:var idNum = document.getE ...

  6. CSharpGL(19)用glReadPixels把渲染的内容保存为PNG图片(C#)

    CSharpGL(19)用glReadPixels把渲染的内容保存为PNG图片(C#) 效果图 本文解决了将OpenGL渲染出来的内容保存到PNG图片的方法. 下载 CSharpGL已在GitHub开 ...

  7. 浅谈高大上的微信小程序中渲染html内容—技术分享

    大部分Web应用的富文本内容都是以HTML字符串的形式存储的,通过HTML文档去展示HTML内容自然没有问题.但是,在微信小程序(下文简称为「小程序」)中,应当如何渲染这部分内容呢? 解决方案 wxP ...

  8. Vue2.0开发之——Vue基础用法-内容渲染指令(16)

    一 概述 指令的概念 内容渲染指令介绍 二 指令的概念 指令(Directives)是vue为开发者提供的模板语法,用于辅助开发者渲染页面的基本结构 vue中的指令按照不同的用途,可以分为如下6大类 ...

  9. 在微信小程序中渲染HTML内容

    大部分Web应用的富文本内容都是以HTML字符串的形式存储的,通过HTML文档去展示HTML内容自然没有问题.但是,在微信小程序(下文简称为「小程序」)中,应当如何渲染这部分内容呢? 解决方案 wxP ...

最新文章

  1. Android之打造可定制的全场秒杀倒计时控件
  2. ubuntu终端显示乱码的解决
  3. wxWidgets 的打印演示
  4. eclipse中Android模拟器常见的问题解决方法汇总
  5. 第53天:鼠标事件、event事件对象
  6. node那点事(二) -- Writable streams(可写流)、自定义流
  7. android图片适配到裁剪框,Android图片剪裁-调用系统实现,完美适配魅族等机型
  8. pandas学习笔记四之读取写入文件
  9. mysql任务计划怎么定制_mysql计划任务
  10. 20165218 《网络对抗技术》Exp0 Kali安装 Week1
  11. 坦克大战游戏java代码_Java实现坦克大战游戏的源码示例
  12. FPGA产生m序列及其应用
  13. 为什么要将图片转为base64格式
  14. 新畅行业商城软件v1.3.9
  15. 【北邮国院大二下】产品开发与营销知识点整理 Topic4
  16. 我糟糕的2019年:虽流年不利,但我心仍坚定
  17. 软件发明专利实例_申请软件发明专利的一些案例
  18. ESP32学习笔记(27)——BLE GAP主机端扫描
  19. 使用Visual Studio+OpenCV进行的Susan算子边缘检测及数米粒图像处理实验
  20. 阿里巴巴 Java性能诊断工具Arthas

热门文章

  1. 字节后端实习技术三面面经
  2. DTX编解码原理New
  3. 国家基金申请书中的科学问题与关键问题
  4. abc android软件,学习ABC Learn ABC软件
  5. 把图片按照图片名字分到不同的文件夹中
  6. d使用ldc生成wasm
  7. php面试题之PHP核心技术(life)
  8. IP地址,子网掩码、默认网关,DNS的设置和工作原理(总结)
  9. 无法将类 XXX中的构造器 XXX应用到给定类型
  10. 流畅稳定免费的LinuxMint20.1桌面系统安装调试讲解