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;