博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[sig09]Rendering Technology at Black Rock Studio
阅读量:6881 次
发布时间:2019-06-27

本文共 1638 字,大约阅读时间需要 5 分钟。

  hot3.png

siggraph09, black rock studio在《pure》&<split/second>中的渲染技术介绍:

这篇文章的含金量颇让我吃惊,短小强悍。

---------------------------------

ground cover render in pure

使用交叉摆放的sprite来render大量的草。

使用density map来放置草,有tile cache(camera移动的时候就不用完全重建),render的时候就是sprite。

---------------------------------

tree rendering

树的渲染中比较有挑战的是叶子的反锯齿,alpha test和alpha to coverage都不够好。

black rock是使用

  • 画alpha mask的时候输出color和alpha
    • color使用add作为blend op
    • alpha使用max作为blend op
  • shader里最后画tree的时候,把color.r和alpha做一个平均,然后blend
    • 这样就可以得到特别好的aa的结果
    • 同时因为有alpha mask,也不用担心排序的问题
----------
render in split/second
deferred lighting, g buffer format:

1

Albedo.r

Albedo .b

Albedo.g

Unlit.r

2

Normal.x

Normal.y

Normal.z

Unlit.b & Edge

3

Unlit.g

Specular

Motion.x

Motion.y

shadow:

  • screen space shadow map
  • pcf
  • 使用shadow edge mask来把需要pcf处理的地方划出来,只对这个部分来做pcf,这个对效率又不错的提升:
    • 使用downsample的方式来划出来pcf需要做的区域,效率差距:
    • Without mask

      6.4ms

      With mask

      1.7ms

      Calc mask

      0.6ms

irradiance volume:

像light propagation volume一样,把sh系数存到volume texture里,在deferred renderer中去sample sh,来做indirect lighting:cool。

在link1中继续细致的讲解。

  • cook time:
  • 使用octree来做场景划分
  • 最大的划分单位是一个streaming sector
  • 如果一个grid里面有geometry,就继续划分,到一个指定的最小值为止
  • runtime:
  • irradiance volume数据以sector来store和streaming
  • 使用64*64*16的volume texture
  • 存的方式不是sh,而是ambient cube,这里有一个表:
  • 我们可以看出,ambient cube是一个介于order1和order2之间的一个存储量
  • 每帧去更新volume texture,有cache,搞好的部分就不更新了,计算的时候会根据变化重新计算偏移
  • 从下图我们可以看见,volume texture lookup是非常昂贵的,quarter buffer一个比较合适的选择
  • 2m的resolution对于volume tex来说比较合适的(对于split/second来说)
  • split/second还尝试了使用non uniform volume texture,这样就有了一个lod的概念,但是这样就给cache的update带来问题,最后被弃用
  • 当然irradiance volume最棒的地方就是提供了real time indirect lighting的可能性

原文链接:

转载于:https://my.oschina.net/dtec/blog/44938

你可能感兴趣的文章
Linux 访问windows下的FTP服务器
查看>>
如何在函数计算中使用结构化的用户日志
查看>>
Javascript中如何获取统一管理的Java提示语
查看>>
体积光渲染技术
查看>>
NutzBoot 2.3.4.v20190410 持续改进
查看>>
JSON学习
查看>>
这一次,我拒绝了Python,选择了Go
查看>>
CUBA Studio 7.4 发布,企业级应用开发平台
查看>>
Intellij IDEA 使用教程
查看>>
第十五章:交互式界面(三)
查看>>
Etcd集群搭建和使用简介
查看>>
音视频技术开发周刊 63期
查看>>
storm 读取不到对应的kafka数据
查看>>
[Spark]Spark RDD 指南一 引入Spark
查看>>
Scrapyd 部署
查看>>
【小白教程】趣味表白效果
查看>>
亚马逊面部识闹笑话,28名国会议员被认成嫌疑人
查看>>
MySQL的查询过程分析
查看>>
详解Android SDK 目录和作用
查看>>
亚马逊无人机再曝新专利,用集群无人机来送货
查看>>