UDN
Search public documentation:

ShaderModel2FallbackCH
English Translation
日本語訳
한국어

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 主页 > 材质 & 贴图 > Shader Model 2备用
UE3 主页 > 图形编程 > Shader Model 2备用

Shader Model 2备用


文档变更记录: 由 Daniel Wright 创建。

概述


自从cl 538899开始,UE3不再支持 shader model 2显卡。

版本


QA_APPROVED_BUILD_DEC_2006版本中添加了对Shader Model 2显卡的基本支持。主要的修改是添加了关于SM2显卡上缺少浮点混合的备用,添加了兼容的全局着色器及创建了一个备用材质系统。

自从版本QA_APPROVED_BUILD_FEB_2007开始,备用材质便呈现在了材质编辑器中,并且临时地禁用GPU变形顶点工厂。

在QA_APPROVED_BUILD_APR_2007版本中,实现了DOFAndBloomGather 备用。

在版本 QA_APPROVED_BUILD_OCT_2007中,我们修改SM2备用为场景颜色使用LDR渲染目标,并进行了大大的优化。

在cl 538899中删除了SM2支持。本页面将持续存在,以供使用较旧版本的UE3授权用户参阅。

选择路径


将会在支持的硬件上自动地使用SM2路径。在SM3硬件上,可以通过在其它参数的后使用 -forceshadermodel2 命令行参数来选择SM2路径。

HDR


自QA_APPROVED_BUILD_OCT_2007版本后

SM2路径中的HDR和SM3路径中的处理方式是不同的,因为SM2显卡不支持到浮点渲染目标的alpha混合。World DPG的BasePass被渲染到浮点'草稿'渲染目标上。HDR颜色存储在rgb中,场深存储在a中。紧跟在BasePass(基本渲染)之后,场景颜色会被复制到LDR 渲染目标中,以便硬件混合可以用于其它的帧。景深仍然是从其它帧的草稿渲染目标中读取的。场景染色渲染目标存储在线性空间中。这将导致在黑色中出现明显的条带,但是这是必要的,因为当渲染目标在伽马空间中时SM2显卡不支持alpha混合。LDR场景颜色渲染目标在它的alpha通道中存储了一个亮度因数,该因数用于光溢出后期处理特效。亮度因数仅是一个近似值,并且可能是错误的,所以应该调整它以便避免过分的光溢出效果。

注意,LDR场景颜色途径几乎比之前的浮点混合模拟快2倍,这主要是由于解决处理的数量的降低导致的。

在QA_APPROVED_BUILD_OCT_2007版本之前

仿真阶段

在虚幻引擎3中,场景颜色以浮点格式存储从而允许HDR颜色。目前,所有的支持 SM3的硬件也支持浮点混合,(除了一些类似于6200这样底端显卡之外),所以到屏幕颜色的混合不是问题。另一方面,SM2显卡都不支持到浮点渲染目标的混合,尽管它们支持从浮点目标进行渲染及采样(但是不进行过滤)。虚幻引擎3将在SM2路径中使用HDR,并且在着色器中执行浮点混合。这是仿真阶段的完整列表:

  • 高空雾
  • 雾体积
  • 光溢出特效 (但不是组合版本)
  • 所有的可调制阴影
  • 每次光照渲染遍数
  • 半透明

半透明一种特殊情况。现在它被混合到一个LDR缓冲中,并且和最终渲染遍数的HDR场景颜色相组合。这意味着半透明物体不能产生任何组件大于1的颜色,但是它和场景颜色组合的结果是大于1的。所以,通过半透明表面(也就是窗口)看到的对象将不是那么明亮的。半透明在这个路径上也就有较低的精确度,并且可能会出现条带现象,比如在投射的光线上。这种方法的另一个限制是除了在decal(贴花)和可调制阴影(正如您所知道的在那里每个描画调用仅有一个层)上之外,它根本不支持调制混合。

性能影响

在着色器中执行浮点混合需要额外的贴图查找及一些额外的计算指令,这些是一个相对较小的性能消耗。现在,前一阶段的输出表面被复制到下一阶段的输入贴图中,这个过程在每个光源、调制阴影及decal(贴花)之后发生。这是非常低效的,并且已经在QA_APPROVED_BUILD_OCT_2007版本中进行了优化。

全局着色器备用


  • 在SM2路径中没有使用分支的PCF着色器。仅可进行阴影过滤的着色器执行了4 tap Uniform PCF,并且如果支持硬件PCF则使用它。
  • 贴图密度视图模式在这个路径中是禁用的,因为它需要屏幕空间梯度函数,而该函数在PS2.0中不存在。
  • 着色器复杂度查看模式在这个路径中是禁用的。
  • DOFAndBloomGather进行了16点采样,然后计算平均值的光溢出颜色,而不是计算每个样本的光溢出颜色再取平均值。这将会导致视觉失真,但是为了使得着色器适合64ALU指令,这种现象是必须的。

其它全局着色器的使用没有改变。

材质备用


当为shader model 2编译材质时,每个材质都可以不做任何改变地进行编译。如果由于shader model 限制导致编译失败,(超过64 ALU或32Tex 指令,贴图依赖长度大于4等),那么高光、法线、漫反射及自发光贴图将会按照这个顺序逐个地丢弃直到可以把材质编译完为止。这称为自动备用或生成的备用。美工人员可以通过指定Fallback Material(备用材质)来覆盖这个过程,在这种情况下,生成备用材质的过程将会被完全地跳过,并且将会在shader model 2上使用这个备用材质