<ServerManagerConfiguration>
  <ProxyGroup name="lookup_tables">

   <!-- ================================================================== -->
    <TransferFunctionProxy class="vtkPVDiscretizableColorTransferFunction"
                           name="PVLookupTable"
                           post_push="Build"
                           processes="renderserver|client">
      <IntVectorProperty default_values="0"
                         name="AutomaticRescaleRangeMode"
                         number_of_elements="1">
        <EnumerationDomain name="enum">
          <Entry value="-1" text="Never"/>
          <Entry value="0" text="Grow and update on 'Apply'"/>
          <Entry value="1" text="Grow and update every timestep"/>
          <Entry value="2" text="Update on 'Apply'"/>
          <Entry value="3" text="Clamp and update every timestep"/>
        </EnumerationDomain>
        <Documentation>
          Choose whether and how to automatically rescale the color map range.
          "Never" means the color map range will never be changed.
          "Grow and update on 'Apply'" will expand the range to contain the
          union of the current range and the range of the current data source.
          "Grow and update every timestep" will expand the range to contain
          the union of the current range and the range of the current data source
          when the timestep is changed. "Clamp and update every timestep" will
          update the color map range to the current source data range.
        </Documentation>
      </IntVectorProperty>
      <IntVectorProperty name="IndexedLookup"
                         command="SetIndexedLookup"
                         default_values="0"
                         number_of_elements="1"
                         label="Interpret Values As Categories">
        <BooleanDomain name="bool" />
        <Documentation>
          When enabled, the color transfer function switches to indexed-lookup
          (categorical colors) mode.
        </Documentation>
      </IntVectorProperty>

      <IntVectorProperty default_values="0"
                         name="AnnotationsInitialized"
                         number_of_elements="1"
                         panel_visibility="never" >
        <Documentation>
         Set to 1 to indicate that the annotations have been initialized.
        </Documentation>
        <BooleanDomain name="bool" />
      </IntVectorProperty>

      <IntVectorProperty name="ShowIndexedColorActiveValues"
                         command="SetUseActiveValues"
                         default_values="0"
                         number_of_elements="1"
                         label="Show Categorical Colors in Data Range Only"
                         panel_visibility="advanced">
        <BooleanDomain name="bool" />
        <Hints>
          <PropertyWidgetDecorator type="ShowWidgetDecorator">
            <Property name="IndexedLookup" />
          </PropertyWidgetDecorator>
        </Hints>
        <Documentation>
          When interpreting values as categories, enabling this
          option results in the display of only the 'active'
          categorical colors for values in the data range, i.e.,
          values that exist in the source. You may need to click the
          'Rescale to Data Range' button to update the active values
          that are displayed.
        </Documentation>
      </IntVectorProperty>

      <IntVectorProperty name="RescaleOnVisibilityChange"
                         default_values="0"
                         number_of_elements="1">
        <BooleanDomain name="bool"/>
        <Documentation>
          Flag indicating whether the color map data range should be
          updated when a representation's visibility changes.
        </Documentation>
      </IntVectorProperty>

      <IntVectorProperty name="EnableOpacityMapping"
                         command="SetEnableOpacityMapping"
                         number_of_elements="1"
                         default_values="0">
        <BooleanDomain name="bool" />
        <Documentation>
          When enabled, the opacity transfer function is used for
          rendering, if applicable.
        </Documentation>
      </IntVectorProperty>

      <ProxyProperty name="ScalarOpacityFunction"
        command="SetScalarOpacityFunction">
        <Hints>
          <!-- when resetting to XML defaults, we don't want this property to
               get reset. This is managed explicitly. So let's just skip this
               from the default mechanism -->
          <NoDefault />
        </Hints>
      </ProxyProperty>

      <DoubleVectorProperty command="SetRGBPoints"
                            name="RGBPoints"
                            number_of_elements_per_command="4"
                            repeat_command="1"
                            number_of_elements="12"
                            default_values="0 0.231373 0.298039 0.752941 0.5 0.865003 0.865003 0.865003 1 0.705882 0.0156863 0.14902">
        <Documentation>
          Specify the control points that form the color-transfer-function. These are
          a list of 4-tuples of the form (x, r, g, b) where x is the data value,
          and r,g,b are three color components in the range [0,1].
        </Documentation>
      </DoubleVectorProperty>
      <IntVectorProperty command="SetUseLogScale"
                         default_values="0"
                         name="UseLogScale"
                         number_of_elements="1">
        <BooleanDomain name="bool" />
      </IntVectorProperty>
      <IntVectorProperty
                         default_values="0"
                         name="UseOpacityControlPointsFreehandDrawing"
                         number_of_elements="1">
        <BooleanDomain name="bool" />
        <Documentation> Proxy only property used by the ColorOpacityWidget to know if freehand drawing should be used
        </Documentation>
      </IntVectorProperty>
      <IntVectorProperty default_values="0"
                         name="ShowDataHistogram"
                         number_of_elements="1">
        <BooleanDomain name="bool" />
        <Documentation> Proxy only property used by the ColorOpacityWidget to know if the data histogram should be shown
        </Documentation>
      </IntVectorProperty>
      <IntVectorProperty default_values="0"
                         name="AutomaticDataHistogramComputation"
                         number_of_elements="1">
        <BooleanDomain name="bool" />
        <Documentation> Proxy only property used by the ColorOpacityWidget to know if the data histogram should be automatically computed
        </Documentation>
      </IntVectorProperty>
      <IntVectorProperty default_values="10"
                         name="DataHistogramNumberOfBins"
                         number_of_elements="1">
        <Documentation> Proxy only property used by the ColorOpacityWidget to know the number of bin to use to compute the data histogram
        </Documentation>
      </IntVectorProperty>
      <IntVectorProperty command="SetColorSpace"
                         default_values="3"
                         name="ColorSpace"
                         number_of_elements="1">
        <EnumerationDomain name="enum">
          <Entry text="RGB" value="0" />
          <Entry text="HSV" value="1" />
          <Entry text="Lab" value="2" />
          <Entry text="Diverging" value="3" />
          <Entry text="Lab/CIEDE2000" value="4" />
          <Entry text="Step" value="5" />
        </EnumerationDomain>
        <Documentation>
          The color space used for interpolation: RGB, HSV, Lab (CIELAB), or
          Diverging. In HSV mode, if HSVWrap is on, it will take the shortest
          path in Hue (going back through 0 if that is the shortest way around
          the hue circle) whereas if HSVWrap is off it will not go through 0
          (in order the match the current functionality of vtkLookupTable).
          Diverging is a special mode where colors will pass through white when
          interpolating between two saturated colors.
          In Lab/CIEDE2000 mode, it will take the shortest path in the Lab color
          space with respect to the CIE Delta E 2000 color distance measure.
          In Step mode, the color of an interval is the color of the second point
          of the interval.
        </Documentation>
      </IntVectorProperty>
      <IntVectorProperty command="SetUseBelowRangeColor"
                         default_values="0"
                         name="UseBelowRangeColor"
                         number_of_elements="1"
                         panel_visibility="advanced" >
        <BooleanDomain name="bool" />
        <Documentation>
          Use special color to use when a data value is below the range of the color map.
        </Documentation>
      </IntVectorProperty>
      <DoubleVectorProperty command="SetBelowRangeColor"
                            default_values="0 0 0"
                            name="BelowRangeColor"
                            number_of_elements="3"
                            panel_widget="color_selector"
                            panel_visibility="advanced" >
        <Documentation>
          Set the color to use when a data value is below the range of the color map.
        </Documentation>
        <Hints>
          <PropertyWidgetDecorator type="EnableWidgetDecorator">
            <Property name="UseBelowRangeColor" />
          </PropertyWidgetDecorator>
        </Hints>
      </DoubleVectorProperty>
      <IntVectorProperty command="SetUseAboveRangeColor"
                         default_values="0"
                         name="UseAboveRangeColor"
                         number_of_elements="1"
                         panel_visibility="advanced" >
        <BooleanDomain name="bool" />
        <Documentation>
          Use special color to use when a data value is above the range of the color map.
        </Documentation>
      </IntVectorProperty>
      <DoubleVectorProperty command="SetAboveRangeColor"
                            default_values="0.5 0.5 0.5"
                            name="AboveRangeColor"
                            number_of_elements="3"
                            panel_widget="color_selector"
                            panel_visibility="advanced" >
        <Documentation>
          Set the color to use when a data value is above the range of the color map.
        </Documentation>
        <Hints>
          <PropertyWidgetDecorator type="EnableWidgetDecorator">
            <Property name="UseAboveRangeColor" />
          </PropertyWidgetDecorator>
        </Hints>
      </DoubleVectorProperty>
      <DoubleVectorProperty command="SetNanColor"
                            default_values="1 1 0"
                            name="NanColor"
                            number_of_elements="3"
                            panel_widget="color_selector" >
        <Documentation>
          Set the color to use when NaN (not-a-number) is encountered.
        </Documentation>
      </DoubleVectorProperty>

      <DoubleVectorProperty command="SetNanOpacity"
                         default_values="1"
                         name="NanOpacity"
                         number_of_elements="1" >
        <DoubleRangeDomain min="0" max="1" name="range" />
        <Documentation>
          Set the opacity to use when NaN (not-a-number) is encountered.
        </Documentation>
      </DoubleVectorProperty>

      <IntVectorProperty command="SetDiscretize"
                         default_values="1"
                         name="Discretize"
                         number_of_elements="1" >
        <BooleanDomain name="bool" />
        <Documentation>
          When set, the color transfer function will comprise of discrete colors
          with number of discrete colors specified using NumberOfTableValues.
        </Documentation>
      </IntVectorProperty>
      <IntVectorProperty command="SetNumberOfValues"
                         default_values="256"
                         name="NumberOfTableValues"
                         number_of_elements="1" >
        <IntRangeDomain min="1" max="1024" name="range" />
        <Documentation>
          When Discretize is set, this specifies the number of discrete colors
          that must be present in the transfer function.
        </Documentation>
        <Hints>
          <PropertyWidgetDecorator type="EnableWidgetDecorator">
            <Property name="Discretize" function="boolean" index="0" />
          </PropertyWidgetDecorator>
        </Hints>
      </IntVectorProperty>

      <DoubleVectorProperty default_values="0"
                            name="ScalarRangeInitialized"
                            number_of_elements="1"
                            panel_visibility="never" >
        <Documentation>
         Set to 1 to indicate that the scalar range has been initialized.
        </Documentation>
        <BooleanDomain name="bool" />
      </DoubleVectorProperty>
      <IntVectorProperty command="SetHSVWrap"
                         default_values="0"
                         name="HSVWrap"
                         number_of_elements="1"
                         panel_visibility="never" >
        <!-- FIXME: need to add "Wrapped HSV" as a color-space type instead -->
        <BooleanDomain name="bool" />
      </IntVectorProperty>

      <IntVectorProperty command="SetVectorComponent"
                         default_values="0"
                         name="VectorComponent"
                         number_of_elements="1"
                         panel_visibility="never" >
        <IntRangeDomain name="range" />
      </IntVectorProperty>
      <IntVectorProperty command="SetVectorMode"
                         default_values="0"
                         name="VectorMode"
                         number_of_elements="1"
                         panel_visibility="never" >
      </IntVectorProperty>
      <IntVectorProperty command="SetAllowDuplicateScalars"
                         default_values="1"
                         name="AllowDuplicateScalars"
                         number_of_elements="1"
                         panel_visibility="never" >
        <BooleanDomain name="bool" />
      </IntVectorProperty>

      <StringVectorProperty name="Annotations"
                            clean_command="ResetAnnotationsInFullSet"
                            command="SetAnnotationInFullSet"
                            element_types="2 2"
                            number_of_elements_per_command="2"
                            repeat_command="1">
        <Documentation>
          Specify annotations.
        </Documentation>
      </StringVectorProperty>

      <StringVectorProperty name="ActiveAnnotatedValues"
                            clean_command="ResetActiveAnnotatedValues"
                            command="SetActiveAnnotatedValue"
                            element_types="2"
                            number_of_elements_per_command="1"
                            repeat_command="1"
                            panel_visibility="never">
        <Documentation>
          Specify active annotations.
        </Documentation>
      </StringVectorProperty>

      <DoubleVectorProperty name="IndexedColors"
                            command="SetIndexedColorInFullSet"
                            number_of_elements_per_command="3"
                            repeat_command="1"
                            set_number_command="SetNumberOfIndexedColorsInFullSet"
                            use_index="1"
                            panel_visibility="advanced">
        <Documentation>
          Colors used when using IndexedLookup is true.
        </Documentation>
      </DoubleVectorProperty>

      <DoubleVectorProperty name="IndexedOpacities"
                            command="SetIndexedOpacityInFullSet"
                            number_of_elements_per_command="1"
                            repeat_command="1"
                            set_number_command="SetNumberOfIndexedOpacitiesInFullSet"
                            use_index="1"
                            panel_visibility="never">
        <Documentation>
          Opacities used when using IndexedLookup is true.
        </Documentation>
      </DoubleVectorProperty>

      <PropertyGroup label="Mapping Data" panel_widget="ColorOpacityEditor">
        <Property name="EnableOpacityMapping" function="EnableOpacityMapping" />
        <Property name="RGBPoints" function="XRGBPoints" />
        <Property name="ScalarOpacityFunction" function="ScalarOpacityFunction" />
        <Property name="UseLogScale" function="UseLogScale" />
        <Property name="UseOpacityControlPointsFreehandDrawing" function="UseOpacityControlPointsFreehandDrawing" />
        <Property name="ShowDataHistogram" function="ShowDataHistogram" />
        <Property name="AutomaticDataHistogramComputation" function="AutomaticDataHistogramComputation" />
        <Property name="DataHistogramNumberOfBins" function="DataHistogramNumberOfBins" />
      </PropertyGroup>

      <PropertyGroup label="Color Mapping Parameters">
        <Property name="ColorSpace" />
        <Property name="NanColor" />
        <Property name="NanOpacity" />
      </PropertyGroup>

      <PropertyGroup label="Color Discretization">
        <Property name="NumberOfTableValues" />
        <Property name="Discretize" />
      </PropertyGroup>

      <PropertyGroup label="Annotations" panel_widget="AnnotationsEditor">
        <Property name="Annotations" />
        <Property name="EnableOpacityMapping" function="EnableOpacityMapping" />
        <Property name="IndexedColors" />
      </PropertyGroup>

      <!-- End of PVLookupTable -->
    </TransferFunctionProxy>
  </ProxyGroup>

  <ProxyGroup name="piecewise_functions">

    <TransferFunctionProxy class="vtkPiecewiseFunction"
           name="PiecewiseFunction"
           processes="renderserver|dataserver">
      <!--
      <DoubleVectorProperty clean_command="RemoveAllPoints"
                            command="AddPoint"
                            default_values="0.0 0.0 0.5 0.0 1.0 1.0 0.5 0.0"
                            name="Points"
                            number_of_elements="8"
                            number_of_elements_per_command="4"
                            repeat_command="1"></DoubleVectorProperty>
      <IntVectorProperty command="SetAllowDuplicateScalars"
                         default_values="1"
                         name="AllowDuplicateScalars"
                         number_of_elements="1"
                         panel_visibility="never" >
        <BooleanDomain name="bool" />
      </IntVectorProperty>
      -->
      <IntVectorProperty command="SetUseLogScale"
                         default_values="0"
                         name="UseLogScale"
                         number_of_elements="1">
        <BooleanDomain name="bool" />
      </IntVectorProperty>
      <IntVectorProperty default_values="0"
                         name="ScalarRangeInitialized"
                         number_of_elements="1"
                         panel_visibility="never" >
        <Documentation>
          Set to 1 to indicate that the scalar range has been initialized.
        </Documentation>
        <BooleanDomain name="bool" />
      </IntVectorProperty>
    </TransferFunctionProxy>
  </ProxyGroup>

  <ProxyGroup name="rendering">
    <Proxy name="Property" class="vtkProperty" processes="client renderserver">
      <DoubleVectorProperty name="Opacity"
        command="SetOpacity"
        number_of_elements="1"
        default_values="1.0">
        <DoubleRangeDomain name="range" min="0" max="1.0" />
        <Documentation>
          Specify the opacity to use for rendering. Any value less than 1.0 is treated
          as translucent.
        </Documentation>
      </DoubleVectorProperty>
      <DoubleVectorProperty command="SetAmbient"
                            default_values="0.0"
                            name="Ambient"
                            number_of_elements="1">
        <DoubleRangeDomain max="1" min="0" name="range" />
        <Documentation>The ambient lighting coefficient.</Documentation>
      </DoubleVectorProperty>

      <DoubleVectorProperty command="SetDiffuse"
                            default_values="1.0"
                            name="Diffuse"
                            number_of_elements="1">
        <DoubleRangeDomain max="1" min="0" name="range" />
        <Documentation>The diffuse lighting coefficient.</Documentation>
      </DoubleVectorProperty>

      <DoubleVectorProperty command="SetSpecular"
                            default_values="0.0"
                            name="Specular"
                            number_of_elements="1">
        <DoubleRangeDomain max="1" min="0" name="range" />
        <Documentation>The specular lighting coefficient.</Documentation>
      </DoubleVectorProperty>

      <DoubleVectorProperty command="SetSpecularPower"
                            default_values="100.0"
                            name="SpecularPower"
                            number_of_elements="1">
        <DoubleRangeDomain max="100" min="0" name="range" />
        <Documentation>The specular power used for specular lighting.</Documentation>
      </DoubleVectorProperty>

      <DoubleVectorProperty command="SetAmbientColor"
                            default_values="1.0 1.0 1.0"
                            name="AmbientColor"
                            number_of_elements="3"
                            panel_widget="color_selector_with_palette">
        <DoubleRangeDomain max="1 1 1" min="0 0 0" name="range" />
        <Documentation>The color to use for ambient lighting.</Documentation>
        <Hints>
          <PropertyLink group="settings" proxy="ColorPalette" property="ForegroundColor" unlink_if_modified="1" />
        </Hints>
      </DoubleVectorProperty>

      <DoubleVectorProperty command="SetDiffuseColor"
                            default_values="1.0 1.0 1.0"
                            name="DiffuseColor"
                            number_of_elements="3"
                            panel_widget="color_selector_with_palette">
        <DoubleRangeDomain max="1 1 1" min="0 0 0" name="range" />
        <Hints>
          <PropertyLink group="settings" proxy="ColorPalette" property="SurfaceColor" unlink_if_modified="1" />
        </Hints>
        <Documentation>The color to use for diffuse lighting.</Documentation>
      </DoubleVectorProperty>

      <DoubleVectorProperty command="SetSpecularColor"
                            default_values="1.0 1.0 1.0"
                            name="SpecularColor"
                            number_of_elements="3"
                            panel_widget="color_selector_with_palette">
        <DoubleRangeDomain max="1 1 1" min="0 0 0" name="range" />
        <Documentation>The color to use for specual lighting.</Documentation>
      </DoubleVectorProperty>

      <DoubleVectorProperty command="SetEdgeColor"
                            default_values="0 0 0.5"
                            name="EdgeColor"
                            number_of_elements="3"
                            panel_widget="color_selector_with_palette">
        <Documentation>This color is use for rendering edges.</Documentation>
        <DoubleRangeDomain max="1 1 1" min="0 0 0" name="range" />
        <Hints>
          <PropertyLink group="settings" proxy="ColorPalette" property="EdgeColor" unlink_if_modified="1" />
        </Hints>
      </DoubleVectorProperty>
    </Proxy>

    <Proxy name="Actor" class="vtkPVLODActor" processes="client renderserver">
      <DoubleVectorProperty command="SetPosition"
                            default_values="0 0 0"
                            label="Translation"
                            name="Position"
                            number_of_elements="3">
        <DoubleRangeDomain name="range" />
      </DoubleVectorProperty>

      <DoubleVectorProperty command="SetScale"
                            default_values="1 1 1"
                            name="Scale"
                            number_of_elements="3">
        <DoubleRangeDomain name="range" />
      </DoubleVectorProperty>

      <DoubleVectorProperty command="SetOrientation"
                            default_values="0 0 0"
                            name="Orientation"
                            number_of_elements="3">
        <DoubleRangeDomain name="range" />
      </DoubleVectorProperty>

      <DoubleVectorProperty command="SetOrigin"
                            default_values="0 0 0"
                            name="Origin"
                            number_of_elements="3">
        <DoubleRangeDomain name="range" />
      </DoubleVectorProperty>

      <DoubleVectorProperty argument_is_array="1"
                            command="SetUserTransform"
                            default_values="1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1"
                            name="UserTransform"
                            number_of_elements="16"
                            panel_visibility="never">
        <Documentation>
          In addition to the instance variables such as position and
          orientation, you can add an additional transformation for your own
          use. This transformation is concatenated with the actor's internal
          transformation, which you implicitly create through the use of
          Position, Origin, Orientation. The value is 4x4 matrix for the linear
          transform to use.
        </Documentation>
      </DoubleVectorProperty>

      <IntVectorProperty command="SetPickable"
                         default_values="1"
                         name="Pickable"
                         number_of_elements="1">
        <BooleanDomain name="bool" />
      </IntVectorProperty>
    </Proxy>

    <Proxy name="VolumeActor" class="vtkPVLODVolume" processes="renderserver">
      <DoubleVectorProperty command="SetPosition"
                            default_values="0 0 0"
                            label="Translation"
                            name="Position"
                            number_of_elements="3">
        <DoubleRangeDomain name="range" />
      </DoubleVectorProperty>

      <DoubleVectorProperty command="SetScale"
                            default_values="1 1 1"
                            name="Scale"
                            number_of_elements="3">
        <DoubleRangeDomain name="range" />
      </DoubleVectorProperty>

      <DoubleVectorProperty command="SetOrientation"
                            default_values="0 0 0"
                            name="Orientation"
                            number_of_elements="3">
        <DoubleRangeDomain name="range" />
      </DoubleVectorProperty>

      <DoubleVectorProperty command="SetOrigin"
                            default_values="0 0 0"
                            name="Origin"
                            number_of_elements="3">
        <DoubleRangeDomain name="range" />
      </DoubleVectorProperty>

      <DoubleVectorProperty argument_is_array="1"
                            command="SetUserTransform"
                            default_values="1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1"
                            name="UserTransform"
                            number_of_elements="16"
                            panel_visibility="never">
        <Documentation>
          In addition to the instance variables such as position and
          orientation, you can add an additional transformation for your own
          use. This transformation is concatenated with the actor's internal
          transformation, which you implicitly create through the use of
          Position, Origin, Orientation. The value is 4x4 matrix for the linear
          transform to use.
        </Documentation>
      </DoubleVectorProperty>

      <IntVectorProperty command="SetPickable"
                         default_values="1"
                         name="Pickable"
                         number_of_elements="1">
        <BooleanDomain name="bool" />
      </IntVectorProperty>
    </Proxy>

    <Proxy name="VolumeProperty" class="vtkVolumeProperty" processes="client renderserver">
      <InputProperty is_internal="1" name="Input" />
      <Property is_internal="1" name="BlendMode" />

      <IntVectorProperty command="SetInterpolationType"
                         default_values="2"
                         name="InterpolationType"
                         number_of_elements="1"
                         processes="renderserver">
        <EnumerationDomain name="enum">
          <Entry text="Nearest"
                 value="0" />
          <Entry text="Linear"
                 value="1" />
          <Entry text="Cubic"
                 value="2" />
        </EnumerationDomain>
      </IntVectorProperty>
      <ProxyProperty command="SetScalarOpacity"
                     name="ScalarOpacityFunction"
                     processes="renderserver">
        <ProxyGroupDomain name="groups">
          <Group name="piecewise_functions" />
        </ProxyGroupDomain>
      </ProxyProperty>
      <DoubleVectorProperty command="SetScalarOpacityUnitDistance"
                            default_values="1"
                            name="ScalarOpacityUnitDistance"
                            number_of_elements="1"
                            processes="renderserver">
        <BoundsDomain mode="approximate_cell_length"
                      name="bounds" >
          <RequiredProperties>
            <Property function="Input"
                      name="Input" />
          </RequiredProperties>
        </BoundsDomain>
        <Hints>
          <PropertyWidgetDecorator type="GenericDecorator"
                                   mode="visibility"
                                   property="BlendMode"
                                   value="6"
                                   inverse="1" />
        </Hints>
      </DoubleVectorProperty>
      <ProxyProperty command="SetColor"
                     name="LookupTable"
                     processes="renderserver">
        <ProxyGroupDomain name="groups">
          <Group name="transfer_functions" />
        </ProxyGroupDomain>
      </ProxyProperty>

      <DoubleVectorProperty command="SetAmbient"
                            default_values="0.0"
                            name="Ambient"
                            number_of_elements="1"
                            processes="renderserver">
        <DoubleRangeDomain max="1" min="0" name="range" />
        <Documentation>The ambient lighting coefficient.</Documentation>
      </DoubleVectorProperty>

      <DoubleVectorProperty command="SetDiffuse"
                            default_values="1.0"
                            name="Diffuse"
                            number_of_elements="1"
                            processes="renderserver">
        <DoubleRangeDomain max="1" min="0" name="range" />
        <Documentation>The diffuse lighting coefficient.</Documentation>
      </DoubleVectorProperty>

      <DoubleVectorProperty command="SetSpecular"
                            default_values="0.0"
                            name="Specular"
                            number_of_elements="1"
                            processes="renderserver">
        <DoubleRangeDomain max="1" min="0" name="range" />
        <Documentation>The specular lighting coefficient.</Documentation>
      </DoubleVectorProperty>

      <DoubleVectorProperty command="SetSpecularPower"
                            default_values="100.0"
                            name="SpecularPower"
                            number_of_elements="1"
                            processes="renderserver">
        <DoubleRangeDomain max="100" min="0" name="range" />
        <Documentation>The specular power used for specular lighting.</Documentation>
      </DoubleVectorProperty>

      <IntVectorProperty command="SetShade"
                         default_values="0"
                         name="Shade"
                         number_of_elements="1"
                         processes="renderserver">
        <BooleanDomain name="bool" />
        <Documentation>Enable/Disable shading.</Documentation>
      </IntVectorProperty>

    </Proxy>
  </ProxyGroup>

  <ProxyGroup name="views">
    <RenderViewProxy class="vtkPVRenderView"
               name="RenderView"
               processes="client dataserver renderserver">

      <IntVectorProperty name="ViewPosition"
                         number_of_elements="2"
                         default_values="0 0"
                         panel_visibility="never"
                         processes="client renderserver" >
        <Documentation>
          Position for the view.
        </Documentation>
      </IntVectorProperty>
      <IntVectorProperty command="SetSize"
                         default_values="1920 1163"
                         name="ViewSize"
                         number_of_elements="2"
                         panel_visibility="never"
                         processes="client renderserver" >
        <Documentation>
            Resolution to use when rendering images in this view.
        </Documentation>
      </IntVectorProperty>

      <ProxyProperty name="Representations"
                     command="SetRepresentations"
                     resizable="1">
        <Documentation>Representations in this view.</Documentation>
      </ProxyProperty>

      <Command name="Update" command="Update" />
      <Command name="UpdateForRendering" command="UpdateForRendering" />

      <DoubleVectorProperty name="CenterOfRotation"
                            number_of_elements="3"
                            default_values="0 0 0"
                            panel_visibility="never">
        <Documentation>
          Center of rotation to use when interacting.
        </Documentation>
      </DoubleVectorProperty>

      <IntVectorProperty name="InteractionMode"
                         number_of_elements="1"
                         default_values="0"
                         panel_visibility="never">
        <EnumerationDomain name="enum">
          <Entry text="3D" value="0" />
          <Entry text="2D" value="1" />
        </EnumerationDomain>
        <Documentation>
          Specify interaction mode.
        </Documentation>
      </IntVectorProperty>

      <IntVectorProperty name="Camera3DManipulators"
        number_of_elements="9"
        default_values="4 1 2 3 4 7 2 4 6"
        panel_visibility="never">
        <Documentation>
          Set the interactions mode for 3D interaction. The values are specified
          in order as (left button, middle button, right button), and repeated for
          shift key and control key modifiers.
        </Documentation>
        <Hints>
          <PropertyLink group="settings"
                        proxy="RenderViewInteractionSettings"
                        property="Camera3DManipulators"/>
        </Hints>
        <EnumerationDomain name="enum">
          <Entry text="None" value="0" />
          <Entry text="Pan" value="1" />
          <Entry text="Zoom" value="2" />
          <Entry text="Roll" value="3" />
          <Entry text="Rotate" value="4" />
          <Entry text="Multi-Rotate" value="5" />
          <Entry text="ZoomToMouse" value="6" />
          <Entry text="SkyboxRotate" value="7" />
        </EnumerationDomain>
      </IntVectorProperty>

      <IntVectorProperty name="Camera2DManipulators"
        number_of_elements="9"
        default_values="1 3 2 2 2 6 3 1 4"
        panel_visibility="never">
        <Documentation>
          Set the interactions mode for 2D interaction. The values are specified
          in order as (left button, middle button, right button), and repeated for
          shift key and control key modifiers.
        </Documentation>
        <Hints>
          <PropertyLink group="settings"
                        proxy="RenderViewInteractionSettings"
                        property="Camera2DManipulators"/>
        </Hints>
        <EnumerationDomain name="enum">
          <Entry text="None" value="0" />
          <Entry text="Pan" value="1" />
          <Entry text="Zoom" value="2" />
          <Entry text="Roll" value="3" />
          <Entry text="Rotate" value="4" />
          <Entry text="ZoomToMouse" value="6" />
        </EnumerationDomain>
      </IntVectorProperty>

      <DoubleVectorProperty name="RotationFactor"
                            default_values="1"
                            panel_visibility="never"
                            number_of_elements="1">
        <Documentation>Rotation speed factor for the interactor. This default
          rotation speed is multipied by this factor. Default value is 1.
        </Documentation>
      </DoubleVectorProperty>

      <DoubleVectorProperty name="Camera2DMouseWheelMotionFactor"
                            default_values="1"
                            number_of_elements="1"
                            panel_visibility="never">
        <DoubleRangeDomain max="10" min="0" name="range" resolution="0.01" />
        <Hints>
          <PropertyLink group="settings"
                        proxy="RenderViewInteractionSettings"
                        property="Camera2DMouseWheelMotionFactor"/>
        </Hints>
        <Documentation>Set the wheel motion factor for 2D interaction.</Documentation>
      </DoubleVectorProperty>

      <DoubleVectorProperty name="Camera3DMouseWheelMotionFactor"
                            default_values="1"
                            number_of_elements="1"
                            panel_visibility="never">
        <DoubleRangeDomain max="10" min="0" name="range" resolution="0.01" />
        <Hints>
          <PropertyLink group="settings"
                        proxy="RenderViewInteractionSettings"
                        property="Camera3DMouseWheelMotionFactor"/>
        </Hints>
        <Documentation>Set the wheel motion factor for 3D interaction.</Documentation>
      </DoubleVectorProperty>

      <IntVectorProperty command="SetUseRenderViewSettingsForBackground"
                         name="UseColorPaletteForBackground"
                         processes="client|renderserver"
                         number_of_elements="1"
                         default_values="1">
        <BooleanDomain name="bool" />
        <Documentation>
            When set, the view uses the background color settings as specified in
            global color palette.
        </Documentation>
      </IntVectorProperty>

      <IntVectorProperty command="SetBackgroundColorMode"
                         name="BackgroundColorMode"
                         processes="client|renderserver"
                         number_of_elements="1"
                         default_values="0">
        <EnumerationDomain name="enum">
          <Entry text="Single Color" value="0" />
          <Entry text="Gradient" value="1" />
          <Entry text="Texture" value="2" />
          <Entry text="Skybox" value="3" />
          <Entry text="Stereo Skybox" value="4" />
        </EnumerationDomain>
        <Documentation>
          Select the background for the view.
        </Documentation>
        <Hints>
          <PropertyWidgetDecorator type="GenericDecorator" mode="enabled_state"
            property="UseColorPaletteForBackground" values="0" />
        </Hints>
      </IntVectorProperty>

      <ProxyProperty command="SetBackgroundTexture"
                     processes="client|renderserver"
                     name="BackgroundTexture" panel_widget="texture_selector">
        <ProxyGroupDomain name="groups">
          <Group name="textures" />
        </ProxyGroupDomain>
        <Hints>
          <!-- hide widget unless mode is "Texture" or "Skybox" -->
          <PropertyWidgetDecorator type="GenericDecorator" mode="visibility"
            property="BackgroundColorMode" values="2 3 4" />
          <PropertyWidgetDecorator type="GenericDecorator" mode="enabled_state"
            property="UseColorPaletteForBackground" values="0" />
        </Hints>
      </ProxyProperty>

      <DoubleVectorProperty command="SetBackground2"
                            default_values="0 0 0.165"
                            name="Background2"
                            processes="client|renderserver"
                            label="Background 2"
                            panel_widget="color_selector"
                            number_of_elements="3">
        <DoubleRangeDomain max="1 1 1" min="0 0 0" name="range" />
        <Hints>
          <!-- hide widget unless mode is "Gradient" -->
          <PropertyWidgetDecorator type="GenericDecorator" mode="visibility"
            property="BackgroundColorMode" value="1" />
          <PropertyWidgetDecorator type="GenericDecorator" mode="enabled_state"
            property="UseColorPaletteForBackground" values="0" />
        </Hints>
        <Documentation>
          Specify the color to use for the upper half of the viewport when using **Gradient**
          background color mode.
        </Documentation>
      </DoubleVectorProperty>

      <DoubleVectorProperty command="SetBackground"
                            default_values="0.329 0.349 0.427"
                            processes="client|renderserver"
                            name="Background"
                            panel_widget="color_selector"
                            number_of_elements="3">
        <DoubleRangeDomain max="1 1 1"
                           min="0 0 0"
                           name="range" />
        <Hints>
          <PropertyWidgetDecorator type="GenericDecorator" mode="enabled_state"
            property="UseColorPaletteForBackground" values="0" />
        </Hints>
      </DoubleVectorProperty>

      <IntVectorProperty command="SetUseEnvironmentLighting"
                         default_values="0"
                         name="UseEnvironmentLighting"
                         processes="client|renderserver"
                         number_of_elements="1">
        <Documentation>
          Enable skybox light contribution. This feature is only compatible with PBR interpolation.
        </Documentation>
        <BooleanDomain name="bool" />
        <Hints>
          <!-- hide widget unless mode is "Skybox" -->
          <PropertyWidgetDecorator type="GenericDecorator" mode="visibility"
            property="BackgroundColorMode" value="3" />
          <PropertyWidgetDecorator type="GenericDecorator" mode="enabled_state"
            property="UseColorPaletteForBackground" values="0" />
        </Hints>
      </IntVectorProperty>

      <IntVectorProperty name="EnableRayTracing"
          command="SetEnableRayTracing"
          processes="client|renderserver"
          default_values="0"
          number_of_elements="1">
        <BooleanDomain name="bool" />
        <Documentation>Enable/disable ray tracing, if available.</Documentation>
        <Hints>
          <PropertyWidgetDecorator type="OSPRayHidingDecorator" />
        </Hints>
      </IntVectorProperty>

      <StringVectorProperty name="RayTracingBackEnd"
          command="SetRayTracingBackEnd"
          processes="client|renderserver"
          default_values="OSPRay pathtracer"
          number_of_elements="1">
        <RendererDomain name="list">
        </RendererDomain>
        <Documentation>Selects a specific ray traced rendering engine.</Documentation>
        <Hints>
          <PropertyWidgetDecorator type="OSPRayHidingDecorator" />
          <PropertyWidgetDecorator type="GenericDecorator"
                                   mode="visibility"
                                   property="EnableRayTracing"
                                   values="1" />
        </Hints>
      </StringVectorProperty>

      <IntVectorProperty name="EnableShadows"
          command="SetEnableShadows"
          processes="client|renderserver"
          default_values="0"
          number_of_elements="1">
        <BooleanDomain name="bool" />
        <Documentation>Specify whether shadows should be rendered, if supported by the rendering technique.</Documentation>
        <Hints>
          <PropertyWidgetDecorator type="OSPRayHidingDecorator" />
          <PropertyWidgetDecorator type="CompositeDecorator">
            <Expression type="and">
              <PropertyWidgetDecorator type="GenericDecorator"
                                       mode="visibility"
                                       property="EnableRayTracing"
                                       values="1" />
              <PropertyWidgetDecorator type="EnableWidgetDecorator">
                 <Property name="RayTracingBackEnd" function="equals" value="OSPRay raycaster"/>
              </PropertyWidgetDecorator>
            </Expression>
          </PropertyWidgetDecorator>
        </Hints>
      </IntVectorProperty>

      <IntVectorProperty name="EnableDenoise"
          command="SetEnableDenoise"
          processes="client|renderserver"
          default_values="1"
          animateable="0"
          number_of_elements="1">
        <BooleanDomain name="bool" />
        <Documentation>
          Controls whether to denoise images. This option will
          have no effect without a denoiser library and until progressive
          passes or samples per pixel exceeds four.
        </Documentation>
        <Hints>
          <PropertyWidgetDecorator type="OSPRayHidingDecorator" />
          <PropertyWidgetDecorator type="GenericDecorator"
                                   mode="visibility"
                                   property="EnableRayTracing"
                                   values="1" />
          <PropertyWidgetDecorator type="CompositeDecorator">
            <Expression type="or">
              <PropertyWidgetDecorator type="EnableWidgetDecorator">
                <Property name="NumberOfProgressivePasses" function="greaterthan" value="3"/>
              </PropertyWidgetDecorator>
              <PropertyWidgetDecorator type="EnableWidgetDecorator">
                <Property name="NumberOfSamplesPerPixel" function="greaterthan" value="3" />
              </PropertyWidgetDecorator>
            </Expression>
          </PropertyWidgetDecorator>
        </Hints>
      </IntVectorProperty>

      <DoubleVectorProperty name="VolumeAnisotropy"
          command="SetVolumeAnisotropy"
          processes="client|renderserver"
          default_values="0.0"
          number_of_elements="1">
        <DoubleRangeDomain min="-1.0" max="1.0" name="range"/>
        <Documentation>
            Specify the tendency for light to scatter back towards (negative)
            or away from (positive) the light source within path-traced volumes.
        </Documentation>
        <Hints>
          <PropertyWidgetDecorator type="OSPRayHidingDecorator" />
          <PropertyWidgetDecorator type="CompositeDecorator">
            <Expression type="and">
              <PropertyWidgetDecorator type="GenericDecorator"
                                       mode="visibility"
                                       property="EnableRayTracing"
                                       values="1" />
              <PropertyWidgetDecorator type="EnableWidgetDecorator">
                 <Property name="RayTracingBackEnd" function="equals" value="OSPRay pathtracer"/>
              </PropertyWidgetDecorator>
            </Expression>
