Mercurial > mm7
comparison Render.cpp @ 1637:2c71fa8913d2
class OutdoorCamera -> ODMRenderParams
author | Nomad |
---|---|
date | Tue, 17 Sep 2013 14:10:41 +0200 |
parents | 384a6b9d1333 |
children | ccde94f02b75 |
comparison
equal
deleted
inserted
replaced
1633:384a6b9d1333 | 1637:2c71fa8913d2 |
---|---|
10 #include "stru6.h" | 10 #include "stru6.h" |
11 #include "GUIWindow.h" | 11 #include "GUIWindow.h" |
12 #include "DecalBuilder.h" | 12 #include "DecalBuilder.h" |
13 #include "ParticleEngine.h" | 13 #include "ParticleEngine.h" |
14 #include "Render.h" | 14 #include "Render.h" |
15 #include "OutdoorCamera.h" | |
16 #include "IndoorCamera.h" | 15 #include "IndoorCamera.h" |
17 #include "Outdoor.h" | 16 #include "Outdoor.h" |
18 #include "Party.h" | 17 #include "Party.h" |
19 #include "LOD.h" | 18 #include "LOD.h" |
20 #include "Viewport.h" | 19 #include "Viewport.h" |
143 soft_billboard.uViewportX = pBLVRenderParams->uViewportX; | 142 soft_billboard.uViewportX = pBLVRenderParams->uViewportX; |
144 soft_billboard.uViewportY = pBLVRenderParams->uViewportY; | 143 soft_billboard.uViewportY = pBLVRenderParams->uViewportY; |
145 soft_billboard.uViewportZ = pBLVRenderParams->uViewportZ - 1; | 144 soft_billboard.uViewportZ = pBLVRenderParams->uViewportZ - 1; |
146 soft_billboard.uViewportW = pBLVRenderParams->uViewportW; | 145 soft_billboard.uViewportW = pBLVRenderParams->uViewportW; |
147 | 146 |
148 pOutdoorCamera->uNumBillboards = ::uNumBillboardsToDraw; | 147 pODMRenderParams->uNumBillboards = ::uNumBillboardsToDraw; |
149 for (uint i = 0; i < ::uNumBillboardsToDraw; ++i) | 148 for (uint i = 0; i < ::uNumBillboardsToDraw; ++i) |
150 { | 149 { |
151 auto p = pBillboardRenderList + i; | 150 auto p = pBillboardRenderList + i; |
152 | 151 |
153 soft_billboard.uScreenSpaceX = p->uScreenSpaceX; | 152 soft_billboard.uScreenSpaceX = p->uScreenSpaceX; |
249 // | 248 // |
250 for (unsigned int z = 0; z < 127; ++z) | 249 for (unsigned int z = 0; z < 127; ++z) |
251 { | 250 { |
252 for (unsigned int x = 0; x < 127; ++x) | 251 for (unsigned int x = 0; x < 127; ++x) |
253 { | 252 { |
254 pTilePolygon = &array_77EC08[pOutdoorCamera->uNumPolygons]; | 253 pTilePolygon = &array_77EC08[pODMRenderParams->uNumPolygons]; |
255 pTilePolygon->flags = 0; | 254 pTilePolygon->flags = 0; |
256 pTilePolygon->field_32 = 0; | 255 pTilePolygon->field_32 = 0; |
257 pTilePolygon->uTileBitmapID = pOutdoor->DoGetTileTexture(x, z); | 256 pTilePolygon->uTileBitmapID = pOutdoor->DoGetTileTexture(x, z); |
258 pTilePolygon->pTexture = (Texture *)&pBitmaps_LOD->pHardwareTextures[pTilePolygon->uTileBitmapID]; | 257 pTilePolygon->pTexture = (Texture *)&pBitmaps_LOD->pHardwareTextures[pTilePolygon->uTileBitmapID]; |
259 if (pTilePolygon->uTileBitmapID == 0xFFFF) | 258 if (pTilePolygon->uTileBitmapID == 0xFFFF) |
303 (norm->y * (float)pOutdoor->vSunlight.y / 65536.0) - | 302 (norm->y * (float)pOutdoor->vSunlight.y / 65536.0) - |
304 (norm->z * (float)pOutdoor->vSunlight.z / 65536.0)); | 303 (norm->z * (float)pOutdoor->vSunlight.z / 65536.0)); |
305 pTilePolygon->dimming_level = 20.0 - floorf(20.0 * _f + 0.5f); | 304 pTilePolygon->dimming_level = 20.0 - floorf(20.0 * _f + 0.5f); |
306 //----------------------------------------------------------------------------------------------- | 305 //----------------------------------------------------------------------------------------------- |
307 | 306 |
308 ++pOutdoorCamera->uNumPolygons; | 307 ++pODMRenderParams->uNumPolygons; |
309 ++pOutdoorCamera->field_44; | 308 ++pODMRenderParams->field_44; |
310 assert(pOutdoorCamera->uNumPolygons < 20000); | 309 assert(pODMRenderParams->uNumPolygons < 20000); |
311 | 310 |
312 pTilePolygon->uBModelID = 0; | 311 pTilePolygon->uBModelID = 0; |
313 pTilePolygon->uBModelFaceID = 0; | 312 pTilePolygon->uBModelFaceID = 0; |
314 pTilePolygon->field_50 = (8 * (0 | (0 << 6))) | 6; | 313 pTilePolygon->field_50 = (8 * (0 | (0 << 6))) | 6; |
315 for (unsigned int k = 0; k < pTilePolygon->uNumVertices; ++k) | 314 for (unsigned int k = 0; k < pTilePolygon->uNumVertices; ++k) |
344 } | 343 } |
345 //else //здесь уже пограничные тайлы воды | 344 //else //здесь уже пограничные тайлы воды |
346 //pTile->DrawBorderTiles(); | 345 //pTile->DrawBorderTiles(); |
347 //-------------------------------------------------------------------------------------------------------------------------------- | 346 //-------------------------------------------------------------------------------------------------------------------------------- |
348 | 347 |
349 --pOutdoorCamera->uNumPolygons; | 348 --pODMRenderParams->uNumPolygons; |
350 --pOutdoorCamera->field_44; | 349 --pODMRenderParams->field_44; |
351 } | 350 } |
352 } | 351 } |
353 } | 352 } |
354 | 353 |
355 | 354 |
383 billboard.uTargetPitch = pRenderer->uTargetSurfacePitch; | 382 billboard.uTargetPitch = pRenderer->uTargetSurfacePitch; |
384 billboard.uViewportX = pViewport->uViewportTL_X; | 383 billboard.uViewportX = pViewport->uViewportTL_X; |
385 billboard.uViewportY = pViewport->uViewportTL_Y; | 384 billboard.uViewportY = pViewport->uViewportTL_Y; |
386 billboard.uViewportZ = pViewport->uViewportBR_X - 1; | 385 billboard.uViewportZ = pViewport->uViewportBR_X - 1; |
387 billboard.uViewportW = pViewport->uViewportBR_Y; | 386 billboard.uViewportW = pViewport->uViewportBR_Y; |
388 pOutdoorCamera->uNumBillboards = uNumBillboardsToDraw; | 387 pODMRenderParams->uNumBillboards = uNumBillboardsToDraw; |
389 | 388 |
390 for (int i = 0; i < ::uNumBillboardsToDraw; ++i) | 389 for (int i = 0; i < ::uNumBillboardsToDraw; ++i) |
391 { | 390 { |
392 auto pBillboard = pBillboardRenderList + i; | 391 auto pBillboard = pBillboardRenderList + i; |
393 | 392 |
546 } | 545 } |
547 v12 = (x - pIndoorCamera->pos.x) << 16; | 546 v12 = (x - pIndoorCamera->pos.x) << 16; |
548 if ( pIndoorCamera->sRotationX ) | 547 if ( pIndoorCamera->sRotationX ) |
549 { | 548 { |
550 v13 = (y - pIndoorCamera->pos.y) << 16; | 549 v13 = (y - pIndoorCamera->pos.y) << 16; |
551 v30 = ((unsigned __int64)(v12 * (signed __int64)pOutdoorCamera->camera_rotation_y_int_cosine) >> 16) | 550 v30 = ((unsigned __int64)(v12 * (signed __int64)pODMRenderParams->camera_rotation_y_int_cosine) >> 16) |
552 + ((unsigned __int64)(v13 * (signed __int64)pOutdoorCamera->camera_rotation_y_int_sine) >> 16); | 551 + ((unsigned __int64)(v13 * (signed __int64)pODMRenderParams->camera_rotation_y_int_sine) >> 16); |
553 v37 = (unsigned __int64)(v12 * (signed __int64)pOutdoorCamera->camera_rotation_y_int_sine) >> 16; | 552 v37 = (unsigned __int64)(v12 * (signed __int64)pODMRenderParams->camera_rotation_y_int_sine) >> 16; |
554 a6a = (unsigned __int64)(v13 * (signed __int64)pOutdoorCamera->camera_rotation_y_int_cosine) >> 16; | 553 a6a = (unsigned __int64)(v13 * (signed __int64)pODMRenderParams->camera_rotation_y_int_cosine) >> 16; |
555 v33 = (z - pIndoorCamera->pos.z) << 16; | 554 v33 = (z - pIndoorCamera->pos.z) << 16; |
556 v14 = (unsigned __int64)(v30 * (signed __int64)pOutdoorCamera->camera_rotation_x_int_cosine) >> 16; | 555 v14 = (unsigned __int64)(v30 * (signed __int64)pODMRenderParams->camera_rotation_x_int_cosine) >> 16; |
557 v15 = (unsigned __int64)(v33 * (signed __int64)pOutdoorCamera->camera_rotation_x_int_sine) >> 16; | 556 v15 = (unsigned __int64)(v33 * (signed __int64)pODMRenderParams->camera_rotation_x_int_sine) >> 16; |
558 v16 = v15 + v14; | 557 v16 = v15 + v14; |
559 v42 = v15 + v14; | 558 v42 = v15 + v14; |
560 if ( v15 + v14 >= 262144 && v16 <= pOutdoorCamera->shading_dist_mist << 16 ) | 559 if ( v15 + v14 >= 262144 && v16 <= pODMRenderParams->shading_dist_mist << 16 ) |
561 { | 560 { |
562 v17 = a6a - v37; | 561 v17 = a6a - v37; |
563 v40 = a6a - v37; | 562 v40 = a6a - v37; |
564 v18 = ((unsigned __int64)(v33 * (signed __int64)pOutdoorCamera->camera_rotation_x_int_cosine) >> 16) | 563 v18 = ((unsigned __int64)(v33 * (signed __int64)pODMRenderParams->camera_rotation_x_int_cosine) >> 16) |
565 - ((unsigned __int64)(v30 * (signed __int64)pOutdoorCamera->camera_rotation_x_int_sine) >> 16); | 564 - ((unsigned __int64)(v30 * (signed __int64)pODMRenderParams->camera_rotation_x_int_sine) >> 16); |
566 goto LABEL_29; | 565 goto LABEL_29; |
567 } | 566 } |
568 } | 567 } |
569 else | 568 else |
570 { | 569 { |
571 v34 = (y - pIndoorCamera->pos.y) << 16; | 570 v34 = (y - pIndoorCamera->pos.y) << 16; |
572 v19 = (unsigned __int64)(v12 * (signed __int64)pOutdoorCamera->camera_rotation_y_int_cosine) >> 16; | 571 v19 = (unsigned __int64)(v12 * (signed __int64)pODMRenderParams->camera_rotation_y_int_cosine) >> 16; |
573 v20 = (unsigned __int64)(v34 * (signed __int64)pOutdoorCamera->camera_rotation_y_int_sine) >> 16; | 572 v20 = (unsigned __int64)(v34 * (signed __int64)pODMRenderParams->camera_rotation_y_int_sine) >> 16; |
574 v16 = v20 + v19; | 573 v16 = v20 + v19; |
575 v42 = v20 + v19; | 574 v42 = v20 + v19; |
576 if ( v20 + v19 >= 262144 && v16 <= pOutdoorCamera->shading_dist_mist << 16 ) | 575 if ( v20 + v19 >= 262144 && v16 <= pODMRenderParams->shading_dist_mist << 16 ) |
577 { | 576 { |
578 v21 = (unsigned __int64)(((x - pIndoorCamera->pos.x) << 16) * (signed __int64)pOutdoorCamera->camera_rotation_y_int_sine) >> 16; | 577 v21 = (unsigned __int64)(((x - pIndoorCamera->pos.x) << 16) * (signed __int64)pODMRenderParams->camera_rotation_y_int_sine) >> 16; |
579 v17 = ((unsigned __int64)(v34 * (signed __int64)pOutdoorCamera->camera_rotation_y_int_cosine) >> 16) - v21; | 578 v17 = ((unsigned __int64)(v34 * (signed __int64)pODMRenderParams->camera_rotation_y_int_cosine) >> 16) - v21; |
580 v40 = ((unsigned __int64)(v34 * (signed __int64)pOutdoorCamera->camera_rotation_y_int_cosine) >> 16) - v21; | 579 v40 = ((unsigned __int64)(v34 * (signed __int64)pODMRenderParams->camera_rotation_y_int_cosine) >> 16) - v21; |
581 v18 = (z - pIndoorCamera->pos.z) << 16; | 580 v18 = (z - pIndoorCamera->pos.z) << 16; |
582 LABEL_29: | 581 LABEL_29: |
583 v31 = v18; | 582 v31 = v18; |
584 v22 = abs(v17); | 583 v22 = abs(v17); |
585 if ( abs(v16) >= v22 ) | 584 if ( abs(v16) >= v22 ) |
586 { | 585 { |
587 LODWORD(v23) = 0; | 586 LODWORD(v23) = 0; |
588 HIDWORD(v23) = SLOWORD(pOutdoorCamera->int_fov_rad); | 587 HIDWORD(v23) = SLOWORD(pODMRenderParams->int_fov_rad); |
589 v24 = v23 / v42; | 588 v24 = v23 / v42; |
590 v25 = v23 / v42; | 589 v25 = v23 / v42; |
591 LODWORD(v23) = 0; | 590 LODWORD(v23) = 0; |
592 HIDWORD(v23) = SLOWORD(pOutdoorCamera->int_fov_rad); | 591 HIDWORD(v23) = SLOWORD(pODMRenderParams->int_fov_rad); |
593 v35 = pViewport->uScreenCenterX - ((signed int)(((unsigned __int64)(v25 * (signed __int64)v40) >> 16) + 32768) >> 16); | 592 v35 = pViewport->uScreenCenterX - ((signed int)(((unsigned __int64)(v25 * (signed __int64)v40) >> 16) + 32768) >> 16); |
594 v32 = LOWORD(pViewport->uScreenCenterY) - (((unsigned int)((unsigned __int64)(v23 / v42 * v31) >> 16) + 32768) >> 16); | 593 v32 = LOWORD(pViewport->uScreenCenterY) - (((unsigned int)((unsigned __int64)(v23 / v42 * v31) >> 16) + 32768) >> 16); |
595 | 594 |
596 //if (::uNumBillboardsToDraw >= 500) | 595 //if (::uNumBillboardsToDraw >= 500) |
597 // return; | 596 // return; |
1046 } | 1045 } |
1047 v17 = (decor->vPosition.x - pIndoorCamera->pos.x) << 16; | 1046 v17 = (decor->vPosition.x - pIndoorCamera->pos.x) << 16; |
1048 if ( pIndoorCamera->sRotationX ) | 1047 if ( pIndoorCamera->sRotationX ) |
1049 { | 1048 { |
1050 v40 = (decor->vPosition.y - pIndoorCamera->pos.y) << 16; | 1049 v40 = (decor->vPosition.y - pIndoorCamera->pos.y) << 16; |
1051 v18 = ((unsigned __int64)(v17 * (signed __int64)pOutdoorCamera->camera_rotation_y_int_cosine) >> 16) | 1050 v18 = ((unsigned __int64)(v17 * (signed __int64)pODMRenderParams->camera_rotation_y_int_cosine) >> 16) |
1052 + ((unsigned __int64)(v40 * (signed __int64)pOutdoorCamera->camera_rotation_y_int_sine) >> 16); | 1051 + ((unsigned __int64)(v40 * (signed __int64)pODMRenderParams->camera_rotation_y_int_sine) >> 16); |
1053 v42 = v18; | 1052 v42 = v18; |
1054 b = (unsigned __int64)(v17 * (signed __int64)pOutdoorCamera->camera_rotation_y_int_sine) >> 16; | 1053 b = (unsigned __int64)(v17 * (signed __int64)pODMRenderParams->camera_rotation_y_int_sine) >> 16; |
1055 a5 = (unsigned __int64)(v40 * (signed __int64)pOutdoorCamera->camera_rotation_y_int_cosine) >> 16; | 1054 a5 = (unsigned __int64)(v40 * (signed __int64)pODMRenderParams->camera_rotation_y_int_cosine) >> 16; |
1056 v40 = (decor->vPosition.z - pIndoorCamera->pos.z) << 16; | 1055 v40 = (decor->vPosition.z - pIndoorCamera->pos.z) << 16; |
1057 v41 = (unsigned __int64)(v40 * (signed __int64)pOutdoorCamera->camera_rotation_x_int_sine) >> 16; | 1056 v41 = (unsigned __int64)(v40 * (signed __int64)pODMRenderParams->camera_rotation_x_int_sine) >> 16; |
1058 v19 = (unsigned __int64)(v18 * (signed __int64)pOutdoorCamera->camera_rotation_x_int_cosine) >> 16; | 1057 v19 = (unsigned __int64)(v18 * (signed __int64)pODMRenderParams->camera_rotation_x_int_cosine) >> 16; |
1059 v20 = v19 + ((unsigned __int64)(v40 * (signed __int64)pOutdoorCamera->camera_rotation_x_int_sine) >> 16); | 1058 v20 = v19 + ((unsigned __int64)(v40 * (signed __int64)pODMRenderParams->camera_rotation_x_int_sine) >> 16); |
1060 v39 = v19 + ((unsigned __int64)(v40 * (signed __int64)pOutdoorCamera->camera_rotation_x_int_sine) >> 16); | 1059 v39 = v19 + ((unsigned __int64)(v40 * (signed __int64)pODMRenderParams->camera_rotation_x_int_sine) >> 16); |
1061 if ( v20 >= 262144 && v20 <= pOutdoorCamera->shading_dist_mist << 16 ) | 1060 if ( v20 >= 262144 && v20 <= pODMRenderParams->shading_dist_mist << 16 ) |
1062 { | 1061 { |
1063 v21 = a5 - b; | 1062 v21 = a5 - b; |
1064 v41 = a5 - b; | 1063 v41 = a5 - b; |
1065 a5 = (unsigned __int64)(v42 * (signed __int64)pOutdoorCamera->camera_rotation_x_int_sine) >> 16; | 1064 a5 = (unsigned __int64)(v42 * (signed __int64)pODMRenderParams->camera_rotation_x_int_sine) >> 16; |
1066 b = (unsigned __int64)(v40 * (signed __int64)pOutdoorCamera->camera_rotation_x_int_cosine) >> 16; | 1065 b = (unsigned __int64)(v40 * (signed __int64)pODMRenderParams->camera_rotation_x_int_cosine) >> 16; |
1067 v22 = ((unsigned __int64)(v40 * (signed __int64)pOutdoorCamera->camera_rotation_x_int_cosine) >> 16) - a5; | 1066 v22 = ((unsigned __int64)(v40 * (signed __int64)pODMRenderParams->camera_rotation_x_int_cosine) >> 16) - a5; |
1068 LABEL_30: | 1067 LABEL_30: |
1069 v42 = v22; | 1068 v42 = v22; |
1070 v40 = 2 * abs(v20); | 1069 v40 = 2 * abs(v20); |
1071 v23 = abs(v21); | 1070 v23 = abs(v21); |
1072 if ( v40 >= v23 ) | 1071 if ( v40 >= v23 ) |
1073 { | 1072 { |
1074 LODWORD(v24) = 0; | 1073 LODWORD(v24) = 0; |
1075 HIDWORD(v24) = SLOWORD(pOutdoorCamera->int_fov_rad); | 1074 HIDWORD(v24) = SLOWORD(pODMRenderParams->int_fov_rad); |
1076 a5 = v24 / v39; | 1075 a5 = v24 / v39; |
1077 v25 = pViewport->uScreenCenterX | 1076 v25 = pViewport->uScreenCenterX |
1078 - ((signed int)(((unsigned __int64)(v24 / v39 * v41) >> 16) + 32768) >> 16); | 1077 - ((signed int)(((unsigned __int64)(v24 / v39 * v41) >> 16) + 32768) >> 16); |
1079 b = (unsigned __int64)(a5 * (signed __int64)v42) >> 16; | 1078 b = (unsigned __int64)(a5 * (signed __int64)v42) >> 16; |
1080 v41 = v24 / v39; | 1079 v41 = v24 / v39; |
1129 } | 1128 } |
1130 else | 1129 else |
1131 { | 1130 { |
1132 v42 = (decor->vPosition.x - pIndoorCamera->pos.x) << 16; | 1131 v42 = (decor->vPosition.x - pIndoorCamera->pos.x) << 16; |
1133 v40 = (decor->vPosition.y - pIndoorCamera->pos.y) << 16; | 1132 v40 = (decor->vPosition.y - pIndoorCamera->pos.y) << 16; |
1134 b = (unsigned __int64)(v17 * (signed __int64)pOutdoorCamera->camera_rotation_y_int_cosine) >> 16; | 1133 b = (unsigned __int64)(v17 * (signed __int64)pODMRenderParams->camera_rotation_y_int_cosine) >> 16; |
1135 a5 = (unsigned __int64)(v40 * (signed __int64)pOutdoorCamera->camera_rotation_y_int_sine) >> 16; | 1134 a5 = (unsigned __int64)(v40 * (signed __int64)pODMRenderParams->camera_rotation_y_int_sine) >> 16; |
1136 v20 = b + ((unsigned __int64)(v40 * (signed __int64)pOutdoorCamera->camera_rotation_y_int_sine) >> 16); | 1135 v20 = b + ((unsigned __int64)(v40 * (signed __int64)pODMRenderParams->camera_rotation_y_int_sine) >> 16); |
1137 v39 = b + ((unsigned __int64)(v40 * (signed __int64)pOutdoorCamera->camera_rotation_y_int_sine) >> 16); | 1136 v39 = b + ((unsigned __int64)(v40 * (signed __int64)pODMRenderParams->camera_rotation_y_int_sine) >> 16); |
1138 if ( v20 >= 262144 && v20 <= pOutdoorCamera->shading_dist_mist << 16 ) | 1137 if ( v20 >= 262144 && v20 <= pODMRenderParams->shading_dist_mist << 16 ) |
1139 { | 1138 { |
1140 a5 = (unsigned __int64)(v42 * (signed __int64)pOutdoorCamera->camera_rotation_y_int_sine) >> 16; | 1139 a5 = (unsigned __int64)(v42 * (signed __int64)pODMRenderParams->camera_rotation_y_int_sine) >> 16; |
1141 b = (unsigned __int64)(v40 * (signed __int64)pOutdoorCamera->camera_rotation_y_int_cosine) >> 16; | 1140 b = (unsigned __int64)(v40 * (signed __int64)pODMRenderParams->camera_rotation_y_int_cosine) >> 16; |
1142 v21 = ((unsigned __int64)(v40 * (signed __int64)pOutdoorCamera->camera_rotation_y_int_cosine) >> 16) - a5; | 1141 v21 = ((unsigned __int64)(v40 * (signed __int64)pODMRenderParams->camera_rotation_y_int_cosine) >> 16) - a5; |
1143 v41 = ((unsigned __int64)(v40 * (signed __int64)pOutdoorCamera->camera_rotation_y_int_cosine) >> 16) - a5; | 1142 v41 = ((unsigned __int64)(v40 * (signed __int64)pODMRenderParams->camera_rotation_y_int_cosine) >> 16) - a5; |
1144 v22 = (decor->vPosition.z - pIndoorCamera->pos.z) << 16; | 1143 v22 = (decor->vPosition.z - pIndoorCamera->pos.z) << 16; |
1145 goto LABEL_30; | 1144 goto LABEL_30; |
1146 } | 1145 } |
1147 } | 1146 } |
1148 } | 1147 } |
1884 for (uint i = 0; i < uNumVertices; ++i) | 1883 for (uint i = 0; i < uNumVertices; ++i) |
1885 { | 1884 { |
1886 | 1885 |
1887 d3d_vertex_buffer[i].pos.x = array_50AC10[i].vWorldViewProjX; | 1886 d3d_vertex_buffer[i].pos.x = array_50AC10[i].vWorldViewProjX; |
1888 d3d_vertex_buffer[i].pos.y = array_50AC10[i].vWorldViewProjY; | 1887 d3d_vertex_buffer[i].pos.y = array_50AC10[i].vWorldViewProjY; |
1889 d3d_vertex_buffer[i].pos.z = 1.0 - 1.0 / ((array_50AC10[i].vWorldViewPosition.x * 1000) / (double)pOutdoorCamera->shading_dist_mist); | 1888 d3d_vertex_buffer[i].pos.z = 1.0 - 1.0 / ((array_50AC10[i].vWorldViewPosition.x * 1000) / (double)pODMRenderParams->shading_dist_mist); |
1890 d3d_vertex_buffer[i].rhw = 1.0 / (array_50AC10[i].vWorldViewPosition.x + 0.0000001); | 1889 d3d_vertex_buffer[i].rhw = 1.0 / (array_50AC10[i].vWorldViewPosition.x + 0.0000001); |
1891 d3d_vertex_buffer[i].diffuse = ::GetActorTintColor(a3->dimming_level, 0, array_50AC10[i].vWorldViewPosition.x, 0, 0); | 1890 d3d_vertex_buffer[i].diffuse = ::GetActorTintColor(a3->dimming_level, 0, array_50AC10[i].vWorldViewPosition.x, 0, 0); |
1892 pGame->AlterGamma_ODM(a4, &d3d_vertex_buffer[i].diffuse); | 1891 pGame->AlterGamma_ODM(a4, &d3d_vertex_buffer[i].diffuse); |
1893 | 1892 |
1894 if ( this->bUsingSpecular ) | 1893 if ( this->bUsingSpecular ) |
1927 for (uint i = 0; i < uNumVertices; ++i) | 1926 for (uint i = 0; i < uNumVertices; ++i) |
1928 { | 1927 { |
1929 | 1928 |
1930 d3d_vertex_buffer[i].pos.x = array_50AC10[i].vWorldViewProjX; | 1929 d3d_vertex_buffer[i].pos.x = array_50AC10[i].vWorldViewProjX; |
1931 d3d_vertex_buffer[i].pos.y = array_50AC10[i].vWorldViewProjY; | 1930 d3d_vertex_buffer[i].pos.y = array_50AC10[i].vWorldViewProjY; |
1932 d3d_vertex_buffer[i].pos.z = 1.0 - 1.0 / ((array_50AC10[i].vWorldViewPosition.x * 1000) / (double)pOutdoorCamera->shading_dist_mist); | 1931 d3d_vertex_buffer[i].pos.z = 1.0 - 1.0 / ((array_50AC10[i].vWorldViewPosition.x * 1000) / (double)pODMRenderParams->shading_dist_mist); |
1933 d3d_vertex_buffer[i].rhw = 1.0 / (array_50AC10[i].vWorldViewPosition.x + 0.0000001); | 1932 d3d_vertex_buffer[i].rhw = 1.0 / (array_50AC10[i].vWorldViewPosition.x + 0.0000001); |
1934 d3d_vertex_buffer[i].diffuse = GetActorTintColor(a3->dimming_level, 0, array_50AC10[i].vWorldViewPosition.x, 0, 0); | 1933 d3d_vertex_buffer[i].diffuse = GetActorTintColor(a3->dimming_level, 0, array_50AC10[i].vWorldViewPosition.x, 0, 0); |
1935 if ( this->bUsingSpecular ) | 1934 if ( this->bUsingSpecular ) |
1936 { | 1935 { |
1937 d3d_vertex_buffer[i].specular = sub_47C3D7_get_fog_related_stuff(0, 0, array_50AC10[i].vWorldViewPosition.x); | 1936 d3d_vertex_buffer[i].specular = sub_47C3D7_get_fog_related_stuff(0, 0, array_50AC10[i].vWorldViewPosition.x); |
4649 this->pRenderD3D->pDevice->SetRenderState(D3DRENDERSTATE_DESTBLEND, D3DBLEND_ZERO); | 4648 this->pRenderD3D->pDevice->SetRenderState(D3DRENDERSTATE_DESTBLEND, D3DBLEND_ZERO); |
4650 } | 4649 } |
4651 | 4650 |
4652 pVertices[0].pos.x = array_50AC10[0].vWorldViewProjX; | 4651 pVertices[0].pos.x = array_50AC10[0].vWorldViewProjX; |
4653 pVertices[0].pos.y = array_50AC10[0].vWorldViewProjY; | 4652 pVertices[0].pos.y = array_50AC10[0].vWorldViewProjY; |
4654 pVertices[0].pos.z = 1.0 - 1.0 / (1000 * array_50AC10[0].vWorldViewPosition.x / (double)pOutdoorCamera->shading_dist_mist); | 4653 pVertices[0].pos.z = 1.0 - 1.0 / (1000 * array_50AC10[0].vWorldViewPosition.x / (double)pODMRenderParams->shading_dist_mist); |
4655 pVertices[0].rhw = 1.0 / (array_50AC10[0].vWorldViewPosition.x + 0.0000001000000011686097); | 4654 pVertices[0].rhw = 1.0 / (array_50AC10[0].vWorldViewPosition.x + 0.0000001000000011686097); |
4656 pVertices[0].diffuse = GetActorTintColor(a3->field_58, 0, array_50AC10[0].vWorldViewPosition.x, 0, 0); | 4655 pVertices[0].diffuse = GetActorTintColor(a3->field_58, 0, array_50AC10[0].vWorldViewPosition.x, 0, 0); |
4657 pVertices[0].specular = 0; | 4656 pVertices[0].specular = 0; |
4658 pVertices[0].texcoord.x = array_50AC10[0].u; | 4657 pVertices[0].texcoord.x = array_50AC10[0].u; |
4659 pVertices[0].texcoord.y = array_50AC10[0].v; | 4658 pVertices[0].texcoord.y = array_50AC10[0].v; |
4660 | 4659 |
4661 pVertices[1].pos.x = array_50AC10[3].vWorldViewProjX; | 4660 pVertices[1].pos.x = array_50AC10[3].vWorldViewProjX; |
4662 pVertices[1].pos.y = array_50AC10[3].vWorldViewProjY; | 4661 pVertices[1].pos.y = array_50AC10[3].vWorldViewProjY; |
4663 pVertices[1].pos.z = 1.0 - 1.0 / (1000 * array_50AC10[3].vWorldViewPosition.x / (double)pOutdoorCamera->shading_dist_mist); | 4662 pVertices[1].pos.z = 1.0 - 1.0 / (1000 * array_50AC10[3].vWorldViewPosition.x / (double)pODMRenderParams->shading_dist_mist); |
4664 pVertices[1].rhw = 1.0 / (array_50AC10[3].vWorldViewPosition.x + 0.0000001000000011686097); | 4663 pVertices[1].rhw = 1.0 / (array_50AC10[3].vWorldViewPosition.x + 0.0000001000000011686097); |
4665 pVertices[1].diffuse = GetActorTintColor(a3->field_58, 0, array_50AC10[3].vWorldViewPosition.x, 0, 0); | 4664 pVertices[1].diffuse = GetActorTintColor(a3->field_58, 0, array_50AC10[3].vWorldViewPosition.x, 0, 0); |
4666 pVertices[1].specular = 0; | 4665 pVertices[1].specular = 0; |
4667 pVertices[1].texcoord.x = array_50AC10[3].u; | 4666 pVertices[1].texcoord.x = array_50AC10[3].u; |
4668 pVertices[1].texcoord.y = array_50AC10[3].v; | 4667 pVertices[1].texcoord.y = array_50AC10[3].v; |
4669 | 4668 |
4670 pVertices[2].pos.x = array_50AC10[1].vWorldViewProjX; | 4669 pVertices[2].pos.x = array_50AC10[1].vWorldViewProjX; |
4671 pVertices[2].pos.y = array_50AC10[1].vWorldViewProjY; | 4670 pVertices[2].pos.y = array_50AC10[1].vWorldViewProjY; |
4672 pVertices[2].pos.z = 1.0 - 1.0 / (1000 * array_50AC10[1].vWorldViewPosition.x / (double)pOutdoorCamera->shading_dist_mist); | 4671 pVertices[2].pos.z = 1.0 - 1.0 / (1000 * array_50AC10[1].vWorldViewPosition.x / (double)pODMRenderParams->shading_dist_mist); |
4673 pVertices[2].rhw = 1.0 / (array_50AC10[1].vWorldViewPosition.x + 0.0000001000000011686097); | 4672 pVertices[2].rhw = 1.0 / (array_50AC10[1].vWorldViewPosition.x + 0.0000001000000011686097); |
4674 pVertices[2].diffuse = GetActorTintColor(a3->field_58, 0, array_50AC10[1].vWorldViewPosition.x, 0, 0); | 4673 pVertices[2].diffuse = GetActorTintColor(a3->field_58, 0, array_50AC10[1].vWorldViewPosition.x, 0, 0); |
4675 pVertices[2].specular = 0; | 4674 pVertices[2].specular = 0; |
4676 pVertices[2].texcoord.x = array_50AC10[1].u; | 4675 pVertices[2].texcoord.x = array_50AC10[1].u; |
4677 pVertices[2].texcoord.y = array_50AC10[1].v; | 4676 pVertices[2].texcoord.y = array_50AC10[1].v; |
4679 memcpy(pVertices + 3, pVertices + 2, sizeof(RenderVertexD3D3)); | 4678 memcpy(pVertices + 3, pVertices + 2, sizeof(RenderVertexD3D3)); |
4680 memcpy(pVertices + 4, pVertices + 1, sizeof(RenderVertexD3D3)); | 4679 memcpy(pVertices + 4, pVertices + 1, sizeof(RenderVertexD3D3)); |
4681 | 4680 |
4682 pVertices[5].pos.x = array_50AC10[2].vWorldViewProjX; | 4681 pVertices[5].pos.x = array_50AC10[2].vWorldViewProjX; |
4683 pVertices[5].pos.y = array_50AC10[2].vWorldViewProjY; | 4682 pVertices[5].pos.y = array_50AC10[2].vWorldViewProjY; |
4684 pVertices[5].pos.z = 1.0 - 1.0 / (1000 * array_50AC10[2].vWorldViewPosition.x / (double)pOutdoorCamera->shading_dist_mist); | 4683 pVertices[5].pos.z = 1.0 - 1.0 / (1000 * array_50AC10[2].vWorldViewPosition.x / (double)pODMRenderParams->shading_dist_mist); |
4685 pVertices[5].rhw = 1.0 / (array_50AC10[2].vWorldViewPosition.x + 0.0000001000000011686097); | 4684 pVertices[5].rhw = 1.0 / (array_50AC10[2].vWorldViewPosition.x + 0.0000001000000011686097); |
4686 pVertices[5].diffuse = GetActorTintColor(a3->field_58, 0, array_50AC10[2].vWorldViewPosition.x, 0, 0); | 4685 pVertices[5].diffuse = GetActorTintColor(a3->field_58, 0, array_50AC10[2].vWorldViewPosition.x, 0, 0); |
4687 pVertices[5].specular = 0; | 4686 pVertices[5].specular = 0; |
4688 pVertices[5].texcoord.x = array_50AC10[2].u; | 4687 pVertices[5].texcoord.x = array_50AC10[2].u; |
4689 pVertices[5].texcoord.y = array_50AC10[2].v; | 4688 pVertices[5].texcoord.y = array_50AC10[2].v; |
4808 for (uint i = 0; i < uNumVertices; ++i) | 4807 for (uint i = 0; i < uNumVertices; ++i) |
4809 { | 4808 { |
4810 | 4809 |
4811 d3d_vertex_buffer[i].pos.x = array_50AC10[i].vWorldViewProjX; | 4810 d3d_vertex_buffer[i].pos.x = array_50AC10[i].vWorldViewProjX; |
4812 d3d_vertex_buffer[i].pos.y = array_50AC10[i].vWorldViewProjY; | 4811 d3d_vertex_buffer[i].pos.y = array_50AC10[i].vWorldViewProjY; |
4813 d3d_vertex_buffer[i].pos.z = 1.0 - 1.0 / ((array_50AC10[i].vWorldViewPosition.x * 1000) / (double)pOutdoorCamera->shading_dist_mist); | 4812 d3d_vertex_buffer[i].pos.z = 1.0 - 1.0 / ((array_50AC10[i].vWorldViewPosition.x * 1000) / (double)pODMRenderParams->shading_dist_mist); |
4814 d3d_vertex_buffer[i].rhw = 1.0 / (array_50AC10[i].vWorldViewPosition.x + 0.0000001); | 4813 d3d_vertex_buffer[i].rhw = 1.0 / (array_50AC10[i].vWorldViewPosition.x + 0.0000001); |
4815 d3d_vertex_buffer[i].diffuse = ::GetActorTintColor(a4->dimming_level, 0, array_50AC10[i].vWorldViewPosition.x, 0, 0); | 4814 d3d_vertex_buffer[i].diffuse = ::GetActorTintColor(a4->dimming_level, 0, array_50AC10[i].vWorldViewPosition.x, 0, 0); |
4816 if ( this->bUsingSpecular ) | 4815 if ( this->bUsingSpecular ) |
4817 { | 4816 { |
4818 d3d_vertex_buffer[i].specular = sub_47C3D7_get_fog_related_stuff(0, 0, array_50AC10[i].vWorldViewPosition.x); | 4817 d3d_vertex_buffer[i].specular = sub_47C3D7_get_fog_related_stuff(0, 0, array_50AC10[i].vWorldViewPosition.x); |
4839 for (uint i = 0; i < uNumVertices; ++i) | 4838 for (uint i = 0; i < uNumVertices; ++i) |
4840 { | 4839 { |
4841 | 4840 |
4842 d3d_vertex_buffer[i].pos.x = array_50AC10[i].vWorldViewProjX; | 4841 d3d_vertex_buffer[i].pos.x = array_50AC10[i].vWorldViewProjX; |
4843 d3d_vertex_buffer[i].pos.y = array_50AC10[i].vWorldViewProjY; | 4842 d3d_vertex_buffer[i].pos.y = array_50AC10[i].vWorldViewProjY; |
4844 d3d_vertex_buffer[i].pos.z = 1.0 - 1.0 / ((array_50AC10[i].vWorldViewPosition.x * 1000) / (double)pOutdoorCamera->shading_dist_mist); | 4843 d3d_vertex_buffer[i].pos.z = 1.0 - 1.0 / ((array_50AC10[i].vWorldViewPosition.x * 1000) / (double)pODMRenderParams->shading_dist_mist); |
4845 d3d_vertex_buffer[i].rhw = 1.0 / (array_50AC10[i].vWorldViewPosition.x + 0.0000001); | 4844 d3d_vertex_buffer[i].rhw = 1.0 / (array_50AC10[i].vWorldViewPosition.x + 0.0000001); |
4846 d3d_vertex_buffer[i].diffuse = GetActorTintColor(a4->dimming_level, 0, array_50AC10[i].vWorldViewPosition.x, 0, 0); | 4845 d3d_vertex_buffer[i].diffuse = GetActorTintColor(a4->dimming_level, 0, array_50AC10[i].vWorldViewPosition.x, 0, 0); |
4847 if ( this->bUsingSpecular ) | 4846 if ( this->bUsingSpecular ) |
4848 { | 4847 { |
4849 d3d_vertex_buffer[i].specular = sub_47C3D7_get_fog_related_stuff(0, 0, array_50AC10[i].vWorldViewPosition.x); | 4848 d3d_vertex_buffer[i].specular = sub_47C3D7_get_fog_related_stuff(0, 0, array_50AC10[i].vWorldViewPosition.x); |
6020 * v11 | 6019 * v11 |
6021 + (double)a2->uScreenSpaceY; | 6020 + (double)a2->uScreenSpaceY; |
6022 pBillboardRenderListD3D[v8].pQuads[0].specular = 0; | 6021 pBillboardRenderListD3D[v8].pQuads[0].specular = 0; |
6023 pBillboardRenderListD3D[v8].pQuads[0].diffuse = uDiffuse; | 6022 pBillboardRenderListD3D[v8].pQuads[0].diffuse = uDiffuse; |
6024 pBillboardRenderListD3D[v8].pQuads[0].pos.y = v23; | 6023 pBillboardRenderListD3D[v8].pQuads[0].pos.y = v23; |
6025 v24 = 1.0 - 1.0 / (v6 * 1000.0 / (double)pOutdoorCamera->shading_dist_mist); | 6024 v24 = 1.0 - 1.0 / (v6 * 1000.0 / (double)pODMRenderParams->shading_dist_mist); |
6026 pBillboardRenderListD3D[v8].pQuads[0].pos.z = v24; | 6025 pBillboardRenderListD3D[v8].pQuads[0].pos.z = v24; |
6027 v25 = 1.0 / v6; | 6026 v25 = 1.0 / v6; |
6028 pBillboardRenderListD3D[v8].pQuads[0].rhw = v25; | 6027 pBillboardRenderListD3D[v8].pQuads[0].rhw = v25; |
6029 pBillboardRenderListD3D[v8].pQuads[0].texcoord.x = 0.0; | 6028 pBillboardRenderListD3D[v8].pQuads[0].texcoord.x = 0.0; |
6030 pBillboardRenderListD3D[v8].pQuads[0].texcoord.y = 0.0; | 6029 pBillboardRenderListD3D[v8].pQuads[0].texcoord.y = 0.0; |
6154 if (a2->uFlags & 4) | 6153 if (a2->uFlags & 4) |
6155 v14 *= -1.0; | 6154 v14 *= -1.0; |
6156 pBillboardRenderListD3D[v8].pQuads[0].diffuse = diffuse; | 6155 pBillboardRenderListD3D[v8].pQuads[0].diffuse = diffuse; |
6157 pBillboardRenderListD3D[v8].pQuads[0].pos.x = (double)a2->uScreenSpaceX - v14 * v30; | 6156 pBillboardRenderListD3D[v8].pQuads[0].pos.x = (double)a2->uScreenSpaceX - v14 * v30; |
6158 pBillboardRenderListD3D[v8].pQuads[0].pos.y = (double)a2->uScreenSpaceY - v15 * v29; | 6157 pBillboardRenderListD3D[v8].pQuads[0].pos.y = (double)a2->uScreenSpaceY - v15 * v29; |
6159 pBillboardRenderListD3D[v8].pQuads[0].pos.z = 1.0 - 1.0 / (a2->zbuffer_depth * 1000.0 / (double)pOutdoorCamera->shading_dist_mist); | 6158 pBillboardRenderListD3D[v8].pQuads[0].pos.z = 1.0 - 1.0 / (a2->zbuffer_depth * 1000.0 / (double)pODMRenderParams->shading_dist_mist); |
6160 pBillboardRenderListD3D[v8].pQuads[0].rhw = 1.0 / a2->zbuffer_depth; | 6159 pBillboardRenderListD3D[v8].pQuads[0].rhw = 1.0 / a2->zbuffer_depth; |
6161 pBillboardRenderListD3D[v8].pQuads[0].specular = specular; | 6160 pBillboardRenderListD3D[v8].pQuads[0].specular = specular; |
6162 pBillboardRenderListD3D[v8].pQuads[0].texcoord.x = 0.0; | 6161 pBillboardRenderListD3D[v8].pQuads[0].texcoord.x = 0.0; |
6163 pBillboardRenderListD3D[v8].pQuads[0].texcoord.y = 0.0; | 6162 pBillboardRenderListD3D[v8].pQuads[0].texcoord.y = 0.0; |
6164 | 6163 |
6168 v14 = v14 * -1.0; | 6167 v14 = v14 * -1.0; |
6169 pBillboardRenderListD3D[v8].pQuads[1].specular = specular; | 6168 pBillboardRenderListD3D[v8].pQuads[1].specular = specular; |
6170 pBillboardRenderListD3D[v8].pQuads[1].diffuse = diffuse; | 6169 pBillboardRenderListD3D[v8].pQuads[1].diffuse = diffuse; |
6171 pBillboardRenderListD3D[v8].pQuads[1].pos.x = (double)a2->uScreenSpaceX - v14 * v30; | 6170 pBillboardRenderListD3D[v8].pQuads[1].pos.x = (double)a2->uScreenSpaceX - v14 * v30; |
6172 pBillboardRenderListD3D[v8].pQuads[1].pos.y = (double)a2->uScreenSpaceY - v15 * v29; | 6171 pBillboardRenderListD3D[v8].pQuads[1].pos.y = (double)a2->uScreenSpaceY - v15 * v29; |
6173 pBillboardRenderListD3D[v8].pQuads[1].pos.z = 1.0 - 1.0 / (a2->zbuffer_depth * 1000.0 / (double)pOutdoorCamera->shading_dist_mist); | 6172 pBillboardRenderListD3D[v8].pQuads[1].pos.z = 1.0 - 1.0 / (a2->zbuffer_depth * 1000.0 / (double)pODMRenderParams->shading_dist_mist); |
6174 pBillboardRenderListD3D[v8].pQuads[1].rhw = 1.0 / a2->zbuffer_depth; | 6173 pBillboardRenderListD3D[v8].pQuads[1].rhw = 1.0 / a2->zbuffer_depth; |
6175 pBillboardRenderListD3D[v8].pQuads[1].texcoord.x = 0.0; | 6174 pBillboardRenderListD3D[v8].pQuads[1].texcoord.x = 0.0; |
6176 pBillboardRenderListD3D[v8].pQuads[1].texcoord.y = 1.0; | 6175 pBillboardRenderListD3D[v8].pQuads[1].texcoord.y = 1.0; |
6177 | 6176 |
6178 v14 = (double)((int)pSprite->uAreaWidth + pSprite->uAreaX + pSprite->uBufferWidth / 2 - pSprite->uBufferWidth); | 6177 v14 = (double)((int)pSprite->uAreaWidth + pSprite->uAreaX + pSprite->uBufferWidth / 2 - pSprite->uBufferWidth); |
6181 v14 *= -1.0; | 6180 v14 *= -1.0; |
6182 pBillboardRenderListD3D[v8].pQuads[2].diffuse = diffuse; | 6181 pBillboardRenderListD3D[v8].pQuads[2].diffuse = diffuse; |
6183 pBillboardRenderListD3D[v8].pQuads[2].specular = specular; | 6182 pBillboardRenderListD3D[v8].pQuads[2].specular = specular; |
6184 pBillboardRenderListD3D[v8].pQuads[2].pos.x = (double)a2->uScreenSpaceX + v14 * v30; | 6183 pBillboardRenderListD3D[v8].pQuads[2].pos.x = (double)a2->uScreenSpaceX + v14 * v30; |
6185 pBillboardRenderListD3D[v8].pQuads[2].pos.y = (double)a2->uScreenSpaceY - v15 * v29; | 6184 pBillboardRenderListD3D[v8].pQuads[2].pos.y = (double)a2->uScreenSpaceY - v15 * v29; |
6186 pBillboardRenderListD3D[v8].pQuads[2].pos.z = 1.0 - 1.0 / (a2->zbuffer_depth * 1000.0 / (double)pOutdoorCamera->shading_dist_mist); | 6185 pBillboardRenderListD3D[v8].pQuads[2].pos.z = 1.0 - 1.0 / (a2->zbuffer_depth * 1000.0 / (double)pODMRenderParams->shading_dist_mist); |
6187 pBillboardRenderListD3D[v8].pQuads[2].rhw = 1.0 / a2->zbuffer_depth; | 6186 pBillboardRenderListD3D[v8].pQuads[2].rhw = 1.0 / a2->zbuffer_depth; |
6188 pBillboardRenderListD3D[v8].pQuads[2].texcoord.x = 1.0; | 6187 pBillboardRenderListD3D[v8].pQuads[2].texcoord.x = 1.0; |
6189 pBillboardRenderListD3D[v8].pQuads[2].texcoord.y = 1.0; | 6188 pBillboardRenderListD3D[v8].pQuads[2].texcoord.y = 1.0; |
6190 | 6189 |
6191 v14 = (double)((int)pSprite->uAreaWidth + pSprite->uAreaX + pSprite->uBufferWidth / 2 - pSprite->uBufferWidth); | 6190 v14 = (double)((int)pSprite->uAreaWidth + pSprite->uAreaX + pSprite->uBufferWidth / 2 - pSprite->uBufferWidth); |
6194 v14 *= -1.0; | 6193 v14 *= -1.0; |
6195 pBillboardRenderListD3D[v8].pQuads[3].diffuse = diffuse; | 6194 pBillboardRenderListD3D[v8].pQuads[3].diffuse = diffuse; |
6196 pBillboardRenderListD3D[v8].pQuads[3].specular = specular; | 6195 pBillboardRenderListD3D[v8].pQuads[3].specular = specular; |
6197 pBillboardRenderListD3D[v8].pQuads[3].pos.x = (double)a2->uScreenSpaceX + v14 * v30; | 6196 pBillboardRenderListD3D[v8].pQuads[3].pos.x = (double)a2->uScreenSpaceX + v14 * v30; |
6198 pBillboardRenderListD3D[v8].pQuads[3].pos.y = (double)a2->uScreenSpaceY - v15 * v29; | 6197 pBillboardRenderListD3D[v8].pQuads[3].pos.y = (double)a2->uScreenSpaceY - v15 * v29; |
6199 pBillboardRenderListD3D[v8].pQuads[3].pos.z = 1.0 - 1.0 / (a2->zbuffer_depth * 1000.0 / (double)pOutdoorCamera->shading_dist_mist); | 6198 pBillboardRenderListD3D[v8].pQuads[3].pos.z = 1.0 - 1.0 / (a2->zbuffer_depth * 1000.0 / (double)pODMRenderParams->shading_dist_mist); |
6200 pBillboardRenderListD3D[v8].pQuads[3].rhw = 1.0 / a2->zbuffer_depth; | 6199 pBillboardRenderListD3D[v8].pQuads[3].rhw = 1.0 / a2->zbuffer_depth; |
6201 pBillboardRenderListD3D[v8].pQuads[3].texcoord.x = 1.0; | 6200 pBillboardRenderListD3D[v8].pQuads[3].texcoord.x = 1.0; |
6202 pBillboardRenderListD3D[v8].pQuads[3].texcoord.y = 0.0; | 6201 pBillboardRenderListD3D[v8].pQuads[3].texcoord.y = 0.0; |
6203 | 6202 |
6204 pBillboardRenderListD3D[v8].uNumVertices = 4; | 6203 pBillboardRenderListD3D[v8].uNumVertices = 4; |
6303 v16 = 1.0 / (double)v32; | 6302 v16 = 1.0 / (double)v32; |
6304 v17 = (double)yDifference * v16 * a4; | 6303 v17 = (double)yDifference * v16 * a4; |
6305 v18 = (double)xDifference * v16 * a4; | 6304 v18 = (double)xDifference * v16 * a4; |
6306 if ( uCurrentlyLoadedLevelType == LEVEL_Outdoor ) | 6305 if ( uCurrentlyLoadedLevelType == LEVEL_Outdoor ) |
6307 { | 6306 { |
6308 v20 = a3 * 1000.0 / (double)pOutdoorCamera->shading_dist_mist; | 6307 v20 = a3 * 1000.0 / (double)pODMRenderParams->shading_dist_mist; |
6309 v25 = a7 * 1000.0 / (double)pOutdoorCamera->shading_dist_mist; | 6308 v25 = a7 * 1000.0 / (double)pODMRenderParams->shading_dist_mist; |
6310 } | 6309 } |
6311 else | 6310 else |
6312 { | 6311 { |
6313 v20 = a3 * 0.061758894; | 6312 v20 = a3 * 0.061758894; |
6314 v25 = a7 * 0.061758894; | 6313 v25 = a7 * 0.061758894; |
6408 | 6407 |
6409 v10 = a1->field_104[i].z; | 6408 v10 = a1->field_104[i].z; |
6410 if (uCurrentlyLoadedLevelType == LEVEL_Indoor) | 6409 if (uCurrentlyLoadedLevelType == LEVEL_Indoor) |
6411 v11 = v10 * 0.061758894; | 6410 v11 = v10 * 0.061758894; |
6412 else | 6411 else |
6413 v11 = v10 * 1000.0 / (double)pOutdoorCamera->shading_dist_mist; | 6412 v11 = v10 * 1000.0 / (double)pODMRenderParams->shading_dist_mist; |
6414 pBillboardRenderListD3D[v5].pQuads[i].pos.z = 1.0 - 1.0 / v11; | 6413 pBillboardRenderListD3D[v5].pQuads[i].pos.z = 1.0 - 1.0 / v11; |
6415 pBillboardRenderListD3D[v5].pQuads[i].rhw = 1.0 / a1->field_104[i].z; | 6414 pBillboardRenderListD3D[v5].pQuads[i].rhw = 1.0 / a1->field_104[i].z; |
6416 | 6415 |
6417 if (diffuse & 0xFF000000) | 6416 if (diffuse & 0xFF000000) |
6418 v12 = a1->field_104[i].diffuse; | 6417 v12 = a1->field_104[i].diffuse; |