自定义着色器

您可以使用在 > 组件 > Qt Quick 3D > Qt Quick 3D 自定义着色器实用工具 中可用的 3D 着色器实用工具和命令来创建自己的效果和材质。

如果自定义着色器实用工具在 组件 中没有显示,请按照 添加和删除模块 中的说明将 QtQuick3D 模块添加到项目中。

注意:如果您在创建项目时将 目标 Qt 版本 选为 Qt 5,则可用的自定义着色器实用工具及其属性将略有不同,并且某些组件可以在 组件 中的不同位置找到。

"Custom shader utilities in Components"

您可以在 组件 > Qt Quick3D > Qt Quick3D 中找到额外的着色器实用工具、效果自定义材质 组件。

"Effect and Custom Material Components in Components"

注意:在 Qt 5 中,效果 组件位于 Qt Quick 3D Effects > Qt Quick 3D 自定义着色器实用工具。要使用 效果 组件,请将 QtQuick3D.Effects 模块添加到您的项目中。

注意:在 Qt 5 中,自定义材质 组件可以找到在 Qt Quick 3D Materials > Qt Quick 3D 自定义着色器实用工具。要使用 自定义材质 组件,请将 QtQuick3D.Materials 模块添加到您的项目中。

有关使用着色器的更多信息,请参见 自定义效果和材质

请参阅以下表格以了解可用的着色器实用工具和命令。

可用的自定义着色器实用工具

自定义着色器仅适用于 Qt 5描述
缓冲区用于 自定义材质效果 实例的一次通过的一个缓冲区。

属性Name用于标识Buffer实例。当此属性的值为空时,缓冲区将引用渲染流的默认输出纹理,而不是分配缓冲区。这可以用来覆盖输出的一些设置,例如纹理格式,而不需要引入一个新的独立的中继纹理。

Format属性指定缓冲区的格式。

Filter属性指定当渲染流读取与当前输出缓冲区大小不同的缓冲区时的过滤操作。

坐标操作属性指定[0, 1]范围之外的纹理坐标操作。选择ClampToEdge操作将坐标夹在边缘。:Repeat操作在边缘将坐标押平以平铺纹理,而MirroredRepeat则在平铺纹理的同时也镜像每其他的重复模式。

Allocation flags属性定义了Buffer实例的分配标志。选择SceneLifeTime将为整个场景生命周期分配缓冲区。

Size multiplier指定Buffer实例的大小。值为1.0时创建一个与原大小相同的缓冲区,而值为0.5时创建一个宽度和高度减半的缓冲区。

自定义材料创建用于为模型实例着色的自定义材料的基础组件。

Shading mode属性指定材料是Shaded还是Unshaded

Vertex shaderFragment shader属性定义了材料的顶点和片段着色器文件。从下拉菜单中选择着色器文件。您可以点击将新的着色器文件添加到下拉菜单中。

Source blendDestination blend属性指定源和目标混合因子。

Always dirty属性确定材料是否在每次使用时都刷新。

Line Width属性定义在几何体使用线条或线条带时的线宽。

通过定义TransparencyRefractionAlways dirty属性来指定Custom Material的特性。

Shader Info指定材料的着色器信息。更多信息,请参阅自定义效果和材料

在Qt 5中,您也可以使用Passes属性定义Custom Material实例的渲染流,该属性列出了材料实现的渲染流。

效果创建后处理效果的基础组件。

Passes属性包含由效果实现的渲染流的列表。您可以通过点击往列表中添加更多的条目。更多信息,请参阅自定义效果和材料

PassEffect实例的渲染流。在Qt 5中,您也可以为Custom Materials使用渲染流。

Commands属性指定了Pass实例的渲染命令列表,而Shaders属性则列出了为它准备的着色器。使用下拉菜单选择所需的渲染命令和着色器文件。

Buffer属性指定了Pass实例的输出缓冲区。

Shader用于定义Effect实例使用的着色器代码的容器组件。

Source属性指定了Shader实例所使用的着色器文件,而Stage属性定义了它的VertexFragment阶段。

注意:在 Qt 5 中,您还可以将 Stage 属性设置为 SharedGeometryCompute

着色器信息关于自定义材质的自定义着色器代码的基本信息。

版本 属性指定着色器代码的版本,而 类型 属性定义着色器代码的类型。

属性指定着色器使用的选项,这些选项是通过着色器键值的组合来实现的,如漫反射或镜面照明、折射、透明度、位移、透射率、光泽度和 Alpha 切割。

属性指定着色器使用的选项,这些选项是通过着色器键值的组合来实现的。使用下拉列表选择可用的着色器键之一。

  • 漫反射 着色器键应用漫反射照明,而 镜面 着色器键将镜面照明应用于着色器实例。
  • 切割 着色器键将 Alpha 切割应用于着色器实例。
  • 折射 着色器键将折射应用于着色器实例,而使用 透明 键将透明度应用于着色器实例。
  • 位移 着色器键将位移贴图应用于着色器实例。
  • 透射 着色器键将透射率应用于着色器实例。
  • 光泽 着色器键默认将光泽度应用于着色器实例。此着色器键是 漫反射镜面 键的组合。
纹理输入自定义材质 和效果实例的纹理通道。

纹理 属性指定要输入的纹理,而 启用 确定纹理是否启用。在 效果 实例中,将 启用 设置为 false 将导致着色器采样一个模拟的、不透明的黑色纹理,而不是由纹理指定的纹理。

可用的自定义着色器命令

命令仅适用于 Qt 5描述
混合一个通行命令,它指定了源混合函数。

属性指定源混合函数,而 目标 属性指定其目标。

缓冲区复制在自定义材质或效果的一个通行中,在两个缓冲区之间进行复制操作。

目标 指定复制操作的源和目标缓冲区。

缓冲区输入用于自定义材质或效果的通行的一个输入缓冲区。

缓冲区 属性指定 通行 实例的输入缓冲区。 参数 指定着色器中输入参数的名称。

裁剪模式一个通行裁剪模式。

模式 属性指定通行中裁剪模式,当设置 渲染状态状态 属性为 CullFace 时。使用下拉菜单将裁剪模式设置为 BackFaceCullingFrontFaceCullingNoCulling

深度输入深度缓冲区的输出纹理。

参数 属性指定深度缓冲区绑定的纹理的名称。

渲染状态自定义材质效果 实例的通行中要启用或禁用的渲染状态。

状态 属性指定通行中要启用或禁用的渲染状态。使用下拉菜单将 状态 设置为 BlendCullFaceDepthTestStencilTestScissorTestDepthWriteMultisample

启用”属性定义了渲染状态启用状态。

设置均匀值在单次传递过程中设置的值。

目标属性指定在传递过程中其值将改变的统一变量的名称,而指定将要设置到目标统一变量的值。

在特定Qt许可下可用。
了解更多。