67 lines
1.9 KiB
C++
67 lines
1.9 KiB
C++
// surface.h
|
|
//
|
|
// Copyright (C) 2001 Chris Laurel <claurel@shatters.net>
|
|
//
|
|
// This program is free software; you can redistribute it and/or
|
|
// modify it under the terms of the GNU General Public License
|
|
// as published by the Free Software Foundation; either version 2
|
|
// of the License, or (at your option) any later version.
|
|
|
|
#ifndef _SURFACE_H_
|
|
#define _SURFACE_H_
|
|
|
|
#include <celutil/color.h>
|
|
#include <celutil/reshandle.h>
|
|
#include "multitexture.h"
|
|
|
|
|
|
class Surface
|
|
{
|
|
public:
|
|
Surface(Color c = Color(0.0f, 0.0f, 0.0f)) :
|
|
appearanceFlags(0),
|
|
color(c),
|
|
specularPower(0.0f),
|
|
baseTexture(),
|
|
bumpTexture(),
|
|
nightTexture(),
|
|
overlayTexture(),
|
|
bumpHeight(0.0f),
|
|
#ifdef USE_HDR
|
|
nightLightRadiance(1.e-5f*.5f),
|
|
#endif
|
|
lunarLambert(0.0f)
|
|
{};
|
|
|
|
// Appearance flags
|
|
enum {
|
|
BlendTexture = 0x1,
|
|
ApplyBaseTexture = 0x2,
|
|
ApplyBumpMap = 0x4,
|
|
ApplyNightMap = 0x10,
|
|
ApplySpecularityMap = 0x20,
|
|
SpecularReflection = 0x40,
|
|
Emissive = 0x80,
|
|
SeparateSpecularMap = 0x100,
|
|
ApplyOverlay = 0x200,
|
|
};
|
|
|
|
uint32_t appearanceFlags;
|
|
Color color;
|
|
Color specularColor;
|
|
float specularPower;
|
|
MultiResTexture baseTexture; // surface colors
|
|
MultiResTexture bumpTexture; // normal map based on terrain relief
|
|
MultiResTexture nightTexture; // artificial lights to show on night side
|
|
MultiResTexture specularTexture;// specular mask
|
|
MultiResTexture overlayTexture; // overlay texture, applied last
|
|
float bumpHeight; // scale of bump map relief
|
|
float lunarLambert; // mix between Lambertian and Lommel-Seeliger (lunar-like) photometric functions
|
|
#ifdef USE_HDR
|
|
float nightLightRadiance; // W sr^-1 m^-2
|
|
#endif
|
|
};
|
|
|
|
#endif // _SURFACE_H_
|
|
|