绑定 Render Pass 节点属性¶
以下步骤介绍如何在渲染通道节点上绑定属性,使一个属性的值驱动另一个属性。
有关 Prism 图的介绍,请参阅 Prism 图。
资源属性绑定¶
资源属性绑定是在两个相同类型的资源属性之间直接绘制的一条线。要创建该绑定,请从一个节点上的源属性拖动到另一个节点上的目标属性。
示例:将 Build Acceleration Structure 连接到 Draw Objects 以实现光线追踪阴影¶
此示例将现有的光线追踪阴影场景重建为 Prism 图。原始场景使用手动设置的渲染通道来生成顶层加速结构,并将其传递给使用该结构的绘制通道。Prism 图则以两个资源属性之间的绑定连线来表达相同的依赖关系。
要将 Build Acceleration Structure 连接到 Draw Objects 以实现光线追踪阴影:
在 Kanzi Studio 的 Quick Start 窗口中,点击 Projects 并选择 Examples 选项卡。如果尚未下载 Raytracing 示例,请点击其旁边的
。
Kanzi Studio 会将该示例下载到
<KanziWorkspace>/Examples/Raytracing目录。将
<KanziWorkspace>/Examples/Raytracing文件夹复制到新位置,以保持原始工程不变。从工程副本中打开
Raytracing.proj.kzm,并确认 Preview 中可以看到光线追踪阴影。
在 Library 中,转到 Rendering > Prism Graphs。右键点击 Prism Graphs 并选择 Create > Empty Prism Graph。将其命名为
Raytracing Prism Graph。
选择渲染该场景的 Viewport 2D。在 Properties 面板中,将 Render Pass Prefab 设置为新的 Prism 图。在图完成之前,该视口将停止渲染。
在 Library 中双击 Prism 图将其打开。Prism 编辑器会打开该图,显示仅包含 Output 节点的初始空状态。
添加主要渲染节点。在图中右键点击并添加:
Gather Lights 渲染通道节点。
Draw Objects 渲染通道节点。
将 Gather Lights 连接到 Draw Objects,并将 Draw Objects 连接到 Output 节点。
Preview 现在会在场景光照下渲染场景对象,但光线追踪阴影尚不可见。接下来的步骤将添加并绑定 Draw Objects 渲染这些阴影所需的加速结构。
在 绘图对象 (Draw Objects) 节点上,点击
打开 Add Properties 窗口。在搜索框中输入 topLevelAS,在 Material Properties 下找到该属性。
双击 topLevelAS 添加该属性。该属性从 Available Properties 移至 Existing Properties。
关闭 Add Properties 窗口。
在图中右键点击,添加一个 Build Acceleration Structure 渲染通道节点。该节点没有帧缓冲区插槽,因为它生成的是加速结构而不是渲染图像。不要将它连接到其他节点。它通过下一步中添加的绑定线连接到其使用者。
从 Build Acceleration Structure 节点上的 OutputAccelerationStructure 属性拖出一条绑定线,放到 绘图对象 (Draw Objects) 节点上的 topLevelAS 属性上。
这样会在这两个属性之间创建资源属性绑定。该绑定将 OutputAccelerationStructure 的值复制到 topLevelAS 中,使绘制通道使用构建通道生成的加速结构。
确认 Preview 再次渲染出光线追踪阴影。该绑定将 Build Acceleration Structure 生成的加速结构提供给 绘图对象 (Draw Objects)。
示例:使用 Decode 将离屏帧缓冲区绑定到位块传送渲染通道 (Blit Render Pass)¶
此示例使用 Decode 适配器节点创建资源属性绑定。
某些 Prism 节点通过 Decode 适配器节点公开可绑定的资源属性。要将非 Render Pass 节点的离屏帧缓冲区输出绑定到另一个资源属性,需要使用 Decode。Decode 将帧缓冲区的附件呈现为命名的纹理属性(ResultTexture0、ResultDepthTexture),Render Pass 节点的属性可以绑定到这些属性。
使用 Decode 将离屏帧缓冲区绑定到位块传送渲染通道 (Blit Render Pass):
在工程中,右键点击 Scene 并选择 Create > Box,向场景添加一个 Box,使图中有可渲染的内容。
在 Library 中,转到 Rendering > Prism Graphs。右键点击 Prism Graphs 并选择 Create > Empty Prism Graph。将其命名为
Decode Bridge Prism Graph。选择渲染该场景的 Viewport 2D。在 Properties 面板中,将 Render Pass Prefab 设置为新建的 Prism 图。
在 Library 中双击该 Prism 图将其打开。
添加用于渲染帧缓冲区的节点。在图中右键点击并添加:
Offscreen Framebuffer 节点。
Clear 节点。
Draw 节点。
将 Offscreen Framebuffer 连接到 Clear,将 Clear 连接到 Draw。
继续添加 Render Pass 节点。添加:
Decode 适配器节点,它将上游帧缓冲区的内容公开为命名的纹理属性。
Blit Render Pass 节点。
将 Draw 连接到 Decode。然后将 Blit 连接到 Output 节点。Decode 没有输出插槽,因此无法通过节点插槽连接到 Blit。从 Decode 到 Blit 的连接将在下一步中通过绑定线建立。
在 Blit 节点上,点击
打开 Add Properties 窗口。在搜索框中输入 Texture 0,然后双击该属性将其添加。关闭 Add Properties 窗口。从 Decode 节点上的 ResultTexture0 属性拖出一条绑定线,放到 Blit 节点上的 Texture 0 属性上。
这样会创建资源属性绑定:ResultTexture0 的值被复制到 Texture 0 中,使 Blit Render Pass 使用上游节点渲染到离屏帧缓冲区中的纹理。
确认 Preview 渲染出经由 Blit 渲染通道合成的方框。上游节点将方框渲染到离屏帧缓冲区中;Decode 将该帧缓冲区公开为 ResultTexture0;绑定将该纹理 (Texture) 传递给 Blit,后者将其合成到 Output。
小技巧
在此示例中,直接从 Draw 节点的输出连接器拖动到 Blit 上的 Texture 0 属性,即可一步插入 Decode 节点并创建绑定。
文本属性绑定¶
文本属性绑定通过绑定表达式驱动非资源属性。非资源属性是数字、布尔值、颜色或向量等值。如果您希望属性值来自 Kanzi 绑定表达式,而不是在编辑器中直接设置的值,请使用文本绑定。与直接设置的值不同,绑定表达式可以包含算术运算、函数调用以及对其他属性的引用。有关表达式语法,请参阅 Bindings expressions 参考。
示例:通过绑定表达式设置 Prism 图形的背景颜色¶
本示例沿用前面示例中的 Raytracing 示例工程。它构建一个小型 Prism 图形,先将屏幕清除为由绑定表达式计算出的颜色,然后在其上绘制场景。您可以使用相同的方式,通过绑定表达式驱动 Render Pass 节点上的任何非资源属性。
通过绑定表达式设置 Prism 图形的背景颜色:
如果尚未打开,请从您的 Raytracing 示例副本中打开
Raytracing.proj.kzm。请参阅 示例:将 Build Acceleration Structure 连接到 Draw Objects 以实现光线追踪阴影 中的步骤 1 至 3。在 Library 中,转到 Rendering > Prism Graphs。右键点击 Prism Graphs,然后选择 Create > Empty Prism Graph。将其命名为
Background Color Prism Graph。选择渲染场景的 Viewport 2D。在 Properties 面板中,将 Render Pass Prefab 设置为新图形。在图形完成之前,视口会停止渲染。
在 Library 中双击该 Prism 图将其打开。
在图形中右键点击,添加一个 Clear 基础节点和一个 Draw Objects Render Pass 节点。将 Clear 连接到 Draw Objects,并将 Draw Objects 连接到 Output 节点。
在 Clear 节点上,点击
打开 Add Properties 窗口。在搜索框中输入 Clear Color 0。在 Available Properties 下,双击 Clear Color 0 将其添加。关闭 Add Properties 窗口。Preview 现在以默认的黑色清除颜色渲染场景。
在 Clear 节点的 Prism 属性窗格中,右键点击 Clear Color 0 行,然后选择 Edit binding…。
Kanzi Studio 会在浮动窗口中打开绑定编辑器,并以 Clear Color 0 作为绑定目标。
在绑定编辑器的表达式字段中输入:
Color4(0.1, 0.1, 0.3, 1.0)
点击 Save。编辑器随即关闭。Preview 显示深蓝色背景下的场景。Clear Color 0 行在标签上显示绑定指示符,并以表达式的只读预览取代值编辑器。
再次打开绑定编辑器,并将表达式替换为对当前表达式进行缩放的表达式:
Color4(0.1, 0.1, 0.3, 1.0) * 2
保存。背景变得更亮。该行的预览更新为显示新表达式。
要移除绑定并恢复可直接编辑的值,请右键点击该行并选择 Clear binding。
如果无法解析表达式,内联预览会变为红色。重新打开 Edit binding… 以更正表达式。
小技巧
您还可以从一个 Prism 属性行的显示名称拖动到另一个非资源属性行上来创建文本绑定。绑定编辑器打开时会预先填入引用源行属性的表达式。