diff Render.cpp @ 1637:2c71fa8913d2

class OutdoorCamera -> ODMRenderParams
author Nomad
date Tue, 17 Sep 2013 14:10:41 +0200
parents 384a6b9d1333
children ccde94f02b75
line wrap: on
line diff
--- a/Render.cpp	Tue Sep 17 12:40:37 2013 +0200
+++ b/Render.cpp	Tue Sep 17 14:10:41 2013 +0200
@@ -12,7 +12,6 @@
 #include "DecalBuilder.h"
 #include "ParticleEngine.h"
 #include "Render.h"
-#include "OutdoorCamera.h"
 #include "IndoorCamera.h"
 #include "Outdoor.h"
 #include "Party.h"
@@ -145,7 +144,7 @@
   soft_billboard.uViewportZ = pBLVRenderParams->uViewportZ - 1;
   soft_billboard.uViewportW = pBLVRenderParams->uViewportW;
 
-  pOutdoorCamera->uNumBillboards = ::uNumBillboardsToDraw;
+  pODMRenderParams->uNumBillboards = ::uNumBillboardsToDraw;
   for (uint i = 0; i < ::uNumBillboardsToDraw; ++i)
   {
     auto p = pBillboardRenderList + i;
@@ -251,7 +250,7 @@
   {
     for (unsigned int x = 0; x < 127; ++x)
     {
-      pTilePolygon = &array_77EC08[pOutdoorCamera->uNumPolygons];
+      pTilePolygon = &array_77EC08[pODMRenderParams->uNumPolygons];
       pTilePolygon->flags = 0;
       pTilePolygon->field_32 = 0;
       pTilePolygon->uTileBitmapID = pOutdoor->DoGetTileTexture(x, z);
@@ -305,9 +304,9 @@
       pTilePolygon->dimming_level = 20.0 - floorf(20.0 * _f + 0.5f);
 //-----------------------------------------------------------------------------------------------
 
-      ++pOutdoorCamera->uNumPolygons;
-      ++pOutdoorCamera->field_44;
-      assert(pOutdoorCamera->uNumPolygons < 20000);
+      ++pODMRenderParams->uNumPolygons;
+      ++pODMRenderParams->field_44;
+      assert(pODMRenderParams->uNumPolygons < 20000);
 
       pTilePolygon->uBModelID = 0;
       pTilePolygon->uBModelFaceID = 0;
@@ -346,8 +345,8 @@
         //pTile->DrawBorderTiles();
 //--------------------------------------------------------------------------------------------------------------------------------
 
-      --pOutdoorCamera->uNumPolygons;
-      --pOutdoorCamera->field_44;
+      --pODMRenderParams->uNumPolygons;
+      --pODMRenderParams->field_44;
     }
   }
 }
@@ -385,7 +384,7 @@
   billboard.uViewportY = pViewport->uViewportTL_Y;
   billboard.uViewportZ = pViewport->uViewportBR_X - 1;
   billboard.uViewportW = pViewport->uViewportBR_Y;
