/* ----------------------------------------------------------------------------- GSFramework Copyright 2001-2013 Emmanuel Julien. All Rights Reserved. ------------------------------------------------------------------------------*/ #ifndef __GPUDRAWCONTEXT__ #define __GPUDRAWCONTEXT__ #include "gpu/gpu_material.h" namespace GS { namespace Core { class Light; } namespace GPU { // struct DrawContext { NPLACEMENT_NEW(Renderer) enum Render { Deferred = 0, Opaque, Alpha }; enum Draw { Base = 0, Light }; struct Context { Draw draw; Render render; MaterialShader::Variant variant; }; Context ctx; Core::Light *light; void SetContext(Render rc, Draw dc, MaterialShader::Variant prg) { ctx.render = rc; ctx.draw = dc; ctx.variant = prg; } DrawContext(Render rc, Draw dc, MaterialShader::Variant prg = MaterialShader::Depth) { SetContext(rc, dc, prg); light = 0; } }; } // GPU } // GS #endif // __GPUDRAWCONTEXT__