Home | nevrax.com |
|
noise_value.hGo to the documentation of this file.00001 00007 /* Copyright, 2001 Nevrax Ltd. 00008 * 00009 * This file is part of NEVRAX NEL. 00010 * NEVRAX NEL is free software; you can redistribute it and/or modify 00011 * it under the terms of the GNU General Public License as published by 00012 * the Free Software Foundation; either version 2, or (at your option) 00013 * any later version. 00014 00015 * NEVRAX NEL is distributed in the hope that it will be useful, but 00016 * WITHOUT ANY WARRANTY; without even the implied warranty of 00017 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00018 * General Public License for more details. 00019 00020 * You should have received a copy of the GNU General Public License 00021 * along with NEVRAX NEL; see the file COPYING. If not, write to the 00022 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, 00023 * MA 02111-1307, USA. 00024 */ 00025 00026 #ifndef NL_NOISE_VALUE_H 00027 #define NL_NOISE_VALUE_H 00028 00029 #include "nel/misc/types_nl.h" 00030 #include "nel/misc/vector.h" 00031 #include "nel/misc/stream.h" 00032 #include "nel/misc/rgba.h" 00033 00034 00035 namespace NL3D 00036 { 00037 00038 00039 using NLMISC::CVector; 00040 00041 00042 // *************************************************************************** 00049 class CNoiseValue 00050 { 00051 public: 00052 float Abs; 00053 float Rand; 00054 float Frequency; 00055 00056 public: 00058 CNoiseValue(); 00059 CNoiseValue(float abs, float rand, float freq); 00060 00064 float eval(const CVector &posInWorld) const; 00065 00069 float evalOneLevelRandom(const CVector &posInWorld) const; 00070 00071 00072 void serial(NLMISC::IStream &f); 00073 00074 // ******************* 00075 private: 00077 float noise(const CVector &pos) const; 00078 float evalRandom(const CVector &pos) const; 00079 }; 00080 00081 00082 // *************************************************************************** 00089 class CNoiseColorGradient 00090 { 00091 public: 00093 CNoiseValue NoiseValue; 00094 std::vector<NLMISC::CRGBAF> Gradients; 00095 00096 00097 public: 00102 void eval(const CVector &posInWorld, NLMISC::CRGBAF &result) const; 00103 00104 void serial(NLMISC::IStream &f); 00105 }; 00106 00107 00108 00109 } // NL3D 00110 00111 00112 #endif // NL_NOISE_VALUE_H 00113 00114 /* End of noise_value.h */ |