blob: 258fea1e1b80a968a47261c8af93e2a119662a6f [file] [log] [blame]
// Copyright 2018 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.
#ifndef LIB_ESCHER_PAPER_PAPER_RENDER_QUEUE_CONTEXT_H_
#define LIB_ESCHER_PAPER_PAPER_RENDER_QUEUE_CONTEXT_H_
#include "lib/escher/paper/paper_readme.h"
#include "lib/escher/paper/paper_render_funcs.h"
#include "lib/escher/renderer/render_queue_context.h"
namespace escher {
// Provided to |PaperDrawCalls| via |PaperRenderQueueContext|.
enum class PaperRendererDrawMode : uint8_t {
kAmbient = 0,
kDepthOnly = 1,
kShadowVolumeGeometry = 2,
kShadowVolumeLighting = 3,
kTranslucent = 4,
kEnumCount
};
// Extend |RenderQueueContext| with additional fields that are used by
// the |PaperDrawCalls| enqueued in a |PaperRenderQueue|.
class PaperRenderQueueContext final : public RenderQueueContext {
public:
PaperRenderQueueContext();
~PaperRenderQueueContext();
PaperRendererDrawMode draw_mode() const { return draw_mode_; }
void set_draw_mode(PaperRendererDrawMode draw_mode) {
draw_mode_ = draw_mode;
}
// TODO(ES-158): Providing the shader-program to the render-func via the
// context works fine for now, but we will need a new approach.
ShaderProgram* shader_program() const { return shader_program_.get(); }
void set_shader_program(ShaderProgramPtr program);
private:
PaperRendererDrawMode draw_mode_ = PaperRendererDrawMode::kAmbient;
ShaderProgramPtr shader_program_;
};
} // namespace escher
#endif // LIB_ESCHER_PAPER_PAPER_RENDER_QUEUE_CONTEXT_H_