|
灯可以使用两种渲染方式:
顶点光照计算照明只在网格顶点插值顶点值在表面上休息。一些灯光效果不是由顶点照明支持它在处理开销方面对这两种方法的便宜。另外,这可能对旧的显卡是唯一的方法。
像素照明分别计算出每一个屏幕像素。虽然较慢渲染,像素照明不允许一些影响是不可能的顶点光照。法线贴图,光饼干和实时阴影只渲染像素灯。此外,聚光灯的形状和点光光看起来更好当渲染的像素模式。
Comparison of a spotlight rendered in pixel vs vertex mode
在像素和顶点渲染的聚光灯模式比较
灯光对渲染速度有很大的影响,所以照明质量必须进行权衡framereate。由于像素灯比顶点灯更高的渲染开销,统一只会使最亮的灯在每个像素的质量,使其余的顶点光照。像素灯的最大数量,可以设置在质量设置为建立独立的目标。
你可以喜欢光被显示为一个像素灯使用渲染模式财产一个设置为模式的光重要将给予更高的优先级,以决定是否将它作为一个像素的光。设置模式汽车(默认),统一将基于一个给定的对象是受光的影响多少自动光。这是渲染像素灯的灯是由对象的基础上被确定。
看到关于优化图形性能为进一步的信息。
阴影表现
实时阴影渲染的开销都很高,所以应尽量少用。可能投下的阴影,任何对象必须先被渲染到阴影贴图然后地图将被用来渲染可能接受阴影的物体。使阴影有了更大的对性能的影响比上述像素/顶点的权衡。
有一个大的软阴影渲染开销比硬阴影,但这只影响GPU和CPU的工作不会造成太多额外的。
这个质量设置包括阴影距离价值。这是超出这个距离从相机的物体将呈现在所有没有影子。从远处物体的阴影通常不会注意到,无论如何,这可以减少阴影,必须提供一个有用的优化数。
方向灯与一个特定的问题是,一个单一的光可以照亮整个场景的。这意味着阴影图通常会覆盖一个大的部分的场景立刻使阴影敏感问题称为“透视走样”。简单地说,透视走样意味着阴影贴图像素靠近相机看起来扩大“矮胖”较远。虽然你可以增加阴影图分辨率来减少这种影响,结果是绘制资源是遥远地区的影子映射在低分辨率很好,浪费了。
解决这个问题的好方法是使用单独的阴影图,从相机的距离增加,分辨率降低。这些单独的地图被称为瀑布。从质量设置,你可以选择零,两或四叶栅;统一计算级联的定位在相机的锥。注意,瀑布只定向灯启用。看到平行光阴影详情页面。
怎样的阴影图的尺寸计算
在地图的大小计算的第一步是确定屏幕查看,光可以照亮面积。定向灯,可以照亮整个屏幕,但聚光灯和点光源,该地区是光的范围形状屏幕投影(一个点光源或聚光灯圆锥球)。投影的形状有一定的宽度和高度,在屏幕上的像素;这两个值越大则作为光的“像素大小”。
当阴影贴图分辨率设置为高(from the质量设置)的阴影图的尺寸计算如下:
定向灯:NextPowerOfTwo(pixelsize×1.9),最高可达2048。
聚光灯:NextPowerOfTwo(pixelsize),最高可达1024。
点光源:NextPowerOfTwo(pixelsize×0.5),最高可达512。
如果显卡有512MB或更多的显存,阴影贴图的上限提高到4096,方向灯,2048为点光源聚光灯和1024。
在介质阴影分辨率,阴影贴图大小一半的价值高分辨率和低,这是一个季度规模。
点光源有大小比其他类型的下限是因为他们使用立方贴图阴影。这意味着六的立方贴图面在这个决议必须保持在一次视频内存。他们也将相当昂贵,作为潜在的阴影投射可能需要用的所有六个立方贴图面。
有限的存储条件
如果你的游戏运行在很低的视频内存,然后它会自动减少阴影图的分辨率低于平常值。
一般来说,屏幕上的数据(前缓冲器,缓冲,深度缓冲区)和数据渲染纹理必须在视频内存举行。需要储存的屏幕和渲染纹理数据的存储将从总有效消减;三分之一其余的视频内存将被保留用于阴影图。解决任何阴影图将尽可能要融入这个空间减少(即上述计算还应用而降低分辨率)。
假设所有的规则纹理,顶点数据和其他图形对象可以被交换出的视频内存,理论上的最大量的显存,可以通过阴影图用来将由下式给出(totalvideomemory - screenmemory -渲染纹理内存)。然而,记忆的屏幕数量和渲染纹理不能确定。此外,一些对象不应该被交换的性能将会受到严重影响;如果所有纹理不断了,例如。让这,统一不允许阴影图超过“一般”的视频内存三分之一,这种妥协是在实践中很好的工作。
故障排除的阴影
如果你发现一个或多个对象不投射阴影则应检查以下几点:
老显卡可能不支持阴影。见下面的列表的最小的硬件规格可以处理阴影。
阴影可以在被禁用质量设置。确保你有正确的质量水平,使那阴影打开设置。
全部Mesh Renderers在现场必须设置他们的接收阴影和投射阴影正确设置。都是默认启用,但检查他们没有残疾的无意。
只有不透明的物体投射和接收阴影,使用内置的对象透明或粒子着色器不投也不能接受。通常,您可以使用透明抠图着色器代替对象的“空白”,如围栏、植被、习惯等着色器必须是pixel-lit并使用几何渲染队列。
对象的使用VertexLit着色器不能接受阴影,但他们可以扔。
与正向渲染路径,一些着色器只允许聪明的定向光投射阴影(特别是发生在统一的遗产内置的着色器4。x版本)。如果你想有一个以上的阴影投射光,那么你应该使用延迟渲染绘制路径相反。你可以使你自己的着色器,支持“阴影”用fullforwardshadows 表面着色器指令。
阴影的硬件支持
内置的阴影几乎所有设备支持的统一。以下卡支持每个平台:
Windows
AMD的Radeon:全在GPU上。
NVIDIA GeForce:除了GeForce FX所有GPU(约2003年)系列。
除了英特尔915 /:全gpus 945 / gma950(在2004年)。
Mac OS X
所有的GPU的支持OS X可以渲染阴影。
iOS、Android和Windows手机
iOSgl_ext_shadow_samplers支持最值得一提的是,iPhone 4不支持阴影(iPhone 4S已经支持他们)。
安卓:安卓4.0之后,和gl_oes_depth_texture支持最值得注意的是,一些Android Tegra 2 / 3 Android设备没有这个,所以他们不支持阴影。
Windows Phone:支持操作系统和模型的变化而变化;典型的Adreno 225 GPU和305不支持阴影。
控制台
所有的consoles支持阴影。
|
|