博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于CG Relighting系统设计的片言碎语
阅读量:4322 次
发布时间:2019-06-06

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

声明:本文引用了一些来自Lightspeed项目的一些图片,版权属于原作者。

Notice : I have referenced some picture from project. The copyright is belong to origin author.

  Relighting系统是成熟的CG制作流程中不可或缺的一个环节。不过有趣的是,目前除了NVIDIA Gelato的那个附带的部件以及PIXAR曾经的IRMA,Relighting似乎还没有成熟的商业版本问世。这是由于Relighting系统的先天存在条件所决定的,它必须与制作流程紧密结合,绝非一个独立存在的功能。Relighting可以大幅度的提高艺术家的角色、灯光的布置设计,进而提高生产速度与品质。目前在ILM、PIXA R、DreamWorks等顶尖的CG工作室中都早就有了自己与整套制作流程相结合密切的Relighting系统,如PIXAR的Lpcis、ILM的Lightspeed等。

  Relighting系统的主要工作过程如下:

  1. 选择关键帧,为这些关键帧预设计灯光

  2. 选择一种BRDF即光照模型

  3. 编写渲染器Shader,将计算光照所需要的所有数据以帧的方式渲染出来

  4. 将灯光参数、BRDF数据载入硬件进行实时计算

  5. 根据反馈结果调整灯光参数,直到符合要求为止

Position
Normal
Diffuse
Specular
Rendering Result

 

  在这里我们看到,整个Relighting过程类似于调整灯光进行延迟着色,而且可以牺牲掉一定的实时性能,而获得与真正渲染素质几乎相同的画面给艺术家参考。为了进行最大程度近似的光照计算,输出光照计算所需要成分的贴图时可以预先做好光线跟踪与环境照明,预先执行Displacement Shader等。

  但是随着渲染场景复杂度的提升,艺术家所设计的灯光数目也越来越多,可能有几千个灯光用于构建真实场景的照明效果。同时,Surface Shader的复杂度、相关OP很有可能是硬件无法支持的。所以为了适应GPU加速计算,Lightspeed开发了编译器优化系统,通过分析RSL语法树识别出Surface Shader中动态与静态的部分,然后拆解为相应的Cg Shader,载入GPU进行渲染。在Relighting系统中真正许多调用的是Light Shader,Lightspeed通过Cg接口实现调用。对于一个基于GPU与GLSL的Relighting系统框架来说,可是预先编写好相应的Light Shader,包括Spot、Direction等。

  多光源的问题将是一个不小的负担,因为对于GPU这样高度并行的流处理器来说,最慢的操作莫过于内循环。如果在GPU Shader中要求遍历100000次,这是相当不可思议的耗费。我们首先需要承认这样的一个事实,不是所有的光源对于场景都有巨大的贡献,很多光源只是为了模拟局部地区照明,在Relighting时几乎没有任何贡献,所以我们可以进行一些简化。康奈尔大学一直在做Relighting系统的设计,最新的《GPU Gems 3》中就有康奈尔学者的文章。从《Direct-to-Indirect Transfer for Cinematic Relighting》到《Matrix Row-Column Sampling for the Many Light Problem》,都是为了提高Relighting的速度,拓展Relighting的适用范围,更好的为制作流程服务。

转载于:https://www.cnblogs.com/Jedimaster/archive/2008/01/06/1028224.html

你可能感兴趣的文章
7个杀手级的开源监测工具
查看>>
软件架构学习小结
查看>>
C语言实现UrlEncode编码/UrlDecode解码
查看>>
返回用户提交的图像工具类
查看>>
树链剖分 BZOJ3589 动态树
查看>>
挑战程序设计竞赛 P131 区间DP
查看>>
【例9.9】最长公共子序列
查看>>
NSFileManager打印目录下的文件的函数
查看>>
Selenium自动化-调用Mysql数据库
查看>>
项目一
查看>>
[转载]AAF灵便应用框架简介系列(6):休息一下,泛谈面向对象 Why OO+多层结构?...
查看>>
android EditView ime
查看>>
javascript 学习随笔7
查看>>
<P>标签小细节
查看>>
Linux 命令 - netstat
查看>>
mac 关闭&&显示隐藏文件命令
查看>>
JavaScript 循环绑定之变量污染
查看>>
poj 1038 Bugs Integrated, Inc. 三进制状态压缩 DFS 滚动数组
查看>>
zoj 1654 Place the Rebots 最大独立集转换成二分图最大独立边(最大匹配)
查看>>
Wordpress解析系列之PHP编写hook钩子原理简单实例
查看>>