// 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)
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)
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)
type RenderFrequency = strict enum {
    WHEN_REQUESTED = 0;
    CONTINUOUSLY = 1;
};
