// Copyright 2017 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
library fuchsia.ui.gfx;

/// These are all of the types of parameters that can be set to configure a
/// `Renderer`.
@available(deprecated=13, removed=17, legacy=true)
type RendererParam = strict union {
    1: shadow_technique ShadowTechnique;

    @deprecated
    2: reserved RenderFrequency; // No longer supported.
    3: enable_debugging bool;
};

/// Represents the shadow algorithm that the `Renderer` should use when lighting
/// the scene.
@available(deprecated=13, removed=17, legacy=true)
type ShadowTechnique = strict enum {
    /// No shadows.
    UNSHADOWED = 0;
    /// Default.  Screen-space, depth-buffer based shadows; SSDO-ish.
    SCREEN_SPACE = 1;
    /// Basic shadow map.
    SHADOW_MAP = 2;
    /// Moment shadow map (see http:///momentsingraphics.de).
    MOMENT_SHADOW_MAP = 3;
    /// Stencil shadow volume.
    STENCIL_SHADOW_VOLUME = 4;
};

@available(deprecated=13, removed=17, legacy=true)
type RenderFrequency = strict enum {
    WHEN_REQUESTED = 0;
    CONTINUOUSLY = 1;
};
