| // 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_ |