CubeMapTexture QML 类型
用于 3D 场景的立方体贴图纹理的定义。 更多信息...
导入声明 | import QtQuick3D |
继承 |
详细描述
CubeMapTexture 是一个代表立方体贴图的 Texture。立方体贴图有 6 个面(X+、X-、Y+、Y-、Z+、Z-),每个面都是一个独立的 2D 图像。CubeMapTexture 允许 自定义材质 和 后处理效果 在它们的着色器中与立方体贴图纹理一起工作。立方体贴图还可以用作用定义场景环境的 天空盒。
CustomMaterial { property TextureInput customTexture: TextureInput { texture: CubeMapTexture { source: "cubemap.ktx" } } fragmentShader: "shader.frag" }
在此可以实现 shader.frag,假设 customTexture
是具有 GLSL 类型 a samplerCube
的采样均匀量。这意味着 texture()
GLSL 函数使用一个 vec3
作为采样器的纹理坐标。如果我们使用 Texture,该类型将是 sampler2D
。
void MAIN() { vec4 c = texture(customTexture, NORMAL); BASE_COLOR = vec4(c.rgb, 1.0); }
从只包含立方体贴图的容器中获取纹理只会加载面 0(X+)并导致 2D 纹理。而从这个相同的资产加载 CubeMapTexture 会加载所有 6 个面并导致结果为立方体贴图纹理。
CubeMapTexture 继承了 Texture 的所有属性。重要的区别在于 source 必须引用包含立方体贴图的图像文件,或者引用图像文件列表。在实际应用中,单个文件意味着包含 6 个面图像的 KTX 容器。
可以从 6 个单独的图像中获取 CubeMapTexture 有两种不同的方式。要么作为一个分号分隔的文件名列表,按 X+、X-、Y+、Y-、Z+、Z- 的顺序排列
CubeMapTexture { source: "maps/right.jpg;maps/left.jpg;maps/top.jpg;maps/bottom.jpg;maps/front.jpg;maps/back.jpg" }
或者作为一个包含 "%p" 占位符的字符串,其中 "%p" 将被替换为字符串 "posx"、"negx"、"posy"、"negy"、"posz" 和 "negz",以生成六个文件名
CubeMapTexture { source: "maps/sky_%p.png" // equivalent to: // source: "maps/sky_posx.png;maps/sky_negx.png;maps/sky_posy.png;maps/sky_negy.png;maps/sky_posz.png;maps/sky_negz.png" }
注意:目前不支持通过其他方式获取图像数据,例如 sourceItem 或 textureData。
另请参阅:Texture、CustomMaterial 和 Effect。
© 2024 Qt 公司。此处包含的文档贡献的版权归各自所有者。所提供的文档是根据由自由软件基金会发布的 GNU 自由文档许可证版本 1.3 的条款许可的。Qt 及其标志是芬兰 Qt 公司和/或世界其他国家的商标。所有其他商标归其各自所有者所有。