编译纹理流送数据

对给定基元组件而言,精确计算每个使用纹理所需的分辨率所必需的数据来自:

  • 基元的边界

  • 网格体的纹理坐标尺寸

  • 对每个纹理进行采样的材质纹理坐标比例

此信息缺失时,将使用保守的启发法。

编译纹理流送数据的步骤:

  1. 点击 工具栏Build 按钮旁的下拉箭头。

  2. 点击 Build Texture Streaming

    BuildTextureStreaming.png

    这将生成运行时使用的组件和关卡数据。

    BuildingTextureStreaming.png

注意:此操作将使用最高精度级和支持的特征级,生成用于所有材质精度级和平台特征级的数据。

运行时,如组件使用的纹理数量少于编译过程中使用的纹理数量,则未使用的纹理将被忽视。如果项目使用纹理的对象不含编译数据,则这些纹理将使用保守的启发法。

编译精确度

查看纹理流送精确性查看模式可了解纹理流送编译中所计算数据的精确度。

ShowTextureStreamingAccuracies.png

这些将显示不同编译数据的精确度。出现较大的偏差时(红或绿),有时可通过手动 配置修改 修正数据。 纹理流送编译的目标是在不需要手动调整的前提下生成最佳数据。

OriginalTextureScene.png

上图是用于编译以下纹理数据的场景。所有显示模式参考以下图例:

  • 红色:2X+ mip 丢失

  • 黄色:1 mip 丢失

  • 白色:数据无误

  • 青色:多出 1 mip

  • 绿色:多出 2X+ mip

基元距离精确度

此模式显示经流送器计算的网格体查看距离与真实 GPU 距离对比后的精确度。流送器计算从视点到纹理实例轴对齐边界框(AABB) 的距离。此边界框在编译过程中计算——计算使用纹理的组件 LOD 部分 AABB 的总数。

视点十分靠近或输入此 AABB 时,此模式将固定显示为 2X+,除非几何体与 AABB 相匹配。原因是流送器计算的距离已变为零,而 GPU 距离则并不为零。 两者之间的比率变得非常大。但这并非错误,不需要进行修复。

PrimitiveDistanceAccuracy.png

此处显示的数值可通过修改网格体组件的 流送距离乘数(Streaming Distance Multiplier) 进行调整。

StreamingDistanceMultiplier.png

网格体 UV 密度精确度

此模式显示流送器所使用的网格体世界场景纹理坐标与真实 GPU 数值对比后的精确度。该尺寸以世界空间单位表示纹理坐标。它由流送器使用,评估坐标纹理在采样纹理时的影响。

UVDensities.png

相对而言该查看模式与视点无关。当网格体存在错误数值时,通常不是和场景相关,而是和网格体相关。这意味着如果一个网格体存在错误数据,则使用该网格体的所有组件都可能存在错误数据。可对 StreamingDistanceMultiplier 进行调整,在静态网格体或骨架网格体编辑器中修改此值,直到网格体处于 良好 的范围中。

材质纹理比例精确度

一个材质中使用的多数纹理均利用其中一个网格体 UV 密度的比例值进行采样。纹理流送编译将尝试计算使用的纹理坐标,以及应用到每个采样纹理的比例。这可能因为诸多原因出现失败,出现失败后流送器退步运行,假定纹理使用纹理坐标 0 和比例 1 进行采样。

MaterialTexture.png

除标准图例外,黑白棋盘格图例则说明编译因某些原因无法生成所需的着色器。此外,因为材质对诸多纹理进行采样,此显示模式将显示所有采样纹理中最严重的错误(流送不足和过度流送)。这两个极值数值通过棋盘格显示:一个显示最严重的过度采样,而另一个显示最严重的采样不足。

使用控制台命令 r.Streaming.AnalysisIndex X(X 为 0 到 31 之间的值)可对纹理上的单个错误进行调查。

相关页面