Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

ResourceImporterLayeredTexture

继承: ResourceImporter < RefCounted < Object

导入 3 维纹理(Texture3D)、Texture2DArrayCubemapCubemapArray

描述

这会导入一个三维纹理,然后可以在自定义着色器中将其用作 FogMaterial 密度图或 GPUParticlesAttractorVectorField3D。另请参见 ResourceImporterTextureResourceImporterTextureAtlas

教程

属性

int

compress/channel_pack

0

int

compress/hdr_compression

1

bool

compress/high_quality

false

float

compress/lossy_quality

0.7

int

compress/mode

1

bool

mipmaps/generate

true

int

mipmaps/limit

-1

int

slices/arrangement

1


属性说明

int compress/channel_pack = 0

控制在导入的纹理中应如何使用颜色通道。

sRGB 友好:阻止使用 RG 颜色格式,因为它不支持 sRGB 颜色。

优化:如果纹理不使用蓝色通道,则允许使用 RG 颜色格式。如果可以丢弃纹理的蓝色通道(所有像素的蓝色值必须为 0),则可以减少内存使用量。

法线贴图(RG 通道):这会强制使用 RG 颜色格式导入纹理中的所有图层,以减少内存使用量,仅保留红色和绿色通道。这仅对具有 VRAM 压缩或 Basis Universal 压缩模式的纹理有影响。该模式仅适用于分层纹理(CubemapCubemapArrayTexture2DArrayTexture3D)。


int compress/hdr_compression = 1

控制如何对 HDR 图像执行 VRAM 压缩。

禁用:永远不要对 HDR 纹理使用 VRAM 压缩,无论它们是否透明。相反,该纹理会被转换为 RGBE9995(每通道 9 位 + 5 位指数 = 每像素 32 位),与半浮点或单精度浮点图像格式相比,会减少内存使用量。

仅不透明:仅对不透明 HDR 纹理使用 VRAM 压缩。这是由于 HDR 格式的限制,因为没有支持 VRAM 压缩且同时支持透明度的 HDR 格式。

始终:强制 VRAM 压缩,即使对于具有 Alpha 通道的 HDR 纹理也是如此。为此,在导入时将丢弃 Alpha 通道。

注意:仅对 Radiance HDR(.hdr)和 OpenEXR(.exr)图像有效。


bool compress/high_quality = false

如果为 true,则在桌面平台上使用 BPTC 压缩,在移动平台上使用 ASTC 压缩。使用 BPTC 时,BC7 被用于 SDR 纹理,BC6H 被用于 HDR 纹理。

如果为 false,则在桌面平台上使用速度更快但质量较低的 S3TC 压缩,在移动/Web 平台上使用 ETC2。使用 S3TC 时,DXT1 (BC1) 被用于不透明纹理,DXT5 (BC3) 被用于透明或法线贴图(RGTC)纹理。

BPTC 和 ASTC 支持 HDR 纹理的 VRAM 压缩,但 S3TC 和 ETC2 不支持(请参阅 compress/hdr_compression)。


float compress/lossy_quality = 0.7

使用有损压缩模式时使用的质量。值越高,质量越好,但文件大小越大。有损质量不会影响导入纹理的内存使用情况,只会影响它在磁盘上的文件大小。


int compress/mode = 1

要使用的压缩模式。每种压缩模式都提供不同的权衡:

无损:原始质量、高内存占用、高磁盘占用、导入速度快。

有损:质量降低、高内存占用、低磁盘占用、导入速度快。

VRAM 压缩:质量降低、低内存占用、低磁盘占用、导入速度最慢。仅适用于 3D 场景中的纹理,不适用于 2D 元素。

VRAM 未压缩:原始质量、高内存占用、最高磁盘占用、导入速度最快。

Basis Universal:质量降低、低内存占用、最低磁盘占用、导入速度慢。仅适用于 3D 场景中的纹理,不适用于 2D 元素。

有关更多详细信息,请参阅手册中的 压缩模式


bool mipmaps/generate = true

如果为 true,则在导入时生成较小版本的纹理。例如,64×64 纹理将生成 6 个多级渐远纹理(32×32、16×16、8×8、4×4、2×2、1×1)。这样做有几个好处:

  • 纹理在远处(3D 中)或由于 Camera2D 缩放或 CanvasItem 缩放(2D 中)而缩小时不会变得具有颗粒感。

  • 如果纹理显示在远处,性能将会提高,因为对原始纹理的较小版本进行采样速度更快并且需要更少的内存带宽。

多级渐远纹理的缺点是它们使内存占用增加大约 33%(对于 Texture2DArrayCubemapCubemapArray)或 14%(对于 Texture3D)。

建议在 3D 中启用多级渐远纹理。但是,在 2D 中,仅当你的项目明显受益于启用多级渐远纹理 时才应启用该功能。如果相机从不大幅缩小,启用多级渐远纹理不会有任何好处,但内存占用会增加。


int mipmaps/limit = -1

未实现。目前,更改后没有效果。


int slices/arrangement = 1

控制立方体贴图纹理的内部布局方式。使用高分辨率立方体贴图时,与 1×66×1 相比,2×3 and 3×2 不太容易超出硬件纹理大小限制。