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

本文共 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

你可能感兴趣的文章
MVC系列博客之排球计分(三)模型类的实现
查看>>
npm安装
查看>>
阅读笔记02
查看>>
2019年春季学期第二周作业
查看>>
2014北邮计算机考研复试上机题解(上午+下午)
查看>>
mySQL 教程 第7章 存储过程和函数
查看>>
OGG同步Oracle到Kafka(Kafka Connect Handler)
查看>>
算法笔记_056:蓝桥杯练习 未名湖边的烦恼(Java)
查看>>
idea的maven项目无法引入junit
查看>>
jquery实现限制textarea输入字数
查看>>
thinkphp5 csv格式导入导出(多数据处理)
查看>>
页面置换算法-LRU(Least Recently Used)c++实现
查看>>
如何获取Android系统时间是24小时制还是12小时制
查看>>
fur168.com 改成5917电影
查看>>
PHP上传RAR压缩包并解压目录
查看>>
codeforces global round 1题解搬运
查看>>
python os模块
查看>>
Codeforces 719B Anatoly and Cockroaches
查看>>
jenkins常用插件汇总
查看>>
c# 泛型+反射
查看>>