简单实现了一下类似环境映射的光照效果渲染
2014-01-14 23:49
471 查看
之前的渲染框架只支持点光源和面光源,所以很难模拟自然环境光的渲染,于是现在简单地加入了一个类似environment map的环境光照的渲染。实际上环境映射(environment mapping)在实时渲染中经常被用到,主要用来模拟光滑表面对周围环境的反射,如镜子、光亮漆面的金属等等。但环境映射有两个很强的假设:1.所有入射光都来自无限远处;2.被渲染的物体必须是凸的,不能有自反射。这两个条件在实际中是很难达到的,当然这是在实时渲染框架下的限制。在光线跟踪引擎下,我们可以轻松地突破这两个条件,当然代价就是效率的降低。在path tracing中,我们还可以对漫反射表面进行环境映射积分,从而达到处理漫反射表面的目的(这对于通常意义下的环境映射是不能完成的)。这里我的做法是,使用类似球形环境映射的方法,首先把一张选好的环境图贴到一个包围了整个场景的球面上,然后对场景使用path tracing算法,终结条件是射线击中这个球面(而不是击中光源)。由于这个巨大的球面包含了整个场景,所以找到有效路径的几率几乎是100%,效率还是可以接受的。当然,这里其实还可以加上重要性采样,比如在环境贴图中亮的部分更多地采样,但这就不是标准path tracing能够做的事情了。
使用这个方法,就可以更好地模拟自然环境下的光照,从而使结果看起来更加真实生动。下面是两组渲染结果:
使用这个方法,就可以更好地模拟自然环境下的光照,从而使结果看起来更加真实生动。下面是两组渲染结果:
相关文章推荐
- 使用CSSgram来实现类似Instagram上的简单的滤镜效果
- 使用编译时注解简单实现类似 ButterKnife 的效果
- 实现简单的类似Lightbox效果的弹出对话框
- js实现类似光照的炫彩文字渐变视觉冲击效果
- 简单利用Dialog实现Ios从底部弹出的效果,合QQ空间里面的发表说说弹出拍照的效果类似
- BaseServlet优化Servlet,实现类似struts2的一些简单效果
- BRDF模糊环境光照的简单实现
- Android实战简易教程-第十四枪(介绍SwipeMenuListView-简单实现类似QQ的滑动删除效果)
- OpenGL光照设置,实现渲染效果
- jquery实现跳到底部,回到顶部效果的简单实例(类似锚)
- 球面环境映射实现高光效果
- javascript简单实现类似QQ头像弹出效果的方法
- javascript简单实现类似QQ头像弹出效果的方法
- WPF Label控件在数据绑定Content属性变化触发TargetUpdated事件简单实现类似TextChanged 事件效果
- 使用编译时注解简单实现类似 ButterKnife 的效果
- Jquery UI简单应用——自动完成(Autocomplete)实现类似百度输入提醒效果
- 简单模拟tomcat环境测试HttpSessionBindingListener实现效果
- 论坛源码推荐(4月16日):类似FourSquare的视差效果 实现简单的颜色实例化
- iOS 简单实现类似twitter的推门效果
- Android实战简易教程<十四>(介绍SwipeMenuListView-简单实现类似QQ的滑动删除效果)