#include <noise_3d.h>
|
Definition at line 36 of file noise_3d.cpp. References _IsDriverSupportCloudSinglePass, _Mat, _Mem, _NbVertices, and _OffS.
00037 { 00038 _Mem = NULL; 00039 _Mat = NULL; 00040 _OffS = NULL; 00041 _Driver = pDriver; 00042 _NbVertices = 0; 00043 _IsDriverSupportCloudSinglePass = pDriver->supportCloudRenderSinglePass(); 00044 } |
|
Definition at line 47 of file noise_3d.cpp.
|
|
Definition at line 421 of file noise_3d.cpp. References _IsDriverSupportCloudSinglePass, _Mat, _NbVertices, NL3D::IDriver::activeVertexBuffer(), flush2passes(), NL3D::IDriver::renderQuads(), NL3D::CMaterial::setColor(), and uint8. Referenced by NL3D::CCloud::generate().
00422 { 00423 if (!_IsDriverSupportCloudSinglePass) 00424 { 00425 flush2passes (); 00426 return; 00427 } 00428 00429 _Mat->setColor(CRGBA(0,0,0,(uint8)(255*_Intensity))); 00430 _Driver->activeVertexBuffer (_VertexBuffer); 00431 _Driver->renderQuads (*_Mat, 0, _NbVertices/4); 00432 _NbVertices = 0; 00433 } |
|
Definition at line 436 of file noise_3d.cpp. References _Mat, _NbVertices, NL3D::IDriver::activeVertexBuffer(), and NL3D::IDriver::renderQuads(). Referenced by flush().
00437 { 00438 _Driver->activeVertexBuffer (_VertexBuffer); 00439 _Driver->renderQuads (*_Mat, 0, _NbVertices/4); 00440 _NbVertices = 0; 00441 } |
|
Definition at line 457 of file noise_3d.cpp. References uint32. Referenced by NL3D::CCloud::generate().
00458 { 00459 return _Depth; 00460 } |
|
Definition at line 451 of file noise_3d.cpp. References uint32. Referenced by NL3D::CCloud::generate().
00452 { 00453 return _Height; 00454 } |
|
Definition at line 445 of file noise_3d.cpp. References uint32. Referenced by NL3D::CCloud::generate().
00446 { 00447 return _Width; 00448 } |
|
Definition at line 55 of file noise_3d.cpp. References _IsDriverSupportCloudSinglePass, _Mat, _Mem, _NbSliceH, _NbSliceW, _OffS, _ScaleH, _ScaleW, NLMISC::getPowerOf2(), NL3D::CMaterial::initUnlit(), NLMISC::raiseToNextPowerOf2(), NL3D::CMaterial::setBlend(), NL3D::CMaterial::setBlendFunc(), NL3D::CMaterial::setColor(), NL3D::CMaterial::setShader(), NL3D::CMaterial::setTexture(), NL3D::CVertexBuffer::setVertexFormat(), NL3D::CMaterial::setZFunc(), NL3D::CMaterial::setZWrite(), NLMISC::CUV::U, uint32, uint8, NLMISC::CUV::V, and w. Referenced by NL3D::CCloudScape::init().
00056 { 00057 uint32 i; 00058 00059 if (_Mem != NULL) 00060 return; 00061 00062 w = raiseToNextPowerOf2 (w); 00063 h = raiseToNextPowerOf2 (h); 00064 d = raiseToNextPowerOf2 (d); 00065 if (w > 64) w = 64; 00066 if (h > 64) h = 64; 00067 if (d > 64) d = 64; 00068 if (w < 4) w = 4; 00069 if (h < 4) h = 4; 00070 if (d < 4) d = 4; 00071 _Width = w; 00072 _Height = h; 00073 _Depth = d; 00074 uint32 vdpo2 = getPowerOf2(_Depth); 00075 00076 _NbSliceW = 1 << (vdpo2 / 2); 00077 if ((vdpo2 & 1) != 0) 00078 _NbSliceH = 2 << (vdpo2 / 2); 00079 else 00080 _NbSliceH = 1 << (vdpo2 / 2); 00081 00082 _ScaleW = 1.0f / _NbSliceW; 00083 _ScaleH = 1.0f / _NbSliceH; 00084 00085 _Mem = new uint8[w*h*d]; 00086 00087 // Create initial noise 00088 for (i = 0; i < (w*h*d); i++) 00089 _Mem[i] = (uint8)(256.0f*rand()/RAND_MAX); 00090 00091 _OffS = new CUV [_Depth]; 00092 for (i = 0; i < _Depth; i++) 00093 { 00094 _OffS[i].U = ((float)rand())/RAND_MAX; 00095 _OffS[i].V = ((float)rand())/RAND_MAX; 00096 } 00097 00098 _Tex = new CTextureMem (_Mem, _Width*_NbSliceW*_Height*_NbSliceH, true, false, _Width*_NbSliceW, _Height*_NbSliceH, 00099 CBitmap::Alpha); 00100 _Tex->setWrapS(ITexture::Repeat); 00101 _Tex->setWrapT(ITexture::Repeat); 00102 _Tex->setFilterMode(ITexture::Linear, ITexture::LinearMipMapOff); 00103 _Tex->touch(); 00104 _Tex->generate(); 00105 00106 if (_IsDriverSupportCloudSinglePass) 00107 { 00108 _Mat = new CMaterial(); 00109 _Mat->initUnlit(); 00110 _Mat->setShader (CMaterial::Cloud); 00111 _Mat->setTexture (0, _Tex); 00112 _Mat->setTexture (1, _Tex); 00113 _Mat->setColor (CRGBA(255,255,255,255)); 00114 _Mat->setBlend (true); 00115 _Mat->setBlendFunc(CMaterial::one, CMaterial::one); 00116 _Mat->setZFunc (CMaterial::always); 00117 _Mat->setZWrite (false); 00118 _VertexBuffer.setVertexFormat (CVertexBuffer::PositionFlag | CVertexBuffer::PrimaryColorFlag | 00119 CVertexBuffer::TexCoord0Flag | CVertexBuffer::TexCoord1Flag); 00120 } 00121 else 00122 { 00123 _Mat = new CMaterial(); 00124 _Mat->initUnlit(); 00125 _Mat->setShader (CMaterial::Normal); 00126 _Mat->setTexture (0, _Tex); 00127 _Mat->setColor (CRGBA(255,255,255,255)); 00128 _Mat->setBlend (true); 00129 _Mat->setBlendFunc(CMaterial::one, CMaterial::one); 00130 _Mat->setZFunc (CMaterial::always); 00131 _Mat->setZWrite (false); 00132 _VertexBuffer.setVertexFormat (CVertexBuffer::PositionFlag | CVertexBuffer::PrimaryColorFlag | 00133 CVertexBuffer::TexCoord0Flag); 00134 } 00135 } |
|
Definition at line 207 of file noise_3d.cpp. References _IsDriverSupportCloudSinglePass, _NbSliceW, _NbVertices, _OffS, _ScaleH, _ScaleW, NL3D::CVertexBuffer::getColorPointer(), NL3D::CVertexBuffer::getNumVertices(), NL3D::CVertexBuffer::getTexCoordPointer(), NL3D::CVertexBuffer::getVertexCoordPointer(), NL3D::CVertexBuffer::getVertexSize(), render2passes(), NL3D::CVertexBuffer::setNumVertices(), NLMISC::CUV::U, uint32, uint8, NLMISC::CQuadUV::Uv0, NLMISC::CQuadUV::Uv1, NLMISC::CQuadUV::Uv2, NLMISC::CQuadUV::Uv3, NLMISC::CUV::V, NLMISC::CQuad::V0, NLMISC::CQuad::V1, NLMISC::CQuad::V2, and NLMISC::CQuad::V3.
00208 { 00209 // [ At0*wpos+At1*(1-wpos) ] * alpha 00210 00211 if (!_IsDriverSupportCloudSinglePass) 00212 { 00213 render2passes (qc, wpos, intensity); 00214 return; 00215 } 00216 00217 _Intensity = intensity; 00218 00219 wpos = wpos - floorf (wpos); 00220 uint32 nSlice1 = (uint32)(wpos * _Depth), nSlice2; 00221 if (nSlice1 == (_Depth-1)) 00222 nSlice2 = 0; 00223 else 00224 nSlice2 = 1 + nSlice1; 00225 // If wpos is just on slice1 alpha must be one 00226 float alphaPos = 1.0f - _Depth*(wpos - (((float)nSlice1) / _Depth)); 00227 00228 uint8 nAlphaPos = (uint8)(255*alphaPos); 00229 00230 uint32 nVSize = _VertexBuffer.getVertexSize (); 00231 00232 if (_NbVertices == _VertexBuffer.getNumVertices()) 00233 { 00234 _VertexBuffer.setNumVertices (_NbVertices+4); 00235 } 00236 00237 CVector *pVertices = (CVector*)_VertexBuffer.getVertexCoordPointer(_NbVertices); 00238 *pVertices = qc.V0; pVertices = (CVector*)( ((uint8*)pVertices) + nVSize ); 00239 *pVertices = qc.V1; pVertices = (CVector*)( ((uint8*)pVertices) + nVSize ); 00240 *pVertices = qc.V2; pVertices = (CVector*)( ((uint8*)pVertices) + nVSize ); 00241 *pVertices = qc.V3; 00242 00243 CUV *pUV = (CUV*)_VertexBuffer.getTexCoordPointer (_NbVertices, 0); 00244 *pUV = CUV(qc.Uv0.U/_NbSliceW+_OffS[nSlice1].U, qc.Uv0.V*_ScaleH+_OffS[nSlice1].V); 00245 pUV = (CUV*)( ((uint8*)pUV) + nVSize ); 00246 *pUV = CUV(qc.Uv1.U/_NbSliceW+_OffS[nSlice1].U, qc.Uv1.V*_ScaleH+_OffS[nSlice1].V); 00247 pUV = (CUV*)( ((uint8*)pUV) + nVSize ); 00248 *pUV = CUV(qc.Uv2.U/_NbSliceW+_OffS[nSlice1].U, qc.Uv2.V*_ScaleH+_OffS[nSlice1].V); 00249 pUV = (CUV*)( ((uint8*)pUV) + nVSize ); 00250 *pUV = CUV(qc.Uv3.U/_NbSliceW+_OffS[nSlice1].U, qc.Uv3.V*_ScaleH+_OffS[nSlice1].V); 00251 00252 pUV = (CUV*)_VertexBuffer.getTexCoordPointer (_NbVertices, 1); 00253 *pUV = CUV(qc.Uv0.U*_ScaleW+_OffS[nSlice2].U, qc.Uv0.V*_ScaleH+_OffS[nSlice2].V); 00254 pUV = (CUV*)( ((uint8*)pUV) + nVSize ); 00255 *pUV = CUV(qc.Uv1.U*_ScaleW+_OffS[nSlice2].U, qc.Uv1.V*_ScaleH+_OffS[nSlice2].V); 00256 pUV = (CUV*)( ((uint8*)pUV) + nVSize ); 00257 *pUV = CUV(qc.Uv2.U*_ScaleW+_OffS[nSlice2].U, qc.Uv2.V*_ScaleH+_OffS[nSlice2].V); 00258 pUV = (CUV*)( ((uint8*)pUV) + nVSize ); 00259 *pUV = CUV(qc.Uv3.U*_ScaleW+_OffS[nSlice2].U, qc.Uv3.V*_ScaleH+_OffS[nSlice2].V); 00260 00261 uint8 *pColA = (uint8*)_VertexBuffer.getColorPointer(_NbVertices) + 3; 00262 *pColA = nAlphaPos; pColA = ((uint8*)pColA) + nVSize; 00263 *pColA = nAlphaPos; pColA = ((uint8*)pColA) + nVSize; 00264 *pColA = nAlphaPos; pColA = ((uint8*)pColA) + nVSize; 00265 *pColA = nAlphaPos; 00266 00267 _NbVertices += 4; 00268 } |
|
Definition at line 138 of file noise_3d.cpp. References _NbVertices, _OffS, _ScaleH, _ScaleW, alpha, NL3D::CVertexBuffer::getColorPointer(), NL3D::CVertexBuffer::getNumVertices(), NL3D::CVertexBuffer::getTexCoordPointer(), NL3D::CVertexBuffer::getVertexCoordPointer(), NL3D::CVertexBuffer::getVertexSize(), NL3D::CVertexBuffer::setNumVertices(), NLMISC::CUV::U, uint32, uint8, NLMISC::CQuadUV::Uv0, NLMISC::CQuadUV::Uv1, NLMISC::CQuadUV::Uv2, NLMISC::CQuadUV::Uv3, NLMISC::CUV::V, NLMISC::CQuad::V0, NLMISC::CQuad::V1, NLMISC::CQuad::V2, and NLMISC::CQuad::V3. Referenced by render().
00139 { 00140 // For the moment we do it in 2 passes : because wpos is a position between slice we have to do : 00141 // [ At0*wpos+At1*(1-wpos) ] * alpha 00142 // this is done like that : 00143 // At0*[wpos*alpha] + At1*[(1-wpos)*alpha] 00144 00145 wpos = fmodf (wpos, 1.0f); 00146 uint32 nSlice1 = (uint32)(wpos * _Depth), nSlice2; 00147 if (nSlice1 == (_Depth-1)) 00148 nSlice2 = 0; 00149 else 00150 nSlice2 = 1 + nSlice1; 00151 // If wpos is just on slice1 alpha must be one 00152 float alphaPos = 1.0f - _Depth*(wpos - (((float)nSlice1) / _Depth)); 00153 00154 if (_NbVertices == _VertexBuffer.getNumVertices()) 00155 { 00156 _VertexBuffer.setNumVertices(_NbVertices+8); 00157 } 00158 00159 uint32 nVSize = _VertexBuffer.getVertexSize (); 00160 CVector *pVertices = (CVector*)_VertexBuffer.getVertexCoordPointer(_NbVertices); 00161 *pVertices = qc.V0; pVertices = (CVector*)( ((uint8*)pVertices) + nVSize ); 00162 *pVertices = qc.V1; pVertices = (CVector*)( ((uint8*)pVertices) + nVSize ); 00163 *pVertices = qc.V2; pVertices = (CVector*)( ((uint8*)pVertices) + nVSize ); 00164 *pVertices = qc.V3; pVertices = (CVector*)( ((uint8*)pVertices) + nVSize ); 00165 *pVertices = qc.V0; pVertices = (CVector*)( ((uint8*)pVertices) + nVSize ); 00166 *pVertices = qc.V1; pVertices = (CVector*)( ((uint8*)pVertices) + nVSize ); 00167 *pVertices = qc.V2; pVertices = (CVector*)( ((uint8*)pVertices) + nVSize ); 00168 *pVertices = qc.V3; 00169 00170 CUV *pUV = (CUV*)_VertexBuffer.getTexCoordPointer (_NbVertices, 0); 00171 *pUV = CUV(qc.Uv0.U*_ScaleW+_OffS[nSlice1].U, qc.Uv0.V*_ScaleH+_OffS[nSlice1].V); 00172 pUV = (CUV*)( ((uint8*)pUV) + nVSize ); 00173 *pUV = CUV(qc.Uv1.U*_ScaleW+_OffS[nSlice1].U, qc.Uv1.V*_ScaleH+_OffS[nSlice1].V); 00174 pUV = (CUV*)( ((uint8*)pUV) + nVSize ); 00175 *pUV = CUV(qc.Uv2.U*_ScaleW+_OffS[nSlice1].U, qc.Uv2.V*_ScaleH+_OffS[nSlice1].V); 00176 pUV = (CUV*)( ((uint8*)pUV) + nVSize ); 00177 *pUV = CUV(qc.Uv3.U*_ScaleW+_OffS[nSlice1].U, qc.Uv3.V*_ScaleH+_OffS[nSlice1].V); 00178 pUV = (CUV*)( ((uint8*)pUV) + nVSize ); 00179 00180 *pUV = CUV(qc.Uv0.U*_ScaleW+_OffS[nSlice2].U, qc.Uv0.V*_ScaleH+_OffS[nSlice2].V); 00181 pUV = (CUV*)( ((uint8*)pUV) + nVSize ); 00182 *pUV = CUV(qc.Uv1.U*_ScaleW+_OffS[nSlice2].U, qc.Uv1.V*_ScaleH+_OffS[nSlice2].V); 00183 pUV = (CUV*)( ((uint8*)pUV) + nVSize ); 00184 *pUV = CUV(qc.Uv2.U*_ScaleW+_OffS[nSlice2].U, qc.Uv2.V*_ScaleH+_OffS[nSlice2].V); 00185 pUV = (CUV*)( ((uint8*)pUV) + nVSize ); 00186 *pUV = CUV(qc.Uv3.U*_ScaleW+_OffS[nSlice2].U, qc.Uv3.V*_ScaleH+_OffS[nSlice2].V); 00187 00188 uint8 finalAlpha = (uint8)(255*alphaPos*alpha); 00189 00190 uint8 *pColA = (uint8*)_VertexBuffer.getColorPointer(_NbVertices) + 3; 00191 *pColA = finalAlpha; pColA = ((uint8*)pColA) + nVSize; 00192 *pColA = finalAlpha; pColA = ((uint8*)pColA) + nVSize; 00193 *pColA = finalAlpha; pColA = ((uint8*)pColA) + nVSize; 00194 *pColA = finalAlpha; pColA = ((uint8*)pColA) + nVSize; 00195 00196 finalAlpha = (uint8)(255*(1.0f-alphaPos)*alpha); 00197 00198 *pColA = finalAlpha; pColA = ((uint8*)pColA) + nVSize; 00199 *pColA = finalAlpha; pColA = ((uint8*)pColA) + nVSize; 00200 *pColA = finalAlpha; pColA = ((uint8*)pColA) + nVSize; 00201 *pColA = finalAlpha; 00202 00203 _NbVertices += 8; 00204 } |
|
Definition at line 271 of file noise_3d.cpp. References _IsDriverSupportCloudSinglePass, _NbSliceH, _NbSliceW, _NbVertices, _OffS, NL3D::CVertexBuffer::getColorPointer(), NL3D::CVertexBuffer::getNumVertices(), NL3D::CVertexBuffer::getTexCoordPointer(), NL3D::CVertexBuffer::getVertexCoordPointer(), NL3D::CVertexBuffer::getVertexSize(), renderGrid2passes(), NL3D::CVertexBuffer::setNumVertices(), NLMISC::CUV::U, uint32, uint8, NLMISC::CUV::V, and w. Referenced by NL3D::CCloud::generate().
00273 { 00274 00275 if (!_IsDriverSupportCloudSinglePass) 00276 { 00277 renderGrid2passes (nbw, nbh, w, h, UStart, VStart, WStart, dU, dV, dW, intensity); 00278 return; 00279 } 00280 00281 _Intensity = intensity; 00282 00283 uint32 i, j, nSlice1, nSlice2; 00284 float wpos, oneOverNbWNbH = 1.0f / (nbw*nbh); 00285 CVector *pVertices; 00286 CUV *pUV0, *pUV1; 00287 uint8 *pColA, nAlphaPos; 00288 uint32 nVSize = _VertexBuffer.getVertexSize (); 00289 00290 if (_VertexBuffer.getNumVertices() < nbw*nbh*4) 00291 { 00292 _VertexBuffer.setNumVertices (nbw*nbh*4); 00293 } 00294 00295 dU = (UStart+dU) /_NbSliceW; 00296 dV = (VStart+dV) /_NbSliceH; 00297 UStart = UStart / _NbSliceW; 00298 VStart = VStart / _NbSliceH; 00299 00300 pVertices = (CVector*)_VertexBuffer.getVertexCoordPointer(0); 00301 pUV0 = (CUV*)_VertexBuffer.getTexCoordPointer (0, 0); 00302 pUV1 = (CUV*)_VertexBuffer.getTexCoordPointer (0, 1); 00303 pColA = (uint8*)_VertexBuffer.getColorPointer(0) + 3; 00304 00305 for (j = 0; j < nbh; ++j) 00306 { 00307 for (i = 0; i < nbw; ++i) 00308 { 00309 wpos = (float)WStart+dW*(i+(float)j*nbw)*oneOverNbWNbH; 00310 wpos = wpos - floorf (wpos); 00311 nSlice1 = (uint32)(wpos * _Depth); 00312 if (nSlice1 == (_Depth-1)) 00313 nSlice2 = 0; 00314 else 00315 nSlice2 = 1 + nSlice1; 00316 // If wpos is just on slice1 alpha must be one 00317 nAlphaPos = (uint8)( 255*(1.0f - _Depth*(wpos - (((float)nSlice1) / _Depth))) ); 00318 00319 *pVertices = CVector((float)i*w, (float)j*h, 0.0f); pVertices = (CVector*)( ((uint8*)pVertices) + nVSize ); 00320 *pVertices = CVector((float)(i+1)*w, (float)j*h, 0.0f); pVertices = (CVector*)( ((uint8*)pVertices) + nVSize ); 00321 *pVertices = CVector((float)(i+1)*w, (float)(j+1)*h, 0.0f); pVertices = (CVector*)( ((uint8*)pVertices) + nVSize ); 00322 *pVertices = CVector((float)i*w, (float)(j+1)*h, 0.0f); pVertices = (CVector*)( ((uint8*)pVertices) + nVSize ); 00323 00324 pUV0->U = UStart+_OffS[nSlice1].U; pUV0->V = VStart+_OffS[nSlice1].V; pUV0 = (CUV*)( ((uint8*)pUV0) + nVSize ); 00325 pUV0->U = dU+_OffS[nSlice1].U; pUV0->V = VStart+_OffS[nSlice1].V; pUV0 = (CUV*)( ((uint8*)pUV0) + nVSize ); 00326 pUV0->U = dU+_OffS[nSlice1].U; pUV0->V = dV+_OffS[nSlice1].V; pUV0 = (CUV*)( ((uint8*)pUV0) + nVSize ); 00327 pUV0->U = UStart+_OffS[nSlice1].U; pUV0->V = dV+_OffS[nSlice1].V; pUV0 = (CUV*)( ((uint8*)pUV0) + nVSize ); 00328 00329 pUV1->U = UStart+_OffS[nSlice2].U; pUV1->V = VStart+_OffS[nSlice2].V; pUV1 = (CUV*)( ((uint8*)pUV1) + nVSize ); 00330 pUV1->U = dU+_OffS[nSlice2].U; pUV1->V = VStart+_OffS[nSlice2].V; pUV1 = (CUV*)( ((uint8*)pUV1) + nVSize ); 00331 pUV1->U = dU+_OffS[nSlice2].U; pUV1->V = dV+_OffS[nSlice2].V; pUV1 = (CUV*)( ((uint8*)pUV1) + nVSize ); 00332 pUV1->U = UStart+_OffS[nSlice2].U; pUV1->V = dV+_OffS[nSlice2].V; pUV1 = (CUV*)( ((uint8*)pUV1) + nVSize ); 00333 00334 *pColA = nAlphaPos; pColA = ((uint8*)pColA) + nVSize; 00335 *pColA = nAlphaPos; pColA = ((uint8*)pColA) + nVSize; 00336 *pColA = nAlphaPos; pColA = ((uint8*)pColA) + nVSize; 00337 *pColA = nAlphaPos; pColA = ((uint8*)pColA) + nVSize; 00338 } 00339 } 00340 00341 _NbVertices = nbw*nbh*4; 00342 } |
|
Definition at line 345 of file noise_3d.cpp. References _NbSliceH, _NbSliceW, _NbVertices, _OffS, NL3D::CVertexBuffer::getColorPointer(), NL3D::CVertexBuffer::getNumVertices(), NL3D::CVertexBuffer::getTexCoordPointer(), NL3D::CVertexBuffer::getVertexCoordPointer(), NL3D::CVertexBuffer::getVertexSize(), NL3D::CVertexBuffer::setNumVertices(), NLMISC::CUV::U, uint32, uint8, NLMISC::CUV::V, and w. Referenced by renderGrid().
00347 { 00348 uint32 i, j, nSlice1, nSlice2; 00349 float wpos, oneOverNbWNbH = 1.0f / (nbw*nbh); 00350 CVector *pVertices; 00351 CUV *pUV0; 00352 uint8 *pColA, nFinalAlpha; 00353 uint32 nVSize = _VertexBuffer.getVertexSize (); 00354 00355 if (_VertexBuffer.getNumVertices() < 2*nbw*nbh*4) 00356 { 00357 _VertexBuffer.setNumVertices (2*nbw*nbh*4); 00358 } 00359 00360 dU = (UStart+dU) /_NbSliceW; 00361 dV = (VStart+dV) /_NbSliceH; 00362 UStart = UStart / _NbSliceW; 00363 VStart = VStart / _NbSliceH; 00364 00365 pVertices = (CVector*)_VertexBuffer.getVertexCoordPointer(0); 00366 pUV0 = (CUV*)_VertexBuffer.getTexCoordPointer (0, 0); 00367 pColA = (uint8*)_VertexBuffer.getColorPointer(0) + 3; 00368 00369 for (j = 0; j < nbh; ++j) 00370 { 00371 for (i = 0; i < nbw; ++i) 00372 { 00373 wpos = (float)WStart+dW*(i+(float)j*nbw)*oneOverNbWNbH; 00374 wpos = fmodf (wpos, 1.0f); 00375 nSlice1 = (uint32)(wpos * _Depth); 00376 if (nSlice1 == (_Depth-1)) 00377 nSlice2 = 0; 00378 else 00379 nSlice2 = 1 + nSlice1; 00380 // If wpos is just on slice1 alpha must be one 00381 float alphaPos = 1.0f - _Depth*(wpos - (((float)nSlice1) / _Depth)); 00382 00383 *pVertices = CVector((float)i*w, (float)j*h, 0.0f); pVertices = (CVector*)( ((uint8*)pVertices) + nVSize ); 00384 *pVertices = CVector((float)(i+1)*w, (float)j*h, 0.0f); pVertices = (CVector*)( ((uint8*)pVertices) + nVSize ); 00385 *pVertices = CVector((float)(i+1)*w, (float)(j+1)*h, 0.0f); pVertices = (CVector*)( ((uint8*)pVertices) + nVSize ); 00386 *pVertices = CVector((float)i*w, (float)(j+1)*h, 0.0f); pVertices = (CVector*)( ((uint8*)pVertices) + nVSize ); 00387 *pVertices = CVector((float)i*w, (float)j*h, 0.0f); pVertices = (CVector*)( ((uint8*)pVertices) + nVSize ); 00388 *pVertices = CVector((float)(i+1)*w, (float)j*h, 0.0f); pVertices = (CVector*)( ((uint8*)pVertices) + nVSize ); 00389 *pVertices = CVector((float)(i+1)*w, (float)(j+1)*h, 0.0f); pVertices = (CVector*)( ((uint8*)pVertices) + nVSize ); 00390 *pVertices = CVector((float)i*w, (float)(j+1)*h, 0.0f); pVertices = (CVector*)( ((uint8*)pVertices) + nVSize ); 00391 00392 pUV0->U = UStart+_OffS[nSlice1].U; pUV0->V = VStart+_OffS[nSlice1].V; pUV0 = (CUV*)( ((uint8*)pUV0) + nVSize ); 00393 pUV0->U = dU+_OffS[nSlice1].U; pUV0->V = VStart+_OffS[nSlice1].V; pUV0 = (CUV*)( ((uint8*)pUV0) + nVSize ); 00394 pUV0->U = dU+_OffS[nSlice1].U; pUV0->V = dV+_OffS[nSlice1].V; pUV0 = (CUV*)( ((uint8*)pUV0) + nVSize ); 00395 pUV0->U = UStart+_OffS[nSlice1].U; pUV0->V = dV+_OffS[nSlice1].V; pUV0 = (CUV*)( ((uint8*)pUV0) + nVSize ); 00396 00397 pUV0->U = UStart+_OffS[nSlice2].U; pUV0->V = VStart+_OffS[nSlice2].V; pUV0 = (CUV*)( ((uint8*)pUV0) + nVSize ); 00398 pUV0->U = dU+_OffS[nSlice2].U; pUV0->V = VStart+_OffS[nSlice2].V; pUV0 = (CUV*)( ((uint8*)pUV0) + nVSize ); 00399 pUV0->U = dU+_OffS[nSlice2].U; pUV0->V = dV+_OffS[nSlice2].V; pUV0 = (CUV*)( ((uint8*)pUV0) + nVSize ); 00400 pUV0->U = UStart+_OffS[nSlice2].U; pUV0->V = dV+_OffS[nSlice2].V; pUV0 = (CUV*)( ((uint8*)pUV0) + nVSize ); 00401 00402 nFinalAlpha = (uint8)(255*alphaPos*intensity); 00403 00404 *pColA = nFinalAlpha; pColA = ((uint8*)pColA) + nVSize; 00405 *pColA = nFinalAlpha; pColA = ((uint8*)pColA) + nVSize; 00406 *pColA = nFinalAlpha; pColA = ((uint8*)pColA) + nVSize; 00407 *pColA = nFinalAlpha; pColA = ((uint8*)pColA) + nVSize; 00408 00409 nFinalAlpha = (uint8)(255*(1.0f-alphaPos)*intensity); 00410 00411 *pColA = nFinalAlpha; pColA = ((uint8*)pColA) + nVSize; 00412 *pColA = nFinalAlpha; pColA = ((uint8*)pColA) + nVSize; 00413 *pColA = nFinalAlpha; pColA = ((uint8*)pColA) + nVSize; 00414 *pColA = nFinalAlpha; pColA = ((uint8*)pColA) + nVSize; 00415 } 00416 } 00417 _NbVertices = 2*4*nbw*nbh; 00418 } |
|
Definition at line 74 of file noise_3d.h. |
|
Definition at line 88 of file noise_3d.h. |
|
Definition at line 74 of file noise_3d.h. |
|
Definition at line 80 of file noise_3d.h. |
|
Definition at line 89 of file noise_3d.h. Referenced by CNoise3d(), flush(), init(), render(), and renderGrid(). |
|
Definition at line 86 of file noise_3d.h. Referenced by CNoise3d(), flush(), flush2passes(), init(), and ~CNoise3d(). |
|
Definition at line 77 of file noise_3d.h. Referenced by CNoise3d(), and init(). |
|
Definition at line 75 of file noise_3d.h. Referenced by init(), renderGrid(), and renderGrid2passes(). |
|
Definition at line 75 of file noise_3d.h. Referenced by init(), render(), renderGrid(), and renderGrid2passes(). |
|
Definition at line 84 of file noise_3d.h. Referenced by CNoise3d(), flush(), flush2passes(), render(), render2passes(), renderGrid(), and renderGrid2passes(). |
|
Definition at line 81 of file noise_3d.h. Referenced by CNoise3d(), init(), render(), render2passes(), renderGrid(), renderGrid2passes(), and ~CNoise3d(). |
|
Definition at line 82 of file noise_3d.h. Referenced by init(), render(), and render2passes(). |
|
Definition at line 82 of file noise_3d.h. Referenced by init(), render(), and render2passes(). |
|
Definition at line 78 of file noise_3d.h. |
|
Definition at line 85 of file noise_3d.h. |
|
Definition at line 74 of file noise_3d.h. |