-  pOutdoorCamera->uNumBillboards = uNumBillboardsToDraw;
+  pODMRenderParams->uNumBillboards = uNumBillboardsToDraw;
 
   for (int i = 0; i < ::uNumBillboardsToDraw; ++i)
   {
@@ -548,36 +547,36 @@
             if ( pIndoorCamera->sRotationX )
             {
               v13 = (y - pIndoorCamera->pos.y) << 16;
-              v30 = ((unsigned __int64)(v12 * (signed __int64)pOutdoorCamera->camera_rotation_y_int_cosine) >> 16)
-                  + ((unsigned __int64)(v13 * (signed __int64)pOutdoorCamera->camera_rotation_y_int_sine) >> 16);
-              v37 = (unsigned __int64)(v12 * (signed __int64)pOutdoorCamera->camera_rotation_y_int_sine) >> 16;
-              a6a = (unsigned __int64)(v13 * (signed __int64)pOutdoorCamera->camera_rotation_y_int_cosine) >> 16;
+              v30 = ((unsigned __int64)(v12 * (signed __int64)pODMRenderParams->camera_rotation_y_int_cosine) >> 16)
+                  + ((unsigned __int64)(v13 * (signed __int64)pODMRenderParams->camera_rotation_y_int_sine) >> 16);
+              v37 = (unsigned __int64)(v12 * (signed __int64)pODMRenderParams->camera_rotation_y_int_sine) >> 16;
+              a6a = (unsigned __int64)(v13 * (signed __int64)pODMRenderParams->camera_rotation_y_int_cosine) >> 16;
               v33 = (z - pIndoorCamera->pos.z) << 16;
-              v14 = (unsigned __int64)(v30 * (signed __int64)pOutdoorCamera->camera_rotation_x_int_cosine) >> 16;
-              v15 = (unsigned __int64)(v33 * (signed __int64)pOutdoorCamera->camera_rotation_x_int_sine) >> 16;
+              v14 = (unsigned __int64)(v30 * (signed __int64)pODMRenderParams->camera_rotation_x_int_cosine) >> 16;
+              v15 = (unsigned __int64)(v33 * (signed __int64)pODMRenderParams->camera_rotation_x_int_sine) >> 16;
               v16 = v15 + v14;
               v42 = v15 + v14;
-              if ( v15 + v14 >= 262144 && v16 <= pOutdoorCamera->shading_dist_mist << 16 )
+              if ( v15 + v14 >= 262144 && v16 <= pODMRenderParams->shading_dist_mist << 16 )
               {
                 v17 = a6a - v37;
                 v40 = a6a - v37;
-                v18 = ((unsigned __int64)(v33 * (signed __int64)pOutdoorCamera->camera_rotation_x_int_cosine) >> 16)
-                    - ((unsigned __int64)(v30 * (signed __int64)pOutdoorCamera->camera_rotation_x_int_sine) >> 16);
+                v18 = ((unsigned __int64)(v33 * (signed __int64)pODMRenderParams->camera_rotation_x_int_cosine) >> 16)
+                    - ((unsigned __int64)(v30 * (signed __int64)pODMRenderParams->camera_rotation_x_int_sine) >> 16);
                 goto LABEL_29;
               }
             }
             else
             {
               v34 = (y - pIndoorCamera->pos.y) << 16;
-              v19 = (unsigned __int64)(v12 * (signed __int64)pOutdoorCamera->camera_rotation_y_int_cosine) >> 16;
-              v20 = (unsigned __int64)(v34 * (signed __int64)pOutdoorCamera->camera_rotation_y_int_sine) >> 16;
+              v19 = (unsigned __int64)(v12 * (signed __int64)pODMRenderParams->camera_rotation_y_int_cosine) >> 16;
+              v20 = (unsigned __int64)(v34 * (signed __int64)pODMRenderParams->camera_rotation_y_int_sine) >> 16;
               v16 = v20 + v19;
               v42 = v20 + v19;
-              if ( v20 + v19 >= 262144 && v16 <= pOutdoorCamera->shading_dist_mist << 16 )
+              if ( v20 + v19 >= 262144 && v16 <= pODMRenderParams->shading_dist_mist << 16 )
               {
-                v21 = (unsigned __int64)(((x - pIndoorCamera->pos.x) << 16) * (signed __int64)pOutdoorCamera->camera_rotation_y_int_sine) >> 16;
-                v17 = ((unsigned __int64)(v34 * (signed __int64)pOutdoorCamera->camera_rotation_y_int_cosine) >> 16) - v21;
-                v40 = ((unsigned __int64)(v34 * (signed __int64)pOutdoorCamera->camera_rotation_y_int_cosine) >> 16) - v21;
+                v21 = (unsigned __int64)(((x - pIndoorCamera->pos.x) << 16) * (signed __int64)pODMRenderParams->camera_rotation_y_int_sine) >> 16;
+                v17 = ((unsigned __int64)(v34 * (signed __int64)pODMRenderParams->camera_rotation_y_int_cosine) >> 16) - v21;
+                v40 = ((unsigned __int64)(v34 * (signed __int64)pODMRenderParams->camera_rotation_y_int_cosine) >> 16) - v21;
                 v18 = (z - pIndoorCamera->pos.z) << 16;
 LABEL_29:
                 v31 = v18;
@@ -585,11 +584,11 @@
                 if ( abs(v16) >= v22 )
                 {
                   LODWORD(v23) = 0;
-                  HIDWORD(v23) = SLOWORD(pOutdoorCamera->int_fov_rad);
+                  HIDWORD(v23) = SLOWORD(pODMRenderParams->int_fov_rad);
                   v24 = v23 / v42;
                   v25 = v23 / v42;
                   LODWORD(v23) = 0;
-                  HIDWORD(v23) = SLOWORD(pOutdoorCamera->int_fov_rad);
+                  HIDWORD(v23) = SLOWORD(pODMRenderParams->int_fov_rad);
                   v35 = pViewport->uScreenCenterX - ((signed int)(((unsigned __int64)(v25 * (signed __int64)v40) >> 16) + 32768) >> 16);
                   v32 = LOWORD(pViewport->uScreenCenterY) - (((unsigned int)((unsigned __int64)(v23 / v42 * v31) >> 16) + 32768) >> 16);
 
@@ -1048,23 +1047,23 @@
           if ( pIndoorCamera->sRotationX )
           {
             v40 = (decor->vPosition.y - pIndoorCamera->pos.y) << 16;
-            v18 = ((unsigned __int64)(v17 * (signed __int64)pOutdoorCamera->camera_rotation_y_int_cosine) >> 16)
-                + ((unsigned __int64)(v40 * (signed __int64)pOutdoorCamera->camera_rotation_y_int_sine) >> 16);
+            v18 = ((unsigned __int64)(v17 * (signed __int64)pODMRenderParams->camera_rotation_y_int_cosine) >> 16)
+                + ((unsigned __int64)(v40 * (signed __int64)pODMRenderParams->camera_rotation_y_int_sine) >> 16);
             v42 = v18;
-            b = (unsigned __int64)(v17 * (signed __int64)pOutdoorCamera->camera_rotation_y_int_sine) >> 16;
-            a5 = (unsigned __int64)(v40 * (signed __int64)pOutdoorCamera->camera_rotation_y_int_cosine) >> 16;
+            b = (unsigned __int64)(v17 * (signed __int64)pODMRenderParams->camera_rotation_y_int_sine) >> 16;
+            a5 = (unsigned __int64)(v40 * (signed __int64)pODMRenderParams->camera_rotation_y_int_cosine) >> 16;
             v40 = (decor->vPosition.z - pIndoorCamera->pos.z) << 16;
-            v41 = (unsigned __int64)(v40 * (signed __int64)pOutdoorCamera->camera_rotation_x_int_sine) >> 16;
-            v19 = (unsigned __int64)(v18 * (signed __int64)pOutdoorCamera->camera_rotation_x_int_cosine) >> 16;
-            v20 = v19 + ((unsigned __int64)(v40 * (signed __int64)pOutdoorCamera->camera_rotation_x_int_sine) >> 16);
-            v39 = v19 + ((unsigned __int64)(v40 * (signed __int64)pOutdoorCamera->camera_rotation_x_int_sine) >> 16);
-            if ( v20 >= 262144 && v20 <= pOutdoorCamera->shading_dist_mist << 16 )
+            v41 = (unsigned __int64)(v40 * (signed __int64)pODMRenderParams->camera_rotation_x_int_sine) >> 16;
+            v19 = (unsigned __int64)(v18 * (signed __int64)pODMRenderParams->camera_rotation_x_int_cosine) >> 16;
+            v20 = v19 + ((unsigned __int64)(v40 * (signed __int64)pODMRenderParams->camera_rotation_x_int_sine) >> 16);
+            v39 = v19 + ((unsigned __int64)(v40 * (signed __int64)pODMRenderParams->camera_rotation_x_int_sine) >> 16);
+            if ( v20 >= 262144 && v20 <= pODMRenderParams->shading_dist_mist << 16 )
             {
               v21 = a5 - b;
               v41 = a5 - b;
-              a5 = (unsigned __int64)(v42 * (signed __int64)pOutdoorCamera->camera_rotation_x_int_sine) >> 16;
-              b = (unsigned __int64)(v40 * (signed __int64)pOutdoorCamera->camera_rotation_x_int_cosine) >> 16;
-              v22 = ((unsigned __int64)(v40 * (signed __int64)pOutdoorCamera->camera_rotation_x_int_cosine) >> 16) - a5;
+              a5 = (unsigned __int64)(v42 * (signed __int64)pODMRenderParams->camera_rotation_x_int_sine) >> 16;
+              b = (unsigned __int64)(v40 * (signed __int64)pODMRenderParams->camera_rotation_x_int_cosine) >> 16;
+              v22 = ((unsigned __int64)(v40 * (signed __int64)pODMRenderParams->camera_rotation_x_int_cosine) >> 16) - a5;
 LABEL_30:
               v42 = v22;
               v40 = 2 * abs(v20);
@@ -1072,7 +1071,7 @@
               if ( v40 >= v23 )
               {
                 LODWORD(v24) = 0;
-                HIDWORD(v24) = SLOWORD(pOutdoorCamera->int_fov_rad);
+                HIDWORD(v24) = SLOWORD(pODMRenderParams->int_fov_rad);
                 a5 = v24 / v39;
                 v25 = pViewport->uScreenCenterX
                     - ((signed int)(((unsigned __int64)(v24 / v39 * v41) >> 16) + 32768) >> 16);
@@ -1131,16 +1130,16 @@
           {
             v42 = (decor->vPosition.x - pIndoorCamera->pos.x) << 16;
             v40 = (decor->vPosition.y - pIndoorCamera->pos.y) << 16;
-            b = (unsigned __int64)(v17 * (signed __int64)pOutdoorCamera->camera_rotation_y_int_cosine) >> 16;
-            a5 = (unsigned __int64)(v40 * (signed __int64)pOutdoorCamera->camera_rotation_y_int_sine) >> 16;
-            v20 = b + ((unsigned __int64)(v40 * (signed __int64)pOutdoorCamera->camera_rotation_y_int_sine) >> 16);
-            v39 = b + ((unsigned __int64)(v40 * (signed __int64)pOutdoorCamera->camera_rotation_y_int_sine) >> 16);
-            if ( v20 >= 262144 && v20 <= pOutdoorCamera->shading_dist_mist << 16 )
+            b = (unsigned __int64)(v17 * (signed __int64)pODMRenderParams->camera_rotation_y_int_cosine) >> 16;
+            a5 = (unsigned __int64)(v40 * (signed __int64)pODMRenderParams->camera_rotation_y_int_sine) >> 16;
+            v20 = b + ((unsigned __int64)(v40 * (signed __int64)pODMRenderParams->camera_rotation_y_int_sine) >> 16);
+            v39 = b + ((unsigned __int64)(v40 * (signed __int64)pODMRenderParams->camera_rotation_y_int_sine) >> 16);
+            if ( v20 >= 262144 && v20 <= pODMRenderParams->shading_dist_mist << 16 )
             {
-              a5 = (unsigned __int64)(v42 * (signed __int64)pOutdoorCamera->camera_rotation_y_int_sine) >> 16;
-              b = (unsigned __int64)(v40 * (signed __int64)pOutdoorCamera->camera_rotation_y_int_cosine) >> 16;
-              v21 = ((unsigned __int64)(v40 * (signed __int64)pOutdoorCamera->camera_rotation_y_int_cosine) >> 16) - a5;
-              v41 = ((unsigned __int64)(v40 * (signed __int64)pOutdoorCamera->camera_rotation_y_int_cosine) >> 16) - a5;
+              a5 = (unsigned __int64)(v42 * (signed __int64)pODMRenderParams->camera_rotation_y_int_sine) >> 16;
+              b = (unsigned __int64)(v40 * (signed __int64)pODMRenderParams->camera_rotation_y_int_cosine) >> 16;
+              v21 = ((unsigned __int64)(v40 * (signed __int64)pODMRenderParams->camera_rotation_y_int_cosine) >> 16) - a5;
+              v41 = ((unsigned __int64)(v40 * (signed __int64)pODMRenderParams->camera_rotation_y_int_cosine) >> 16) - a5;
               v22 = (decor->vPosition.z - pIndoorCamera->pos.z) << 16;
               goto LABEL_30;
             }
@@ -1886,7 +1885,7 @@
 		
 		  d3d_vertex_buffer[i].pos.x = array_50AC10[i].vWorldViewProjX;
 		  d3d_vertex_buffer[i].pos.y = array_50AC10[i].vWorldViewProjY;
-		  d3d_vertex_buffer[i].pos.z = 1.0 - 1.0 / ((array_50AC10[i].vWorldViewPosition.x * 1000) / (double)pOutdoorCamera->shading_dist_mist);
+		  d3d_vertex_buffer[i].pos.z = 1.0 - 1.0 / ((array_50AC10[i].vWorldViewPosition.x * 1000) / (double)pODMRenderParams->shading_dist_mist);
 		  d3d_vertex_buffer[i].rhw = 1.0 / (array_50AC10[i].vWorldViewPosition.x + 0.0000001);
 		  d3d_vertex_buffer[i].diffuse = ::GetActorTintColor(a3->dimming_level, 0, array_50AC10[i].vWorldViewPosition.x, 0, 0);
           pGame->AlterGamma_ODM(a4, &d3d_vertex_buffer[i].diffuse);
@@ -1929,7 +1928,7 @@
 		
 		  d3d_vertex_buffer[i].pos.x = array_50AC10[i].vWorldViewProjX;
 		  d3d_vertex_buffer[i].pos.y = array_50AC10[i].vWorldViewProjY;
-		  d3d_vertex_buffer[i].pos.z = 1.0 - 1.0 / ((array_50AC10[i].vWorldViewPosition.x * 1000) / (double)pOutdoorCamera->shading_dist_mist);
+		  d3d_vertex_buffer[i].pos.z = 1.0 - 1.0 / ((array_50AC10[i].vWorldViewPosition.x * 1000) / (double)pODMRenderParams->shading_dist_mist);
 		  d3d_vertex_buffer[i].rhw = 1.0 / (array_50AC10[i].vWorldViewPosition.x + 0.0000001);
 		  d3d_vertex_buffer[i].diffuse = GetActorTintColor(a3->dimming_level, 0, array_50AC10[i].vWorldViewPosition.x, 0, 0);
           if ( this->bUsingSpecular )
@@ -4651,7 +4650,7 @@
 
      pVertices[0].pos.x = array_50AC10[0].vWorldViewProjX;
      pVertices[0].pos.y = array_50AC10[0].vWorldViewProjY;
-     pVertices[0].pos.z = 1.0 - 1.0 / (1000 * array_50AC10[0].vWorldViewPosition.x / (double)pOutdoorCamera->shading_dist_mist);
+     pVertices[0].pos.z = 1.0 - 1.0 / (1000 * array_50AC10[0].vWorldViewPosition.x / (double)pODMRenderParams->shading_dist_mist);
      pVertices[0].rhw = 1.0 / (array_50AC10[0].vWorldViewPosition.x + 0.0000001000000011686097);
      pVertices[0].diffuse = GetActorTintColor(a3->field_58, 0, array_50AC10[0].vWorldViewPosition.x, 0, 0);
      pVertices[0].specular = 0;
@@ -4660,7 +4659,7 @@
  
      pVertices[1].pos.x = array_50AC10[3].vWorldViewProjX;
      pVertices[1].pos.y = array_50AC10[3].vWorldViewProjY;
-     pVertices[1].pos.z = 1.0 - 1.0 / (1000 * array_50AC10[3].vWorldViewPosition.x / (double)pOutdoorCamera->shading_dist_mist);
+     pVertices[1].pos.z = 1.0 - 1.0 / (1000 * array_50AC10[3].vWorldViewPosition.x / (double)pODMRenderParams->shading_dist_mist);
      pVertices[1].rhw = 1.0 / (array_50AC10[3].vWorldViewPosition.x + 0.0000001000000011686097);
      pVertices[1].diffuse = GetActorTintColor(a3->field_58, 0, array_50AC10[3].vWorldViewPosition.x, 0, 0);
      pVertices[1].specular = 0;
@@ -4669,7 +4668,7 @@
 
      pVertices[2].pos.x = array_50AC10[1].vWorldViewProjX;
      pVertices[2].pos.y = array_50AC10[1].vWorldViewProjY;
-     pVertices[2].pos.z = 1.0 - 1.0 / (1000 * array_50AC10[1].vWorldViewPosition.x / (double)pOutdoorCamera->shading_dist_mist);
+     pVertices[2].pos.z = 1.0 - 1.0 / (1000 * array_50AC10[1].vWorldViewPosition.x / (double)pODMRenderParams->shading_dist_mist);
      pVertices[2].rhw = 1.0 / (array_50AC10[1].vWorldViewPosition.x + 0.0000001000000011686097);
      pVertices[2].diffuse = GetActorTintColor(a3->field_58, 0, array_50AC10[1].vWorldViewPosition.x, 0, 0);
      pVertices[2].specular = 0;
@@ -4681,7 +4680,7 @@
 
      pVertices[5].pos.x = array_50AC10[2].vWorldViewProjX;
      pVertices[5].pos.y = array_50AC10[2].vWorldViewProjY;
-     pVertices[5].pos.z = 1.0 - 1.0 / (1000 * array_50AC10[2].vWorldViewPosition.x / (double)pOutdoorCamera->shading_dist_mist);
+     pVertices[5].pos.z = 1.0 - 1.0 / (1000 * array_50AC10[2].vWorldViewPosition.x / (double)pODMRenderParams->shading_dist_mist);
      pVertices[5].rhw = 1.0 / (array_50AC10[2].vWorldViewPosition.x + 0.0000001000000011686097);
      pVertices[5].diffuse = GetActorTintColor(a3->field_58, 0, array_50AC10[2].vWorldViewPosition.x, 0, 0);
      pVertices[5].specular = 0;
@@ -4810,7 +4809,7 @@
 		
 		  d3d_vertex_buffer[i].pos.x = array_50AC10[i].vWorldViewProjX;
 		  d3d_vertex_buffer[i].pos.y = array_50AC10[i].vWorldViewProjY;
-		  d3d_vertex_buffer[i].pos.z = 1.0 - 1.0 / ((array_50AC10[i].vWorldViewPosition.x * 1000) / (double)pOutdoorCamera->shading_dist_mist);
+		  d3d_vertex_buffer[i].pos.z = 1.0 - 1.0 / ((array_50AC10[i].vWorldViewPosition.x * 1000) / (double)pODMRenderParams->shading_dist_mist);
 		  d3d_vertex_buffer[i].rhw = 1.0 / (array_50AC10[i].vWorldViewPosition.x + 0.0000001);
 		  d3d_vertex_buffer[i].diffuse = ::GetActorTintColor(a4->dimming_level, 0, array_50AC10[i].vWorldViewPosition.x, 0, 0);
           if ( this->bUsingSpecular )
@@ -4841,7 +4840,7 @@
 		
 		  d3d_vertex_buffer[i].pos.x = array_50AC10[i].vWorldViewProjX;
 		  d3d_vertex_buffer[i].pos.y = array_50AC10[i].vWorldViewProjY;
-		  d3d_vertex_buffer[i].pos.z = 1.0 - 1.0 / ((array_50AC10[i].vWorldViewPosition.x * 1000) / (double)pOutdoorCamera->shading_dist_mist);
+		  d3d_vertex_buffer[i].pos.z = 1.0 - 1.0 / ((array_50AC10[i].vWorldViewPosition.x * 1000) / (double)pODMRenderParams->shading_dist_mist);
 		  d3d_vertex_buffer[i].rhw = 1.0 / (array_50AC10[i].vWorldViewPosition.x + 0.0000001);
 		  d3d_vertex_buffer[i].diffuse = GetActorTintColor(a4->dimming_level, 0, array_50AC10[i].vWorldViewPosition.x, 0, 0);
           if ( this->bUsingSpecular )
@@ -6022,7 +6021,7 @@
     pBillboardRenderListD3D[v8].pQuads[0].specular = 0;
     pBillboardRenderListD3D[v8].pQuads[0].diffuse = uDiffuse;
     pBillboardRenderListD3D[v8].pQuads[0].pos.y = v23;
-    v24 = 1.0 - 1.0 / (v6 * 1000.0 / (double)pOutdoorCamera->shading_dist_mist);
+    v24 = 1.0 - 1.0 / (v6 * 1000.0 / (double)pODMRenderParams->shading_dist_mist);
     pBillboardRenderListD3D[v8].pQuads[0].pos.z = v24;
     v25 = 1.0 / v6;
     pBillboardRenderListD3D[v8].pQuads[0].rhw = v25;
@@ -6156,7 +6155,7 @@
   pBillboardRenderListD3D[v8].pQuads[0].diffuse = diffuse;
   pBillboardRenderListD3D[v8].pQuads[0].pos.x = (double)a2->uScreenSpaceX - v14 * v30;
   pBillboardRenderListD3D[v8].pQuads[0].pos.y = (double)a2->uScreenSpaceY - v15 * v29;
-  pBillboardRenderListD3D[v8].pQuads[0].pos.z = 1.0 - 1.0 / (a2->zbuffer_depth * 1000.0 / (double)pOutdoorCamera->shading_dist_mist);
+  pBillboardRenderListD3D[v8].pQuads[0].pos.z = 1.0 - 1.0 / (a2->zbuffer_depth * 1000.0 / (double)pODMRenderParams->shading_dist_mist);
   pBillboardRenderListD3D[v8].pQuads[0].rhw = 1.0 / a2->zbuffer_depth;
   pBillboardRenderListD3D[v8].pQuads[0].specular = specular;
   pBillboardRenderListD3D[v8].pQuads[0].texcoord.x = 0.0;
@@ -6170,7 +6169,7 @@
     pBillboardRenderListD3D[v8].pQuads[1].diffuse = diffuse;
     pBillboardRenderListD3D[v8].pQuads[1].pos.x = (double)a2->uScreenSpaceX - v14 * v30;
     pBillboardRenderListD3D[v8].pQuads[1].pos.y = (double)a2->uScreenSpaceY - v15 * v29;
-    pBillboardRenderListD3D[v8].pQuads[1].pos.z = 1.0 - 1.0 / (a2->zbuffer_depth * 1000.0 / (double)pOutdoorCamera->shading_dist_mist);
+    pBillboardRenderListD3D[v8].pQuads[1].pos.z = 1.0 - 1.0 / (a2->zbuffer_depth * 1000.0 / (double)pODMRenderParams->shading_dist_mist);
     pBillboardRenderListD3D[v8].pQuads[1].rhw = 1.0 / a2->zbuffer_depth;
     pBillboardRenderListD3D[v8].pQuads[1].texcoord.x = 0.0;
     pBillboardRenderListD3D[v8].pQuads[1].texcoord.y = 1.0;
@@ -6183,7 +6182,7 @@
     pBillboardRenderListD3D[v8].pQuads[2].specular = specular;
     pBillboardRenderListD3D[v8].pQuads[2].pos.x = (double)a2->uScreenSpaceX + v14 * v30;
     pBillboardRenderListD3D[v8].pQuads[2].pos.y = (double)a2->uScreenSpaceY - v15 * v29;
-    pBillboardRenderListD3D[v8].pQuads[2].pos.z = 1.0 - 1.0 / (a2->zbuffer_depth * 1000.0 / (double)pOutdoorCamera->shading_dist_mist);
+    pBillboardRenderListD3D[v8].pQuads[2].pos.z = 1.0 - 1.0 / (a2->zbuffer_depth * 1000.0 / (double)pODMRenderParams->shading_dist_mist);
     pBillboardRenderListD3D[v8].pQuads[2].rhw = 1.0 / a2->zbuffer_depth;
     pBillboardRenderListD3D[v8].pQuads[2].texcoord.x = 1.0;
     pBillboardRenderListD3D[v8].pQuads[2].texcoord.y = 1.0;
@@ -6196,7 +6195,7 @@
     pBillboardRenderListD3D[v8].pQuads[3].specular = specular;
     pBillboardRenderListD3D[v8].pQuads[3].pos.x = (double)a2->uScreenSpaceX + v14 * v30;
     pBillboardRenderListD3D[v8].pQuads[3].pos.y = (double)a2->uScreenSpaceY - v15 * v29;
-    pBillboardRenderListD3D[v8].pQuads[3].pos.z = 1.0 - 1.0 / (a2->zbuffer_depth * 1000.0 / (double)pOutdoorCamera->shading_dist_mist);
+    pBillboardRenderListD3D[v8].pQuads[3].pos.z = 1.0 - 1.0 / (a2->zbuffer_depth * 1000.0 / (double)pODMRenderParams->shading_dist_mist);
     pBillboardRenderListD3D[v8].pQuads[3].rhw = 1.0 / a2->zbuffer_depth;
     pBillboardRenderListD3D[v8].pQuads[3].texcoord.x = 1.0;
     pBillboardRenderListD3D[v8].pQuads[3].texcoord.y = 0.0;
@@ -6305,8 +6304,8 @@
   v18 = (double)xDifference * v16 * a4;
   if ( uCurrentlyLoadedLevelType == LEVEL_Outdoor )
   {
-    v20 = a3 * 1000.0 / (double)pOutdoorCamera->shading_dist_mist;
-    v25 = a7 * 1000.0 / (double)pOutdoorCamera->shading_dist_mist;
+    v20 = a3 * 1000.0 / (double)pODMRenderParams->shading_dist_mist;
+    v25 = a7 * 1000.0 / (double)pODMRenderParams->shading_dist_mist;
   }
   else
   {
@@ -6410,7 +6409,7 @@
     if (uCurrentlyLoadedLevelType == LEVEL_Indoor)
       v11 = v10 * 0.061758894;
     else
-      v11 = v10 * 1000.0 / (double)pOutdoorCamera->shading_dist_mist;
+      v11 = v10 * 1000.0 / (double)pODMRenderParams->shading_dist_mist;
     pBillboardRenderListD3D[v5].pQuads[i].pos.z = 1.0 - 1.0 / v11;
     pBillboardRenderListD3D[v5].pQuads[i].rhw = 1.0 / a1->field_104[i].z;