3DMAX延迟着色技术性问题探讨

时间:2014-10-13 13:52 来源:未知 作者:admin 点击: 次
现在很多动漫和好莱坞大片都必不可少的一种技术的有关3DMAX的后期技术:延迟着色。今天我在精英工程的CG动漫博客上面跟大家分享下有关的内容。延迟着色是一种对3d场景进行后期照明的技术,这种技术突破了以往渲染系统支持多重动态光源时,效率以及各种性能急剧下降的的限制。从而使得一个3d场景可以支持成百上千个动态光源的效果。
  它的技术思路主要将3d场景的几何光照信息(位置、法线、材质信息)渲染到render target上,把它们从世界的三维空间转变成屏幕的颜色空间,作为光照计算时的输入,接着,对每一个光源,使用这些信息输入来进行计算生成一帧,然后把这样的一帧(render target)合成到结果的帧缓存上,这样当遍历完所有的光源,计算就完毕了,帧缓存上的图像就是最后的渲染结果。下面是延迟着色的一些具体内容:
1.它能让你在绘制几何图形的时候不需要为任何光照方面的问题所担忧。
2.使用多个渲染流程将像素的多种格式,比如空间坐标,法线渲染到各自得目标缓冲中去。
3.利用第2点中提到的渲染数据对像素进行着色计算,仿佛在2D图形空间中进行绘制一样。
传统单通路光照(影响物体的所有光照在一个shader pass中完成)有哪些特点?
1.光源数量极少的场景中传统渲染方式能工作得很好,比如只有太阳光的野外场景。
2.在光源很多的时候,非常难于对光照进行管理。
3.由于所有光照都在一个shader里完成,所以shader指令数目一个不小心就超过了GPU限制。
传统多通路光照(指每个光源对物体的影响是分开pass中完成的)有哪些特点?
1.复杂度太高,计算完所有光照需要物体数目 × 光源数目 个pass。
2.不论是按物体,还是按光源进行分批都是相当麻烦的。
3.理论上讲,光源应该按它们的作用范围对场景进行分割管理,但如果按多通路计算光照,动态光源将相当难处理。
延迟着色有哪些特点?For each object: Render to multiple targets For each light: Applylight as a 2D postprocess
1.复杂度适中,需要物体数目 + 光源数目 个pass。
2.易于分批计算。
3.多个小范围光源和一个大范围光源计算量差不多(因为每象素影响光源数一样)。
我们需要哪些渲染目标缓冲?
1.我们需要如下几何渲染结果:
-空间坐标 -法线数据
-材质参数(漫反射颜色,自发光颜色,高光颜色及高光衰减系数等)
2.延迟着色不是适用于需要特别多输入参数的光照计算(比如球面调和函数的光照计算)。
“胖的”帧缓冲
各种帧缓冲的格式:
–空间坐标    A32B32G32R32F
–法线       A16B16G16R16F
–漫反射颜色   A8R8G8B8
–材质参数     A8R8G8B8
每个像素占用256字节,在不使用抗锯齿的情况下,1024×768要占用24M的空间。目前现在的硬件也不支持多个不同格式的帧缓冲。
优化帧缓冲尺寸
顶一下
(0)
0%
踩一下
(0)
0%
发表评论
昵称: 验证码: 点击我更换图片
最新评论
视频点
视频点