签到

05月06日
尚未签到

共有回帖数 0

    甜蜜

    等级:




    siggraph13上面EpicGames带来的UnrealEngine4的PhysicallyBasedRendering(基于物理模型光照)部分内容。
    EpicGames应该说进入PhysicallyBasedRendering较晚了,但这样就有比较多的参考,这里Epic重要的参考是迪斯尼在做cg(《无敌破坏王》等)使用的光照材质模型,并且在实际开发过程中进行了精简,并且和用于游戏开发的pipeline相结合,取得了不错的成效。
    在理论算法方面,在基于cubemap的secondary specular的brdf的计算上更加的数学准确,通过理论数学以及工程方法进行优化,是一个high点。
    link
    http://url.cn/KT07av

    http://url.cn/MJprmC

    http://url.cn/Q3Dipo

    overview
    首先epic介绍了其在使用物理光照方面的思考,大的方向上来看,业界也达成共识,换成基于物理模型的光照,会带来更真实的效果,更精简的美术参数和数据,在光照环境剧烈变化的情况下保持渲染结果的真实正确。
    但是其实物理光照仍旧是一个开放性课题,其可以用的光照模型很多,很多研究开始是针对于离线渲染的cg来做,选择什么,在这种模型下面如何取舍是开发者面临的非常难以决断的问题。
    epic在这方面的需求包括:
    *性能
    *简单易用
    *可以线性插值(这样多个material可以混合)
    *有较高的灵活性--可以写实风,可以卡通风
    同样,强如epic在转向物理光照的时候,也是遇到问题,虽然争论不太多(已经业界标配了),但是应用起来还是适应了段时间。
    同时epic一个非写实项目已经开始了挺长时间,转向物理光照也困难重重,尽管程序员表示物理光照可以搞定,并且迪斯尼也证明了卡通风格,但是已经做了很多数据,所以又给这个项目做了个向下兼容版。
    也算是成长的烦恼吧!!
    shading模型
    和其他物理模型一样,是macrofacet specular shading model:


    epic games采用的是迪斯尼所使用的GGX模型,所以各数学公式是:
    Distribution:


    Geometry:


    Fresnel:


    这里fresnel项是针对schlick approximation做了一个数学逼近,优化了性能,其中schlick approximation是:




    ImageBasedLighting
    (ImageBasedLighting,说人话就是使用环境贴图来做反射,只是图形学里面把这种把环境光照信息存到环境贴图里面,然后在拿来渲染模型的方法叫做ImageBasedLighting。)
    常规使用的方法可以说是源自经验和尝试,实际下来在数学上是不准确的。
    数学上精准的推导是根据材质表面的粗糙程度来进行积分:


    一些数学逼近:


    红框中的部分是光照信息,其实就是从环境贴图中读出的信息,是经过prefilter的。
    篮框部分是积分的另一个部分,在进行数学推导:


    这里便转换成了一个由roughtness和cos(theta)组成的函数,offline计算结果存到贴图里:


    整个过程很漂亮,理论推导+engineering,把真正正确的做法,变成了现实。


    材质模型
    epic取了ggx材质模型的一部分,迪斯尼使用的ggx模型里面包含了超级多的参数:


    epic取了:
    *base color
    *metallic
    *roughness
    另外加上:
    *cavity--用于计算材质上坑洼造成的阴影,这个没多介绍

    roughness和metallic美术用起来破费了些心思。


    材质layering
    ue4立面材质可以进一步混合,也就是材质编辑器中可以拿一个材质作为一个节点来构建材质。
    可以这样做的重要理论基础就是,材质中的参数都是可以进行线性插值,并且在插值后,物理属性也是正确的,并不会破坏光照模型。
    这样可以说材质编辑器的能力进一步提升,当然如果美术飙起来也会弄出非常低效的材质把性能搞差。


    epic提到其中一个应用就是做detail tiling,把一个正常材质上面叠加tiling很厉害的另外一个材质,进而得到精度超级高,但是却又不需要大贴图的新材质。
    封面图片就是detail tiling的结果:



    lighting类型
    ue4中还支持了面光源,球光源和tube光源。
    面光源中尝试了几种方法,包括billboard reflection,cone intersection,最后使用的是在specular distribution项上面做一些改变:


    楼主 2015-06-04 19:09 回复

共有回帖数 0
  • 回 帖
  • 表情 图片 视频
  • 发表

登录直线网账号

Copyright © 2010~2015 直线网 版权所有,All Rights Reserved.沪ICP备10039589号 意见反馈 | 关于直线 | 版权声明 | 会员须知