surface.h
上传用户:center1979
上传日期:2022-07-26
资源大小:50633k
文件大小:2k
源码类别:

OpenGL

开发平台:

Visual C++

  1. // surface.h
  2. //
  3. // Copyright (C) 2001 Chris Laurel <claurel@shatters.net>
  4. //
  5. // This program is free software; you can redistribute it and/or
  6. // modify it under the terms of the GNU General Public License
  7. // as published by the Free Software Foundation; either version 2
  8. // of the License, or (at your option) any later version.
  9. #ifndef _SURFACE_H_
  10. #define _SURFACE_H_
  11. #include <celutil/basictypes.h>
  12. #include <celutil/color.h>
  13. #include <celutil/reshandle.h>
  14. #include "multitexture.h"
  15. class Surface
  16. {
  17.  public:
  18.     Surface(Color c = Color(0.0f, 0.0f, 0.0f)) :
  19.         appearanceFlags(0),
  20.         color(c),
  21.         specularPower(0.0f),
  22.         baseTexture(),
  23.         bumpTexture(),
  24.         nightTexture(),
  25.         overlayTexture(),
  26.         bumpHeight(0.0f),
  27. #ifdef USE_HDR
  28.         nightLightRadiance(1.e-5f*.5f),
  29. #endif
  30.         lunarLambert(0.0f)
  31.     {};
  32.     // Appearance flags
  33.     enum {
  34.         BlendTexture         = 0x1,
  35.         ApplyBaseTexture     = 0x2,
  36.         ApplyBumpMap         = 0x4,
  37.         ApplyNightMap        = 0x10,
  38.         ApplySpecularityMap  = 0x20,
  39.         SpecularReflection   = 0x40,
  40.         Emissive             = 0x80,
  41.         SeparateSpecularMap  = 0x100,
  42.         ApplyOverlay         = 0x200,
  43.     };
  44.     uint32 appearanceFlags;
  45.     Color color;
  46.     Color hazeColor;
  47.     Color specularColor;
  48.     float specularPower;
  49.     MultiResTexture baseTexture;    // surface colors
  50.     MultiResTexture bumpTexture;    // normal map based on terrain relief
  51.     MultiResTexture nightTexture;   // artificial lights to show on night side
  52.     MultiResTexture specularTexture;// specular mask
  53.     MultiResTexture overlayTexture; // overlay texture, applied last
  54.     float bumpHeight;               // scale of bump map relief
  55.     float lunarLambert;             // mix between Lambertian and Lommel-Seeliger (lunar-like) photometric functions
  56. #ifdef USE_HDR
  57.     float nightLightRadiance;       // W sr^-1 m^-2
  58. #endif
  59. };
  60. #endif // _SURFACE_H_