Unity渲染路径 Rendering Paths_1_Deferred Lighting 延时光照

原创 2016年06月02日 11:18:14
Deferred Lighting 延时光照
       延时光照是有着最高保真度的光照和阴影的渲染路径。如果你有很多实时灯光,最好是使用延时光照。它需要一定水平的硬件支持,仅在 Unity Pro可用,移动设备上不支持。
       延迟光照是一种当前最高级的能实现光线和阴影保真的渲染路径
  • 对于能影响任何物体的光线数量没有上限 
  • 完全采用以每像素的方式评估光线,这等于意味着全部将以正常贴图的方式正确的和物体交互
  • 所有光线都能拥有信息缓存
  • 所有的光线都能产生阴影
延迟光照的优点:
  • 光照的开销与屏幕的光线尺寸成正比,不用担心光线所照射的物品的数量,少量光线 等价于 廉价的花费
  • 一致性,所有的光线的光照采用按像素为计算分割单位来计算。比如,不会有在大规模三角形情况下光照计算使计算性能发生崩溃的情况发生。
缺点:
  • 没有实时抗锯齿支持
  • 延迟光照不能处理半透明物体,也不能用在哪些使用前向渲染的物体之上
  • 有限的光照模式支持(Blinn-Phong)。所有光照以同样的方式计算,你不能够在不同的物体上采用完全不同的光照模式
  • 没有对接收阴影特征的支持和对光线遮罩剔除有限的支持
延时光照的需求:
  • 需要Unity专业版
  • 显示卡支持Shader Model 3.0(或更高),深度纹理渲染和双面模板缓冲特性。许多2004年后的显卡都支持:如Geforce Fx或更高,Radeon X1300或更高 Intel 965/ GMA X3100 或更高
  • 目前在移动平台不支持。
性能注意事项:
  • 延迟光照中实时光线的开销和光线照亮的像素值的数量成正比。而不取决于场景的复杂性。微小的点光源和聚光灯光源非常容易渲染。点光源或者完全或者部分被场景物体遮挡的聚光灯光源所照射的像素则被GPU所跳过,因此更加廉价。
  • 当然,拥有阴影的光源比没有阴影的光源要昂贵许多。使用延迟光照,光影投射器仍然需要为每个阴影投射渲染一次或者多次。而且产生阴影的光线着色器也比不产生阴影的光线着色器要昂贵许多。
实现细节:
当延迟光照生效时,在Unity中发生的渲染过程如下:
  • 基本渲染:被渲染的对象产生带有深度,法线,和反射量的屏幕空间缓冲
  • 光照渲染:使用上一步的缓冲计算出光照。结果放入另一个屏幕空间缓存
  • 最后渲染:物体再次渲染。取来已经计算好的光线和颜色纹理混合在一起,然后再加上环境光以及散射光照。
不能采用延迟光照技术的带阴影的物体在延迟光照渲染完后使用前向渲染路径处理。
Base Pass 基本渲染阶段
  • 基本渲染将每个物体都渲染一次。视图空间法线和高光强度被渲染进单一的ARGB32渲染纹理(法线在RGB通道,高光强度在A通道)中。如果平台和硬件支持将Z缓冲按纹理读取,那么深度不会被明确的渲染。如果Z缓冲不能被以纹理的方式访问,那么深度将在额外的渲染处理中被使用着色器替代技术渲染。
  • 基本渲染的结果是被屏幕内容填满的Z缓冲和带有法线和高光强度的渲染纹理。
Lighting Pass 光照渲染阶段
  • 光照渲染基于深度,法线和高光强度计算光照。光照是被屏幕空间被计算的,因此和屏幕复杂性无关。光照缓冲是一个单一的ARGGB32渲染纹理,纹理的RGB通道带有漫反射的光照信息,在A通道带有单一特定颜色的光照。光照值采用对数值编码以产生比通常ARGB32纹理所能达到的动态扩展范围。
  • 光照模式固定为Blinn-Phong。
  • 不能跨越临近平面的点光源和聚光灯光源被作为带有开启测试场景的Z缓冲3D形状渲染,这部分和完全屏蔽的点光源和聚光灯光源可以非常廉价的渲染。 跨越临近区域的平行光或者点光源能作为全屏四边形。
  • 如果一个带有阴影的光源生效,在这个处理过程中会被很好的渲染。注意阴影并不免费,阴影投射器需要开销来渲染,同时一个更加复杂的光线着色器需要应用。
