blob: 7c99677fd29772b495f285dcfaae7434ae8ef7fb [file] [log] [blame] [view]
<link rel="stylesheet" href="../style.css" />
[TOC]
# fuchsia.ui.gfx
<div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 7</span></div>
## **PROTOCOLS**
## PoseBufferProvider {#PoseBufferProvider}
*Defined in [fuchsia.ui.gfx/pose_buffer_provider.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/pose_buffer_provider.fidl;l=10)*
<p>A minimal fidl interface to allow sourcing the contents of a PoseBuffer from another service.</p>
### SetPoseBuffer {#PoseBufferProvider.SetPoseBuffer}
<p>Sets the PoseBuffer and the parameters PoseBufferProvider will use to fill that PoseBuffer.
Setting this when it is already set will replace the previously set parameters with the new
parameters, which will release the provider's reference to the buffer.</p>
#### Request {#PoseBufferProvider.SetPoseBuffer_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>buffer</code></td>
<td>
<code>handle&lt;vmo&gt;</code>
</td>
</tr>
<tr>
<td><code>num_entries</code></td>
<td>
<code>uint32</code>
</td>
</tr>
<tr>
<td><code>base_time</code></td>
<td>
<code>int64</code>
</td>
</tr>
<tr>
<td><code>time_interval</code></td>
<td>
<code>uint64</code>
</td>
</tr>
</table>
## SnapshotCallbackDEPRECATED {#SnapshotCallbackDEPRECATED}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=407)*
### OnData {#SnapshotCallbackDEPRECATED.OnData}
#### Request {#SnapshotCallbackDEPRECATED.OnData_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>data</code></td>
<td>
<code><a class='link' href='../fuchsia.mem/'>fuchsia.mem</a>/<a class='link' href='../fuchsia.mem/#Buffer'>Buffer</a></code>
</td>
</tr>
</table>
## **STRUCTS**
### AddChildCmd {#AddChildCmd data-text="AddChildCmd"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=283)*
<p>Add a node as a child to another node.</p>
<p>Constraints:</p>
<ul>
<li><code>id</code> refs a Node with the has_children characteristic.</li>
<li><code>child_id</code> refs any Node.</li>
</ul>
<p>Discussion:
The child node is first removed from its existing parent, as if DetachCmd
was applied first.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="AddChildCmd.node_id">
<td><code>node_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="AddChildCmd.child_id">
<td><code>child_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### AddLayerCmd {#AddLayerCmd data-text="AddLayerCmd"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=678)*
<p>Add a layer to a layer stack.
Constraints:</p>
<ul>
<li><code>layer_stack_id</code> refs a <code>LayerStack</code>.</li>
<li><code>layer_id</code> refs a <code>Layer</code>.</li>
<li>The layer must not already belong to a different stack; it must first be
detached.</li>
</ul>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="AddLayerCmd.layer_stack_id">
<td><code>layer_stack_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="AddLayerCmd.layer_id">
<td><code>layer_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### AddLightCmd {#AddLightCmd data-text="AddLightCmd"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=581)*
<p>DEPRECATED
Adds the light specified by <code>light_id</code> specified by <code>light_id</code> to the scene
identified by <code>scene_id</code>.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="AddLightCmd.scene_id">
<td><code>scene_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="AddLightCmd.light_id">
<td><code>light_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### AddPartCmd {#AddPartCmd data-text="AddPartCmd"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=303)*
<p>Add a node as a part of another node. The implications of being a part
rather than a child differ based on the type of the part. However, one
implication is constant: removing all of a node's children (e.g. via
DetachChildrenCmd) does not affect its parts. This is similar to the
&quot;shadow DOM&quot; in a web browser: the controls of a <video> element are
implemented as using the shadow DOM, and do no show up amongst the children
of that element.</p>
<p>Constraints:</p>
<ul>
<li><code>id</code> refs a Node with the has_parts characteristic.</li>
<li><code>part_id</code> refs any Node.</li>
</ul>
<p>Discussion:
The part node is first removed from its existing parent, as if DetachCmd
was applied first.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="AddPartCmd.node_id">
<td><code>node_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="AddPartCmd.part_id">
<td><code>part_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### AmbientLightArgs {#AmbientLightArgs data-text="AmbientLightArgs"}
*Defined in [fuchsia.ui.gfx/resources.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/resources.fidl;l=297)*
<p>An AmbientLight is a Light that is is assumed to be everywhere in the scene,
in all directions.</p>
<p>Supported commands:</p>
<ul>
<li>SetLightColor</li>
</ul>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="AmbientLightArgs.dummy">
<td><code>dummy</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>0</td>
</tr>
</table>
### BindMeshBuffersCmd {#BindMeshBuffersCmd data-text="BindMeshBuffersCmd"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=659)*
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="BindMeshBuffersCmd.mesh_id">
<td><code>mesh_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="BindMeshBuffersCmd.index_buffer_id">
<td><code>index_buffer_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="BindMeshBuffersCmd.index_format">
<td><code>index_format</code></td>
<td>
<code><a class='link' href='#MeshIndexFormat'>MeshIndexFormat</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="BindMeshBuffersCmd.index_offset">
<td><code>index_offset</code></td>
<td>
<code>uint64</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="BindMeshBuffersCmd.index_count">
<td><code>index_count</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="BindMeshBuffersCmd.vertex_buffer_id">
<td><code>vertex_buffer_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="BindMeshBuffersCmd.vertex_format">
<td><code>vertex_format</code></td>
<td>
<code><a class='link' href='#MeshVertexFormat'>MeshVertexFormat</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="BindMeshBuffersCmd.vertex_offset">
<td><code>vertex_offset</code></td>
<td>
<code>uint64</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="BindMeshBuffersCmd.vertex_count">
<td><code>vertex_count</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="BindMeshBuffersCmd.bounding_box">
<td><code>bounding_box</code></td>
<td>
<code><a class='link' href='#BoundingBox'>BoundingBox</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### BoundingBox {#BoundingBox data-text="BoundingBox"}
*Defined in [fuchsia.ui.gfx/types.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/types.fidl;l=213)*
<p>Represents an axis-aligned bounding box.</p>
<p>If any of the dimensions has a negative extent (e.g. max.x &lt; min.x) then the
bounding box is treated as empty. It is valid for a client to define an
empty bounding box.</p>
<p>An &quot;empty bounding box&quot; is one that does not admit a point inhabitant.
Note that a zero-volume, zero-area bounding box (e.g., a point like
(0,0,0)-(0,0,0), or a line like (0,0,0)-(1,0,0)) is thus not empty.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="BoundingBox.min">
<td><code>min</code></td>
<td>
<code><a class='link' href='#vec3'>vec3</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="BoundingBox.max">
<td><code>max</code></td>
<td>
<code><a class='link' href='#vec3'>vec3</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### BufferArgs {#BufferArgs data-text="BufferArgs"}
*Defined in [fuchsia.ui.gfx/resources.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/resources.fidl;l=133)*
<p>A buffer mapped to a range of <code>Memory</code>.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="BufferArgs.memory_id">
<td><code>memory_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="BufferArgs.memory_offset">
<td><code>memory_offset</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="BufferArgs.num_bytes">
<td><code>num_bytes</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### CameraArgs {#CameraArgs data-text="CameraArgs"}
*Defined in [fuchsia.ui.gfx/resources.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/resources.fidl;l=265)*
<p>A Camera is used to render a Scene from a particular viewpoint. This is
achieved by setting a Renderer to use the camera.</p>
<p>The following commands may be applied to a Camera:</p>
<ul>
<li>SetCameraTransform</li>
<li>SetCameraProjection</li>
<li>SetCameraPoseBuffer</li>
</ul>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="CameraArgs.scene_id">
<td><code>scene_id</code></td>
<td>
<code>uint32</code>
</td>
<td><p>The scene that the camera is viewing.</p>
</td>
<td>No default</td>
</tr>
</table>
### CircleArgs {#CircleArgs data-text="CircleArgs"}
*Defined in [fuchsia.ui.gfx/shapes.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/shapes.fidl;l=31)*
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="CircleArgs.radius">
<td><code>radius</code></td>
<td>
<code><a class='link' href='#Value'>Value</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### ClipNodeArgs {#ClipNodeArgs data-text="ClipNodeArgs"}
*Defined in [fuchsia.ui.gfx/nodes.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/nodes.fidl;l=41)*
<p>Characteristics:</p>
<ul>
<li>has_parent</li>
<li>is_clip</li>
<li>has_parts</li>
</ul>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="ClipNodeArgs.unused">
<td><code>unused</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>0</td>
</tr>
</table>
### ColorRgb {#ColorRgb data-text="ColorRgb"}
*Defined in [fuchsia.ui.gfx/types.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/types.fidl;l=38)*
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="ColorRgb.red">
<td><code>red</code></td>
<td>
<code>float32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="ColorRgb.green">
<td><code>green</code></td>
<td>
<code>float32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="ColorRgb.blue">
<td><code>blue</code></td>
<td>
<code>float32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### ColorRgbValue {#ColorRgbValue data-text="ColorRgbValue"}
*Defined in [fuchsia.ui.gfx/types.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/types.fidl;l=132)*
<p>A value that is specified explicitly by <code>value</code> if <code>variable_id</code> is zero,
or is the value produced by the resource identified by <code>variable_id</code>, e.g.
an animation or expression. In the latter case, the value produced by the
resource must be a ColorRgb, and <code>value</code> is ignored.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="ColorRgbValue.value">
<td><code>value</code></td>
<td>
<code><a class='link' href='#ColorRgb'>ColorRgb</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="ColorRgbValue.variable_id">
<td><code>variable_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### ColorRgba {#ColorRgba data-text="ColorRgba"}
*Defined in [fuchsia.ui.gfx/types.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/types.fidl;l=31)*
<p>sRGB color space and nonlinear transfer function.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="ColorRgba.red">
<td><code>red</code></td>
<td>
<code>uint8</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="ColorRgba.green">
<td><code>green</code></td>
<td>
<code>uint8</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="ColorRgba.blue">
<td><code>blue</code></td>
<td>
<code>uint8</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="ColorRgba.alpha">
<td><code>alpha</code></td>
<td>
<code>uint8</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### ColorRgbaValue {#ColorRgbaValue data-text="ColorRgbaValue"}
*Defined in [fuchsia.ui.gfx/types.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/types.fidl;l=141)*
<p>A value that is specified explicitly by <code>value</code> if <code>variable_id</code> is zero,
or is the value produced by the resource identified by <code>variable_id</code>, e.g.
an animation or expression. In the latter case, the value produced by the
resource must be a ColorRgba, and <code>value</code> is ignored.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="ColorRgbaValue.value">
<td><code>value</code></td>
<td>
<code><a class='link' href='#ColorRgba'>ColorRgba</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="ColorRgbaValue.variable_id">
<td><code>variable_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### CompositorArgs {#CompositorArgs data-text="CompositorArgs"}
*Defined in [fuchsia.ui.gfx/resources.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/resources.fidl;l=199)*
<p>A Compositor draws its <code>LayerStack</code> into a framebuffer provided by its
attached <code>Display</code>, if any. If no display is attached, nothing is rendered.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="CompositorArgs.dummy">
<td><code>dummy</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>0</td>
</tr>
</table>
### CreateResourceCmd [resource](/fuchsia-src/reference/fidl/language/language.md#value-vs-resource){:.fidl-attribute} {#CreateResourceCmd data-text="CreateResourceCmd"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=107)*
<p>Instructs the compositor to create the specified <code>Resource</code>, and to register
it in a table so that it can be referenced by subsequent commands.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="CreateResourceCmd.id">
<td><code>id</code></td>
<td>
<code>uint32</code>
</td>
<td><p>An ID that is currently not used within the session.</p>
</td>
<td>No default</td>
</tr>
<tr id="CreateResourceCmd.resource">
<td><code>resource</code></td>
<td>
<code><a class='link' href='#ResourceArgs'>ResourceArgs</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### DetachChildrenCmd {#DetachChildrenCmd data-text="DetachChildrenCmd"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=309)*
<p>Detaches all of a node's children (but not its parts).</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="DetachChildrenCmd.node_id">
<td><code>node_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### DetachCmd {#DetachCmd data-text="DetachCmd"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=195)*
<p>Detaches a parentable object from its parent (e.g. a node from a parent node,
or a layer from a layer stack). It is illegal to apply this command to a
non-parentable object. No-op if the target object currently has no parent.</p>
<p>Constraints:</p>
<ul>
<li><code>id</code> refs a parentable object</li>
</ul>
<p>Discussion:
For nodes, this command will detach a node from its parent, regardless of
whether it is a part or a child of its parent.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="DetachCmd.id">
<td><code>id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### DetachLightCmd {#DetachLightCmd data-text="DetachLightCmd"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=588)*
<p>Detach the light specified by <code>light_id</code> from the scene that it is attached
to, if any.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="DetachLightCmd.light_id">
<td><code>light_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### DetachLightsCmd {#DetachLightsCmd data-text="DetachLightsCmd"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=593)*
<p>Detach all lights from the scene specified by <code>scene_id</code>.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="DetachLightsCmd.scene_id">
<td><code>scene_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### DirectionalLightArgs {#DirectionalLightArgs data-text="DirectionalLightArgs"}
*Defined in [fuchsia.ui.gfx/resources.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/resources.fidl;l=313)*
<p>A DirectionalLight is a Light that is emitted from a point at infinity.</p>
<p>Although the light is directional, the light has some amount of angular
dispersion (i.e., the light is not fully columnated). For simplicity, we
assume the dispersion of the light source is symmetric about the light's
primary direction.</p>
<p>Supported commands:</p>
<ul>
<li>SetLightColor</li>
<li>SetLightDirection</li>
</ul>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="DirectionalLightArgs.dummy">
<td><code>dummy</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>0</td>
</tr>
</table>
### DisplayCompositorArgs {#DisplayCompositorArgs data-text="DisplayCompositorArgs"}
*Defined in [fuchsia.ui.gfx/resources.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/resources.fidl;l=207)*
<p>A DisplayCompositor draws its attached <code>LayerStack</code> into an image that is
presented on a display.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="DisplayCompositorArgs.dummy">
<td><code>dummy</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>0</td>
</tr>
</table>
### DisplayInfo {#DisplayInfo data-text="DisplayInfo"}
*Defined in [fuchsia.ui.gfx/display_info.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/display_info.fidl;l=7)*
<p>Provides information about a display.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="DisplayInfo.width_in_px">
<td><code>width_in_px</code></td>
<td>
<code>uint32</code>
</td>
<td><p>The size of the display, in physical pixels.</p>
</td>
<td>No default</td>
</tr>
<tr id="DisplayInfo.height_in_px">
<td><code>height_in_px</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### EntityNodeArgs {#EntityNodeArgs data-text="EntityNodeArgs"}
*Defined in [fuchsia.ui.gfx/nodes.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/nodes.fidl;l=64)*
<p>Characteristics:</p>
<ul>
<li>has_transform</li>
<li>has_children</li>
<li>has_parent</li>
<li>has_parts</li>
<li>has_clip</li>
</ul>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="EntityNodeArgs.unused">
<td><code>unused</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>0</td>
</tr>
</table>
### ExportResourceCmdDeprecated [resource](/fuchsia-src/reference/fidl/language/language.md#value-vs-resource){:.fidl-attribute} {#ExportResourceCmdDeprecated data-text="ExportResourceCmdDeprecated"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=133)*
<p>Create an external reference to the specified resource, which can then be
imported into another Session by passing a handle to <code>token</code>'s peer to
ImportResourceCmd; see that comment for more details.</p>
<p>The importing client is typically in a different process than the exporter.
No specific mechanism is provided for transferring a token from an exporter
to an importer; collaborators may choose any out-of-band API they wish to do
so.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="ExportResourceCmdDeprecated.id">
<td><code>id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="ExportResourceCmdDeprecated.token">
<td><code>token</code></td>
<td>
<code>handle&lt;eventpair&gt;</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### ExportToken [resource](/fuchsia-src/reference/fidl/language/language.md#value-vs-resource){:.fidl-attribute} {#ExportToken data-text="ExportToken"}
*Defined in [fuchsia.ui.gfx/tokens.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/tokens.fidl;l=35)*
<p>Token that uniquely identifies a root point for a subgraph in the global
scene graph. Each <code>ExportToken</code> has exactly one corresponding <code>ImportToken</code>.</p>
<p>A Scenic client can have its contents referenced from another client by
creating a typed resource using this token. The other client must also
create a correspondingly typed resource using the corresponding
<code>ImportToken</code>.</p>
<p>The exact nature of the inter-client reference depends on the specific
resources created from the tokens. For example, creating a <code>View</code>
resource from this token allows everything attached to the <code>View</code> to be
embedded in another clients <code>ViewHolder</code>.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="ExportToken.value">
<td><code>value</code></td>
<td>
<code>handle&lt;eventpair&gt;</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### FactoredTransform {#FactoredTransform data-text="FactoredTransform"}
*Defined in [fuchsia.ui.gfx/types.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/types.fidl;l=58)*
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="FactoredTransform.translation">
<td><code>translation</code></td>
<td>
<code><a class='link' href='#vec3'>vec3</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="FactoredTransform.scale">
<td><code>scale</code></td>
<td>
<code><a class='link' href='#vec3'>vec3</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="FactoredTransform.anchor">
<td><code>anchor</code></td>
<td>
<code><a class='link' href='#vec3'>vec3</a></code>
</td>
<td><p>Point around which rotation and scaling occur.</p>
</td>
<td>No default</td>
</tr>
<tr id="FactoredTransform.rotation">
<td><code>rotation</code></td>
<td>
<code><a class='link' href='#Quaternion'>Quaternion</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### FloatValue {#FloatValue data-text="FloatValue"}
*Defined in [fuchsia.ui.gfx/types.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/types.fidl;l=87)*
<p>A value that is specified explicitly by <code>value</code> if <code>variable_id</code> is zero,
or is the value produced by the resource identified by <code>variable_id</code>, e.g.
an animation or expression. In the latter case, the value produced by the
resource must be a float32, and <code>value</code> is ignored.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="FloatValue.value">
<td><code>value</code></td>
<td>
<code>float32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="FloatValue.variable_id">
<td><code>variable_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### ImageArgs {#ImageArgs data-text="ImageArgs"}
*Defined in [fuchsia.ui.gfx/resources.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/resources.fidl;l=93)*
<p>An image mapped to a range of a <code>Memory</code> resource.</p>
<p><b>DEPRECATED </b></p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="ImageArgs.info">
<td><code>info</code></td>
<td>
<code><a class='link' href='../fuchsia.images/'>fuchsia.images</a>/<a class='link' href='../fuchsia.images/#ImageInfo'>ImageInfo</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="ImageArgs.memory_id">
<td><code>memory_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="ImageArgs.memory_offset">
<td><code>memory_offset</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### ImageArgs2 {#ImageArgs2 data-text="ImageArgs2"}
*Defined in [fuchsia.ui.gfx/resources.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/resources.fidl;l=102)*
<p>An image mapped to a range of a <code>Memory</code> resource.</p>
<p><b>DEPRECATED </b></p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="ImageArgs2.width">
<td><code>width</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="ImageArgs2.height">
<td><code>height</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="ImageArgs2.buffer_collection_id">
<td><code>buffer_collection_id</code></td>
<td>
<code>uint32</code>
</td>
<td><p>The id of a <code>BufferCollection</code>. Before creating this resource, the
buffer collection should be registered on the same <code>Session</code> with
<code>RegisterBufferCollection</code> and it should have its contraints set.
Once the buffers are allocated successfully (e.g. after calling
<code>WaitForBuffersAllocated</code>), the collection's id can be used to create
the image resource.</p>
</td>
<td>No default</td>
</tr>
<tr id="ImageArgs2.buffer_collection_index">
<td><code>buffer_collection_index</code></td>
<td>
<code>uint32</code>
</td>
<td><p>The index of the VMO from the <code>BufferCollection</code> that backs this image.</p>
</td>
<td>No default</td>
</tr>
</table>
### ImageArgs3 [resource](/fuchsia-src/reference/fidl/language/language.md#value-vs-resource){:.fidl-attribute} {#ImageArgs3 data-text="ImageArgs3"}
*Defined in [fuchsia.ui.gfx/resources.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/resources.fidl;l=118)*
<p>An image that is backed by a <code>BufferCollection</code> registered with <code>Allocator</code>.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="ImageArgs3.width">
<td><code>width</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="ImageArgs3.height">
<td><code>height</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="ImageArgs3.import_token">
<td><code>import_token</code></td>
<td>
<code><a class='link' href='../fuchsia.ui.composition/'>fuchsia.ui.composition</a>/<a class='link' href='../fuchsia.ui.composition/#BufferCollectionImportToken'>BufferCollectionImportToken</a></code>
</td>
<td><p>Image creation requires an allocated <code>BufferCollection</code> registered with Allocator.
<code>import_token</code> should be the other end of a BufferCollectionExportToken that is
successfully registered. All clients of the specified BufferCollection must have set
their constraints and buffers should be allocated before calling.</p>
</td>
<td>No default</td>
</tr>
<tr id="ImageArgs3.buffer_collection_index">
<td><code>buffer_collection_index</code></td>
<td>
<code>uint32</code>
</td>
<td><p>The index of the VMO from the <code>BufferCollection</code> that backs this image.</p>
</td>
<td>No default</td>
</tr>
</table>
### ImagePipe2Args [resource](/fuchsia-src/reference/fidl/language/language.md#value-vs-resource){:.fidl-attribute} {#ImagePipe2Args data-text="ImagePipe2Args"}
*Defined in [fuchsia.ui.gfx/resources.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/resources.fidl;l=71)*
<p><code>ImagePipe2</code> is a <code>Resource</code> that can be used as a <code>Texture</code> for a <code>Material</code>.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="ImagePipe2Args.image_pipe_request">
<td><code>image_pipe_request</code></td>
<td>
<code>server_end&lt;<a class='link' href='../fuchsia.images/'>fuchsia.images</a>/<a class='link' href='../fuchsia.images/#ImagePipe2'>ImagePipe2</a>&gt;</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### ImportResourceCmdDeprecated [resource](/fuchsia-src/reference/fidl/language/language.md#value-vs-resource){:.fidl-attribute} {#ImportResourceCmdDeprecated data-text="ImportResourceCmdDeprecated"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=160)*
<p>Import a resource that was exported via ExportResourceCmd(). <code>token</code> is
a handle to the eventpair peer that was used to export the resource, and
<code>spec</code> describes the type of the imported resource, and the commands which
can legally be applied to it. Afterward, <code>id</code> can be used to refer to the
resource in an Command, similarly (but not identically: see below) to a
resource that was created in the session. For example, you can add children
to an imported EntityNode via AddChildCmd.</p>
<p>However, note that the importer does not gain full access to the imported
resource, but rather to an attenuated subset of its capabilities. For
example, you cannot use a DetachCmd to detach an imported EntityNode from
its parent.</p>
<p>Unlike ExportResourceCmd, there is no configurable timeout. There is an
expectation that the exported resource will become available in a short
amount of time. TODO: this needs elaboration... e.g. we might notify via the
SessionListener when we know that the link will never be made (e.g. if the
peer of the import token is destroyed).</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="ImportResourceCmdDeprecated.id">
<td><code>id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="ImportResourceCmdDeprecated.token">
<td><code>token</code></td>
<td>
<code>handle&lt;eventpair&gt;</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="ImportResourceCmdDeprecated.spec">
<td><code>spec</code></td>
<td>
<code><a class='link' href='#ImportSpec'>ImportSpec</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### ImportToken [resource](/fuchsia-src/reference/fidl/language/language.md#value-vs-resource){:.fidl-attribute} {#ImportToken data-text="ImportToken"}
*Defined in [fuchsia.ui.gfx/tokens.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/tokens.fidl;l=19)*
<p>Token that uniquely identifies an attachment point for a subgraph in the
global scene graph. Each <code>ImportToken</code> has exactly one corresponding
<code>ExportToken</code>.</p>
<p>A Scenic client can reference contents from another client by creating a
typed resource using this token. The other client must also create a
correspondingly typed resource using the corresponding <code>ExportToken</code>.</p>
<p>The exact nature of the inter-client reference depends on the specific
resources created from the tokens. For example, creating a <code>ViewHolder</code>
resource from this token allows a client to embed another client's <code>View</code>.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="ImportToken.value">
<td><code>value</code></td>
<td>
<code>handle&lt;eventpair&gt;</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### ImportUnboundEvent {#ImportUnboundEvent data-text="ImportUnboundEvent"}
*Defined in [fuchsia.ui.gfx/events.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/events.fidl;l=65)*
<p>Delivered when the imported resource with the given ID is no longer bound to
its host resource, or if the imported resource can not be bound because
the host resource is not available.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="ImportUnboundEvent.resource_id">
<td><code>resource_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### LayerArgs {#LayerArgs data-text="LayerArgs"}
*Defined in [fuchsia.ui.gfx/resources.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/resources.fidl;l=240)*
<p>A Layer is a 2-dimensional image that is drawn by a Compositor. The
contents of each Layer in a Layerstack are independent of each other.
A layer is not drawn unless it has a camera, texture, or color.</p>
<p>Supported commands:</p>
<ul>
<li>Detach</li>
<li>SetCamera</li>
<li>SetColor</li>
<li>SetTexture</li>
<li>SetSize (depth must be zero)</li>
<li>SetSize</li>
<li>SetTranslation (z component determines the relative Z-ordering of layers)</li>
<li>SetRotation (must rotate around Z-axis)</li>
<li>SetScale</li>
</ul>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="LayerArgs.dummy">
<td><code>dummy</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>0</td>
</tr>
</table>
### LayerStackArgs {#LayerStackArgs data-text="LayerStackArgs"}
*Defined in [fuchsia.ui.gfx/resources.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/resources.fidl;l=220)*
<p>A LayerStack is a stack of layers that are attached to a Compositor, which
draws them in order of increasing Z-order (or rather, presents the illusion
of drawing them in that order: it may apply any optimizations that don't
affect the output).</p>
<p>Supported commands:</p>
<ul>
<li>AddLayer</li>
</ul>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="LayerStackArgs.dummy">
<td><code>dummy</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>0</td>
</tr>
</table>
### MaterialArgs {#MaterialArgs data-text="MaterialArgs"}
*Defined in [fuchsia.ui.gfx/resources.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/resources.fidl;l=340)*
<p>Simple texture-mapped material.</p>
<p>Supported commands:</p>
<ul>
<li>SetTextureCmd: sets the texture, or it can be left as zero (no texture).
The texture can be an Image or ImagePipe2.</li>
<li>SetColorCmd: sets the color.</li>
</ul>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="MaterialArgs.dummy">
<td><code>dummy</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>0</td>
</tr>
</table>
### Matrix4Value {#Matrix4Value data-text="Matrix4Value"}
*Defined in [fuchsia.ui.gfx/types.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/types.fidl;l=123)*
<p>A value that is specified explicitly by <code>value</code> if <code>variable_id</code> is zero,
or is the value produced by the resource identified by <code>variable_id</code>, e.g.
an animation or expression. In the latter case, the value produced by the
resource must be a vec4, and <code>value</code> is ignored.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="Matrix4Value.value">
<td><code>value</code></td>
<td>
<code><a class='link' href='#mat4'>mat4</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="Matrix4Value.variable_id">
<td><code>variable_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### MemoryArgs [resource](/fuchsia-src/reference/fidl/language/language.md#value-vs-resource){:.fidl-attribute} {#MemoryArgs data-text="MemoryArgs"}
*Defined in [fuchsia.ui.gfx/resources.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/resources.fidl;l=78)*
<p><code>Memory</code> is a <code>Resource</code> that wraps a client-provided Zircon vmo to register
it with Scenic.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="MemoryArgs.vmo">
<td><code>vmo</code></td>
<td>
<code>handle&lt;vmo&gt;</code>
</td>
<td><p>The VMO which backs this memory.</p>
</td>
<td>No default</td>
</tr>
<tr id="MemoryArgs.allocation_size">
<td><code>allocation_size</code></td>
<td>
<code>uint64</code>
</td>
<td><p>The amount of memory from <code>vmo</code> that should be utilized.</p>
</td>
<td>No default</td>
</tr>
<tr id="MemoryArgs.memory_type">
<td><code>memory_type</code></td>
<td>
<code><a class='link' href='../fuchsia.images/'>fuchsia.images</a>/<a class='link' href='../fuchsia.images/#MemoryType'>MemoryType</a></code>
</td>
<td><p>The type of memory stored in the VMO, namely whether it's GPU memory or
host memory.</p>
</td>
<td>No default</td>
</tr>
</table>
### MeshArgs {#MeshArgs data-text="MeshArgs"}
*Defined in [fuchsia.ui.gfx/shapes.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/shapes.fidl;l=37)*
<p>A Mesh cannot be rendered until it has been bound to vertex/index buffers;
see BindMeshBuffersCmd.</p>
&lt;EMPTY&gt;
### MeshVertexFormat {#MeshVertexFormat data-text="MeshVertexFormat"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=650)*
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="MeshVertexFormat.position_type">
<td><code>position_type</code></td>
<td>
<code><a class='link' href='#ValueType'>ValueType</a></code>
</td>
<td><p>kVector2 or kVector3.</p>
</td>
<td>No default</td>
</tr>
<tr id="MeshVertexFormat.normal_type">
<td><code>normal_type</code></td>
<td>
<code><a class='link' href='#ValueType'>ValueType</a></code>
</td>
<td><p>kVector2 or kVector3 (must match position_type), or kNone.</p>
</td>
<td>No default</td>
</tr>
<tr id="MeshVertexFormat.tex_coord_type">
<td><code>tex_coord_type</code></td>
<td>
<code><a class='link' href='#ValueType'>ValueType</a></code>
</td>
<td><p>kVector2 or kNone.</p>
</td>
<td>No default</td>
</tr>
</table>
### Metrics {#Metrics data-text="Metrics"}
*Defined in [fuchsia.ui.gfx/types.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/types.fidl;l=179)*
<p>Rendering target metrics associated with a node.
See also <code>MetricsEvent</code>.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="Metrics.scale_x">
<td><code>scale_x</code></td>
<td>
<code>float32</code>
</td>
<td><p>The ratio between the size of one logical pixel within the node's local
coordinate system and the size of one physical pixel of the rendering
target.</p>
<p>This scale factors change in relation to the resolution of the rendering
target and the scale transformations applied by containing nodes.
They are always strictly positive and non-zero.</p>
<p>For example, suppose the rendering target is a high resolution display
with a device pixel ratio of 2.0 meaning that each logical pixel
within the model corresponds to two physical pixels of the display.
Assuming no scale transformations affect the node, then its metrics event
will report a scale factor of 2.0.</p>
<p>Building on this example, if instead the node's parent applies a
scale transformation of 0.25 to the node, then the node's metrics event
will report a scale factor of 0.5 indicating that the node should render
its content at a reduced resolution and level of detail since a smaller
area of physical pixels (half the size in each dimension) will be rendered.</p>
</td>
<td>No default</td>
</tr>
<tr id="Metrics.scale_y">
<td><code>scale_y</code></td>
<td>
<code>float32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="Metrics.scale_z">
<td><code>scale_z</code></td>
<td>
<code>float32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### MetricsEvent {#MetricsEvent data-text="MetricsEvent"}
*Defined in [fuchsia.ui.gfx/events.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/events.fidl;l=41)*
<p>Provides rendering target metrics information about the specified node.</p>
<p>This event is delivered when the following conditions are true:</p>
<ul>
<li>The node is a descendant of a <code>Scene</code>.</li>
<li>The node has <code>kMetricsEventMask</code> set to an enabled state.</li>
<li>The node's metrics have changed since they were last delivered, or since
<code>kMetricsEventMask</code> transitioned from a disabled state to an enabled state.</li>
</ul>
<p>Subscribe to this event to receive information about the scale factors you
should apply when generating textures for your nodes.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="MetricsEvent.node_id">
<td><code>node_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="MetricsEvent.metrics">
<td><code>metrics</code></td>
<td>
<code><a class='link' href='#Metrics'>Metrics</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### OpacityNodeArgsHACK {#OpacityNodeArgsHACK data-text="OpacityNodeArgsHACK"}
*Defined in [fuchsia.ui.gfx/nodes.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/nodes.fidl;l=53)*
<p>Characteristics:</p>
<ul>
<li>has_transform</li>
<li>has_parent</li>
<li>has_children</li>
<li>has_parts</li>
<li>has_opacity</li>
</ul>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="OpacityNodeArgsHACK.unused">
<td><code>unused</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>0</td>
</tr>
</table>
### Plane3 {#Plane3 data-text="Plane3"}
*Defined in [fuchsia.ui.gfx/types.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/types.fidl;l=53)*
<p>Oriented plane described by a normal vector and a distance
from the origin along that vector.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="Plane3.dir">
<td><code>dir</code></td>
<td>
<code><a class='link' href='#vec3'>vec3</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="Plane3.dist">
<td><code>dist</code></td>
<td>
<code>float32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### PointLightArgs {#PointLightArgs data-text="PointLightArgs"}
*Defined in [fuchsia.ui.gfx/resources.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/resources.fidl;l=328)*
<p>A PointLight is a Light that emits light in all directions. By default, the
intensity of the light falls off according to the physically based
&quot;inverse-square law&quot; (see Wikipedia), although it can be adjusted to other
values for artistic effect.</p>
<p>Supported commands:</p>
<ul>
<li>SetLightColor</li>
<li>SetPointLightPosition</li>
<li>SetPointLightFalloff</li>
</ul>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="PointLightArgs.dummy">
<td><code>dummy</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>0</td>
</tr>
</table>
### Quaternion {#Quaternion data-text="Quaternion"}
*Defined in [fuchsia.ui.gfx/types.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/types.fidl;l=44)*
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="Quaternion.x">
<td><code>x</code></td>
<td>
<code>float32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="Quaternion.y">
<td><code>y</code></td>
<td>
<code>float32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="Quaternion.z">
<td><code>z</code></td>
<td>
<code>float32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="Quaternion.w">
<td><code>w</code></td>
<td>
<code>float32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### QuaternionValue {#QuaternionValue data-text="QuaternionValue"}
*Defined in [fuchsia.ui.gfx/types.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/types.fidl;l=150)*
<p>A value that is specified explicitly by <code>value</code> if <code>variable_id</code> is zero,
or is the value produced by the resource identified by <code>variable_id</code>, e.g.
an animation or expression. In the latter case, the value produced by the
resource must be a Quaternion, and <code>value</code> is ignored.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="QuaternionValue.value">
<td><code>value</code></td>
<td>
<code><a class='link' href='#Quaternion'>Quaternion</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="QuaternionValue.variable_id">
<td><code>variable_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### RectangleArgs {#RectangleArgs data-text="RectangleArgs"}
*Defined in [fuchsia.ui.gfx/shapes.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/shapes.fidl;l=10)*
<p>Rectangle centered at (0,0).</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="RectangleArgs.width">
<td><code>width</code></td>
<td>
<code><a class='link' href='#Value'>Value</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="RectangleArgs.height">
<td><code>height</code></td>
<td>
<code><a class='link' href='#Value'>Value</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### ReleaseResourceCmd {#ReleaseResourceCmd data-text="ReleaseResourceCmd"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=120)*
<p>Releases the client's reference to the resource; it is then illegal to use
the ID in subsequent Commands. Other references to the resource may exist,
so releasing the resource does not result in its immediate destruction; it is
only destroyed once the last reference is released. For example, the
resource may be required to render an in-progress frame, or it may be
referred to by another resource). However, the ID will be immediately
unregistered, and may be reused to create a new resource.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="ReleaseResourceCmd.id">
<td><code>id</code></td>
<td>
<code>uint32</code>
</td>
<td><p>ID of the resource to be dereferenced.</p>
</td>
<td>No default</td>
</tr>
</table>
### RemoveAllLayersCmd {#RemoveAllLayersCmd data-text="RemoveAllLayersCmd"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=696)*
<p>Remove all layers from a layer stack.
Constraints</p>
<ul>
<li><code>layer_stack_id</code> refs a <code>LayerStack</code>.</li>
</ul>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="RemoveAllLayersCmd.layer_stack_id">
<td><code>layer_stack_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### RemoveLayerCmd {#RemoveLayerCmd data-text="RemoveLayerCmd"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=688)*
<p>Remove a layer from a layer stack.
Constraints:</p>
<ul>
<li><code>layer_stack_id</code> refs a <code>LayerStack</code>.</li>
<li><code>layer_id</code> refs a <code>Layer</code>.</li>
<li>The layer must belong to this stack.</li>
</ul>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="RemoveLayerCmd.layer_stack_id">
<td><code>layer_stack_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="RemoveLayerCmd.layer_id">
<td><code>layer_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### RendererArgs {#RendererArgs data-text="RendererArgs"}
*Defined in [fuchsia.ui.gfx/resources.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/resources.fidl;l=286)*
<p>A Renderer renders a Scene via a Camera.</p>
<p>Supported commands:</p>
<ul>
<li>SetCamera</li>
<li>SetRendererParam</li>
</ul>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="RendererArgs.dummy">
<td><code>dummy</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>0</td>
</tr>
</table>
### RoundedRectangleArgs {#RoundedRectangleArgs data-text="RoundedRectangleArgs"}
*Defined in [fuchsia.ui.gfx/shapes.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/shapes.fidl;l=22)*
<p>RoundedRectangle centered at (0,0). Legal parameter values must satisfy the
constraint that the flat sides of the rectangle have non-negative length.
In other words, the following constraints must hold:</p>
<ul>
<li>top_left_radius + top_right_radius &lt;= width</li>
<li>bottom_left_radius + bottom_right_radius &lt;= width</li>
<li>top_left_radius + bottom_left_radius &lt;= height</li>
<li>top_right_radius + bottom_right_radius &lt;= height</li>
</ul>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="RoundedRectangleArgs.width">
<td><code>width</code></td>
<td>
<code><a class='link' href='#Value'>Value</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="RoundedRectangleArgs.height">
<td><code>height</code></td>
<td>
<code><a class='link' href='#Value'>Value</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="RoundedRectangleArgs.top_left_radius">
<td><code>top_left_radius</code></td>
<td>
<code><a class='link' href='#Value'>Value</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="RoundedRectangleArgs.top_right_radius">
<td><code>top_right_radius</code></td>
<td>
<code><a class='link' href='#Value'>Value</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="RoundedRectangleArgs.bottom_right_radius">
<td><code>bottom_right_radius</code></td>
<td>
<code><a class='link' href='#Value'>Value</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="RoundedRectangleArgs.bottom_left_radius">
<td><code>bottom_left_radius</code></td>
<td>
<code><a class='link' href='#Value'>Value</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### SceneAddAmbientLightCmd {#SceneAddAmbientLightCmd data-text="SceneAddAmbientLightCmd"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=808)*
<p>Adds the light specified by <code>light_id</code> specified by <code>light_id</code> to the scene
identified by <code>scene_id</code>.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="SceneAddAmbientLightCmd.scene_id">
<td><code>scene_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SceneAddAmbientLightCmd.light_id">
<td><code>light_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### SceneAddDirectionalLightCmd {#SceneAddDirectionalLightCmd data-text="SceneAddDirectionalLightCmd"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=815)*
<p>Adds the light specified by <code>light_id</code> specified by <code>light_id</code> to the scene
identified by <code>scene_id</code>.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="SceneAddDirectionalLightCmd.scene_id">
<td><code>scene_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SceneAddDirectionalLightCmd.light_id">
<td><code>light_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### SceneAddPointLightCmd {#SceneAddPointLightCmd data-text="SceneAddPointLightCmd"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=822)*
<p>Adds the light specified by <code>light_id</code> specified by <code>light_id</code> to the scene
identified by <code>scene_id</code>.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="SceneAddPointLightCmd.scene_id">
<td><code>scene_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SceneAddPointLightCmd.light_id">
<td><code>light_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### SceneArgs {#SceneArgs data-text="SceneArgs"}
*Defined in [fuchsia.ui.gfx/resources.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/resources.fidl;l=252)*
<p>A Scene is the root of a scene-graph, and defines the rendering environment
(lighting, etc.) for the tree of nodes beneath it.</p>
<p>Supported commands:</p>
<ul>
<li>Add/RemoveLight</li>
<li>AddChild</li>
</ul>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="SceneArgs.dummy">
<td><code>dummy</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>0</td>
</tr>
</table>
### SendSizeChangeHintCmdHACK {#SendSizeChangeHintCmdHACK data-text="SendSizeChangeHintCmdHACK"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=268)*
<p>Sends a hint about a pending size change to the given node and all nodes
below. This is generally sent before an animation.</p>
<p><code>width_change_factor</code> and <code>height_change_factor</code> is how much bigger or smaller
the item is expected to be in the near future. This one number encapsulate
both changes in scale, as well as changes to layout width and height.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="SendSizeChangeHintCmdHACK.node_id">
<td><code>node_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SendSizeChangeHintCmdHACK.width_change_factor">
<td><code>width_change_factor</code></td>
<td>
<code>float32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SendSizeChangeHintCmdHACK.height_change_factor">
<td><code>height_change_factor</code></td>
<td>
<code>float32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### SetAnchorCmd {#SetAnchorCmd data-text="SetAnchorCmd"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=236)*
<p>Sets a Resource's (typically a Node's) anchor point.</p>
<p>Constraints:</p>
<ul>
<li><code>id</code> refs a Resource with the has_transform characteristic.</li>
</ul>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="SetAnchorCmd.id">
<td><code>id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SetAnchorCmd.value">
<td><code>value</code></td>
<td>
<code><a class='link' href='#Vector3Value'>Vector3Value</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### SetCameraClipSpaceTransformCmd {#SetCameraClipSpaceTransformCmd data-text="SetCameraClipSpaceTransformCmd"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=480)*
<p>Sets a camera's 2D clip-space transform.</p>
<p>Constraints:</p>
<ul>
<li><code>camera_id</code> refs a <code>Camera</code>.</li>
<li><code>translation</code> is the desired translation, in Vulkan NDC.</li>
<li><code>scale</code> is the scale factor to apply on the x/y plane before translation.</li>
</ul>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="SetCameraClipSpaceTransformCmd.camera_id">
<td><code>camera_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SetCameraClipSpaceTransformCmd.translation">
<td><code>translation</code></td>
<td>
<code><a class='link' href='#vec2'>vec2</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SetCameraClipSpaceTransformCmd.scale">
<td><code>scale</code></td>
<td>
<code>float32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### SetCameraCmd {#SetCameraCmd data-text="SetCameraCmd"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=424)*
<p>Sets a renderer's camera.</p>
<p>Constraints:</p>
<ul>
<li><code>renderer_id</code> refs a <code>Renderer</code>.</li>
<li><code>camera_id</code> refs a <code>Camera</code>, or stops rendering by passing zero.</li>
<li><code>matrix</code> is a value or variable of type kMatrix4x4.</li>
</ul>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="SetCameraCmd.renderer_id">
<td><code>renderer_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SetCameraCmd.camera_id">
<td><code>camera_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### SetCameraPoseBufferCmd {#SetCameraPoseBufferCmd data-text="SetCameraPoseBufferCmd"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=558)*
<p>Sets the &quot;pose buffer&quot; for the camera identified by <code>camera_id</code>.
This operation can be applied to both Cameras and StereoCameras.</p>
<p>This will override any position and rotation set for the camera and will
make it take its position and rotation from the pose buffer each frame
based on the presentation time for that frame.</p>
<p>A pose buffer represents a ring buffer of poses for a fixed number of time
points in the future. Each entry in the buffer identified by <code>buffer_id</code> is
a quaternion and a position layed out as follows:</p>
<p>struct Pose {
// Quaternion
float32 a;
float32 b;
float32 c;
float32 d;</p>
<p>// Position
float32 x;
float32 y;
float32 z;</p>
<p>// Reserved/Padding
byte[4] reserved;
}</p>
<p>The buffer can be thought of as a packed array of <code>num_entries</code> Pose structs
and is required to be at least num_entries * sizeof(Pose) bytes.</p>
<p>The quaternions and positions are specified in the space of the camera's
parent node.</p>
<p><code>base_time</code> is a base time point expressed in nanoseconds in the
<code>CLOCK_MONOTONIC</code> timebase and <code>time_interval</code> is the time in nanoseconds
between entries in the buffer. <code>base_time</code> must be in the past.</p>
<p>For a given point in time <code>t</code> expressed in nanoseconds in the
<code>CLOCK_MONOTONIC</code> timebase the index of the corresponding pose in
the pose buffer can be computed as follows:</p>
<p>index(t) = ((t - base_time) / time_interval) % num_entries</p>
<p>poses[index(t)] is valid for t over the time interval (t - time_interval, t]
and should be expected to updated continuously without synchronization
for the duration of that interval. If a single pose value is needed for
multiple non-atomic operations a value should be latched and stored outside
the pose buffer.</p>
<p>Because the poses are not protected by any synchronization primitives it is
possible that when a pose is latched it will be only partially updated, and
the pose being read will contain some components from the pose before it is
updated and some components from the updated pose. The safety of using these
&quot;torn&quot; poses relies on two things:</p>
<ol>
<li>
<p>Sequential poses written to poses[index(t)] are very similar to each
other numerically, so that if some components are taken from the first and
some are taken from another the result is numerically similar to both</p>
</li>
<li>
<p>The space of positions and quaternions is locally flat at the scale of
changes between sequential updates, which guarantees that two poses which
are numerically similar also represent semantically similar poses (i.e.
there are no discontinuities which will cause a small numerical change in
the position or quaterninon to cause a large change in the encoded pose)
For positions this is guaranteed because Scenic uses a Euclidean 3-space
which is globally flat and for quaternions this is guaranteed because
quaternions encode rotation as points on a unit 4-sphere, and spheres are
locally flat. For more details on the encoding of rotations in quaterions
see https://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation</p>
</li>
</ol>
<p>This commanderation is intended for late latching camera pose to support
low-latency motion-tracked rendering.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="SetCameraPoseBufferCmd.camera_id">
<td><code>camera_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SetCameraPoseBufferCmd.buffer_id">
<td><code>buffer_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SetCameraPoseBufferCmd.num_entries">
<td><code>num_entries</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SetCameraPoseBufferCmd.base_time">
<td><code>base_time</code></td>
<td>
<code>int64</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SetCameraPoseBufferCmd.time_interval">
<td><code>time_interval</code></td>
<td>
<code>uint64</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### SetCameraProjectionCmd {#SetCameraProjectionCmd data-text="SetCameraProjectionCmd"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=453)*
<p>Sets a camera's projection matrix.
This operation cannot be applied to a StereoCamera.</p>
<p>Constraints:</p>
<ul>
<li><code>camera_id</code> refs a <code>Camera</code> that is not a <code>StereoCamera</code>.</li>
<li><code>fovy</code> is the Y-axis field of view, in radians.</li>
</ul>
<p>NOTE: A default orthographic projection is specified by setting <code>fovy</code> to
zero. In this case, the camera transform is ignored.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="SetCameraProjectionCmd.camera_id">
<td><code>camera_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SetCameraProjectionCmd.fovy">
<td><code>fovy</code></td>
<td>
<code><a class='link' href='#FloatValue'>FloatValue</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### SetCameraTransformCmd {#SetCameraTransformCmd data-text="SetCameraTransformCmd"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=437)*
<p>Sets a camera's view matrix.
This operation can be applied to both Cameras and StereoCameras.</p>
<p>Constraints:</p>
<ul>
<li><code>camera_id</code> refs a <code>Camera</code>.</li>
<li><code>eye_position</code> is the position of the eye.</li>
<li><code>eye_look_at</code> is the point is the scene the that eye is pointed at.</li>
<li><code>eye_up</code> defines the camera's &quot;up&quot; vector.</li>
</ul>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="SetCameraTransformCmd.camera_id">
<td><code>camera_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SetCameraTransformCmd.eye_position">
<td><code>eye_position</code></td>
<td>
<code><a class='link' href='#Vector3Value'>Vector3Value</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SetCameraTransformCmd.eye_look_at">
<td><code>eye_look_at</code></td>
<td>
<code><a class='link' href='#Vector3Value'>Vector3Value</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SetCameraTransformCmd.eye_up">
<td><code>eye_up</code></td>
<td>
<code><a class='link' href='#Vector3Value'>Vector3Value</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### SetClipCmd {#SetClipCmd data-text="SetClipCmd"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=371)*
<p>Sets/clears a node's clip. DEPRECATED: use SetClipPlanesCmd.</p>
<p>Constraints:</p>
<ul>
<li><code>node_id</code> refs a <code>Node</code> with the has_clip characteristic.</li>
<li><code>clip_id</code> a <code>Node</code> with the is_clip characteristic, or nothing. If the
referenced node is not rooted, then it will have no effect (since its
full world-transform cannot be determined).</li>
<li><code>clip_to_self</code> If false, children are only clipped to the region specified
by <code>clip_id</code>. If true, children are additionally clipped to the node's
shape (as determined by its ShapeNode parts).</li>
</ul>
<p>Discussion:
If a node has a clip, it will be applied to both the parts and the children
of the node. Under some circumstances (TBD), a clip will not be applicable
to a node; in such cases it will be as though no clip has been specified for
the node.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="SetClipCmd.node_id">
<td><code>node_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SetClipCmd.clip_id">
<td><code>clip_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SetClipCmd.clip_to_self">
<td><code>clip_to_self</code></td>
<td>
<code>bool</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### SetClipPlanesCmd {#SetClipPlanesCmd data-text="SetClipPlanesCmd"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=781)*
<p>Sets the list of clip planes that apply to a Node and all of its children. Replaces
the list set by any previous SetClipPlanesCmd.</p>
<ul>
<li><code>node_id</code> refs a <code>Node</code> with the has_clip characteristic.</li>
<li><code>clip_planes</code> is the new list of oriented clip planes.</li>
</ul>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="SetClipPlanesCmd.node_id">
<td><code>node_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SetClipPlanesCmd.clip_planes">
<td><code>clip_planes</code></td>
<td>
<code>vector&lt;<a class='link' href='#Plane3'>Plane3</a>&gt;</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### SetColorCmd {#SetColorCmd data-text="SetColorCmd"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=618)*
<p>Sets a material's color.</p>
<p>Constraints:</p>
<ul>
<li><code>material_id</code> refs a <code>Material</code>.</li>
</ul>
<p>If a texture is set on the material, then the value sampled from the texture
is multiplied by the color.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="SetColorCmd.material_id">
<td><code>material_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SetColorCmd.color">
<td><code>color</code></td>
<td>
<code><a class='link' href='#ColorRgbaValue'>ColorRgbaValue</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### SetDisableClippingCmd {#SetDisableClippingCmd data-text="SetDisableClippingCmd"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=768)*
<p>Set whether clipping should be disabled for the specified renderer. For a
newly-created renderer, clipping will NOT be disabled (i.e. it will be
enabled).</p>
<p>NOTE: this disables visual clipping only; objects are still clipped for the
purposes of hit-testing.</p>
<p><code>renderer_id</code> refs the target renderer.
<code>disable_clipping</code> specifies whether the clipping should be disabled.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="SetDisableClippingCmd.renderer_id">
<td><code>renderer_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SetDisableClippingCmd.disable_clipping">
<td><code>disable_clipping</code></td>
<td>
<code>bool</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### SetDisplayColorConversionCmdHACK {#SetDisplayColorConversionCmdHACK data-text="SetDisplayColorConversionCmdHACK"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=841)*
<p>Set the color conversion applied to the compositor's display.
The conversion is applied to to each pixel according to the formula:</p>
<p>(matrix * (pixel + preoffsets)) + postoffsets</p>
<p>where pixel is a column vector consisting of the pixel's 3 components.</p>
<p><code>matrix</code> is passed in row-major order. Clients will be responsible
for passing default values, when needed.
Default values are not currently supported in fidl.
Default Values:
preoffsets = [0 0 0]
matrix = [1 0 0 0 1 0 0 0 1]
postoffsets = [0 0 0]</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="SetDisplayColorConversionCmdHACK.compositor_id">
<td><code>compositor_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SetDisplayColorConversionCmdHACK.preoffsets">
<td><code>preoffsets</code></td>
<td>
<code>float32[3]</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SetDisplayColorConversionCmdHACK.matrix">
<td><code>matrix</code></td>
<td>
<code>float32[9]</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SetDisplayColorConversionCmdHACK.postoffsets">
<td><code>postoffsets</code></td>
<td>
<code>float32[3]</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### SetDisplayMinimumRgbCmdHACK {#SetDisplayMinimumRgbCmdHACK data-text="SetDisplayMinimumRgbCmdHACK"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=881)*
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="SetDisplayMinimumRgbCmdHACK.min_value">
<td><code>min_value</code></td>
<td>
<code>uint8</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### SetDisplayRotationCmdHACK {#SetDisplayRotationCmdHACK data-text="SetDisplayRotationCmdHACK"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=859)*
<p>Depending on the device, the display might be rotated
with respect to what the lower level device controller
considers the physical orientation of pixels. The
compositors and layers must be in alignment with the
underlying physical orientation which means that for
certain operations like screenshotting, they cannot
provide results with the accurate orientation unless
they have information about how the higher-level display
is orienting the screen. The only legal values for the
rotation are 0, 90, 180, and 270, which are each
applied counterclockwise.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="SetDisplayRotationCmdHACK.compositor_id">
<td><code>compositor_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SetDisplayRotationCmdHACK.rotation_degrees">
<td><code>rotation_degrees</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### SetEnableDebugViewBoundsCmd {#SetEnableDebugViewBoundsCmd data-text="SetEnableDebugViewBoundsCmd"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=867)*
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="SetEnableDebugViewBoundsCmd.view_id">
<td><code>view_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SetEnableDebugViewBoundsCmd.enable">
<td><code>enable</code></td>
<td>
<code>bool</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### SetEventMaskCmd {#SetEventMaskCmd data-text="SetEventMaskCmd"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=736)*
<p>Sets which events a resource should deliver to the session listener.
This command replaces any prior event mask for the resource.</p>
<p>The initial event mask for a resource is zero, meaning no events are
reported.</p>
<p>Constraints:</p>
<ul>
<li><code>resource_id</code> is a valid resource id</li>
<li><code>event_mask</code> is zero or a combination of <code>k*EventMask</code> bits OR'ed together.</li>
</ul>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="SetEventMaskCmd.id">
<td><code>id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SetEventMaskCmd.event_mask">
<td><code>event_mask</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### SetHitTestBehaviorCmd {#SetHitTestBehaviorCmd data-text="SetHitTestBehaviorCmd"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=382)*
<p>Sets a node's hit test behavior.</p>
<p>Discussion:
By default, hit testing is performed on the node's content, its parts,
and its children.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="SetHitTestBehaviorCmd.node_id">
<td><code>node_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SetHitTestBehaviorCmd.hit_test_behavior">
<td><code>hit_test_behavior</code></td>
<td>
<code><a class='link' href='#HitTestBehavior'>HitTestBehavior</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### SetImportFocusCmdDEPRECATED {#SetImportFocusCmdDEPRECATED data-text="SetImportFocusCmdDEPRECATED"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=774)*
&lt;EMPTY&gt;
### SetLabelCmd {#SetLabelCmd data-text="SetLabelCmd"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=754)*
<p>Sets/clears a label to help developers identify the purpose of the resource
when using diagnostic tools.</p>
<p>The label serves no functional purpose in the scene graph. It exists only
to help developers understand its structure. The scene manager may truncate
or discard labels at will.</p>
<p>Constraints:</p>
<ul>
<li>The label's maximum length is <code>kLabelMaxLength</code> characters.</li>
<li>Setting the label to an empty string clears it.</li>
</ul>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="SetLabelCmd.id">
<td><code>id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SetLabelCmd.label">
<td><code>label</code></td>
<td>
<code>string</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### SetLayerStackCmd {#SetLayerStackCmd data-text="SetLayerStackCmd"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=704)*
<p>Set a compositor's layer stack, replacing the current stack (if any).
Constraints:</p>
<ul>
<li><code>compositor_id</code> refs a <code>DisplayCompositor</code>.</li>
<li><code>layer_stack_id</code> refs a <code>LayerStack</code>.</li>
</ul>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="SetLayerStackCmd.compositor_id">
<td><code>compositor_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SetLayerStackCmd.layer_stack_id">
<td><code>layer_stack_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### SetLightColorCmd {#SetLightColorCmd data-text="SetLightColorCmd"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=567)*
<p>Sets the color of the Light identified by <code>light_id</code>.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="SetLightColorCmd.light_id">
<td><code>light_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SetLightColorCmd.color">
<td><code>color</code></td>
<td>
<code><a class='link' href='#ColorRgbValue'>ColorRgbValue</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### SetLightDirectionCmd {#SetLightDirectionCmd data-text="SetLightDirectionCmd"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=573)*
<p>Sets the direction of the DirectionalLight identified by <code>light_id</code>.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="SetLightDirectionCmd.light_id">
<td><code>light_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SetLightDirectionCmd.direction">
<td><code>direction</code></td>
<td>
<code><a class='link' href='#Vector3Value'>Vector3Value</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### SetMaterialCmd {#SetMaterialCmd data-text="SetMaterialCmd"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=346)*
<p>Sets/clears a node's material.</p>
<p>Constraints:</p>
<ul>
<li><code>node_id</code> refs a <code>Node</code> with the has_material characteristic.</li>
<li><code>material_id</code> refs a <code>Material</code>, or nothing.</li>
<li>if this command causes the target to have both a <code>Shape</code> and a <code>Material</code>,
then these must be compatible with each other (see README.md regarding
&quot;Shape/Material Compatibility&quot;).</li>
</ul>
<p>Discussion:
In order to be painted, a node requires both a <code>Shape</code> and a <code>Material</code>.
Without a material, a node can still participate in hit-testing and clipping.
Without a shape, a node cannot do any of the above.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="SetMaterialCmd.node_id">
<td><code>node_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SetMaterialCmd.material_id">
<td><code>material_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### SetOpacityCmd {#SetOpacityCmd data-text="SetOpacityCmd"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=257)*
<p>Sets a node's opacity.</p>
<p>Constraints:</p>
<ul>
<li><code>node_id</code> refs a <code>Node</code> with the has_opacity characteristic.</li>
<li><code>opacity</code> is in the range [0, 1].</li>
</ul>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="SetOpacityCmd.node_id">
<td><code>node_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SetOpacityCmd.opacity">
<td><code>opacity</code></td>
<td>
<code>float32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### SetPointLightFalloffCmd {#SetPointLightFalloffCmd data-text="SetPointLightFalloffCmd"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=801)*
<p>Sets the falloff factor of the PointLight identified by <code>light_id</code>.
A value of 1.0 corresponds to the physically-based &quot;inverse-square law&quot;
(see Wikipedia). Other values can be used for artistic effect, e.g. a
value of 0.0 means that the radiance of a surface is not dependant on
its distance from the light.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="SetPointLightFalloffCmd.light_id">
<td><code>light_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SetPointLightFalloffCmd.falloff">
<td><code>falloff</code></td>
<td>
<code><a class='link' href='#FloatValue'>FloatValue</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### SetPointLightPositionCmd {#SetPointLightPositionCmd data-text="SetPointLightPositionCmd"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=787)*
<p>Sets the position of the PointLight identified by <code>light_id</code>.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="SetPointLightPositionCmd.light_id">
<td><code>light_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SetPointLightPositionCmd.position">
<td><code>position</code></td>
<td>
<code><a class='link' href='#Vector3Value'>Vector3Value</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### SetRendererCmd {#SetRendererCmd data-text="SetRendererCmd"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=713)*
<p>Set a layer's renderer, replacing the current renderer (if any).
Constraints:</p>
<ul>
<li><code>layer_id</code> refs a <code>Layer</code>.</li>
<li><code>renderer_id</code> refs a <code>Renderer</code>.</li>
</ul>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="SetRendererCmd.layer_id">
<td><code>layer_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SetRendererCmd.renderer_id">
<td><code>renderer_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### SetRendererParamCmd {#SetRendererParamCmd data-text="SetRendererParamCmd"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=722)*
<p>Sets a parameter that affects how a renderer renders a scene.</p>
<p><code>renderer_id</code> refs the Renderer that is being modified.
<code>param</code> describes the parameter that should be set, and to what.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="SetRendererParamCmd.renderer_id">
<td><code>renderer_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SetRendererParamCmd.param">
<td><code>param</code></td>
<td>
<code><a class='link' href='#RendererParam'>RendererParam</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### SetRotationCmd {#SetRotationCmd data-text="SetRotationCmd"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=227)*
<p>Sets a Resource's (typically a Node's) rotation.</p>
<p>Constraints:</p>
<ul>
<li><code>id</code> refs a Resource with the has_transform characteristic.</li>
</ul>
<p>Discussion:
Quaternions represent any rotation in a 3D coordinate system. Consisting of
[a,b,c,d], [a] represents the amount of rotation that should be applied and
[b,c,d] represents the vector around which the rotation is applied. This
conforms to the semantics of glm::quat.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="SetRotationCmd.id">
<td><code>id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SetRotationCmd.value">
<td><code>value</code></td>
<td>
<code><a class='link' href='#QuaternionValue'>QuaternionValue</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### SetScaleCmd {#SetScaleCmd data-text="SetScaleCmd"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=212)*
<p>Sets a Resource's (typically a Node's) scale.</p>
<p>Constraints:</p>
<ul>
<li><code>id</code> refs a Resource with the has_transform characteristic.</li>
</ul>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="SetScaleCmd.id">
<td><code>id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SetScaleCmd.value">
<td><code>value</code></td>
<td>
<code><a class='link' href='#Vector3Value'>Vector3Value</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### SetSemanticVisibilityCmd {#SetSemanticVisibilityCmd data-text="SetSemanticVisibilityCmd"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=392)*
<p>Sets a node's semantic visibility.</p>
<p>Discussion:
By default, all nodes are semantically visible. Semantically invisible nodes and their children
are ignored by hit tests performed for accessibility.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="SetSemanticVisibilityCmd.node_id">
<td><code>node_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SetSemanticVisibilityCmd.visible">
<td><code>visible</code></td>
<td>
<code>bool</code>
</td>
<td></td>
<td>true</td>
</tr>
</table>
### SetShapeCmd {#SetShapeCmd data-text="SetShapeCmd"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=327)*
<p>Sets/clears a node's shape.</p>
<p>Constraints:</p>
<ul>
<li><code>node_id</code> refs a <code>Node</code> with the has_shape characteristic.</li>
<li><code>shape_id</code> refs a <code>Shape</code>, or nothing.</li>
<li>if this command causes the target to have both a <code>Shape</code> and a <code>Material</code>,
then these must be compatible with each other (see README.md regarding
&quot;Shape/Material Compatibility&quot;).</li>
</ul>
<p>Discussion:
In order to be painted, a node requires both a <code>Shape</code> and a <code>Material</code>.
Without a material, a node can still participate in hit-testing and clipping.
Without a shape, a node cannot do any of the above.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="SetShapeCmd.node_id">
<td><code>node_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SetShapeCmd.shape_id">
<td><code>shape_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### SetSizeCmd {#SetSizeCmd data-text="SetSizeCmd"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=247)*
<p>Sets an object's size.</p>
<p>Constraints:</p>
<ul>
<li><code>id</code> refs a resizeable object.</li>
<li>some objects that support this command may have additional constraints
(e.g. in some cases <code>depth</code> must be zero).</li>
</ul>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="SetSizeCmd.id">
<td><code>id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SetSizeCmd.value">
<td><code>value</code></td>
<td>
<code><a class='link' href='#Vector2Value'>Vector2Value</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### SetStereoCameraProjectionCmd {#SetStereoCameraProjectionCmd data-text="SetStereoCameraProjectionCmd"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=468)*
<p>Sets a StereoCamera's projection matrices.
This operation can only be applied to a StereoCamera.</p>
<p>Constraints:</p>
<ul>
<li><code>camera_id</code> refs a <code>StereoCamera</code>.</li>
<li><code>left_projection</code> is the projection matrix for the left eye.</li>
<li><code>right_projection</code> is the projection matrix for the right eye.</li>
</ul>
<p>These projection matrices may also contain a transform in camera space for
their eye if needed.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="SetStereoCameraProjectionCmd.camera_id">
<td><code>camera_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SetStereoCameraProjectionCmd.left_projection">
<td><code>left_projection</code></td>
<td>
<code><a class='link' href='#Matrix4Value'>Matrix4Value</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SetStereoCameraProjectionCmd.right_projection">
<td><code>right_projection</code></td>
<td>
<code><a class='link' href='#Matrix4Value'>Matrix4Value</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### SetTagCmd {#SetTagCmd data-text="SetTagCmd"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=180)*
<p>Sets/clears a node's tag value.</p>
<p>A session can apply a tag value to any node to which it has access, including
imported nodes. These tags are private to the session and cannot be read
or modified by other sessions. When multiple sessions import the same node,
each session will only observe its own tag values.</p>
<p>Hit test results for a session only include nodes which the session has
tagged with a non-zero value. Therefore a session can use tag values to
associate nodes with their functional purpose when picked.</p>
<p>Constraints:</p>
<ul>
<li><code>node_id</code> refs a <code>Node</code>.</li>
<li><code>tag_value</code> is the tag value to assign, or 0 to remove the tag.</li>
</ul>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="SetTagCmd.node_id">
<td><code>node_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SetTagCmd.tag_value">
<td><code>tag_value</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### SetTextureCmd {#SetTextureCmd data-text="SetTextureCmd"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=606)*
<p>Sets/clears a material's texture.</p>
<p>Constraints:</p>
<ul>
<li><code>material_id</code> refs a <code>Material</code>.</li>
<li><code>texture_id</code> refs a <code>Image</code>, <code>ImagePipe2</code>, or nothing.</li>
</ul>
<p>If no texture is provided (i.e. <code>texture_id</code> is zero), a solid color is used.
If a texture is provided, then the value sampled from the texture is
multiplied by the color.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="SetTextureCmd.material_id">
<td><code>material_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SetTextureCmd.texture_id">
<td><code>texture_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### SetTranslationCmd {#SetTranslationCmd data-text="SetTranslationCmd"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=203)*
<p>Sets a Resource's (typically a Node's) translation.</p>
<p>Constraints:</p>
<ul>
<li><code>id</code> refs a Resource with the has_transform characteristic.</li>
</ul>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="SetTranslationCmd.id">
<td><code>id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SetTranslationCmd.value">
<td><code>value</code></td>
<td>
<code><a class='link' href='#Vector3Value'>Vector3Value</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### SetViewHolderBoundsColorCmd {#SetViewHolderBoundsColorCmd data-text="SetViewHolderBoundsColorCmd"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=874)*
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="SetViewHolderBoundsColorCmd.view_holder_id">
<td><code>view_holder_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SetViewHolderBoundsColorCmd.color">
<td><code>color</code></td>
<td>
<code><a class='link' href='#ColorRgbValue'>ColorRgbValue</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### SetViewPropertiesCmd {#SetViewPropertiesCmd data-text="SetViewPropertiesCmd"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=402)*
<p>Sets the properties for a ViewHolder's attached View.</p>
<p>Constraints:</p>
<ul>
<li><code>view_holder_id</code> refs a <code>ViewHolder</code>.</li>
</ul>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="SetViewPropertiesCmd.view_holder_id">
<td><code>view_holder_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SetViewPropertiesCmd.properties">
<td><code>properties</code></td>
<td>
<code><a class='link' href='#ViewProperties'>ViewProperties</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### ShapeNodeArgs {#ShapeNodeArgs data-text="ShapeNodeArgs"}
*Defined in [fuchsia.ui.gfx/nodes.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/nodes.fidl;l=31)*
<p>Characteristics:</p>
<ul>
<li>has_parent</li>
<li>has_shape</li>
<li>has_material</li>
</ul>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="ShapeNodeArgs.unused">
<td><code>unused</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>0</td>
</tr>
</table>
### SizeChangeHintEvent {#SizeChangeHintEvent data-text="SizeChangeHintEvent"}
*Defined in [fuchsia.ui.gfx/events.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/events.fidl;l=56)*
<p>Delivered in response to a size change hint from a parent node
(SendSizeChangeHintCmd).</p>
<p>This event is delivered when the following conditions are true:</p>
<ul>
<li>The node has <code>kSizeChangeEventMask</code> set to an enabled state.</li>
<li>A parent node has sent a SendSizeChangeHintCmd.</li>
</ul>
<p>Subscribe to this event to receive information about how large textures you
will need in the near future for your nodes. The canonical use case is to
pre-allocate memory to avoid repeated re-allocations.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="SizeChangeHintEvent.node_id">
<td><code>node_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SizeChangeHintEvent.width_change_factor">
<td><code>width_change_factor</code></td>
<td>
<code>float32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SizeChangeHintEvent.height_change_factor">
<td><code>height_change_factor</code></td>
<td>
<code>float32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### StereoCameraArgs {#StereoCameraArgs data-text="StereoCameraArgs"}
*Defined in [fuchsia.ui.gfx/resources.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/resources.fidl;l=276)*
<p>A StereoCamera is a Camera that renders the scene in side-by-side stereo.</p>
<p>Any command which can be applied to a Camera can also be applied to a
StereoCamera.
Additional supported commands:</p>
<ul>
<li>SetStereoCameraProjection</li>
</ul>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="StereoCameraArgs.scene_id">
<td><code>scene_id</code></td>
<td>
<code>uint32</code>
</td>
<td><p>The scene that the camera is viewing.</p>
</td>
<td>No default</td>
</tr>
</table>
### TakeSnapshotCmdDEPRECATED [resource](/fuchsia-src/reference/fidl/language/language.md#value-vs-resource){:.fidl-attribute} {#TakeSnapshotCmdDEPRECATED data-text="TakeSnapshotCmdDEPRECATED"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=413)*
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="TakeSnapshotCmdDEPRECATED.node_id">
<td><code>node_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="TakeSnapshotCmdDEPRECATED.callback">
<td><code>callback</code></td>
<td>
<code><a class='link' href='#SnapshotCallbackDEPRECATED'>SnapshotCallbackDEPRECATED</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### VariableArgs {#VariableArgs data-text="VariableArgs"}
*Defined in [fuchsia.ui.gfx/resources.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/resources.fidl;l=347)*
<p>Describes a typed, client-modifiable value.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="VariableArgs.type">
<td><code>type</code></td>
<td>
<code><a class='link' href='#ValueType'>ValueType</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="VariableArgs.initial_value">
<td><code>initial_value</code></td>
<td>
<code><a class='link' href='#Value'>Value</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### Vector2Value {#Vector2Value data-text="Vector2Value"}
*Defined in [fuchsia.ui.gfx/types.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/types.fidl;l=96)*
<p>A value that is specified explicitly by <code>value</code> if <code>variable_id</code> is zero,
or is the value produced by the resource identified by <code>variable_id</code>, e.g.
an animation or expression. In the latter case, the value produced by the
resource must be a vec2, and <code>value</code> is ignored.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="Vector2Value.value">
<td><code>value</code></td>
<td>
<code><a class='link' href='#vec2'>vec2</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="Vector2Value.variable_id">
<td><code>variable_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### Vector3Value {#Vector3Value data-text="Vector3Value"}
*Defined in [fuchsia.ui.gfx/types.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/types.fidl;l=105)*
<p>A value that is specified explicitly by <code>value</code> if <code>variable_id</code> is zero,
or is the value produced by the resource identified by <code>variable_id</code>, e.g.
an animation or expression. In the latter case, the value produced by the
resource must be a vec3, and <code>value</code> is ignored.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="Vector3Value.value">
<td><code>value</code></td>
<td>
<code><a class='link' href='#vec3'>vec3</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="Vector3Value.variable_id">
<td><code>variable_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### Vector4Value {#Vector4Value data-text="Vector4Value"}
*Defined in [fuchsia.ui.gfx/types.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/types.fidl;l=114)*
<p>A value that is specified explicitly by <code>value</code> if <code>variable_id</code> is zero,
or is the value produced by the resource identified by <code>variable_id</code>, e.g.
an animation or expression. In the latter case, the value produced by the
resource must be a vec4, and <code>value</code> is ignored.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="Vector4Value.value">
<td><code>value</code></td>
<td>
<code><a class='link' href='#vec4'>vec4</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="Vector4Value.variable_id">
<td><code>variable_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### ViewArgs [resource](/fuchsia-src/reference/fidl/language/language.md#value-vs-resource){:.fidl-attribute} {#ViewArgs data-text="ViewArgs"}
*Defined in [fuchsia.ui.gfx/resources.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/resources.fidl;l=150)*
<p>Represents the root of a subgraph within a larger scene graph. Nodes can be
attached to the <code>View</code> as children, and these Nodes will have the <code>View</code>s'
coordinate transform applied to their own, in addition to being clipped to
the <code>View</code>s' bounding box.
See <code>ViewProperties</code>.</p>
<p>Each <code>View</code> is linked to a paired <code>ViewHolder</code> via a shared token pair.</p>
<p>Usually the <code>View</code> and its associated <code>ViewHolder</code> exist in separate
processes. By combining them, the UI for an entire system can be built
using content contributed from many different processes.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="ViewArgs.token">
<td><code>token</code></td>
<td>
<code><a class='link' href='../fuchsia.ui.views/'>fuchsia.ui.views</a>/<a class='link' href='../fuchsia.ui.views/#ViewToken'>ViewToken</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="ViewArgs.debug_name">
<td><code>debug_name</code></td>
<td>
<code>string?</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### ViewArgs3 [resource](/fuchsia-src/reference/fidl/language/language.md#value-vs-resource){:.fidl-attribute} {#ViewArgs3 data-text="ViewArgs3"}
*Defined in [fuchsia.ui.gfx/resources.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/resources.fidl;l=172)*
<p>Represents the root of a subgraph within a larger scene graph. Nodes can be
attached to the <code>View</code> as children, and these Nodes will have the <code>View</code>s'
coordinate transform applied to their own, in addition to being clipped to
the <code>View</code>s' bounding box.
See <code>ViewProperties</code>.</p>
<p>Each <code>View</code> is linked to a paired <code>ViewHolder</code> via a shared token pair.</p>
<p>Usually the <code>View</code> and its associated <code>ViewHolder</code> exist in separate
processes. By combining them, the UI for an entire system can be built
using content contributed from many different processes.</p>
<p>Clients self-identify their <code>View</code> with a <code>ViewRef</code>, which is a stable
identifier that may be cloned and passed to other components in a
feed-forward style. It is accompanied by a <code>ViewRefControl</code>, which Scenic
uses to signal <code>View</code> destruction across the system; the <code>ViewRefControl</code>
must be unique - do not clone it.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="ViewArgs3.token">
<td><code>token</code></td>
<td>
<code><a class='link' href='../fuchsia.ui.views/'>fuchsia.ui.views</a>/<a class='link' href='../fuchsia.ui.views/#ViewToken'>ViewToken</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="ViewArgs3.control_ref">
<td><code>control_ref</code></td>
<td>
<code><a class='link' href='../fuchsia.ui.views/'>fuchsia.ui.views</a>/<a class='link' href='../fuchsia.ui.views/#ViewRefControl'>ViewRefControl</a></code>
</td>
<td><p><code>control_ref.reference</code> must have default eventpair rights (i.e., with
signaling), minus ZX_RIGHT_DUPLICATE.</p>
</td>
<td>No default</td>
</tr>
<tr id="ViewArgs3.view_ref">
<td><code>view_ref</code></td>
<td>
<code><a class='link' href='../fuchsia.ui.views/'>fuchsia.ui.views</a>/<a class='link' href='../fuchsia.ui.views/#ViewRef'>ViewRef</a></code>
</td>
<td><p><code>view_ref.reference</code> must have basic rights (i.e., no signaling).</p>
</td>
<td>No default</td>
</tr>
<tr id="ViewArgs3.debug_name">
<td><code>debug_name</code></td>
<td>
<code>string?</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### ViewAttachedToSceneEvent {#ViewAttachedToSceneEvent data-text="ViewAttachedToSceneEvent"}
*Defined in [fuchsia.ui.gfx/events.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/events.fidl;l=106)*
<p>Delivered to a View's Session when the parent ViewHolder for the given View
becomes a part of a Scene.</p>
<p>A ViewHolder is considered to be part of a Scene if there is an unbroken
chain of parent-child relationships between the Scene node and the
ViewHolder node.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="ViewAttachedToSceneEvent.view_id">
<td><code>view_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="ViewAttachedToSceneEvent.properties">
<td><code>properties</code></td>
<td>
<code><a class='link' href='#ViewProperties'>ViewProperties</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### ViewConnectedEvent {#ViewConnectedEvent data-text="ViewConnectedEvent"}
*Defined in [fuchsia.ui.gfx/events.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/events.fidl;l=70)*
<p>Delivered to a ViewHolder's Session when its peer View is connected.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="ViewConnectedEvent.view_holder_id">
<td><code>view_holder_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### ViewDetachedFromSceneEvent {#ViewDetachedFromSceneEvent data-text="ViewDetachedFromSceneEvent"}
*Defined in [fuchsia.ui.gfx/events.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/events.fidl;l=120)*
<p>Delivered to a View's Session when the parent ViewHolder for the given View
is no longer part of a scene.</p>
<p>This can happen if the ViewHolder is detached directly from the scene, or
if one of its parent nodes is.</p>
<p>A ViewHolder is considered to be part of a Scene if there is an unbroken
chain of parent-child relationships between the Scene node and the
ViewHolder node.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="ViewDetachedFromSceneEvent.view_id">
<td><code>view_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### ViewDisconnectedEvent {#ViewDisconnectedEvent data-text="ViewDisconnectedEvent"}
*Defined in [fuchsia.ui.gfx/events.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/events.fidl;l=79)*
<p>Delivered to a ViewHolder's Session when its peer View is disconnected or
destroyed.</p>
<p>If the View is destroyed before the connection is established, then this
event will be delivered immediately when the ViewHolder attempts to connect.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="ViewDisconnectedEvent.view_holder_id">
<td><code>view_holder_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### ViewHolderArgs [resource](/fuchsia-src/reference/fidl/language/language.md#value-vs-resource){:.fidl-attribute} {#ViewHolderArgs data-text="ViewHolderArgs"}
*Defined in [fuchsia.ui.gfx/resources.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/resources.fidl;l=191)*
<p>Represents an attachment point for a subgraph within a larger scene graph.
The <code>ViewHolder</code> can be attached to a Node as a child, and the contents of
the linked <code>View</code> will become a child of the Node as well.</p>
<p>Each <code>ViewHolder</code> is linked to a paired <code>View</code> via a shared token pair.</p>
<p>Usually the <code>ViewHolder</code> and its associated <code>View</code> exist in separate
processes. By combining them, the UI for an entire system can be built
using content contributed from many different processes.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="ViewHolderArgs.token">
<td><code>token</code></td>
<td>
<code><a class='link' href='../fuchsia.ui.views/'>fuchsia.ui.views</a>/<a class='link' href='../fuchsia.ui.views/#ViewHolderToken'>ViewHolderToken</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="ViewHolderArgs.debug_name">
<td><code>debug_name</code></td>
<td>
<code>string?</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### ViewHolderConnectedEvent {#ViewHolderConnectedEvent data-text="ViewHolderConnectedEvent"}
*Defined in [fuchsia.ui.gfx/events.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/events.fidl;l=96)*
<p>Delivered to a View's Session when its peer ViewHolder is connected.</p>
<p>If the ViewHolder is destroyed before the connection is established, then
this event will not be delivered.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="ViewHolderConnectedEvent.view_id">
<td><code>view_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### ViewHolderDisconnectedEvent {#ViewHolderDisconnectedEvent data-text="ViewHolderDisconnectedEvent"}
*Defined in [fuchsia.ui.gfx/events.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/events.fidl;l=88)*
<p>Delivered to a View's Session when its peer ViewHolder is disconnected or
destroyed.</p>
<p>If the ViewHolder is destroyed before the connection is established, then
this event will be delivered immediately when the View attempts to connect.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="ViewHolderDisconnectedEvent.view_id">
<td><code>view_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### ViewProperties {#ViewProperties data-text="ViewProperties"}
*Defined in [fuchsia.ui.gfx/types.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/types.fidl;l=219)*
<p>Represents the properties for a View.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="ViewProperties.bounding_box">
<td><code>bounding_box</code></td>
<td>
<code><a class='link' href='#BoundingBox'>BoundingBox</a></code>
</td>
<td><p>The View's bounding box extents can be defined as:
{ bounding_box.min, bounding_box.max }
Content contained within the View is clipped to this bounding box.</p>
</td>
<td>No default</td>
</tr>
<tr id="ViewProperties.inset_from_min">
<td><code>inset_from_min</code></td>
<td>
<code><a class='link' href='#vec3'>vec3</a></code>
</td>
<td><p><code>insets_from_min</code> and <code>insets_from_max</code> specify the distances between the
view's bounding box and that of its parent.</p>
<p>These properties are not strictly enforced by Scenic, but only used
as hints for clients and other components that receives ViewProperties:</p>
<p>View clients can assume that anything drawn outside of
{ bounding_box.min + inset_from_min, bounding_box.max - inset_from_max }
may be obscured by an ancestor view. The reason for obscuring, and the rules
surrounding it, is specific to each product.</p>
</td>
<td>No default</td>
</tr>
<tr id="ViewProperties.inset_from_max">
<td><code>inset_from_max</code></td>
<td>
<code><a class='link' href='#vec3'>vec3</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="ViewProperties.focus_change">
<td><code>focus_change</code></td>
<td>
<code>bool</code>
</td>
<td><p>Whether the View can receive a focus event; default is true. When
false, and this View is eligible to receive a focus event, no
focus/unfocus event is actually sent to any View.</p>
</td>
<td>true</td>
</tr>
<tr id="ViewProperties.downward_input">
<td><code>downward_input</code></td>
<td>
<code>bool</code>
</td>
<td><p>Whether the View allows geometrically underlying Views to receive input;
default is true. When false, Scenic does not send input events to
underlying Views.</p>
</td>
<td>true</td>
</tr>
</table>
### ViewPropertiesChangedEvent {#ViewPropertiesChangedEvent data-text="ViewPropertiesChangedEvent"}
*Defined in [fuchsia.ui.gfx/events.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/events.fidl;l=126)*
<p>Delivered when the parent ViewHolder for the given View makes a change to
the View's properties.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="ViewPropertiesChangedEvent.view_id">
<td><code>view_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="ViewPropertiesChangedEvent.properties">
<td><code>properties</code></td>
<td>
<code><a class='link' href='#ViewProperties'>ViewProperties</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### ViewState {#ViewState data-text="ViewState"}
*Defined in [fuchsia.ui.gfx/types.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/types.fidl;l=256)*
<p>Represents the state of a View in Scenic.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="ViewState.is_rendering">
<td><code>is_rendering</code></td>
<td>
<code>bool</code>
</td>
<td><p>Whether the View is rendering. Default is false. Delivered to the View's
corresponding ViewHolder after the View's first frame render request.</p>
</td>
<td>No default</td>
</tr>
</table>
### ViewStateChangedEvent {#ViewStateChangedEvent data-text="ViewStateChangedEvent"}
*Defined in [fuchsia.ui.gfx/events.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/events.fidl;l=132)*
<p>Delivered to a ViewHolder's Session when its peer View's state has changed.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="ViewStateChangedEvent.view_holder_id">
<td><code>view_holder_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="ViewStateChangedEvent.state">
<td><code>state</code></td>
<td>
<code><a class='link' href='#ViewState'>ViewState</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### mat4 {#mat4 data-text="mat4"}
*Defined in [fuchsia.ui.gfx/types.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/types.fidl;l=24)*
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="mat4.matrix">
<td><code>matrix</code></td>
<td>
<code>float32[16]</code>
</td>
<td><p>Column major order.</p>
</td>
<td>No default</td>
</tr>
</table>
### vec2 {#vec2 data-text="vec2"}
*Defined in [fuchsia.ui.gfx/types.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/types.fidl;l=6)*
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="vec2.x">
<td><code>x</code></td>
<td>
<code>float32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="vec2.y">
<td><code>y</code></td>
<td>
<code>float32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### vec3 {#vec3 data-text="vec3"}
*Defined in [fuchsia.ui.gfx/types.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/types.fidl;l=11)*
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="vec3.x">
<td><code>x</code></td>
<td>
<code>float32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="vec3.y">
<td><code>y</code></td>
<td>
<code>float32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="vec3.z">
<td><code>z</code></td>
<td>
<code>float32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### vec4 {#vec4 data-text="vec4"}
*Defined in [fuchsia.ui.gfx/types.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/types.fidl;l=17)*
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="vec4.x">
<td><code>x</code></td>
<td>
<code>float32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="vec4.y">
<td><code>y</code></td>
<td>
<code>float32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="vec4.z">
<td><code>z</code></td>
<td>
<code>float32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="vec4.w">
<td><code>w</code></td>
<td>
<code>float32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
## **ENUMS**
### HitTestBehavior [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#HitTestBehavior data-text="HitTestBehavior"}
Type: <code>uint32</code>
*Defined in [fuchsia.ui.gfx/types.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/types.fidl;l=169)*
<p>Describes how nodes interact with hit testings.</p>
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="HitTestBehavior.kDefault">
<td><h3 id="HitTestBehavior.kDefault" class="add-link hide-from-toc">kDefault</h3></td>
<td><code>0</code></td>
<td><p>Apply hit testing to the node's content, its parts, and its children.</p>
</td>
</tr>
<tr id="HitTestBehavior.kSuppress">
<td><h3 id="HitTestBehavior.kSuppress" class="add-link hide-from-toc">kSuppress</h3></td>
<td><code>1</code></td>
<td><p>Suppress hit testing of the node and everything it contains.</p>
</td>
</tr>
</table>
### ImportSpec [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#ImportSpec data-text="ImportSpec"}
Type: <code>uint32</code>
*Defined in [fuchsia.ui.gfx/resources.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/resources.fidl;l=357)*
<p>Describes an exported resource that is to be imported by an
ImportResourceCmd.</p>
<p>NOTE: Currently just an enum of importable resource types, but may later be
expanded to express concepts like &quot;meshes with a particular vertex format&quot;.</p>
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="ImportSpec.NODE">
<td><h3 id="ImportSpec.NODE" class="add-link hide-from-toc">NODE</h3></td>
<td><code>0</code></td>
<td></td>
</tr>
</table>
### MeshIndexFormat [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#MeshIndexFormat data-text="MeshIndexFormat"}
Type: <code>uint32</code>
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=644)*
<p>Set a mesh's indices and vertices.</p>
<p><code>mesh_id</code> refs the Mesh to be updated.
<code>index_buffer_id</code> refs a Buffer that contains the mesh indices.
<code>index_format</code> defines how the index buffer data is to be interpreted.
<code>index_offset</code> number of bytes from the start of the index Buffer.
<code>index_count</code> number of indices.
<code>vertex_buffer_id</code> refs a Buffer that contains the mesh vertices.
<code>vertex_format</code> defines how the vertex buffer data is to be interpreted.
<code>vertex_offset</code> number of bytes from the start of the vertex Buffer.
<code>vertex_count</code> number of vertices.
<code>bounding_box</code> must contain all vertices within the specified range.</p>
<p>The MeshVertexFormat defines which per-vertex attributes are provided by the
mesh, and the size of each attribute (and therefore the size of each vertex).
The attributes are ordered within the vertex in the same order that they
appear within the MeshVertexFormat struct. For example, if the values are
kVector3, kNone and kVector2, then:</p>
<ul>
<li>each vertex has a position and UV-coordinates, but no surface normal.</li>
<li>the 3D position occupies bytes 0-11 (3 dimensions * 4 bytes per float32).</li>
<li>the UV coords occupy bytes 12-19, since no surface normal is provided.</li>
</ul>
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="MeshIndexFormat.kUint16">
<td><h3 id="MeshIndexFormat.kUint16" class="add-link hide-from-toc">kUint16</h3></td>
<td><code>1</code></td>
<td></td>
</tr>
<tr id="MeshIndexFormat.kUint32">
<td><h3 id="MeshIndexFormat.kUint32" class="add-link hide-from-toc">kUint32</h3></td>
<td><code>2</code></td>
<td></td>
</tr>
</table>
### RenderFrequency [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#RenderFrequency data-text="RenderFrequency"}
Type: <code>uint32</code>
*Defined in [fuchsia.ui.gfx/renderer.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/renderer.fidl;l=32)*
<p><b>DEPRECATED </b></p>
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="RenderFrequency.WHEN_REQUESTED">
<td><h3 id="RenderFrequency.WHEN_REQUESTED" class="add-link hide-from-toc">WHEN_REQUESTED</h3></td>
<td><code>0</code></td>
<td></td>
</tr>
<tr id="RenderFrequency.CONTINUOUSLY">
<td><h3 id="RenderFrequency.CONTINUOUSLY" class="add-link hide-from-toc">CONTINUOUSLY</h3></td>
<td><code>1</code></td>
<td></td>
</tr>
</table>
### ShadowTechnique [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#ShadowTechnique data-text="ShadowTechnique"}
Type: <code>uint32</code>
*Defined in [fuchsia.ui.gfx/renderer.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/renderer.fidl;l=18)*
<p>Represents the shadow algorithm that the <code>Renderer</code> should use when lighting
the scene.</p>
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="ShadowTechnique.UNSHADOWED">
<td><h3 id="ShadowTechnique.UNSHADOWED" class="add-link hide-from-toc">UNSHADOWED</h3></td>
<td><code>0</code></td>
<td><p>No shadows.</p>
</td>
</tr>
<tr id="ShadowTechnique.SCREEN_SPACE">
<td><h3 id="ShadowTechnique.SCREEN_SPACE" class="add-link hide-from-toc">SCREEN_SPACE</h3></td>
<td><code>1</code></td>
<td><p>Default. Screen-space, depth-buffer based shadows; SSDO-ish.</p>
</td>
</tr>
<tr id="ShadowTechnique.SHADOW_MAP">
<td><h3 id="ShadowTechnique.SHADOW_MAP" class="add-link hide-from-toc">SHADOW_MAP</h3></td>
<td><code>2</code></td>
<td><p>Basic shadow map.</p>
</td>
</tr>
<tr id="ShadowTechnique.MOMENT_SHADOW_MAP">
<td><h3 id="ShadowTechnique.MOMENT_SHADOW_MAP" class="add-link hide-from-toc">MOMENT_SHADOW_MAP</h3></td>
<td><code>3</code></td>
<td><p>Moment shadow map (see http:///momentsingraphics.de).</p>
</td>
</tr>
<tr id="ShadowTechnique.STENCIL_SHADOW_VOLUME">
<td><h3 id="ShadowTechnique.STENCIL_SHADOW_VOLUME" class="add-link hide-from-toc">STENCIL_SHADOW_VOLUME</h3></td>
<td><code>4</code></td>
<td><p>Stencil shadow volume.</p>
</td>
</tr>
</table>
### ValueType [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#ValueType data-text="ValueType"}
Type: <code>uint32</code>
*Defined in [fuchsia.ui.gfx/types.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/types.fidl;l=155)*
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="ValueType.kNone">
<td><h3 id="ValueType.kNone" class="add-link hide-from-toc">kNone</h3></td>
<td><code>0</code></td>
<td></td>
</tr>
<tr id="ValueType.kVector1">
<td><h3 id="ValueType.kVector1" class="add-link hide-from-toc">kVector1</h3></td>
<td><code>1</code></td>
<td></td>
</tr>
<tr id="ValueType.kVector2">
<td><h3 id="ValueType.kVector2" class="add-link hide-from-toc">kVector2</h3></td>
<td><code>2</code></td>
<td></td>
</tr>
<tr id="ValueType.kVector3">
<td><h3 id="ValueType.kVector3" class="add-link hide-from-toc">kVector3</h3></td>
<td><code>3</code></td>
<td></td>
</tr>
<tr id="ValueType.kVector4">
<td><h3 id="ValueType.kVector4" class="add-link hide-from-toc">kVector4</h3></td>
<td><code>4</code></td>
<td></td>
</tr>
<tr id="ValueType.kMatrix4">
<td><h3 id="ValueType.kMatrix4" class="add-link hide-from-toc">kMatrix4</h3></td>
<td><code>5</code></td>
<td></td>
</tr>
<tr id="ValueType.kColorRgb">
<td><h3 id="ValueType.kColorRgb" class="add-link hide-from-toc">kColorRgb</h3></td>
<td><code>6</code></td>
<td></td>
</tr>
<tr id="ValueType.kColorRgba">
<td><h3 id="ValueType.kColorRgba" class="add-link hide-from-toc">kColorRgba</h3></td>
<td><code>7</code></td>
<td></td>
</tr>
<tr id="ValueType.kQuaternion">
<td><h3 id="ValueType.kQuaternion" class="add-link hide-from-toc">kQuaternion</h3></td>
<td><code>8</code></td>
<td></td>
</tr>
<tr id="ValueType.kFactoredTransform">
<td><h3 id="ValueType.kFactoredTransform" class="add-link hide-from-toc">kFactoredTransform</h3></td>
<td><code>9</code></td>
<td></td>
</tr>
</table>
## **UNIONS**
### Command [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} [resource](/fuchsia-src/reference/fidl/language/language.md#value-vs-resource){:.fidl-attribute} {#Command data-text="Command"}
*Defined in [fuchsia.ui.gfx/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=10)*
<p>Commands that are used to modify the state of a <code>Session</code>.</p>
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="Command.create_resource">
<td><h3 id="Command.create_resource" class="add-link hide-from-toc">1</h3></td>
<td><code>create_resource</code></td>
<td>
<code><a class='link' href='#CreateResourceCmd'>CreateResourceCmd</a></code>
</td>
<td></td>
</tr>
<tr id="Command.release_resource">
<td><h3 id="Command.release_resource" class="add-link hide-from-toc">2</h3></td>
<td><code>release_resource</code></td>
<td>
<code><a class='link' href='#ReleaseResourceCmd'>ReleaseResourceCmd</a></code>
</td>
<td></td>
</tr>
<tr id="Command.export_resource">
<td><h3 id="Command.export_resource" class="add-link hide-from-toc">3</h3></td>
<td><code>export_resource</code></td>
<td>
<code><a class='link' href='#ExportResourceCmdDeprecated'>ExportResourceCmdDeprecated</a></code>
</td>
<td></td>
</tr>
<tr id="Command.import_resource">
<td><h3 id="Command.import_resource" class="add-link hide-from-toc">4</h3></td>
<td><code>import_resource</code></td>
<td>
<code><a class='link' href='#ImportResourceCmdDeprecated'>ImportResourceCmdDeprecated</a></code>
</td>
<td></td>
</tr>
<tr id="Command.set_tag">
<td><h3 id="Command.set_tag" class="add-link hide-from-toc">5</h3></td>
<td><code>set_tag</code></td>
<td>
<code><a class='link' href='#SetTagCmd'>SetTagCmd</a></code>
</td>
<td><p>Tagging commands.</p>
</td>
</tr>
<tr id="Command.detach">
<td><h3 id="Command.detach" class="add-link hide-from-toc">6</h3></td>
<td><code>detach</code></td>
<td>
<code><a class='link' href='#DetachCmd'>DetachCmd</a></code>
</td>
<td><p>Grouping commands.</p>
</td>
</tr>
<tr id="Command.set_translation">
<td><h3 id="Command.set_translation" class="add-link hide-from-toc">7</h3></td>
<td><code>set_translation</code></td>
<td>
<code><a class='link' href='#SetTranslationCmd'>SetTranslationCmd</a></code>
</td>
<td><p>Spatial commands.</p>
</td>
</tr>
<tr id="Command.set_scale">
<td><h3 id="Command.set_scale" class="add-link hide-from-toc">8</h3></td>
<td><code>set_scale</code></td>
<td>
<code><a class='link' href='#SetScaleCmd'>SetScaleCmd</a></code>
</td>
<td></td>
</tr>
<tr id="Command.set_rotation">
<td><h3 id="Command.set_rotation" class="add-link hide-from-toc">9</h3></td>
<td><code>set_rotation</code></td>
<td>
<code><a class='link' href='#SetRotationCmd'>SetRotationCmd</a></code>
</td>
<td></td>
</tr>
<tr id="Command.set_anchor">
<td><h3 id="Command.set_anchor" class="add-link hide-from-toc">10</h3></td>
<td><code>set_anchor</code></td>
<td>
<code><a class='link' href='#SetAnchorCmd'>SetAnchorCmd</a></code>
</td>
<td></td>
</tr>
<tr id="Command.set_size">
<td><h3 id="Command.set_size" class="add-link hide-from-toc">11</h3></td>
<td><code>set_size</code></td>
<td>
<code><a class='link' href='#SetSizeCmd'>SetSizeCmd</a></code>
</td>
<td></td>
</tr>
<tr id="Command.set_opacity">
<td><h3 id="Command.set_opacity" class="add-link hide-from-toc">12</h3></td>
<td><code>set_opacity</code></td>
<td>
<code><a class='link' href='#SetOpacityCmd'>SetOpacityCmd</a></code>
</td>
<td></td>
</tr>
<tr id="Command.send_size_change_hint_hack">
<td><h3 id="Command.send_size_change_hint_hack" class="add-link hide-from-toc">13</h3></td>
<td><code>send_size_change_hint_hack</code></td>
<td>
<code><a class='link' href='#SendSizeChangeHintCmdHACK'>SendSizeChangeHintCmdHACK</a></code>
</td>
<td></td>
</tr>
<tr id="Command.add_child">
<td><h3 id="Command.add_child" class="add-link hide-from-toc">14</h3></td>
<td><code>add_child</code></td>
<td>
<code><a class='link' href='#AddChildCmd'>AddChildCmd</a></code>
</td>
<td><p>Node-specific commands.</p>
</td>
</tr>
<tr id="Command.add_part">
<td><h3 id="Command.add_part" class="add-link hide-from-toc">15</h3></td>
<td><code>add_part</code></td>
<td>
<code><a class='link' href='#AddPartCmd'>AddPartCmd</a></code>
</td>
<td><p>re-parenting?</p>
</td>
</tr>
<tr id="Command.detach_children">
<td><h3 id="Command.detach_children" class="add-link hide-from-toc">16</h3></td>
<td><code>detach_children</code></td>
<td>
<code><a class='link' href='#DetachChildrenCmd'>DetachChildrenCmd</a></code>
</td>
<td></td>
</tr>
<tr id="Command.set_shape">
<td><h3 id="Command.set_shape" class="add-link hide-from-toc">17</h3></td>
<td><code>set_shape</code></td>
<td>
<code><a class='link' href='#SetShapeCmd'>SetShapeCmd</a></code>
</td>
<td></td>
</tr>
<tr id="Command.set_material">
<td><h3 id="Command.set_material" class="add-link hide-from-toc">18</h3></td>
<td><code>set_material</code></td>
<td>
<code><a class='link' href='#SetMaterialCmd'>SetMaterialCmd</a></code>
</td>
<td></td>
</tr>
<tr id="Command.set_clip">
<td><h3 id="Command.set_clip" class="add-link hide-from-toc">19</h3></td>
<td><code>set_clip</code></td>
<td>
<code><a class='link' href='#SetClipCmd'>SetClipCmd</a></code>
</td>
<td></td>
</tr>
<tr id="Command.set_hit_test_behavior">
<td><h3 id="Command.set_hit_test_behavior" class="add-link hide-from-toc">20</h3></td>
<td><code>set_hit_test_behavior</code></td>
<td>
<code><a class='link' href='#SetHitTestBehaviorCmd'>SetHitTestBehaviorCmd</a></code>
</td>
<td></td>
</tr>
<tr id="Command.set_view_properties">
<td><h3 id="Command.set_view_properties" class="add-link hide-from-toc">21</h3></td>
<td><code>set_view_properties</code></td>
<td>
<code><a class='link' href='#SetViewPropertiesCmd'>SetViewPropertiesCmd</a></code>
</td>
<td></td>
</tr>
<tr id="Command.take_snapshot_cmd">
<td><h3 id="Command.take_snapshot_cmd" class="add-link hide-from-toc">22</h3></td>
<td><code>take_snapshot_cmd</code></td>
<td>
<code><a class='link' href='#TakeSnapshotCmdDEPRECATED'>TakeSnapshotCmdDEPRECATED</a></code>
</td>
<td></td>
</tr>
<tr id="Command.set_camera">
<td><h3 id="Command.set_camera" class="add-link hide-from-toc">23</h3></td>
<td><code>set_camera</code></td>
<td>
<code><a class='link' href='#SetCameraCmd'>SetCameraCmd</a></code>
</td>
<td><p>Camera and lighting commands.</p>
</td>
</tr>
<tr id="Command.set_camera_transform">
<td><h3 id="Command.set_camera_transform" class="add-link hide-from-toc">24</h3></td>
<td><code>set_camera_transform</code></td>
<td>
<code><a class='link' href='#SetCameraTransformCmd'>SetCameraTransformCmd</a></code>
</td>
<td></td>
</tr>
<tr id="Command.set_camera_projection">
<td><h3 id="Command.set_camera_projection" class="add-link hide-from-toc">25</h3></td>
<td><code>set_camera_projection</code></td>
<td>
<code><a class='link' href='#SetCameraProjectionCmd'>SetCameraProjectionCmd</a></code>
</td>
<td></td>
</tr>
<tr id="Command.set_stereo_camera_projection">
<td><h3 id="Command.set_stereo_camera_projection" class="add-link hide-from-toc">26</h3></td>
<td><code>set_stereo_camera_projection</code></td>
<td>
<code><a class='link' href='#SetStereoCameraProjectionCmd'>SetStereoCameraProjectionCmd</a></code>
</td>
<td></td>
</tr>
<tr id="Command.set_camera_pose_buffer">
<td><h3 id="Command.set_camera_pose_buffer" class="add-link hide-from-toc">27</h3></td>
<td><code>set_camera_pose_buffer</code></td>
<td>
<code><a class='link' href='#SetCameraPoseBufferCmd'>SetCameraPoseBufferCmd</a></code>
</td>
<td></td>
</tr>
<tr id="Command.set_light_color">
<td><h3 id="Command.set_light_color" class="add-link hide-from-toc">28</h3></td>
<td><code>set_light_color</code></td>
<td>
<code><a class='link' href='#SetLightColorCmd'>SetLightColorCmd</a></code>
</td>
<td></td>
</tr>
<tr id="Command.set_light_direction">
<td><h3 id="Command.set_light_direction" class="add-link hide-from-toc">29</h3></td>
<td><code>set_light_direction</code></td>
<td>
<code><a class='link' href='#SetLightDirectionCmd'>SetLightDirectionCmd</a></code>
</td>
<td></td>
</tr>
<tr id="Command.add_light">
<td><h3 id="Command.add_light" class="add-link hide-from-toc">30</h3></td>
<td><code>add_light</code></td>
<td>
<code><a class='link' href='#AddLightCmd'>AddLightCmd</a></code>
</td>
<td></td>
</tr>
<tr id="Command.detach_light">
<td><h3 id="Command.detach_light" class="add-link hide-from-toc">31</h3></td>
<td><code>detach_light</code></td>
<td>
<code><a class='link' href='#DetachLightCmd'>DetachLightCmd</a></code>
</td>
<td></td>
</tr>
<tr id="Command.detach_lights">
<td><h3 id="Command.detach_lights" class="add-link hide-from-toc">32</h3></td>
<td><code>detach_lights</code></td>
<td>
<code><a class='link' href='#DetachLightsCmd'>DetachLightsCmd</a></code>
</td>
<td></td>
</tr>
<tr id="Command.set_texture">
<td><h3 id="Command.set_texture" class="add-link hide-from-toc">33</h3></td>
<td><code>set_texture</code></td>
<td>
<code><a class='link' href='#SetTextureCmd'>SetTextureCmd</a></code>
</td>
<td></td>
</tr>
<tr id="Command.set_color">
<td><h3 id="Command.set_color" class="add-link hide-from-toc">34</h3></td>
<td><code>set_color</code></td>
<td>
<code><a class='link' href='#SetColorCmd'>SetColorCmd</a></code>
</td>
<td></td>
</tr>
<tr id="Command.bind_mesh_buffers">
<td><h3 id="Command.bind_mesh_buffers" class="add-link hide-from-toc">35</h3></td>
<td><code>bind_mesh_buffers</code></td>
<td>
<code><a class='link' href='#BindMeshBuffersCmd'>BindMeshBuffersCmd</a></code>
</td>
<td><p>Mesh commands.</p>
</td>
</tr>
<tr id="Command.add_layer">
<td><h3 id="Command.add_layer" class="add-link hide-from-toc">36</h3></td>
<td><code>add_layer</code></td>
<td>
<code><a class='link' href='#AddLayerCmd'>AddLayerCmd</a></code>
</td>
<td><p>Layer and renderer commands.</p>
</td>
</tr>
<tr id="Command.remove_layer">
<td><h3 id="Command.remove_layer" class="add-link hide-from-toc">37</h3></td>
<td><code>remove_layer</code></td>
<td>
<code><a class='link' href='#RemoveLayerCmd'>RemoveLayerCmd</a></code>
</td>
<td></td>
</tr>
<tr id="Command.remove_all_layers">
<td><h3 id="Command.remove_all_layers" class="add-link hide-from-toc">38</h3></td>
<td><code>remove_all_layers</code></td>
<td>
<code><a class='link' href='#RemoveAllLayersCmd'>RemoveAllLayersCmd</a></code>
</td>
<td></td>
</tr>
<tr id="Command.set_layer_stack">
<td><h3 id="Command.set_layer_stack" class="add-link hide-from-toc">39</h3></td>
<td><code>set_layer_stack</code></td>
<td>
<code><a class='link' href='#SetLayerStackCmd'>SetLayerStackCmd</a></code>
</td>
<td></td>
</tr>
<tr id="Command.set_renderer">
<td><h3 id="Command.set_renderer" class="add-link hide-from-toc">40</h3></td>
<td><code>set_renderer</code></td>
<td>
<code><a class='link' href='#SetRendererCmd'>SetRendererCmd</a></code>
</td>
<td></td>
</tr>
<tr id="Command.set_renderer_param">
<td><h3 id="Command.set_renderer_param" class="add-link hide-from-toc">41</h3></td>
<td><code>set_renderer_param</code></td>
<td>
<code><a class='link' href='#SetRendererParamCmd'>SetRendererParamCmd</a></code>
</td>
<td></td>
</tr>
<tr id="Command.set_event_mask">
<td><h3 id="Command.set_event_mask" class="add-link hide-from-toc">42</h3></td>
<td><code>set_event_mask</code></td>
<td>
<code><a class='link' href='#SetEventMaskCmd'>SetEventMaskCmd</a></code>
</td>
<td><p>Events.</p>
</td>
</tr>
<tr id="Command.set_label">
<td><h3 id="Command.set_label" class="add-link hide-from-toc">43</h3></td>
<td><code>set_label</code></td>
<td>
<code><a class='link' href='#SetLabelCmd'>SetLabelCmd</a></code>
</td>
<td><p>Diagnostic commands.</p>
</td>
</tr>
<tr id="Command.set_disable_clipping">
<td><h3 id="Command.set_disable_clipping" class="add-link hide-from-toc">44</h3></td>
<td><code>set_disable_clipping</code></td>
<td>
<code><a class='link' href='#SetDisableClippingCmd'>SetDisableClippingCmd</a></code>
</td>
<td><p>Debugging commands.</p>
</td>
</tr>
<tr id="Command.set_import_focus">
<td><h3 id="Command.set_import_focus" class="add-link hide-from-toc">45</h3></td>
<td><code>set_import_focus</code></td>
<td>
<code><a class='link' href='#SetImportFocusCmdDEPRECATED'>SetImportFocusCmdDEPRECATED</a></code>
</td>
<td></td>
</tr>
<tr id="Command.set_clip_planes">
<td><h3 id="Command.set_clip_planes" class="add-link hide-from-toc">46</h3></td>
<td><code>set_clip_planes</code></td>
<td>
<code><a class='link' href='#SetClipPlanesCmd'>SetClipPlanesCmd</a></code>
</td>
<td></td>
</tr>
<tr id="Command.set_point_light_position">
<td><h3 id="Command.set_point_light_position" class="add-link hide-from-toc">47</h3></td>
<td><code>set_point_light_position</code></td>
<td>
<code><a class='link' href='#SetPointLightPositionCmd'>SetPointLightPositionCmd</a></code>
</td>
<td></td>
</tr>
<tr id="Command.set_point_light_falloff">
<td><h3 id="Command.set_point_light_falloff" class="add-link hide-from-toc">48</h3></td>
<td><code>set_point_light_falloff</code></td>
<td>
<code><a class='link' href='#SetPointLightFalloffCmd'>SetPointLightFalloffCmd</a></code>
</td>
<td></td>
</tr>
<tr id="Command.scene__add_ambient_light">
<td><h3 id="Command.scene__add_ambient_light" class="add-link hide-from-toc">49</h3></td>
<td><code>scene__add_ambient_light</code></td>
<td>
<code><a class='link' href='#SceneAddAmbientLightCmd'>SceneAddAmbientLightCmd</a></code>
</td>
<td></td>
</tr>
<tr id="Command.scene__add_directional_light">
<td><h3 id="Command.scene__add_directional_light" class="add-link hide-from-toc">50</h3></td>
<td><code>scene__add_directional_light</code></td>
<td>
<code><a class='link' href='#SceneAddDirectionalLightCmd'>SceneAddDirectionalLightCmd</a></code>
</td>
<td></td>
</tr>
<tr id="Command.scene__add_point_light">
<td><h3 id="Command.scene__add_point_light" class="add-link hide-from-toc">51</h3></td>
<td><code>scene__add_point_light</code></td>
<td>
<code><a class='link' href='#SceneAddPointLightCmd'>SceneAddPointLightCmd</a></code>
</td>
<td></td>
</tr>
<tr id="Command.set_display_color_conversion">
<td><h3 id="Command.set_display_color_conversion" class="add-link hide-from-toc">52</h3></td>
<td><code>set_display_color_conversion</code></td>
<td>
<code><a class='link' href='#SetDisplayColorConversionCmdHACK'>SetDisplayColorConversionCmdHACK</a></code>
</td>
<td></td>
</tr>
<tr id="Command.set_display_rotation">
<td><h3 id="Command.set_display_rotation" class="add-link hide-from-toc">53</h3></td>
<td><code>set_display_rotation</code></td>
<td>
<code><a class='link' href='#SetDisplayRotationCmdHACK'>SetDisplayRotationCmdHACK</a></code>
</td>
<td></td>
</tr>
<tr id="Command.set_enable_view_debug_bounds">
<td><h3 id="Command.set_enable_view_debug_bounds" class="add-link hide-from-toc">54</h3></td>
<td><code>set_enable_view_debug_bounds</code></td>
<td>
<code><a class='link' href='#SetEnableDebugViewBoundsCmd'>SetEnableDebugViewBoundsCmd</a></code>
</td>
<td></td>
</tr>
<tr id="Command.set_view_holder_bounds_color">
<td><h3 id="Command.set_view_holder_bounds_color" class="add-link hide-from-toc">55</h3></td>
<td><code>set_view_holder_bounds_color</code></td>
<td>
<code><a class='link' href='#SetViewHolderBoundsColorCmd'>SetViewHolderBoundsColorCmd</a></code>
</td>
<td></td>
</tr>
<tr id="Command.set_camera_clip_space_transform">
<td><h3 id="Command.set_camera_clip_space_transform" class="add-link hide-from-toc">56</h3></td>
<td><code>set_camera_clip_space_transform</code></td>
<td>
<code><a class='link' href='#SetCameraClipSpaceTransformCmd'>SetCameraClipSpaceTransformCmd</a></code>
</td>
<td></td>
</tr>
<tr id="Command.set_display_minimum_rgb">
<td><h3 id="Command.set_display_minimum_rgb" class="add-link hide-from-toc">57</h3></td>
<td><code>set_display_minimum_rgb</code></td>
<td>
<code><a class='link' href='#SetDisplayMinimumRgbCmdHACK'>SetDisplayMinimumRgbCmdHACK</a></code>
</td>
<td></td>
</tr>
<tr id="Command.set_semantic_visibility">
<td><h3 id="Command.set_semantic_visibility" class="add-link hide-from-toc">58</h3></td>
<td><code>set_semantic_visibility</code></td>
<td>
<code><a class='link' href='#SetSemanticVisibilityCmd'>SetSemanticVisibilityCmd</a></code>
</td>
<td></td>
</tr>
</table>
### Event [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#Event data-text="Event"}
*Defined in [fuchsia.ui.gfx/events.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/events.fidl;l=13)*
<p>These are all of the types of events which can be reported by a <code>Session</code>.
Use <code>SetEventMaskCmd</code> to enable event delivery for a resource.</p>
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="Event.metrics">
<td><h3 id="Event.metrics" class="add-link hide-from-toc">1</h3></td>
<td><code>metrics</code></td>
<td>
<code><a class='link' href='#MetricsEvent'>MetricsEvent</a></code>
</td>
<td><p>Events which are controlled by a mask.</p>
</td>
</tr>
<tr id="Event.size_change_hint">
<td><h3 id="Event.size_change_hint" class="add-link hide-from-toc">2</h3></td>
<td><code>size_change_hint</code></td>
<td>
<code><a class='link' href='#SizeChangeHintEvent'>SizeChangeHintEvent</a></code>
</td>
<td></td>
</tr>
<tr id="Event.import_unbound">
<td><h3 id="Event.import_unbound" class="add-link hide-from-toc">3</h3></td>
<td><code>import_unbound</code></td>
<td>
<code><a class='link' href='#ImportUnboundEvent'>ImportUnboundEvent</a></code>
</td>
<td><p>Events which are always delivered, regardless of mask.</p>
</td>
</tr>
<tr id="Event.view_connected">
<td><h3 id="Event.view_connected" class="add-link hide-from-toc">4</h3></td>
<td><code>view_connected</code></td>
<td>
<code><a class='link' href='#ViewConnectedEvent'>ViewConnectedEvent</a></code>
</td>
<td></td>
</tr>
<tr id="Event.view_disconnected">
<td><h3 id="Event.view_disconnected" class="add-link hide-from-toc">5</h3></td>
<td><code>view_disconnected</code></td>
<td>
<code><a class='link' href='#ViewDisconnectedEvent'>ViewDisconnectedEvent</a></code>
</td>
<td></td>
</tr>
<tr id="Event.view_holder_disconnected">
<td><h3 id="Event.view_holder_disconnected" class="add-link hide-from-toc">6</h3></td>
<td><code>view_holder_disconnected</code></td>
<td>
<code><a class='link' href='#ViewHolderDisconnectedEvent'>ViewHolderDisconnectedEvent</a></code>
</td>
<td></td>
</tr>
<tr id="Event.view_attached_to_scene">
<td><h3 id="Event.view_attached_to_scene" class="add-link hide-from-toc">7</h3></td>
<td><code>view_attached_to_scene</code></td>
<td>
<code><a class='link' href='#ViewAttachedToSceneEvent'>ViewAttachedToSceneEvent</a></code>
</td>
<td></td>
</tr>
<tr id="Event.view_detached_from_scene">
<td><h3 id="Event.view_detached_from_scene" class="add-link hide-from-toc">8</h3></td>
<td><code>view_detached_from_scene</code></td>
<td>
<code><a class='link' href='#ViewDetachedFromSceneEvent'>ViewDetachedFromSceneEvent</a></code>
</td>
<td></td>
</tr>
<tr id="Event.view_properties_changed">
<td><h3 id="Event.view_properties_changed" class="add-link hide-from-toc">9</h3></td>
<td><code>view_properties_changed</code></td>
<td>
<code><a class='link' href='#ViewPropertiesChangedEvent'>ViewPropertiesChangedEvent</a></code>
</td>
<td></td>
</tr>
<tr id="Event.view_state_changed">
<td><h3 id="Event.view_state_changed" class="add-link hide-from-toc">10</h3></td>
<td><code>view_state_changed</code></td>
<td>
<code><a class='link' href='#ViewStateChangedEvent'>ViewStateChangedEvent</a></code>
</td>
<td></td>
</tr>
<tr id="Event.view_holder_connected">
<td><h3 id="Event.view_holder_connected" class="add-link hide-from-toc">11</h3></td>
<td><code>view_holder_connected</code></td>
<td>
<code><a class='link' href='#ViewHolderConnectedEvent'>ViewHolderConnectedEvent</a></code>
</td>
<td></td>
</tr>
</table>
### RendererParam [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#RendererParam data-text="RendererParam"}
*Defined in [fuchsia.ui.gfx/renderer.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/renderer.fidl;l=8)*
<p>These are all of the types of parameters that can be set to configure a
<code>Renderer</code>.</p>
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="RendererParam.shadow_technique">
<td><h3 id="RendererParam.shadow_technique" class="add-link hide-from-toc">1</h3></td>
<td><code>shadow_technique</code></td>
<td>
<code><a class='link' href='#ShadowTechnique'>ShadowTechnique</a></code>
</td>
<td></td>
</tr>
<tr id="RendererParam.reserved">
<td><h3 id="RendererParam.reserved" class="add-link hide-from-toc">2</h3></td>
<td><code>reserved</code></td>
<td>
<code><a class='link' href='#RenderFrequency'>RenderFrequency</a></code>
</td>
<td><p><b>DEPRECATED </b></p></td>
</tr>
<tr id="RendererParam.enable_debugging">
<td><h3 id="RendererParam.enable_debugging" class="add-link hide-from-toc">3</h3></td>
<td><code>enable_debugging</code></td>
<td>
<code>bool</code>
</td>
<td></td>
</tr>
</table>
### ResourceArgs [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} [resource](/fuchsia-src/reference/fidl/language/language.md#value-vs-resource){:.fidl-attribute} {#ResourceArgs data-text="ResourceArgs"}
*Defined in [fuchsia.ui.gfx/resources.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/resources.fidl;l=13)*
<p>These are all of the types of resources that can be created within a
<code>Session</code>. Add new fields only to the bottom of the list.</p>
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="ResourceArgs.memory">
<td><h3 id="ResourceArgs.memory" class="add-link hide-from-toc">1</h3></td>
<td><code>memory</code></td>
<td>
<code><a class='link' href='#MemoryArgs'>MemoryArgs</a></code>
</td>
<td></td>
</tr>
<tr id="ResourceArgs.image">
<td><h3 id="ResourceArgs.image" class="add-link hide-from-toc">2</h3></td>
<td><code>image</code></td>
<td>
<code><a class='link' href='#ImageArgs'>ImageArgs</a></code>
</td>
<td></td>
</tr>
<tr id="ResourceArgs.">
<td><h3 id="ResourceArgs." class="add-link hide-from-toc">3</h3></td>
<td><code></code></td>
<td>
<code></code>
</td>
<td></td>
</tr>
<tr id="ResourceArgs.buffer">
<td><h3 id="ResourceArgs.buffer" class="add-link hide-from-toc">4</h3></td>
<td><code>buffer</code></td>
<td>
<code><a class='link' href='#BufferArgs'>BufferArgs</a></code>
</td>
<td></td>
</tr>
<tr id="ResourceArgs.view">
<td><h3 id="ResourceArgs.view" class="add-link hide-from-toc">5</h3></td>
<td><code>view</code></td>
<td>
<code><a class='link' href='#ViewArgs'>ViewArgs</a></code>
</td>
<td></td>
</tr>
<tr id="ResourceArgs.view_holder">
<td><h3 id="ResourceArgs.view_holder" class="add-link hide-from-toc">6</h3></td>
<td><code>view_holder</code></td>
<td>
<code><a class='link' href='#ViewHolderArgs'>ViewHolderArgs</a></code>
</td>
<td></td>
</tr>
<tr id="ResourceArgs.rectangle">
<td><h3 id="ResourceArgs.rectangle" class="add-link hide-from-toc">7</h3></td>
<td><code>rectangle</code></td>
<td>
<code><a class='link' href='#RectangleArgs'>RectangleArgs</a></code>
</td>
<td></td>
</tr>
<tr id="ResourceArgs.rounded_rectangle">
<td><h3 id="ResourceArgs.rounded_rectangle" class="add-link hide-from-toc">8</h3></td>
<td><code>rounded_rectangle</code></td>
<td>
<code><a class='link' href='#RoundedRectangleArgs'>RoundedRectangleArgs</a></code>
</td>
<td></td>
</tr>
<tr id="ResourceArgs.circle">
<td><h3 id="ResourceArgs.circle" class="add-link hide-from-toc">9</h3></td>
<td><code>circle</code></td>
<td>
<code><a class='link' href='#CircleArgs'>CircleArgs</a></code>
</td>
<td></td>
</tr>
<tr id="ResourceArgs.mesh">
<td><h3 id="ResourceArgs.mesh" class="add-link hide-from-toc">10</h3></td>
<td><code>mesh</code></td>
<td>
<code><a class='link' href='#MeshArgs'>MeshArgs</a></code>
</td>
<td></td>
</tr>
<tr id="ResourceArgs.shape_node">
<td><h3 id="ResourceArgs.shape_node" class="add-link hide-from-toc">11</h3></td>
<td><code>shape_node</code></td>
<td>
<code><a class='link' href='#ShapeNodeArgs'>ShapeNodeArgs</a></code>
</td>
<td></td>
</tr>
<tr id="ResourceArgs.clip_node">
<td><h3 id="ResourceArgs.clip_node" class="add-link hide-from-toc">12</h3></td>
<td><code>clip_node</code></td>
<td>
<code><a class='link' href='#ClipNodeArgs'>ClipNodeArgs</a></code>
</td>
<td></td>
</tr>
<tr id="ResourceArgs.entity_node">
<td><h3 id="ResourceArgs.entity_node" class="add-link hide-from-toc">13</h3></td>
<td><code>entity_node</code></td>
<td>
<code><a class='link' href='#EntityNodeArgs'>EntityNodeArgs</a></code>
</td>
<td></td>
</tr>
<tr id="ResourceArgs.opacity_node">
<td><h3 id="ResourceArgs.opacity_node" class="add-link hide-from-toc">14</h3></td>
<td><code>opacity_node</code></td>
<td>
<code><a class='link' href='#OpacityNodeArgsHACK'>OpacityNodeArgsHACK</a></code>
</td>
<td></td>
</tr>
<tr id="ResourceArgs.material">
<td><h3 id="ResourceArgs.material" class="add-link hide-from-toc">15</h3></td>
<td><code>material</code></td>
<td>
<code><a class='link' href='#MaterialArgs'>MaterialArgs</a></code>
</td>
<td></td>
</tr>
<tr id="ResourceArgs.compositor">
<td><h3 id="ResourceArgs.compositor" class="add-link hide-from-toc">16</h3></td>
<td><code>compositor</code></td>
<td>
<code><a class='link' href='#CompositorArgs'>CompositorArgs</a></code>
</td>
<td></td>
</tr>
<tr id="ResourceArgs.display_compositor">
<td><h3 id="ResourceArgs.display_compositor" class="add-link hide-from-toc">17</h3></td>
<td><code>display_compositor</code></td>
<td>
<code><a class='link' href='#DisplayCompositorArgs'>DisplayCompositorArgs</a></code>
</td>
<td></td>
</tr>
<tr id="ResourceArgs.">
<td><h3 id="ResourceArgs." class="add-link hide-from-toc">18</h3></td>
<td><code></code></td>
<td>
<code></code>
</td>
<td></td>
</tr>
<tr id="ResourceArgs.layer_stack">
<td><h3 id="ResourceArgs.layer_stack" class="add-link hide-from-toc">19</h3></td>
<td><code>layer_stack</code></td>
<td>
<code><a class='link' href='#LayerStackArgs'>LayerStackArgs</a></code>
</td>
<td></td>
</tr>
<tr id="ResourceArgs.layer">
<td><h3 id="ResourceArgs.layer" class="add-link hide-from-toc">20</h3></td>
<td><code>layer</code></td>
<td>
<code><a class='link' href='#LayerArgs'>LayerArgs</a></code>
</td>
<td></td>
</tr>
<tr id="ResourceArgs.scene">
<td><h3 id="ResourceArgs.scene" class="add-link hide-from-toc">21</h3></td>
<td><code>scene</code></td>
<td>
<code><a class='link' href='#SceneArgs'>SceneArgs</a></code>
</td>
<td></td>
</tr>
<tr id="ResourceArgs.camera">
<td><h3 id="ResourceArgs.camera" class="add-link hide-from-toc">22</h3></td>
<td><code>camera</code></td>
<td>
<code><a class='link' href='#CameraArgs'>CameraArgs</a></code>
</td>
<td></td>
</tr>
<tr id="ResourceArgs.stereo_camera">
<td><h3 id="ResourceArgs.stereo_camera" class="add-link hide-from-toc">23</h3></td>
<td><code>stereo_camera</code></td>
<td>
<code><a class='link' href='#StereoCameraArgs'>StereoCameraArgs</a></code>
</td>
<td></td>
</tr>
<tr id="ResourceArgs.renderer">
<td><h3 id="ResourceArgs.renderer" class="add-link hide-from-toc">24</h3></td>
<td><code>renderer</code></td>
<td>
<code><a class='link' href='#RendererArgs'>RendererArgs</a></code>
</td>
<td></td>
</tr>
<tr id="ResourceArgs.ambient_light">
<td><h3 id="ResourceArgs.ambient_light" class="add-link hide-from-toc">25</h3></td>
<td><code>ambient_light</code></td>
<td>
<code><a class='link' href='#AmbientLightArgs'>AmbientLightArgs</a></code>
</td>
<td></td>
</tr>
<tr id="ResourceArgs.directional_light">
<td><h3 id="ResourceArgs.directional_light" class="add-link hide-from-toc">26</h3></td>
<td><code>directional_light</code></td>
<td>
<code><a class='link' href='#DirectionalLightArgs'>DirectionalLightArgs</a></code>
</td>
<td></td>
</tr>
<tr id="ResourceArgs.variable">
<td><h3 id="ResourceArgs.variable" class="add-link hide-from-toc">27</h3></td>
<td><code>variable</code></td>
<td>
<code><a class='link' href='#VariableArgs'>VariableArgs</a></code>
</td>
<td></td>
</tr>
<tr id="ResourceArgs.point_light">
<td><h3 id="ResourceArgs.point_light" class="add-link hide-from-toc">28</h3></td>
<td><code>point_light</code></td>
<td>
<code><a class='link' href='#PointLightArgs'>PointLightArgs</a></code>
</td>
<td></td>
</tr>
<tr id="ResourceArgs.">
<td><h3 id="ResourceArgs." class="add-link hide-from-toc">29</h3></td>
<td><code></code></td>
<td>
<code></code>
</td>
<td></td>
</tr>
<tr id="ResourceArgs.">
<td><h3 id="ResourceArgs." class="add-link hide-from-toc">30</h3></td>
<td><code></code></td>
<td>
<code></code>
</td>
<td></td>
</tr>
<tr id="ResourceArgs.view3">
<td><h3 id="ResourceArgs.view3" class="add-link hide-from-toc">31</h3></td>
<td><code>view3</code></td>
<td>
<code><a class='link' href='#ViewArgs3'>ViewArgs3</a></code>
</td>
<td></td>
</tr>
<tr id="ResourceArgs.image_pipe2">
<td><h3 id="ResourceArgs.image_pipe2" class="add-link hide-from-toc">32</h3></td>
<td><code>image_pipe2</code></td>
<td>
<code><a class='link' href='#ImagePipe2Args'>ImagePipe2Args</a></code>
</td>
<td></td>
</tr>
<tr id="ResourceArgs.image2">
<td><h3 id="ResourceArgs.image2" class="add-link hide-from-toc">33</h3></td>
<td><code>image2</code></td>
<td>
<code><a class='link' href='#ImageArgs2'>ImageArgs2</a></code>
</td>
<td></td>
</tr>
<tr id="ResourceArgs.image3">
<td><h3 id="ResourceArgs.image3" class="add-link hide-from-toc">34</h3></td>
<td><code>image3</code></td>
<td>
<code><a class='link' href='#ImageArgs3'>ImageArgs3</a></code>
</td>
<td></td>
</tr>
</table>
### Value [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#Value data-text="Value"}
*Defined in [fuchsia.ui.gfx/types.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/types.fidl;l=66)*
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="Value.vector1">
<td><h3 id="Value.vector1" class="add-link hide-from-toc">1</h3></td>
<td><code>vector1</code></td>
<td>
<code>float32</code>
</td>
<td></td>
</tr>
<tr id="Value.vector2">
<td><h3 id="Value.vector2" class="add-link hide-from-toc">2</h3></td>
<td><code>vector2</code></td>
<td>
<code><a class='link' href='#vec2'>vec2</a></code>
</td>
<td></td>
</tr>
<tr id="Value.vector3">
<td><h3 id="Value.vector3" class="add-link hide-from-toc">3</h3></td>
<td><code>vector3</code></td>
<td>
<code><a class='link' href='#vec3'>vec3</a></code>
</td>
<td></td>
</tr>
<tr id="Value.vector4">
<td><h3 id="Value.vector4" class="add-link hide-from-toc">4</h3></td>
<td><code>vector4</code></td>
<td>
<code><a class='link' href='#vec4'>vec4</a></code>
</td>
<td></td>
</tr>
<tr id="Value.matrix4x4">
<td><h3 id="Value.matrix4x4" class="add-link hide-from-toc">5</h3></td>
<td><code>matrix4x4</code></td>
<td>
<code><a class='link' href='#mat4'>mat4</a></code>
</td>
<td></td>
</tr>
<tr id="Value.color_rgba">
<td><h3 id="Value.color_rgba" class="add-link hide-from-toc">6</h3></td>
<td><code>color_rgba</code></td>
<td>
<code><a class='link' href='#ColorRgba'>ColorRgba</a></code>
</td>
<td></td>
</tr>
<tr id="Value.color_rgb">
<td><h3 id="Value.color_rgb" class="add-link hide-from-toc">7</h3></td>
<td><code>color_rgb</code></td>
<td>
<code><a class='link' href='#ColorRgb'>ColorRgb</a></code>
</td>
<td></td>
</tr>
<tr id="Value.degrees">
<td><h3 id="Value.degrees" class="add-link hide-from-toc">8</h3></td>
<td><code>degrees</code></td>
<td>
<code>float32</code>
</td>
<td><p>Degrees of counter-clockwise rotation in the XY plane.</p>
</td>
</tr>
<tr id="Value.quaternion">
<td><h3 id="Value.quaternion" class="add-link hide-from-toc">9</h3></td>
<td><code>quaternion</code></td>
<td>
<code><a class='link' href='#Quaternion'>Quaternion</a></code>
</td>
<td></td>
</tr>
<tr id="Value.transform">
<td><h3 id="Value.transform" class="add-link hide-from-toc">10</h3></td>
<td><code>transform</code></td>
<td>
<code><a class='link' href='#FactoredTransform'>FactoredTransform</a></code>
</td>
<td></td>
</tr>
<tr id="Value.variable_id">
<td><h3 id="Value.variable_id" class="add-link hide-from-toc">11</h3></td>
<td><code>variable_id</code></td>
<td>
<code>uint32</code>
</td>
<td><p>ID of a value-producing resource (an animation or an expression).
The type of this value matches the type produced by the named resource.</p>
</td>
</tr>
</table>
## **CONSTANTS**
<table>
<tr><th>Name</th><th>Value</th><th>Type</th><th>Description</th></tr>
<tr id="kLabelMaxLength">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/commands.fidl;l=742">kLabelMaxLength</a></td>
<td>
<code>32</code>
</td>
<td><code>uint32</code></td>
<td><p>Maximum length for a resource label.</p>
</td>
</tr>
<tr id="kMetricsEventMask">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/events.fidl;l=8">kMetricsEventMask</a></td>
<td>
<code>1</code>
</td>
<td><code>uint32</code></td>
<td><p>Reports metrics information.
This event type is only reported for node resources.</p>
</td>
</tr>
<tr id="kSizeChangeHintEventMask">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.gfx/events.fidl;l=9">kSizeChangeHintEventMask</a></td>
<td>
<code>2</code>
</td>
<td><code>uint32</code></td>
<td></td>
</tr>
</table>