Cubemap

继承: ImageTextureLayered < TextureLayered < Texture < Resource < RefCounted < Object

代表立方体表面的六个正方形纹理。通常用作天空盒子。

描述

立方体贴图由6个按层组织的纹理组成。它们通常用于在3D渲染中伪造反射(参见ReflectionProbe)。它可用于使对象看起来像是在反射周围环境。这通常比其他反射方法提供更好的性能。

此资源通常用作自定义着色器中的统一。很少有核心i3D方法使用Cubemap资源。

要自己创建这样的纹理文件,请使用i3D编辑器导入预设重新导入图像文件。要从代码创建立方体贴图,请在立方体贴图类的实例上使用ImageTextureLayered.create_from_images()

预期的图像顺序是X+、X-、Y+、Y-、Z+、Z-(在i3D的坐标系中,所以Y+是“向上”,Z-是“向前”)。您可以使用以下模板之一作为基础:

  • 2×3立方体贴图模板(默认布局选项)

-3×2立方体贴图模板

-1×6立方体贴图模板

-6×1立方体贴图模板

注意:i3D不支持在PanoramaSkyMaterial中使用立方体贴图。要将立方体贴图用作天空盒,请使用 转换为着色器材质 资源下拉选项将默认的 PanoramaSkyMaterial 转换为 ShaderMaterial,然后用以下代码替换其内容:

shader_type sky;

uniform samplerCube source_panorama : filter_linear, source_color, hint_default_black;
uniform float exposure : hint_range(0, 128) = 1.0;

void sky() {
    // If importing a cubemap from another engine, you may need to flip one of the `EYEDIR` components below
    // by replacing it with `-EYEDIR`.
    vec3 eyedir = vec3(EYEDIR.x, EYEDIR.y, EYEDIR.z);
    COLOR = texture(source_panorama, eyedir).rgb * exposure;
}

替换着色器代码并保存后,在检查器中着色材质的着色器参数部分指定导入的立方体贴图资源。

或者,您可以使用工具将立方体贴图转换为等矩形天空贴图并像往常一样使用PanoramaSkyMaterial

方法


方法说明

Resource create_placeholder() const 🔗

创建此资源的占位符版本(PlaceholderCubemap)。