Final Pass 最后渲染阶段
  • 最终渲染阶段产生最后渲染后的图像,到这一步,所有的对象都将被再次渲染,其中着色器将混合前一步生成的光源和纹理以及所有自发光照明。
  • 在最后渲染阶段光照贴图也被应用。靠近相机,使用实时光照,并仅烘焙间接光照。

相关文章推荐

Unity5 的新旧延迟渲染Deferred Lighting Rendering Path

unity5 的render path ,比4的区别就是使用的新的deferred rendering,之前的4的deferred rendering(其实是light prepass)也被保留了下来...
  • wolf96
  • wolf96
  • 2015年09月25日 09:46
  • 3929

计算机图形学(二)输出图元_16_字符函数

这里参数font用GLUT符号常量赋值,用来指定一特定字型集,参数character赋以ASCII编码或其他要显示的字符。这样,要显示大写的"A",可以使用ASCII编码65或指定为‘A’。同样,编码...

Win32 OpenGL编程(5)顶点数组详细介绍

Win32 OpenGL编程(5) 顶点数组详细介绍write by 九天雁翎(JTianLing) -- blog.csdn.net/vagrxie讨论新闻组及文件Technorati 标签: 顶点...
  • vagrxie
  • vagrxie
  • 2009年10月20日 14:39
  • 17109

Unity3D光照前置知识——Rendering Paths(渲染路径)及LightMode(光照模式)译解

简述 U3D支持不同的Rendering Path(渲染路径),开发者应该根据游戏内容和目标平台,硬件等来选择使用哪个Rendering Path。不同的Rendering Path具有不同的表现效果...
  • kevlis
  • kevlis
  • 2016年11月02日 11:57
  • 3815

Unity - 基础 - Unity 5 光照与渲染(Lighting and Rendering)

Unity 5 光照与渲染 本文整理自Unity全球官方网站,原文: Unity 5 - Lighting and Rendering。 简介全局光照,简称GI,是一个用来模拟光的互动和反弹等复杂...

Unity&Shader高级篇-渲染路径(Rendering Paths)

原文:http://www.manew.com/thread-97939-1-1.html一、前言在的Camera中常常会看到一个Rendering Paths的选项,里面有5个选项,其中两个比较重要...

Unity渲染路径 Rendering Paths介绍

Unity支持不同的渲染路径。应具体取决于你的游戏内容和目标平台/硬件来选择使用哪一个。不同的渲染路径有不同的特点和性能特点,主要影响灯光和阴影。 项目所使用的渲染路径在Player S...

Deferred Lighting (延迟光照) + Light Pre-Pass 实现多光源动态阴影

一直以来,不明白多光源动态阴影应该如何高效的实现,直到在网上查阅了大量的文章,得知虚幻3引擎里用到了 Deferred Lighting (延迟光照)渲染系统,实现了多光源的动态光照和阴影,我猜其它游...

延时渲染(Deferred Shading)

延时渲染(deferred shading)相对于前向渲染(forward shading)主要有以下两个优势:(1) 只对看得见的像素进行光照计算,对于深度比较复杂(像素被超过4个以上的面片所覆盖)...

unity3d Human skin real time rendering with blood and water drop effect真实模拟人皮实时渲染之血液和水珠掉落效果

在之前人皮肤实时渲染的基础之上添加了血液覆盖效果(blood effect)和水珠滴落效果...
  • wolf96
  • wolf96
  • 2015年03月22日 14:21
  • 3456
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Unity渲染路径 Rendering Paths_1_Deferred Lighting 延时光照
举报原因:
原因补充:

(最多只允许输入30个字)