/*****************************************************************************
 * $LastChangedDate: 2009-12-14 13:08:18 -0500 (Mon, 14 Dec 2009) $
 * @file
 * @author  Jim E. Brooks  http://www.palomino3d.org
 * @brief   Definitions.
 *          THESE ARE GLOBALS!  TRY TO USE ONLY BASIC COMPILE-TIME CONSTANTS.
 *//*
 * LEGAL:   COPYRIGHT (C) 2009 JIM E. BROOKS
 *          THIS SOURCE CODE IS RELEASED UNDER THE TERMS
 *          OF THE GNU GENERAL PUBLIC LICENSE VERSION 2 (GPL 2).
 *****************************************************************************/

#ifndef SHADER_DEFS_HH
#define SHADER_DEFS_HH 1

namespace shader {
namespace defs {

enum eLightType { LIGHT_DISABLED, LIGHT_POSITIONAL, LIGHT_DIRECTIONAL, LIGHT_SPOTLIGHT };
enum eBrightness { BRIGHTNESS_ABSOLUTE, BRIGHTNESS_RELATIVE };

// std::string will cause load-time initialization problems vs. ShaderName but C char[] won't.
#define SHADER_NAME_DEFAULT "default"
#if COMPILE_HW_LIGHT
#define SHADER_NAME_HW "hw"
#endif

// Uniform names (using literal strings might cause unnoticed misspellings):
#define SHADER_UNIFORM_NAME_TEXTURE_0            "uni_texture_0"
#define SHADER_UNIFORM_NAME_TEXTURE_SHADOW       "uni_texture_shadow"
#define SHADER_UNIFORM_NAME_SHADER_MODE_TEXTURE  "uni_shaderMode_texture"
#define SHADER_UNIFORM_NAME_SHADOW_MODE          "uni_shadowMode"
#define SHADER_UNIFORM_NAME_ALPHA_TEX            "uni_alphaTex"
#define SHADER_UNIFORM_NAME_ALPHA_BIAS           "uni_alphaBias"
#define SHADER_UNIFORM_NAME_GLASS                "uni_glass"
#define SHADER_UNIFORM_NAME_BRIGHTNESS           "uni_brightness"
#define SHADER_UNIFORM_NAME_BASE_AMBIENT         "uni_baseAmbient"
#define SHADER_UNIFORM_NAME_FOG_DENSITY          "uni_fogDensity"
#define SHADER_UNIFORM_NAME_FOG_COLOR            "uni_fogColor"
#define SHADER_UNIFORM_NAME_FOG_MIN              "uni_fogMin"
#define SHADER_UNIFORM_NAME_LIGHT0_EC_POSITION   "uni_light0_ecPosition"  // eye coords

} // namespace defs
} // namespace shader

#endif // SHADER_DEFS_HH
