NoiseTexture2D

继承: Texture2D < Texture < Resource < RefCounted < Object

Noise 对象生成的噪声所填充的 2D 纹理。

描述

使用 FastNoiseLite 库或其他噪声生成器来填充指定尺寸的纹理数据。 NoiseTexture2D 还可生成法线贴图纹理。

本类通过内部 Thread 线程生成纹理数据,因此若生成过程尚未完成,调用 Texture2D.get_image() 可能返回 null 。此时需要等待纹理生成完成后才能访问图像及其生成的字节数据:

var texture = NoiseTexture2D.new()
texture.noise = FastNoiseLite.new()
await texture.changed
var image = texture.get_image()
var data = image.get_data()

属性


属性说明

bool as_normal_map = false 🔗

  • void set_as_normal_map(value: bool)

  • bool is_normal_map()

如果为 true,产生的纹理包含一个由原始噪声创建的法线贴图,解释为凹凸贴图。


float bump_strength = 8.0 🔗

  • void set_bump_strength(value: float)

  • float get_bump_strength()

该纹理中使用的凹凸贴图的强度。更高的值会使凹凸贴图看起来更大,而更低的值会使它们看起来更柔和。


Gradient color_ramp 🔗

Gradient,用于将每个像素的亮度映射到一个颜色值。


bool generate_mipmaps = true 🔗

  • void set_generate_mipmaps(value: bool)

  • bool is_generating_mipmaps()

控制是否为此纹理生成mipmap(多级渐远纹理)。启用此功能可减少远距离下的纹理锯齿,但会增加约33%的内存占用,同时延长噪声纹理的生成时间。

注意:要使 generate_mipmaps 属性生效,使用该 NoiseTexture2D 的材质必须启用mipmap过滤功能。


int height = 512 🔗

  • void set_height(value: int)

  • int get_height()

生成的纹理的高度(单位为像素)。


bool in_3d_space = false 🔗

  • void set_in_3d_space(value: bool)

  • bool is_in_3d_space()

决定是否在 3D 空间中计算噪声图像。可能会导致对比度降低。


bool invert = false 🔗

  • void set_invert(value: bool)

  • bool get_invert()

如果为 true,则反转该噪声纹理。白变黑,黑变白。


Noise noise 🔗

Noise 对象的实例。


bool normalize = true 🔗

  • void set_normalize(value: bool)

  • bool is_normalized()

当设为 true 时,来自噪声生成器的噪声图像会被归一化到 0.01.0 的范围。

禁用归一化会影响图像对比度,但同时允许生成非重复的可平铺噪声纹理。


bool seamless = false 🔗

  • void set_seamless(value: bool)

  • bool get_seamless()

当设为 true 时,将从 Noise 资源请求生成无缝纹理。

注意:根据所使用的 Noise 资源不同,无缝噪声纹理的生成时间可能更长,且对比度可能低于非无缝噪声。这是因为部分实现会使用更高维度来生成无缝噪声。

注意:默认的 FastNoiseLite 实现使用备用路径生成无缝纹理。若使用的 width (宽度)或 height (高度)小于默认值,可能需要增大 seamless_blend_skirt (无缝混合边距)来提升无缝混合效果。


float seamless_blend_skirt = 0.1 🔗

  • void set_seamless_blend_skirt(value: float)

  • float get_seamless_blend_skirt()

该参数用于无缝纹理生成的默认/后备实现,决定接缝区域的混合过渡距离。数值过大会导致细节和对比度降低。详见 Noise 的进一步说明。

注意:若使用的 width (宽度)或 height (高度)小于默认值,可能需要增大 seamless_blend_skirt (无缝混合边距)来优化无缝混合效果。


int width = 512 🔗

  • void set_width(value: int)

  • int get_width()

生成的纹理的宽度(单位为像素)。