#include <cloud_scape.h>
Public Member Functions | |
void | init (uint32 nWidth, uint32 nHeight, uint32 nDepth, const std::string &filename) |
SCloudTextureClamp () | |
Data Fields | |
uint32 | Depth |
uint32 | Height |
uint8 * | Mem |
uint32 | NbH |
uint32 | NbW |
NLMISC::CSmartPtr< NL3D::CTextureMem > | Tex |
NL3D::CMaterial | ToClamp |
uint32 | Width |
|
Definition at line 126 of file cloud_scape.cpp. References NL3D::CMaterial::initUnlit(), NL3D::CMaterial::setBlend(), NL3D::CMaterial::setBlendFunc(), NL3D::CMaterial::setColor(), NL3D::CMaterial::setShader(), NL3D::CMaterial::setZFunc(), NL3D::CMaterial::setZWrite(), NL3D::CMaterial::texEnvArg0Alpha(), NL3D::CMaterial::texEnvArg1Alpha(), NL3D::CMaterial::texEnvOpAlpha(), and ToClamp.
00127 { 00128 Mem = NULL; 00129 ToClamp.initUnlit(); 00130 ToClamp.setShader (CMaterial::Normal); 00131 ToClamp.texEnvOpAlpha (0, CMaterial::Add); 00132 ToClamp.texEnvArg0Alpha (0, CMaterial::Texture, CMaterial::SrcAlpha); 00133 ToClamp.texEnvArg1Alpha (0, CMaterial::Diffuse, CMaterial::SrcAlpha); 00134 ToClamp.setColor (CRGBA(255,255,255,255)); 00135 ToClamp.setBlend (true); 00136 ToClamp.setBlendFunc (CMaterial::one, CMaterial::one); 00137 ToClamp.setZFunc (CMaterial::always); 00138 ToClamp.setZWrite (false); 00139 00140 } |
|
Definition at line 143 of file cloud_scape.cpp. References NLMISC::getPowerOf2(), r, NLMISC::raiseToNextPowerOf2(), NL3D::CMaterial::setTexture(), ToClamp, uint32, uint8, x, y, and z. Referenced by NL3D::CCloudScape::init().
00144 { 00145 if (Mem != NULL) 00146 return; 00147 00148 Width = raiseToNextPowerOf2 (nWidth); 00149 Height = raiseToNextPowerOf2 (nHeight); 00150 Depth = raiseToNextPowerOf2 (nDepth); 00151 uint32 vdpo2 = getPowerOf2(Depth); 00152 NbW = 1 << (vdpo2 / 2); 00153 if ((vdpo2 & 1) != 0) 00154 NbH = 2 << (vdpo2 / 2); 00155 else 00156 NbH = 1 << (vdpo2 / 2); 00157 00158 Mem = new uint8[NbW*Width*NbH*Height]; 00159 uint32 i, j; 00160 00161 if (filename == "") 00162 { 00163 // No filename so init with default 00164 for (i = 0; i < NbW; ++i) 00165 { 00166 for (j = 0; j < NbH; ++j) 00167 { 00168 uint32 d = i+j*NbW; 00169 uint32 k, l; 00170 for (k = 0; k < Width; ++k) 00171 for (l = 0; l < Height; ++l) 00172 { 00173 float x = k+0.5f; 00174 float y = l+0.5f; 00175 float z = d+0.5f; 00176 float xc = Width/2.0f; 00177 float yc = Height/2.0f; 00178 float zc = Depth/2.0f; 00179 00180 float r = (x-xc)*(x-xc)/(Width*Width/4.0f) + (y-yc)*(y-yc)/(Height*Height/4.0f) 00181 + (z-zc)*(z-zc)/(Depth*Depth/4.0f); 00182 00183 uint8 col = 255; 00184 if (r < 1.0f) 00185 { 00186 col = (uint8)((r)*223+32); 00187 } 00188 Mem[i*Width+k + (j*Height+l)*NbW*Width] = col; 00189 } 00190 } 00191 } 00192 } 00193 else 00194 { 00195 // Load file TODO ! 00196 } 00197 00198 Tex = new CTextureMem (Mem, NbW*Width*NbH*Height, true, false, NbW*Width, NbH*Height, CBitmap::Alpha); 00199 Tex->setWrapS (ITexture::Repeat); 00200 Tex->setWrapT (ITexture::Repeat); 00201 Tex->setFilterMode (ITexture::Linear, ITexture::LinearMipMapOff); 00202 00203 Tex->touch(); 00204 Tex->setReleasable (false); 00205 Tex->generate(); 00206 00207 ToClamp.setTexture(0, Tex); 00208 00209 } |
|
Definition at line 62 of file cloud_scape.h. |
|
Definition at line 62 of file cloud_scape.h. |
|
Definition at line 64 of file cloud_scape.h. |
|
Definition at line 63 of file cloud_scape.h. |
|
Definition at line 63 of file cloud_scape.h. |
|
Definition at line 65 of file cloud_scape.h. |
|
Definition at line 66 of file cloud_scape.h. Referenced by NL3D::CCloud::generate(), init(), and SCloudTextureClamp(). |
|
Definition at line 62 of file cloud_scape.h. |