</PropertyWidgetDecorator>
        </Hints>
      </DoubleVectorProperty>

      <DoubleVectorProperty name="LightScale"
          command="SetLightScale"
          processes="client|renderserver"
          default_values="1.0"
          number_of_elements="1">
        <DoubleRangeDomain min="0.0" name="range"/>
        <Documentation>Diminish or amplify all lights in the scene.</Documentation>
        <Hints>
          <PropertyWidgetDecorator type="OSPRayHidingDecorator" />
          <PropertyWidgetDecorator type="GenericDecorator"
                                   mode="visibility"
                                   property="EnableRayTracing"
                                   values="1" />
        </Hints>
      </DoubleVectorProperty>


      <IntVectorProperty name="NumberOfSamplesPerPixel"
          command="SetNumberSamplesPerPixel"
          processes="client|renderserver"
          default_values="1"
          number_of_elements="1">
        <IntRangeDomain min="1" name="range"/>
        <Documentation>
          Specify the number of primary rays that ray tracers shoot, per pixel.
        </Documentation>
        <Hints>
          <PropertyWidgetDecorator type="OSPRayHidingDecorator" />
          <PropertyWidgetDecorator type="GenericDecorator"
                                   mode="visibility"
                                   property="EnableRayTracing"
                                   values="1" />
        </Hints>
      </IntVectorProperty>

      <IntVectorProperty name="NumberOfProgressivePasses"
          command="SetNumberOfProgressivePasses"
          processes="client|renderserver"
          default_values="50"
          number_of_elements="1">
        <IntRangeDomain min="1" name="range"/>
        <Documentation>
          Specify the number of passeses when for progressive rendering.
        </Documentation>
        <Hints>
          <PropertyWidgetDecorator type="OSPRayHidingDecorator" />
          <PropertyWidgetDecorator type="GenericDecorator"
                                   mode="visibility"
                                   property="EnableRayTracing"
                                   values="1" />
        </Hints>
      </IntVectorProperty>

      <IntVectorProperty name="AmbientOcclusionSamples"
          command="SetAmbientOcclusionSamples"
          processes="client|renderserver"
          default_values="0"
          number_of_elements="1">
        <IntRangeDomain min="0" name="range"/>
        <Documentation>Specify the number of occlusion query rays
          that the raycaster sends at each intersection.
        </Documentation>
        <Hints>
          <PropertyWidgetDecorator type="OSPRayHidingDecorator" />
          <PropertyWidgetDecorator type="CompositeDecorator">
            <Expression type="and">
              <PropertyWidgetDecorator type="GenericDecorator"
                                       mode="visibility"
                                       property="EnableRayTracing"
                                       values="1" />
              <PropertyWidgetDecorator type="EnableWidgetDecorator">
                 <Property name="RayTracingBackEnd" function="equals" value="OSPRay raycaster"/>
              </PropertyWidgetDecorator>
            </Expression>
          </PropertyWidgetDecorator>
        </Hints>
      </IntVectorProperty>

      <IntVectorProperty name="RouletteDepth"
          command="SetRouletteDepth"
          processes="client|renderserver"
          default_values="5"
          number_of_elements="1">
        <IntRangeDomain min="0" name="range"/>
        <Documentation>
          Specify the path-traced recursion depth at which to start Russian roulette termination.
        </Documentation>
        <Hints>
          <PropertyWidgetDecorator type="OSPRayHidingDecorator" />
          <PropertyWidgetDecorator type="CompositeDecorator">
            <Expression type="and">
              <PropertyWidgetDecorator type="GenericDecorator"
                                       mode="visibility"
                                       property="EnableRayTracing"
                                       values="1" />
              <PropertyWidgetDecorator type="EnableWidgetDecorator">
                 <Property name="RayTracingBackEnd" function="equals" value="OSPRay pathtracer"/>
              </PropertyWidgetDecorator>
            </Expression>
          </PropertyWidgetDecorator>
        </Hints>
      </IntVectorProperty>

      <IntVectorProperty command="SetBackgroundMode"
                         label="Background mode"
                         default_values="2"
                         name="BackgroundMode"
                         processes="client|renderserver"
                         number_of_elements="1">
        <EnumerationDomain name="enum">
          <!--<Entry text="None"
                 value="0" /> Disabled since needs more work. -->
          <Entry text="Backplate"
                 value="1" />
          <Entry text="Environment"
                 value="2" />
          <Entry text="Both"
                 value="3" />
        </EnumerationDomain>
        <Documentation>
          Background behavior for path tracers. Backplate does not move or affect materials. Environment does.
        </Documentation>
        <Hints>
          <PropertyWidgetDecorator type="OSPRayHidingDecorator" />
          <PropertyWidgetDecorator type="CompositeDecorator">
            <Expression type="and">
              <PropertyWidgetDecorator type="GenericDecorator"
                                       mode="visibility"
                                       property="EnableRayTracing"
                                       values="1" />
              <PropertyWidgetDecorator type="EnableWidgetDecorator">
                <Property name="RayTracingBackEnd" function="contains" value="pathtracer"/>
              </PropertyWidgetDecorator>
            </Expression>
          </PropertyWidgetDecorator>
        </Hints>
      </IntVectorProperty>

      <DoubleVectorProperty
          name="BackgroundNorth"
          label="Environment North"
          command="SetBackgroundNorth"
          processes="client|renderserver"
          default_values="0.0 1.0 0.0"
          animateable="0"
          number_of_elements="3">
        <Documentation>Sets north pole for gradient and image environmental background in path tracers.</Documentation>
        <Hints>
          <PropertyWidgetDecorator type="OSPRayHidingDecorator" />
          <PropertyWidgetDecorator type="CompositeDecorator">
            <Expression type="and">
              <PropertyWidgetDecorator type="GenericDecorator"
                                       mode="visibility"
                                       property="EnableRayTracing"
                                       values="1" />
              <PropertyWidgetDecorator type="EnableWidgetDecorator">
                <Property name="RayTracingBackEnd" function="contains" value="pathtracer"/>
              </PropertyWidgetDecorator>
            </Expression>
          </PropertyWidgetDecorator>
        </Hints>
      </DoubleVectorProperty>

      <DoubleVectorProperty
          name="BackgroundEast"
          command="SetBackgroundEast"
          processes="client|renderserver"
          label="Environment East"
          default_values="1.0 0.0 0.0"
          animateable="0"
          number_of_elements="3">
        <Documentation>Sets east direction for image environmental background in path tracers.</Documentation>
        <Hints>
          <PropertyWidgetDecorator type="OSPRayHidingDecorator" />
          <PropertyWidgetDecorator type="CompositeDecorator">
            <Expression type="and">
              <PropertyWidgetDecorator type="GenericDecorator"
                                       mode="visibility"
                                       property="EnableRayTracing"
                                       values="1" />
              <PropertyWidgetDecorator type="EnableWidgetDecorator">
                <Property name="RayTracingBackEnd" function="contains" value="pathtracer"/>
              </PropertyWidgetDecorator>
            </Expression>
          </PropertyWidgetDecorator>
        </Hints>
      </DoubleVectorProperty>

      <DoubleVectorProperty command="SetEnvironmentalBG"
                            default_values="1 1 1"
                            name="EnvironmentalBG"
                            processes="client|renderserver"
                            panel_widget="color_selector_with_palette"
                            number_of_elements="3">
        <DoubleRangeDomain max="1 1 1"
                           min="0 0 0"
                           name="range" />
        <Hints>
          <PropertyWidgetDecorator type="OSPRayHidingDecorator" />
          <PropertyWidgetDecorator type="CompositeDecorator">
            <Expression type="and">
              <PropertyWidgetDecorator type="GenericDecorator"
                                       mode="visibility"
                                       property="EnableRayTracing"
                                       values="1" />
              <PropertyWidgetDecorator type="EnableWidgetDecorator">
                <Property name="RayTracingBackEnd" function="contains" value="pathtracer"/>
              </PropertyWidgetDecorator>
            </Expression>
          </PropertyWidgetDecorator>
        </Hints>
      </DoubleVectorProperty>

      <DoubleVectorProperty command="SetEnvironmentalBG2"
                            default_values="0 0 0.165"
                            name="EnvironmentalBG2"
                            processes="client|renderserver"
                            panel_widget="color_selector"
                            number_of_elements="3">
        <DoubleRangeDomain max="1 1 1"
                           min="0 0 0"
                           name="range" />
        <Hints>
          <PropertyWidgetDecorator type="OSPRayHidingDecorator" />
          <PropertyWidgetDecorator type="CompositeDecorator">
            <Expression type="and">
              <PropertyWidgetDecorator type="GenericDecorator"
                                       mode="visibility"
                                       property="EnableRayTracing"
                                       values="1" />
              <PropertyWidgetDecorator type="EnableWidgetDecorator">
                <Property name="RayTracingBackEnd" function="contains" value="pathtracer"/>
              </PropertyWidgetDecorator>
            </Expression>
          </PropertyWidgetDecorator>
        </Hints>
      </DoubleVectorProperty>

      <IntVectorProperty command="SetGradientEnvironmentalBG"
                         default_values="1"
                         processes="client|renderserver"
                         name="UseGradientEnvironmentalBG"
                         number_of_elements="1">
        <BooleanDomain name="bool" />
        <Hints>
          <PropertyWidgetDecorator type="OSPRayHidingDecorator" />
          <PropertyWidgetDecorator type="CompositeDecorator">
            <Expression type="and">
              <PropertyWidgetDecorator type="GenericDecorator"
                                       mode="visibility"
                                       property="EnableRayTracing"
                                       values="1" />
              <PropertyWidgetDecorator type="EnableWidgetDecorator">
                <Property name="RayTracingBackEnd" function="contains" value="pathtracer"/>
              </PropertyWidgetDecorator>
            </Expression>
          </PropertyWidgetDecorator>
        </Hints>
      </IntVectorProperty>

      <IntVectorProperty command="SetTexturedEnvironmentalBG"
                         default_values="0"
                         name="UseTexturedEnvironmentalBG"
                         processes="client|renderserver"
                         number_of_elements="1">
        <BooleanDomain name="bool" />
        <Hints>
          <PropertyWidgetDecorator type="OSPRayHidingDecorator" />
          <PropertyWidgetDecorator type="CompositeDecorator">
            <Expression type="and">
              <PropertyWidgetDecorator type="GenericDecorator"
                                       mode="visibility"
                                       property="EnableRayTracing"
                                       values="1" />
              <PropertyWidgetDecorator type="EnableWidgetDecorator">
                <Property name="RayTracingBackEnd" function="contains" value="pathtracer"/>
              </PropertyWidgetDecorator>
            </Expression>
          </PropertyWidgetDecorator>
        </Hints>
      </IntVectorProperty>

      <ProxyProperty command="SetEnvironmentalBGTexture"
                     name="EnvironmentalBGTexture"
                     processes="client|renderserver"
                     panel_widget="texture_selector">
        <ProxyGroupDomain name="groups">
          <Group name="textures" />
        </ProxyGroupDomain>
        <Hints>
          <PropertyWidgetDecorator type="OSPRayHidingDecorator" />
          <PropertyWidgetDecorator type="CompositeDecorator">
            <Expression type="and">
              <PropertyWidgetDecorator type="GenericDecorator"
                                       mode="visibility"
                                       property="EnableRayTracing"
                                       values="1" />
              <PropertyWidgetDecorator type="EnableWidgetDecorator">
                <Property name="RayTracingBackEnd" function="contains" value="pathtracer"/>
              </PropertyWidgetDecorator>
            </Expression>
          </PropertyWidgetDecorator>
        </Hints>
      </ProxyProperty>

      <ProxyProperty name="MaterialLibrary"
                     command="SetMaterialLibrary"
                     processes="client|renderserver"
                     number_of_elements="1"
                     panel_visibility="never">
        <Documentation>Set the material library.</Documentation>
      </ProxyProperty>

      <PropertyGroup label="Ray Tracing">
        <Property name="EnableRayTracing" />
        <Property name="RayTracingBackEnd" />
      </PropertyGroup>

      <PropertyGroup label="Ray Tracing Features">
        <Property name="EnableShadows" />
        <Property name="EnableDenoise" />
        <Property name="VolumeAnisotropy" />
        <Property name="LightScale" />
      </PropertyGroup>

      <PropertyGroup label="Ray Tracing Refinement">
        <Property name="NumberOfSamplesPerPixel" />
        <Property name="NumberOfProgressivePasses" />
        <Property name="AmbientOcclusionSamples" />
        <Property name="RouletteDepth" />
      </PropertyGroup>

      <PropertyGroup label="Path Traced Environment"
                     panel_widget="EnvironmentalBGEditor"
                     panel_visibility="default">
        <Property name="EnvironmentalBG"/>
        <Property name="EnvironmentalBG2"/>
        <Property name="UseGradientEnvironmentalBG"/>
        <Property name="UseTexturedEnvironmentalBG"/>
        <Property name="EnvironmentalBGTexture"/>
        <Hints>
          <PropertyWidgetDecorator type="OSPRayHidingDecorator" />
          <PropertyWidgetDecorator type="CompositeDecorator">
            <Expression type="and">
              <PropertyWidgetDecorator type="GenericDecorator"
                                       mode="visibility"
                                       property="EnableRayTracing"
                                       values="1" />
              <PropertyWidgetDecorator type="EnableWidgetDecorator">
                <Property name="RayTracingBackEnd" function="equals" value="OSPRay pathtracer"/>
              </PropertyWidgetDecorator>
            </Expression>
          </PropertyWidgetDecorator>
        </Hints>
      </PropertyGroup>

      <!-- end of RenderViewProxy -->
    </RenderViewProxy>
  </ProxyGroup>

  <ProxyGroup name="representations">
    <Proxy class="vtkGeometryRepresentation"
           name="GeometryRepresentation"
           processes="client dataserver renderserver">
      <Documentation>
        A representation that uses a geometry filter to convert any input dataset into
        a polygonal mesh and renders it.
      </Documentation>

      <InputProperty command="SetInputConnection"
                     name="Input">
        <DataTypeDomain name="input_type">
          <DataType value="vtkDataSet" />
        </DataTypeDomain>
        <InputArrayDomain attribute_type="any" name="input_array_any" optional="1" />
        <InputArrayDomain attribute_type="point" name="input_array_point" optional="1" />
      </InputProperty>

      <IntVectorProperty name="Visibility"
        command="SetVisibility"
        number_of_elements="1"
        default_values="1"
        panel_visibility="never">
        <BooleanDomain name="bool" />
        <Documentation>
          Visibility of the representation. A representation is shown in the view only
          when it is visible.
        </Documentation>
      </IntVectorProperty>

      <StringVectorProperty name="Representation"
        command="SetRepresentation"
        number_of_elements="1"
        default_values="Surface">
        <StringListDomain name="string_list">
          <String value="Feature Edges" />
          <String value="Outline" />
          <String value="Points" />
          <String value="Surface" />
          <String value="Surface With Edges" />
          <String value="Wireframe" />
        </StringListDomain>
      </StringVectorProperty>

      <IntVectorProperty command="SetTriangulate"
                         default_values="0"
                         name="Triangulate"
                         number_of_elements="1"
                         processes="client|dataserver">
        <BooleanDomain name="bool" />
        <Documentation>
          Triangulate the geometry internally to avoid rendering
          issues of non-convex polygons. This feature has a processing and memory
          cost, it should be enabled only when needed.
        </Documentation>
      </IntVectorProperty>

      <IntVectorProperty command="SetNonlinearSubdivisionLevel"
                       default_values="1"
                       name="NonlinearSubdivisionLevel"
                       number_of_elements="1"
                       processes="client|dataserver">
        <IntRangeDomain min="0" max="4" name="range" />
        <Documentation>
          For datasets with non-linear elements, specify the sub-division level.
          Higher the level, smoother the generated surfaces at the cost of number of
          triangles (or edges, or points) in the output mesh.
        </Documentation>
      </IntVectorProperty>

      <PropertyGroup label="Geometry Generation">
        <Property name="Triangulate" />
        <Property name="NonlinearSubdivisionLevel" />
        <!--
          <Property name="CoordinateShiftScaleMethod" />
        -->
      </PropertyGroup>

      <StringVectorProperty command="SetColorArray"
                            element_types="0 2"
                            name="ColorArrayName"
                            no_custom_default="1"
                            number_of_elements="2">
        <Documentation>
          Set the array to color with. One must specify the field association and
          the array name of the array. If the array is missing, scalar coloring will
          automatically be disabled.
        </Documentation>
        <ArrayListDomain name="array_list"
                         input_domain_name="input_array_any">
          <RequiredProperties>
            <Property function="Input" name="Input" />
          </RequiredProperties>
        </ArrayListDomain>
      </StringVectorProperty>

      <ProxyProperty command="SetLookupTable"
                     name="LookupTable"
                     processes="client|renderserver">
        <Documentation>Set the lookup-table to use to map data array to colors.
        Lookuptable is only used with MapScalars to ON.</Documentation>
        <ProxyGroupDomain name="groups">
          <Group name="lookup_tables" />
        </ProxyGroupDomain>
      </ProxyProperty>

      <IntVectorProperty command="SetInterpolateScalarsBeforeMapping"
                         default_values="1"
                         name="InterpolateScalarsBeforeMapping"
                         number_of_elements="1"
                         processes="client|renderserver">
        <BooleanDomain name="bool" />
        <Documentation>When set to true (default), texture coordinates
        are sent to and interpolated by the graphics card. This is
        equivalent with interpolating scalars and then mapping them to
        obtain colors between points. Otherwise, colors are sent to
        and interpolated by the graphics card.
        </Documentation>
      </IntVectorProperty>

      <IntVectorProperty command="SetMapScalars"
                         default_values="1"
                         name="MapScalars"
                         number_of_elements="1"
                         processes="client|renderserver">
        <BooleanDomain name="bool" />
        <Documentation>When set to True, LookupTable will always be
        used for scalar mapping. Otherwise, when up to 4 component
        scalars are present, the components are clamped to a valid
        color interval (0-255 for an integral type and 0.0-1.0 for a
        floating point type) and then directly used as
        color.</Documentation>
      </IntVectorProperty>


      <PropertyGroup label="Data Coloring" panel_widget="ColorArray">
        <Property name="ColorArrayName" />
        <Property name="LookupTable" />
        <Property name="InterpolateScalarsBeforeMapping" />
        <Property name="MapScalars" />
      </PropertyGroup>

      <SubProxy name="Property" command="SetProperty">
        <Proxy name="Property" proxygroup="rendering" proxyname="Property" />
        <ExposedProperties>
          <PropertyGroup label="Styling">
            <Property name="Opacity" />
          </PropertyGroup>
          <PropertyGroup label="Lighting">
            <Property name="Ambient" />
            <Property name="Diffuse" />
            <Property name="Specular" />
            <Property name="SpecularPower" />
            <Property name="AmbientColor" />
            <Property name="DiffuseColor" />
            <Property name="SpecularColor" />
          </PropertyGroup>
          <Property name="EdgeColor" />
        </ExposedProperties>
      </SubProxy>

      <SubProxy name="Actor" command="SetActor">
        <Proxy name="Actor" proxygroup="rendering" proxyname="Actor" />
        <ExposedProperties>
           <PropertyGroup label="Transforming">
            <Property name="Position"
                      panel_visibility="advanced" />
            <Property name="Scale"
                      panel_visibility="advanced" />
            <Property name="Orientation"
                      panel_visibility="advanced" />
            <Property name="Origin"
                      panel_visibility="advanced" />
          </PropertyGroup>
        </ExposedProperties>
      </SubProxy>

      <IntVectorProperty command="SetScalingMode"
                         default_values="0"
                         name="ScalingMode"
                         label="Scaling Mode"
                         number_of_elements="1"
                         processes="client|renderserver">
        <Documentation>
          Choose how the size of each sphere and cylinder is determined.
        </Documentation>
        <EnumerationDomain name="enum">
          <Entry text="All Exact" value="-1" />
          <Entry text="All Approximate" value="0" />
          <Entry text="Each Scaled" value="1" />
          <Entry text="Each Exact" value="2" />
        </EnumerationDomain>
        <Hints>
          <PropertyWidgetDecorator type="OSPRayHidingDecorator" />
        </Hints>
      </IntVectorProperty>

      <StringVectorProperty command="SetScalingArrayName"
                            default_values=""
                            name="ScalingArray"
                            label="Scale Array"
                            number_of_elements="1"
                            panel_visibility="advanced"
                            processes="client|renderserver">
        <ArrayListDomain input_domain_name="input_array_point"
                         name="array_list">
          <RequiredProperties>
            <Property function="Input" name="Input" />
          </RequiredProperties>
        </ArrayListDomain>
        <Documentation>
          Choice of an array for OSPRay implicit points and lines sizes.
        </Documentation>
        <Hints>
          <PropertyWidgetDecorator type="OSPRayHidingDecorator" />
          <PropertyWidgetDecorator type="GenericDecorator"
                                   mode="visibility"
                                   property="ScalingMode"
                                   values="1" />
        </Hints>
      </StringVectorProperty>

      <!--
      <ProxyProperty command="SetScalingFunction"
                     name="ScalingFunction"
                     label="Scaling Function"
                     panel_visibility="advanced"
                     panel_widget="transfer_function_editor"
                     processes="client|renderserver">
        <Documentation>Set the piecewise function used to map data array to sprite size.
        ScaleTransferFunction is only used if ScaleByArray is set.</Documentation>
        <ProxyListDomain name="proxy_list">
          <Proxy group="piecewise_functions" name="PiecewiseFunction" />
        </ProxyListDomain>
        <Hints>
          <PropertyWidgetDecorator type="OSPRayHidingDecorator" />
          <PropertyWidgetDecorator type="GenericDecorator"
                                   mode="visibility"
                                   property="ScalingMode"
                                   values="1" />
        </Hints>
        </ProxyProperty>
      -->
      <StringVectorProperty command="SetMaterial"
                            name="Material"
                            number_of_elements="1"
                            panel_visibility="advanced"
                            default_values="None"
                            processes="client|renderserver">
        <Documentation>Set the material to paint this object with.</Documentation>
        <MaterialDomain name="string_list" />
        <Hints>
          <PropertyWidgetDecorator type="OSPRayHidingDecorator" />
        </Hints>
      </StringVectorProperty>
      <!-- End of GeometryRepresentation -->
    </Proxy>

    <Proxy class="vtkImageVolumeRepresentation"
           name="UniformGridVolumeRepresentation"
           processes="client renderserver dataserver" >
      <Documentation>Representation for rendering a vtkImageData as
      volume.</Documentation>
      <InputProperty command="SetInputConnection"
                     name="Input">
        <DataTypeDomain composite_data_supported="0"
                        name="input_type">
          <DataType value="vtkImageData" />
        </DataTypeDomain>
        <InputArrayDomain attribute_type="any"
                          name="input_array_any">
        </InputArrayDomain>
        <Documentation>Set the input to the representation.</Documentation>
      </InputProperty>
      <SubProxy name="Property" command="SetProperty" processes="renderserver">
        <Proxy name="Property" proxygroup="rendering" proxyname="VolumeProperty" />
        <ExposedProperties>
          <PropertyGroup label="VolumeRendering">
            <Property name="InterpolationType" />
            <Property name="ScalarOpacityUnitDistance" />
            <Property name="LookupTable" />
            <Property name="ScalarOpacityFunction" />
            <Property name="Shade" />
          </PropertyGroup>
        </ExposedProperties>
        <LinkProperties>
          <Property name="Input" with_property="Input" />
          <Property name="BlendMode" with_property="BlendMode" />
         </LinkProperties>
      </SubProxy>
      <IntVectorProperty command="SetVisibility"
                         default_values="1"
                         name="Visibility"
                         number_of_elements="1"
                         panel_visibility="never"
                         processes="renderserver dataserver">
        <BooleanDomain name="bool" />
        <Documentation>Set the visibility for this
        representation.</Documentation>
      </IntVectorProperty>
      <IntVectorProperty command="SetForceUseCache"
                         default_values="0"
                         is_internal="1"
                         name="ForceUseCache"
                         number_of_elements="1"
                         processes="renderserver">
        <BooleanDomain name="bool" />
        <Documentation>Typically UseCache and CacheKey are updated by the View
        and representations cache based on what the view tells it. However in
        some cases we may want to force a representation to cache irrespective
        of the view (e.g. comparative views). In which case these ivars can up
        set. If ForcedCacheKey is true, it overrides UseCache and CacheKey.
        Instead, ForcedCacheKey is used.</Documentation>
      </IntVectorProperty>
      <DoubleVectorProperty command="SetForcedCacheKey"
                            default_values="none"
                            is_internal="1"
                            name="ForcedCacheKey"
                            number_of_elements="1"
                            processes="renderserver">
        <DoubleRangeDomain name="range" />
        <Documentation>Typically UseCache and CacheKey are updated by the View
        and representations cache based on what the view tells it. However in
        some cases we may want to force a representation to cache irrespective
        of the view (e.g. comparative views). In which case these ivars can up
        set. If ForcedCacheKey is true, it overrides UseCache and CacheKey.
        Instead, ForcedCacheKey is used.</Documentation>
      </DoubleVectorProperty>
      <StringVectorProperty command="SetInputArrayToProcess"
                            element_types="0 0 0 0 2"
                            name="ColorArrayName"
                            no_custom_default="1"
                            number_of_elements="5"
                            processes="renderserver">
        <Documentation>
          Set the array to color with. One must specify the field association and
          the array name of the array. If the array is missing, scalar coloring will
          automatically be disabled.
        </Documentation>
        <ArrayListDomain name="array_list"
                         input_domain_name="input_array_any">
          <RequiredProperties>
            <Property function="Input" name="Input" />
          </RequiredProperties>
        </ArrayListDomain>
      </StringVectorProperty>
      <IntVectorProperty command="SetUseSeparateOpacityArray"
                         default_values="0"
                         name="UseSeparateOpacityArray"
                         number_of_elements="1"
                         panel_visibility="advanced"
                         processes="renderserver">
        <BooleanDomain name="bool"/>
        <Documentation>
          If this property is on, the Opacity Array will be used to determine the
          point gaussian sprites.
        </Documentation>
      </IntVectorProperty>
      <StringVectorProperty name="OpacityArrayName"
                            command="SetOpacityArray"
                            number_of_elements="5"
                            element_types="0 0 0 0 2"
                            label="Volume Opacity Array"
                            panel_visibility="advanced"
                            processes="renderserver">
        <ArrayListDomain name="array_list"
          input_domain_name="input_point_array">
          <RequiredProperties>
            <Property name="Input" function="Input"/>
          </RequiredProperties>
        </ArrayListDomain>
        <Documentation>
          This property specifies the name of the input array to map to opacity.
        </Documentation>
        <Hints>
          <PropertyWidgetDecorator type="ShowWidgetDecorator">
            <Property name="UseSeparateOpacityArray" function="boolean" />
          </PropertyWidgetDecorator>
        </Hints>
      </StringVectorProperty>
      <IntVectorProperty animateable="0"
                         command="SetOpacityArrayComponent"
                         default_values="0"
                         name="OpacityComponent"
                         number_of_elements="1">
        <NumberOfComponentsDomain name="comps" enable_magnitude="1">
          <RequiredProperties>
            <Property function="Input"
                      name="Input" />
            <Property function="ArraySelection"
                      name="OpacityArrayName" />
          </RequiredProperties>
        </NumberOfComponentsDomain>
        <Documentation>
          This property indicates the component of the array to be used for opacity.
        </Documentation>
        <Hints>
          <PropertyWidgetDecorator type="ShowWidgetDecorator">
            <Property name="UseSeparateOpacityArray" function="boolean" />
          </PropertyWidgetDecorator>
        </Hints>
      </IntVectorProperty>
      <SubProxy name="Actor" command="SetActor" processes="renderserver">
        <Proxy name="Actor" proxygroup="rendering" proxyname="VolumeActor" />
        <ExposedProperties>
           <PropertyGroup label="Transforming">
            <Property name="Position"
                      panel_visibility="advanced" />
            <Property name="Scale"
                      panel_visibility="advanced" />
            <Property name="Orientation"
                      panel_visibility="advanced" />
            <Property name="Origin"
                      panel_visibility="advanced" />
            <Property name="Pickable"
                      panel_visibility="advanced" />
          </PropertyGroup>
        </ExposedProperties>
      </SubProxy>

      <IntVectorProperty command="SetMapScalars"
                         default_values="1"
                         name="MapScalars"
                         number_of_elements="1"
                         processes="renderserver">
        <BooleanDomain name="bool" />
        <Documentation>When enabled, LookupTable will always be
        used for scalar mapping. Otherwise, when up to 4 component
        scalars are present, the components are clamped to a valid
        color interval (0-255 for an integral type and 0.0-1.0 for a
        floating point type) and then directly used as
        color.</Documentation>
      </IntVectorProperty>
      <IntVectorProperty command="SetMultiComponentsMapping"
                         default_values="0"
                         name="MultiComponentsMapping"
                         number_of_elements="1"
                         processes="renderserver">
        <BooleanDomain name="bool" />
        <Hints>
          <PropertyWidgetDecorator type="MultiComponentsDecorator"
                                   components="2 4" />
        </Hints>
      </IntVectorProperty>
      <IntVectorProperty command="SetRequestedRenderMode"
                         default_values="0"
                         name="VolumeRenderingMode"
                         number_of_elements="1"
                         processes="renderserver">
        <EnumerationDomain name="enum">
          <Entry text="Smart" value="0" />
          <Entry text="Ray Cast Only" value="1" />
          <Entry text="GPU Based" value="2" />
          <Entry text="OSPRay Based" value="3" />
        </EnumerationDomain>
      </IntVectorProperty>
      <DoubleVectorProperty command="SetScalarOpacityUnitDistance"
                            default_values="1"
                            name="ScalarOpacityUnitDistance"
                            number_of_elements="1"
                            processes="client|renderserver">
        <BoundsDomain mode="approximate_cell_length"
                      name="bounds" >
          <RequiredProperties>
            <Property function="Input"
                      name="Input" />
          </RequiredProperties>
        </BoundsDomain>
        <Hints>
          <PropertyWidgetDecorator type="GenericDecorator"
                                   mode="visibility"
                                   property="BlendMode"
                                   value="6"
                                   inverse="1" />
        </Hints>
      </DoubleVectorProperty>
      <IntVectorProperty command="SetBlendMode"
                         default_values="0"
                         name="BlendMode"
                         number_of_elements="1"
                         processes="renderserver">
        <EnumerationDomain name="enum">
          <!-- See vtkVolumeMapper::BlendModes -->
          <Entry text="Composite"
                 value="0" />
          <Entry text="Isosurface"
                 value="5" />
          <Entry text="Slice"
                 value="6" />
        </EnumerationDomain>
        <Documentation>This property specifies how the samples should be blended</Documentation>
      </IntVectorProperty>
      <DoubleVectorProperty animateable="1"
                            command="SetIsosurfaceValues"
                            label="Isosurfaces"
                            name="IsosurfaceValues"
                            number_of_elements="0"
                            number_of_elements_per_command="1"
                            repeat_command="1"
                            processes="renderserver">
        <ArrayRangeDomain name="scalar_range">
          <RequiredProperties>
            <Property function="Input"
                      name="Input" />
            <Property function="ArraySelection"
                      name="ColorArrayName" />
          </RequiredProperties>
        </ArrayRangeDomain>
        <Documentation>This property specifies the values at which to display
        isosurfaces and also the number of such values.</Documentation>
        <Hints>
          <PropertyWidgetDecorator type="GenericDecorator"
                                   mode="visibility"
                                   property="BlendMode"
                                   value="5" />
          <!-- enable this widget when BlendMode==Isosurface -->
        </Hints>
      </DoubleVectorProperty>
      <!--
      <ProxyProperty command="SetSliceFunction"
                     label="Slice Type"
                     name="SliceFunction">
        <ProxyGroupDomain name="groups">
          <Group name="implicit_functions" />
        </ProxyGroupDomain>
        <ProxyListDomain name="proxy_list">
          <Proxy group="implicit_functions"
                 name="Plane" />
        </ProxyListDomain>
        <Documentation>This property sets the parameters of the slice
        function.</Documentation>
        <Hints>
          <PropertyWidgetDecorator type="GenericDecorator"
                                   mode="visibility"
                                   property="BlendMode"
                                   value="6" />
        </Hints>
      </ProxyProperty>
      -->
      <IntVectorProperty command="SetCropping"
                         default_values="0"
                         name="UseCropping"
                         number_of_elements="1"
                         processes="renderserver">
        <BooleanDomain name="bool"/>
        <Documentation>This property specifies if the cropping is enabled.</Documentation>
      </IntVectorProperty>
      <DoubleVectorProperty animateable="1"
                            command="SetCroppingOrigin"
                            name="CroppingOrigin"
                            number_of_elements="3"
                            argument_is_array="1"
                            default_values="0 0 0"
                            processes="renderserver">
        <Documentation>This property specifies the cropping origin.</Documentation>
        <Hints>
          <PropertyWidgetDecorator type="GenericDecorator"
                                   mode="visibility"
                                   property="UseCropping"
                                   value="1" />
          <!-- enable this widget when BlendMode==Isosurface -->
        </Hints>
      </DoubleVectorProperty>
      <DoubleVectorProperty animateable="1"
                            command="SetCroppingScale"
                            name="CroppingScale"
                            number_of_elements="3"
                            argument_is_array="1"
                            default_values="1 1 1"
                            processes="renderserver">
        <Documentation>This property specifies the cropping scale.</Documentation>
        <Hints>
          <PropertyWidgetDecorator type="GenericDecorator"
                                   mode="visibility"
                                   property="UseCropping"
                                   value="1" />
          <!-- enable this widget when BlendMode==Isosurface -->
        </Hints>
      </DoubleVectorProperty>
      <InputProperty is_internal="1" name="DummyInput" />
      <Hints>
        <ProxyList>
          <Link name="DummyInput"
                with_property="Input" />
        </ProxyList>
      </Hints>

      <!-- end of UniformGridVolumeRepresentation -->
    </Proxy>
  </ProxyGroup>

  <!-- ==================================================================== -->
  <ProxyGroup name="misc">

    <!-- ================================================================== -->
    <ViewLayoutProxy name="ViewLayout"
                     class="vtkViewLayout"
                     processes="client|renderserver">
      <Documentation>Proxy used to manage layout for multiple views.</Documentation>
      <IntVectorProperty name="PreviewMode"
        number_of_elements="2"
        default_values="0 0">
        <Documentation>
          Set the target resolution for the preview mode to display,
          [0, 0] is interpreted as exiting preview.
        </Documentation>
      </IntVectorProperty>
      <IntVectorProperty name="SeparatorWidth"
        command="SetSeparatorWidth"
        number_of_elements="1"
        default_values="1">
        <IntRangeDomain name="range" min="0" max="10" />
        <Documentation>
          The width of the separator (in pixels) to be displayed in preview mode.
        </Documentation>
      </IntVectorProperty>
      <DoubleVectorProperty name="SeparatorColor"
        command="SetSeparatorColor"
        number_of_elements="3"
        default_values="0.937 0.922 0.906">
        <DoubleRangeDomain name="range" min="0 0 0" max="1 1 1" />
        <Documentation>
          The color of the separator to be displayed in preview mode.
        </Documentation>
      </DoubleVectorProperty>
    </ViewLayoutProxy>

    <Proxy name="MaterialLibrary"
           class="vtkPVMaterialLibrary"
           processes="client|renderserver">
      <Documentation>Material library that keeps track of all ray tracking materials.</Documentation>
      <StringVectorProperty name="MaterialFiles"
        command="SetFiles"
        default_values="ospray_mats.json"
        number_of_elements="1"
        repeat_command="1">
        <Documentation>
          Specify the filenames for material files to load.
        </Documentation>
      </StringVectorProperty>

      <StringVectorProperty name="Materials"
        command="GetMaterialNames"
        information_only="1" />
    </Proxy>
  </ProxyGroup>

</ServerManagerConfiguration>
