Mercurial > mm7
comparison Render.cpp @ 638:ccf8b4815a1f
GetActorTintColor fixed
Outdoor sunlight works on terrain & bmodels (not sure about billboards though)
author | Nomad |
---|---|
date | Mon, 11 Mar 2013 21:43:26 +0200 |
parents | d7b14091e434 |
children | 4f2837124c69 |
comparison
equal
deleted
inserted
replaced
637:d7b14091e434 | 638:ccf8b4815a1f |
---|---|
336 { | 336 { |
337 LOBYTE(v4->field_32) |= 2u; | 337 LOBYTE(v4->field_32) |= 2u; |
338 v14 = *(int *)&v4->flags; | 338 v14 = *(int *)&v4->flags; |
339 if ( v14 & 0x10 && v4->field_59 != 5 ) | 339 if ( v14 & 0x10 && v4->field_59 != 5 ) |
340 { | 340 { |
341 dword_80AA20 = (v4->field_5C - 64) << 25; | 341 dword_80AA20 = (v4->terrain_grid_z - 64) << 25; |
342 dword_80AA1C = dword_80AA20 + 0x1FF0000; | 342 dword_80AA1C = dword_80AA20 + 0x1FF0000; |
343 dword_80AA14 = (v4->field_5D << 25) + 0x7FFF0000; | 343 dword_80AA14 = (v4->terrain_grid_x << 25) + 0x7FFF0000; |
344 dword_80AA18 = dword_80AA14 - 0x1FF0000; | 344 dword_80AA18 = dword_80AA14 - 0x1FF0000; |
345 byte_80AA10 = ((unsigned int)pOutdoor->ActuallyGetSomeOtherTileInfo( | 345 byte_80AA10 = ((unsigned int)pOutdoor->ActuallyGetSomeOtherTileInfo( |
346 v4->field_5C, | 346 v4->terrain_grid_z, |
347 v4->field_5D - 1) >> 9) & 1; | 347 v4->terrain_grid_x - 1) >> 9) & 1; |
348 if ( *(int *)&v4->flags & 2 || (v15 = *(int *)&v4->flags, BYTE1(v15) & 1) ) | 348 if ( *(int *)&v4->flags & 2 || (v15 = *(int *)&v4->flags, BYTE1(v15) & 1) ) |
349 { | 349 { |
350 if ( *(int *)&v4->flags & 2 ) | 350 if ( *(int *)&v4->flags & 2 ) |
351 { | 351 { |
352 while ( 1 ) | 352 while ( 1 ) |
370 v4->pTexture = (Texture *)(v17 != -1 ? (int)&pBitmaps_LOD->pTextures[v17] : 0); | 370 v4->pTexture = (Texture *)(v17 != -1 ? (int)&pBitmaps_LOD->pTextures[v17] : 0); |
371 if ( pOutdoorCamera->outdoor_no_wavy_water ) | 371 if ( pOutdoorCamera->outdoor_no_wavy_water ) |
372 sr_sub_48408A_prolly_odm_water_no_waves(v3); | 372 sr_sub_48408A_prolly_odm_water_no_waves(v3); |
373 else | 373 else |
374 sr_sub_485407_prolly_odm_water_wavy(v3); | 374 sr_sub_485407_prolly_odm_water_wavy(v3); |
375 v18 = v4->field_5C - 64; | 375 v18 = v4->terrain_grid_z - 64; |
376 v4->pTexture = v16; | 376 v4->pTexture = v16; |
377 dword_80AA20 = v18 << 25; | 377 dword_80AA20 = v18 << 25; |
378 dword_80AA1C = (v18 << 25) + 0x1FF0000; | 378 dword_80AA1C = (v18 << 25) + 0x1FF0000; |
379 dword_80AA14 = (v4->field_5D << 25) + 0x7FFF0000; | 379 dword_80AA14 = (v4->terrain_grid_x << 25) + 0x7FFF0000; |
380 dword_80AA18 = dword_80AA14 - 0x1FF0000; | 380 dword_80AA18 = dword_80AA14 - 0x1FF0000; |
381 byte_80AA10 = ((unsigned int)pOutdoor->ActuallyGetSomeOtherTileInfo( | 381 byte_80AA10 = ((unsigned int)pOutdoor->ActuallyGetSomeOtherTileInfo( |
382 v4->field_5C, | 382 v4->terrain_grid_z, |
383 v4->field_5D - 1) >> 9) & 1; | 383 v4->terrain_grid_x - 1) >> 9) & 1; |
384 sr_sub_484442(v3); | 384 sr_sub_484442(v3); |
385 v3->field_E = LOWORD(unnamed_6BE060[1]); | 385 v3->field_E = LOWORD(unnamed_6BE060[1]); |
386 if ( v4->prolly_tail == v3 ) | 386 if ( v4->prolly_tail == v3 ) |
387 break; | 387 break; |
388 v3 = v3->pNext; | 388 v3 = v3->pNext; |
425 } | 425 } |
426 else | 426 else |
427 { | 427 { |
428 if ( v19 == 1 ) | 428 if ( v19 == 1 ) |
429 { | 429 { |
430 dword_80AA20 = (v4->field_5C - 64) << 25; | 430 dword_80AA20 = (v4->terrain_grid_z - 64) << 25; |
431 dword_80AA1C = dword_80AA20 + 33488896; | 431 dword_80AA1C = dword_80AA20 + 33488896; |
432 dword_80AA14 = (v4->field_5D << 25) + 0x7FFF0000; | 432 dword_80AA14 = (v4->terrain_grid_x << 25) + 0x7FFF0000; |
433 dword_80AA18 = dword_80AA14 - 33488896; | 433 dword_80AA18 = dword_80AA14 - 33488896; |
434 byte_80AA10 = ((unsigned int)pOutdoor->ActuallyGetSomeOtherTileInfo( | 434 byte_80AA10 = ((unsigned int)pOutdoor->ActuallyGetSomeOtherTileInfo( |
435 v4->field_5C, | 435 v4->terrain_grid_z, |
436 v4->field_5D - 1) >> 9) & 1; | 436 v4->terrain_grid_x - 1) >> 9) & 1; |
437 while ( 1 ) | 437 while ( 1 ) |
438 { | 438 { |
439 if ( !sr_sub_4847EB(v3) ) | 439 if ( !sr_sub_4847EB(v3) ) |
440 sr_sub_48585C_mb_DrawSpan(v3, &pRenderer->pTargetSurface[v3->field_8 + 640 * v3->field_A], 0); | 440 sr_sub_48585C_mb_DrawSpan(v3, &pRenderer->pTargetSurface[v3->field_8 + 640 * v3->field_A], 0); |
441 v3->field_E = LOWORD(unnamed_6BE060[1]); | 441 v3->field_E = LOWORD(unnamed_6BE060[1]); |
604 || (array_77EC08[1999]._48607B(&stru_8019C8), | 604 || (array_77EC08[1999]._48607B(&stru_8019C8), |
605 array_77EC08[1999].ptr_38->_48694B(), | 605 array_77EC08[1999].ptr_38->_48694B(), |
606 v2 = (stru148 *)&pBitmaps_LOD->pTextures[pOutdoor->uMainTile_BitmapID], | 606 v2 = (stru148 *)&pBitmaps_LOD->pTextures[pOutdoor->uMainTile_BitmapID], |
607 (array_77EC08[1999].pTexture = (Texture *)(pOutdoor->uMainTile_BitmapID != -1 ? (int)v2 : 0)) == 0) ) | 607 (array_77EC08[1999].pTexture = (Texture *)(pOutdoor->uMainTile_BitmapID != -1 ? (int)v2 : 0)) == 0) ) |
608 return (signed __int16)v2; | 608 return (signed __int16)v2; |
609 array_77EC08[1999].field_58 = 23 - (-20 * pOutdoor->vSunlight.z >> 16); | 609 array_77EC08[1999].dimming_level = 23 - (-20 * pOutdoor->vSunlight.z >> 16); |
610 if ( array_77EC08[1999].field_58 > 20 ) | 610 if ( array_77EC08[1999].dimming_level > 20 ) |
611 array_77EC08[1999].field_58 = 20; | 611 array_77EC08[1999].dimming_level = 20; |
612 v10 = stru_5C6E00->Sin(pIndoorCamera->sRotationX); | 612 v10 = stru_5C6E00->Sin(pIndoorCamera->sRotationX); |
613 array_77EC08[1999].v_18.y = 0; | 613 array_77EC08[1999].v_18.y = 0; |
614 array_77EC08[1999].v_18.x = v10; | 614 array_77EC08[1999].v_18.x = v10; |
615 array_77EC08[1999].v_18.z = stru_5C6E00->Cos(pIndoorCamera->sRotationX); | 615 array_77EC08[1999].v_18.z = stru_5C6E00->Cos(pIndoorCamera->sRotationX); |
616 array_77EC08[1999].field_24 = 2048 - (pIndoorCamera->pos.z << 16); | 616 array_77EC08[1999].field_24 = 2048 - (pIndoorCamera->pos.z << 16); |
623 array_77EC08[1999].ptr_38->_48694B(); | 623 array_77EC08[1999].ptr_38->_48694B(); |
624 v2 = (stru148 *)&pBitmaps_LOD->pTextures[pOutdoor->uSky_TextureID]; | 624 v2 = (stru148 *)&pBitmaps_LOD->pTextures[pOutdoor->uSky_TextureID]; |
625 array_77EC08[1999].pTexture = (Texture *)(pOutdoor->uSky_TextureID != -1 ? (int)v2 : 0); | 625 array_77EC08[1999].pTexture = (Texture *)(pOutdoor->uSky_TextureID != -1 ? (int)v2 : 0); |
626 if ( !(pOutdoor->uSky_TextureID != -1 ? (int)v2 : 0) ) | 626 if ( !(pOutdoor->uSky_TextureID != -1 ? (int)v2 : 0) ) |
627 return (signed __int16)v2; | 627 return (signed __int16)v2; |
628 array_77EC08[1999].field_58 = 0; | 628 array_77EC08[1999].dimming_level = 0; |
629 v11 = stru_5C6E00->Sin(pIndoorCamera->sRotationX + 16); | 629 v11 = stru_5C6E00->Sin(pIndoorCamera->sRotationX + 16); |
630 array_77EC08[1999].v_18.y = 0; | 630 array_77EC08[1999].v_18.y = 0; |
631 array_77EC08[1999].v_18.x = -v11; | 631 array_77EC08[1999].v_18.x = -v11; |
632 array_77EC08[1999].v_18.z = -stru_5C6E00->Cos(pIndoorCamera->sRotationX + 16); | 632 array_77EC08[1999].v_18.z = -stru_5C6E00->Cos(pIndoorCamera->sRotationX + 16); |
633 LOWORD(v2) = 224 * LOWORD(pMiscTimer->uTotalGameTimeElapsed); | 633 LOWORD(v2) = 224 * LOWORD(pMiscTimer->uTotalGameTimeElapsed); |
1820 if (v58 == 4) // if all y == first y; primitive in xz plane | 1820 if (v58 == 4) // if all y == first y; primitive in xz plane |
1821 v8->field_32 |= 0x0001; | 1821 v8->field_32 |= 0x0001; |
1822 v8->pODMFace = nullptr; | 1822 v8->pODMFace = nullptr; |
1823 v8->uNumVertices = 4; | 1823 v8->uNumVertices = 4; |
1824 v8->field_59 = 5; | 1824 v8->field_59 = 5; |
1825 v8->field_58 = 0; | 1825 |
1826 | |
1827 uint norm_idx = pTerrainNormalIndices[2 * (x + 128 * z) + 1]; | |
1828 assert(norm_idx < uNumTerrainNormals); | |
1829 | |
1830 auto norm = pTerrainNormals + norm_idx; | |
1831 float _f = (norm->x * (float)pOutdoor->vSunlight.x / 65536.0 - | |
1832 norm->y * (float)pOutdoor->vSunlight.y / 65536.0 - | |
1833 norm->z * (float)pOutdoor->vSunlight.z / 65536.0); | |
1834 v8->dimming_level = 20.0 - floorf(20.0 * _f + 0.5f); | |
1835 | |
1826 ++pOutdoorCamera->numStru148s; | 1836 ++pOutdoorCamera->numStru148s; |
1827 ++pOutdoorCamera->field_44; | 1837 ++pOutdoorCamera->field_44; |
1828 assert(pOutdoorCamera->numStru148s < 20000); | 1838 assert(pOutdoorCamera->numStru148s < 20000); |
1829 | 1839 |
1830 v8->uBModelID = 0; | 1840 v8->uBModelID = 0; |
1998 v83 = *(/*short **/_WORD *)(a3 + 4); | 2008 v83 = *(/*short **/_WORD *)(a3 + 4); |
1999 X = abs(*(/*short **/_WORD *)(a3 + 6)); | 2009 X = abs(*(/*short **/_WORD *)(a3 + 6)); |
2000 v4 = 0; | 2010 v4 = 0; |
2001 v88 = 0; | 2011 v88 = 0; |
2002 v84 = v3 - 1; | 2012 v84 = v3 - 1; |
2003 v90 = (float)pOutdoor->vSunlight.x / 65536,0; | 2013 v90 = (float)pOutdoor->vSunlight.x / 65536.0; |
2004 v91 = (float)pOutdoor->vSunlight.y / 65536.0; | 2014 v91 = (float)pOutdoor->vSunlight.y / 65536.0; |
2005 v92 = (float)pOutdoor->vSunlight.z / 65536.0; | 2015 v92 = (float)pOutdoor->vSunlight.z / 65536.0; |
2006 if ( v3 - 1 > 0 ) | 2016 if ( v3 - 1 > 0 ) |
2007 { | 2017 { |
2008 while ( 1 ) | 2018 while ( 1 ) |
2065 v19 = v97; | 2075 v19 = v97; |
2066 v16->flags = 0x8010 |pOutdoor->GetSomeOtherTileInfo(sX, sY); | 2076 v16->flags = 0x8010 |pOutdoor->GetSomeOtherTileInfo(sX, sY); |
2067 v16->field_32 = 0; | 2077 v16->field_32 = 0; |
2068 v20 = v93; | 2078 v20 = v93; |
2069 v16->field_59 = 1; | 2079 v16->field_59 = 1; |
2070 v16->field_5D = (char)v19; | 2080 v16->terrain_grid_x = (char)v19; |
2071 v16->field_34 = *(_WORD *)(v20 + 2); | 2081 v16->field_34 = *(_WORD *)(v20 + 2); |
2072 v21 = v89; | 2082 v21 = v89; |
2073 v16->field_5C = v89; | 2083 v16->terrain_grid_z = v89; |
2074 v22 = pTerrainNormalIndices[2 * (v19 + 128 * v21) + 1]; | 2084 v22 = pTerrainNormalIndices[2 * (v19 + 128 * v21) + 1]; |
2075 if ( v22 < 0 || v22 > uNumTerrainNormals - 1 ) | 2085 if ( v22 < 0 || v22 > uNumTerrainNormals - 1 ) |
2076 v23 = 0; | 2086 v23 = 0; |
2077 else | 2087 else |
2078 v23 = &pTerrainNormals[v22]; | 2088 v23 = &pTerrainNormals[v22]; |
2079 v24 = v92 * v23->y; | 2089 v24 = v92 * v23->z; |
2080 //v99 = v23; | 2090 //v99 = v23; |
2081 thisf = 20.0 - (-v24 - v91 * v23->z - v90 * v23->x) * 20.0; | 2091 thisf = 20.0 - (-v24 - v91 * v23->y - v90 * v23->x) * 20.0; |
2082 //v25 = thisf + 6.7553994e15; | 2092 //v25 = thisf + 6.7553994e15; |
2083 //v27 = pOutdoorCamera->numStru148s > 1999; | 2093 //v27 = pOutdoorCamera->numStru148s > 1999; |
2084 //v26 = pOutdoorCamera->numStru148s - 1999 < 0; | 2094 //v26 = pOutdoorCamera->numStru148s - 1999 < 0; |
2085 v16->field_58 = floorf(thisf + 0.5f); | 2095 v16->dimming_level = floorf(thisf + 0.5f); |
2086 if ( pOutdoorCamera->numStru148s >= 1999 ) | 2096 if ( pOutdoorCamera->numStru148s >= 1999 ) |
2087 return; | 2097 return; |
2088 ++pOutdoorCamera->numStru148s; | 2098 ++pOutdoorCamera->numStru148s; |
2089 //if ( !sub_481FC9(v8, pVertices, v101, v16) )//Ritor1: It's temporary | 2099 //if ( !sub_481FC9(v8, pVertices, v101, v16) )//Ritor1: It's temporary |
2090 //goto LABEL_126; | 2100 //goto LABEL_126; |
2140 v33 = 3; | 2150 v33 = 3; |
2141 else | 2151 else |
2142 v33 = v108 != 0 ? 5 : 0; | 2152 v33 = v108 != 0 ? 5 : 0; |
2143 static_sub_0048034E_stru_154._49B0C9(v23, v95); | 2153 static_sub_0048034E_stru_154._49B0C9(v23, v95); |
2144 if ( pDecalBuilder->uNumDecals > 0 ) | 2154 if ( pDecalBuilder->uNumDecals > 0 ) |
2145 pDecalBuilder->ApplyDecals(31 - v16->field_58, 4, &static_sub_0048034E_stru_154, a5, array_50AC10, 0, *(float *)&v33, -1); | 2155 pDecalBuilder->ApplyDecals(31 - v16->dimming_level, 4, &static_sub_0048034E_stru_154, a5, array_50AC10, 0, *(float *)&v33, -1); |
2146 } | 2156 } |
2147 if ( stru_F8AD28.uNumLightsApplied > 0 ) | 2157 if ( stru_F8AD28.uNumLightsApplied > 0 ) |
2148 pGame->pLightmapBuilder->ApplyLights(&stru_F8AD28, &static_sub_0048034E_stru_154, a5, array_50AC10, 0, v33); | 2158 pGame->pLightmapBuilder->ApplyLights(&stru_F8AD28, &static_sub_0048034E_stru_154, a5, array_50AC10, 0, v33); |
2149 v34 = a5; | 2159 v34 = a5; |
2150 //v35 = byte_4D864C == 0; | 2160 //v35 = byte_4D864C == 0; |
2203 BYTE1(v42) |= 0x80u; | 2213 BYTE1(v42) |= 0x80u; |
2204 v43 = pGame->pLightmapBuilder; | 2214 v43 = pGame->pLightmapBuilder; |
2205 *(int *)&v40->flags = v42; | 2215 *(int *)&v40->flags = v42; |
2206 v44 = v93; | 2216 v44 = v93; |
2207 v40->field_59 = 1; | 2217 v40->field_59 = 1; |
2208 v40->field_5D = (char)v43; | 2218 v40->terrain_grid_x = (char)v43; |
2209 v40->field_34 = *(_WORD *)(v44 + 2); | 2219 v40->field_34 = *(_WORD *)(v44 + 2); |
2210 v45 = v89; | 2220 v45 = v89; |
2211 v40->field_5C = v89; | 2221 v40->terrain_grid_z = v89; |
2212 v46 = 4 * ((char)v43 + (v45 << 7)); | 2222 v46 = 4 * ((char)v43 + (v45 << 7)); |
2213 v85 = v46; | 2223 v85 = v46; |
2214 v47 = *(unsigned __int16 *)((char *)pTerrainNormalIndices + v46 + 2);// v47 = pTerrainNormalIndices[v46 + 1]; | 2224 v47 = *(unsigned __int16 *)((char *)pTerrainNormalIndices + v46 + 2);// v47 = pTerrainNormalIndices[v46 + 1]; |
2215 if ( v47 < 0 || v47 > (signed int)(uNumTerrainNormals - 1) ) | 2225 if ( v47 < 0 || v47 > (signed int)(uNumTerrainNormals - 1) ) |
2216 v48 = 0; | 2226 v48 = 0; |
2218 v48 = &pTerrainNormals[v47]; | 2228 v48 = &pTerrainNormals[v47]; |
2219 v49 = v92 * v48->y; | 2229 v49 = v92 * v48->y; |
2220 //v99 = v48; | 2230 //v99 = v48; |
2221 thisg = 20.0 - (-v49 - v91 * v48->z - v90 * v48->x) * 20.0; | 2231 thisg = 20.0 - (-v49 - v91 * v48->z - v90 * v48->x) * 20.0; |
2222 v50 = thisg + 6.755399441055744e15; | 2232 v50 = thisg + 6.755399441055744e15; |
2223 v40->field_58 = LOBYTE(v50); | 2233 v40->dimming_level = LOBYTE(v50); |
2224 if ( LOBYTE(v50) < 0 ) | 2234 if ( LOBYTE(v50) < 0 ) |
2225 v40->field_58 = 0; | 2235 v40->dimming_level = 0; |
2226 if ( pOutdoorCamera->numStru148s >= 1999 ) | 2236 if ( pOutdoorCamera->numStru148s >= 1999 ) |
2227 return; | 2237 return; |
2228 ++pOutdoorCamera->numStru148s; | 2238 ++pOutdoorCamera->numStru148s; |
2229 /*if ( !sub_481FC9(pVertices, pVertices2, v8, v40) ) // Ritor1: It's temporary | 2239 /*if ( !sub_481FC9(pVertices, pVertices2, v8, v40) ) // Ritor1: It's temporary |
2230 //goto LABEL_77; | 2240 //goto LABEL_77; |
2285 else | 2295 else |
2286 pVertices = (RenderVertexSoft *)(v108 != 0 ? 5 : 0); | 2296 pVertices = (RenderVertexSoft *)(v108 != 0 ? 5 : 0); |
2287 //a8 = (RenderVertexSoft *)(this_3a ? 3 : v108 != 0 ? 5 : 0); | 2297 //a8 = (RenderVertexSoft *)(this_3a ? 3 : v108 != 0 ? 5 : 0); |
2288 static_sub_0048034E_stru_76D590._49B0C9(v48, *(float *)&a4); | 2298 static_sub_0048034E_stru_76D590._49B0C9(v48, *(float *)&a4); |
2289 if ( pDecalBuilder->uNumDecals > 0 ) | 2299 if ( pDecalBuilder->uNumDecals > 0 ) |
2290 pDecalBuilder->ApplyDecals(31 - v40->field_58, 4, &static_sub_0048034E_stru_76D590, uNumVertices, array_50AC10, 0, (char)pVertices, -1); | 2300 pDecalBuilder->ApplyDecals(31 - v40->dimming_level, 4, &static_sub_0048034E_stru_76D590, uNumVertices, array_50AC10, 0, (char)pVertices, -1); |
2291 } | 2301 } |
2292 if ( stru_F8AD28.uNumLightsApplied > 0 ) | 2302 if ( stru_F8AD28.uNumLightsApplied > 0 ) |
2293 v96->ApplyLights(&stru_F8AD28, &static_sub_0048034E_stru_76D590, uNumVertices, array_50AC10, 0, (char)pVertices); | 2303 v96->ApplyLights(&stru_F8AD28, &static_sub_0048034E_stru_76D590, uNumVertices, array_50AC10, 0, (char)pVertices); |
2294 v55 = uNumVertices; | 2304 v55 = uNumVertices; |
2295 //v35 = byte_4D864C == 0; | 2305 //v35 = byte_4D864C == 0; |
2337 goto LABEL_162; | 2347 goto LABEL_162; |
2338 *(int *)&v59->flags = pOutdoor->GetSomeOtherTileInfo(sX, sY); | 2348 *(int *)&v59->flags = pOutdoor->GetSomeOtherTileInfo(sX, sY); |
2339 v61 = v93; | 2349 v61 = v93; |
2340 v59->field_59 = 1; | 2350 v59->field_59 = 1; |
2341 v59->field_34 = *(_WORD *)(v61 + 2); | 2351 v59->field_34 = *(_WORD *)(v61 + 2); |
2342 v59->field_5C = v89; | 2352 v59->terrain_grid_z = v89; |
2343 v59->field_5D = v97; | 2353 v59->terrain_grid_x = v97; |
2344 v62 = *(unsigned __int16 *)((char *)pTerrainNormalIndices + v85); | 2354 v62 = *(unsigned __int16 *)((char *)pTerrainNormalIndices + v85); |
2345 if ( v62 > (signed int)(uNumTerrainNormals - 1) ) | 2355 if ( v62 > (signed int)(uNumTerrainNormals - 1) ) |
2346 v63 = 0; | 2356 v63 = 0; |
2347 else | 2357 else |
2348 v63 = &pTerrainNormals[v62]; | 2358 v63 = &pTerrainNormals[v62]; |
2349 v64 = v92 * v63->y; | 2359 v64 = v92 * v63->y; |
2350 //v99 = v63; | 2360 //v99 = v63; |
2351 thish = 20.0 - (-v64 - v91 * v63->y - v90 * v63->x) * 20.0; | 2361 thish = 20.0 - (-v64 - v91 * v63->y - v90 * v63->x) * 20.0; |
2352 v59->field_58 = floorf(thish + 0.5f); | 2362 v59->dimming_level = floorf(thish + 0.5f); |
2353 if ( v59->field_58 < 0 ) | 2363 if ( v59->dimming_level < 0 ) |
2354 v59->field_58 = 0; | 2364 v59->dimming_level = 0; |
2355 if ( pOutdoorCamera->numStru148s >= 1999 ) | 2365 if ( pOutdoorCamera->numStru148s >= 1999 ) |
2356 return; | 2366 return; |
2357 ++pOutdoorCamera->numStru148s; | 2367 ++pOutdoorCamera->numStru148s; |
2358 if ( !sub_481FC9(v101, v102, pVertices2, v59) ) | 2368 if ( !sub_481FC9(v101, v102, pVertices2, v59) ) |
2359 { | 2369 { |
2408 v70 = 3; | 2418 v70 = 3; |
2409 else | 2419 else |
2410 v70 = v108 != 0 ? 5 : 0; | 2420 v70 = v108 != 0 ? 5 : 0; |
2411 static_sub_0048034E_stru_76D578._49B0C9(v63, v87); | 2421 static_sub_0048034E_stru_76D578._49B0C9(v63, v87); |
2412 if ( pDecalBuilder->uNumDecals > 0 ) | 2422 if ( pDecalBuilder->uNumDecals > 0 ) |
2413 pDecalBuilder->ApplyDecals(31 - v40->field_58, 4, &static_sub_0048034E_stru_76D578, v100, array_50AC10, 0, v70, -1); | 2423 pDecalBuilder->ApplyDecals(31 - v40->dimming_level, 4, &static_sub_0048034E_stru_76D578, v100, array_50AC10, 0, v70, -1); |
2414 } | 2424 } |
2415 if ( stru_F8AD28.uNumLightsApplied > 0 ) | 2425 if ( stru_F8AD28.uNumLightsApplied > 0 ) |
2416 v96->ApplyLights(&stru_F8AD28, &static_sub_0048034E_stru_76D578, v100, array_50AC10, 0, v70); | 2426 v96->ApplyLights(&stru_F8AD28, &static_sub_0048034E_stru_76D578, v100, array_50AC10, 0, v70); |
2417 v71 = v59; | 2427 v71 = v59; |
2418 v72 = v100; | 2428 v72 = v100; |
2586 v86 = *(_WORD *)(a3 + 4); //v4; | 2596 v86 = *(_WORD *)(a3 + 4); //v4; |
2587 X = abs(*(_WORD *)(a3 + 6)); //v5 | 2597 X = abs(*(_WORD *)(a3 + 6)); //v5 |
2588 v6 = 0; | 2598 v6 = 0; |
2589 v90 = 0; | 2599 v90 = 0; |
2590 v81 = v3 - 1; | 2600 v81 = v3 - 1; |
2591 v95 = (double)pOutdoor->vSunlight.x * 0.000015258789; | 2601 v95 = (double)pOutdoor->vSunlight.x / 65536.0; |
2592 v96 = (double)pOutdoor->vSunlight.y * 0.000015258789; | 2602 v96 = (double)pOutdoor->vSunlight.y / 65536.0; |
2593 v97 = (double)pOutdoor->vSunlight.z * 0.000015258789; | 2603 v97 = (double)pOutdoor->vSunlight.z / 65536.0; |
2594 if ( v3 - 1 > 0 ) | 2604 if ( v3 - 1 > 0 ) |
2595 { | 2605 { |
2596 while ( 1 ) | 2606 while ( 1 ) |
2597 { | 2607 { |
2598 v7 = abs(X); | 2608 v7 = abs(X); |
2641 LOWORD(v19) = v19 | 0x8010; | 2651 LOWORD(v19) = v19 | 0x8010; |
2642 v20 = v99; | 2652 v20 = v99; |
2643 *(int *)&v17->flags = v19; | 2653 *(int *)&v17->flags = v19; |
2644 v21 = v92; | 2654 v21 = v92; |
2645 v17->field_59 = 1; | 2655 v17->field_59 = 1; |
2646 v17->field_5D = LOBYTE(v20); | 2656 v17->terrain_grid_x = LOBYTE(v20); |
2647 v17->field_34 = v21->distance; | 2657 v17->field_34 = v21->distance; |
2648 v22 = v94; | 2658 v22 = v94; |
2649 v17->field_5C = v94; | 2659 v17->terrain_grid_z = v94; |
2650 v23 = pTerrainNormalIndices[2 * (LODWORD(v20) + (v22 << 7)) + 1]; | 2660 v23 = pTerrainNormalIndices[2 * (LODWORD(v20) + (v22 << 7)) + 1]; |
2651 if ( v23 < 0 || v23 > (signed int)(uNumTerrainNormals - 1) ) | 2661 if ( v23 < 0 || v23 > (signed int)(uNumTerrainNormals - 1) ) |
2652 v24 = 0; | 2662 v24 = 0; |
2653 else | 2663 else |
2654 v24 = &pTerrainNormals[v23]; | 2664 v24 = &pTerrainNormals[v23]; |
2659 if ( v25 < 0.0 ) | 2669 if ( v25 < 0.0 ) |
2660 v25 = 0.0; | 2670 v25 = 0.0; |
2661 v99 = v25 * 31.0; | 2671 v99 = v25 * 31.0; |
2662 v76 = v99 + 6.7553994e15; | 2672 v76 = v99 + 6.7553994e15; |
2663 v84 = LODWORD(v76); | 2673 v84 = LODWORD(v76); |
2664 v17->field_58 = 31 - LOBYTE(v76); | 2674 v17->dimming_level = 31 - LOBYTE(v76); |
2665 } | 2675 } |
2666 else | 2676 else |
2667 { | 2677 { |
2668 v17->field_58 = 0; | 2678 v17->dimming_level = 0; |
2669 } | 2679 } |
2670 if ( pOutdoorCamera->numStru148s >= 1999 ) | 2680 if ( pOutdoorCamera->numStru148s >= 1999 ) |
2671 return; | 2681 return; |
2672 ++pOutdoorCamera->numStru148s; | 2682 ++pOutdoorCamera->numStru148s; |
2673 if ( !sub_481FC9(v10, (RenderVertexSoft *)HIDWORD(v101), v102, v17) ) | 2683 if ( !sub_481FC9(v10, (RenderVertexSoft *)HIDWORD(v101), v102, v17) ) |
2758 BYTE1(v40) |= 0x80u; | 2768 BYTE1(v40) |= 0x80u; |
2759 v41 = v99; | 2769 v41 = v99; |
2760 *(int *)&v38->flags = v40; | 2770 *(int *)&v38->flags = v40; |
2761 v42 = v92; | 2771 v42 = v92; |
2762 v38->field_59 = 1; | 2772 v38->field_59 = 1; |
2763 v38->field_5D = LOBYTE(v41); | 2773 v38->terrain_grid_x = LOBYTE(v41); |
2764 v38->field_34 = v42->distance; | 2774 v38->field_34 = v42->distance; |
2765 v43 = v94; | 2775 v43 = v94; |
2766 v38->field_5C = v94; | 2776 v38->terrain_grid_z = v94; |
2767 v44 = 2 * (LODWORD(v41) + (v43 << 7)); | 2777 v44 = 2 * (LODWORD(v41) + (v43 << 7)); |
2768 LODWORD(v93) = v44 * 2; | 2778 LODWORD(v93) = v44 * 2; |
2769 v45 = pTerrainNormalIndices[v44 + 1]; | 2779 v45 = pTerrainNormalIndices[v44 + 1]; |
2770 if ( v45 < 0 || v45 > (signed int)(uNumTerrainNormals - 1) ) | 2780 if ( v45 < 0 || v45 > (signed int)(uNumTerrainNormals - 1) ) |
2771 v46 = 0; | 2781 v46 = 0; |
2778 if ( v47 < 0.0 ) | 2788 if ( v47 < 0.0 ) |
2779 v47 = 0.0; | 2789 v47 = 0.0; |
2780 v88 = v47 * 31.0; | 2790 v88 = v47 * 31.0; |
2781 v74 = v88 + 6.7553994e15; | 2791 v74 = v88 + 6.7553994e15; |
2782 v87 = LODWORD(v74); | 2792 v87 = LODWORD(v74); |
2783 v38->field_58 = 31 - LOBYTE(v74); | 2793 v38->dimming_level = 31 - LOBYTE(v74); |
2784 } | 2794 } |
2785 else | 2795 else |
2786 { | 2796 { |
2787 v38->field_58 = 0; | 2797 v38->dimming_level = 0; |
2788 } | 2798 } |
2789 if ( v38->field_58 < 0 ) | 2799 if ( v38->dimming_level < 0 ) |
2790 v38->field_58 = 0; | 2800 v38->dimming_level = 0; |
2791 if ( pOutdoorCamera->numStru148s >= 1999 ) | 2801 if ( pOutdoorCamera->numStru148s >= 1999 ) |
2792 return; | 2802 return; |
2793 ++pOutdoorCamera->numStru148s; | 2803 ++pOutdoorCamera->numStru148s; |
2794 if ( !sub_481FC9((RenderVertexSoft *)HIDWORD(v101), v103, v104, v38) ) | 2804 if ( !sub_481FC9((RenderVertexSoft *)HIDWORD(v101), v103, v104, v38) ) |
2795 goto LABEL_74; | 2805 goto LABEL_74; |
2847 goto LABEL_105; | 2857 goto LABEL_105; |
2848 *(int *)&v17->flags = pOutdoor->GetSomeOtherTileInfo(v101, v100); | 2858 *(int *)&v17->flags = pOutdoor->GetSomeOtherTileInfo(v101, v100); |
2849 v58 = v92; | 2859 v58 = v92; |
2850 v17->field_59 = 1; | 2860 v17->field_59 = 1; |
2851 v17->field_34 = v58->distance; | 2861 v17->field_34 = v58->distance; |
2852 v17->field_5C = v94; | 2862 v17->terrain_grid_z = v94; |
2853 v17->field_5D = LOBYTE(v99); | 2863 v17->terrain_grid_x = LOBYTE(v99); |
2854 v59 = *(unsigned __int16 *)((char *)pTerrainNormalIndices + LODWORD(v93)); | 2864 v59 = *(unsigned __int16 *)((char *)pTerrainNormalIndices + LODWORD(v93)); |
2855 if ( v59 > (signed int)(uNumTerrainNormals - 1) ) | 2865 if ( v59 > (signed int)(uNumTerrainNormals - 1) ) |
2856 { | 2866 { |
2857 pNormalb = 0; | 2867 pNormalb = 0; |
2858 v60 = 0; | 2868 v60 = 0; |
2868 if ( v61 < 0.0 ) | 2878 if ( v61 < 0.0 ) |
2869 v61 = 0.0; | 2879 v61 = 0.0; |
2870 v93 = v61 * 31.0; | 2880 v93 = v61 * 31.0; |
2871 v72 = v93 + 6.7553994e15; | 2881 v72 = v93 + 6.7553994e15; |
2872 v83 = LODWORD(v72); | 2882 v83 = LODWORD(v72); |
2873 v17->field_58 = 31 - LOBYTE(v72); | 2883 v17->dimming_level = 31 - LOBYTE(v72); |
2874 } | 2884 } |
2875 else | 2885 else |
2876 { | 2886 { |
2877 v17->field_58 = 0; | 2887 v17->dimming_level = 0; |
2878 } | 2888 } |
2879 if ( v17->field_58 < 0 ) | 2889 if ( v17->dimming_level < 0 ) |
2880 v17->field_58 = 0; | 2890 v17->dimming_level = 0; |
2881 if ( pOutdoorCamera->numStru148s >= 1999 ) | 2891 if ( pOutdoorCamera->numStru148s >= 1999 ) |
2882 return; | 2892 return; |
2883 ++pOutdoorCamera->numStru148s; | 2893 ++pOutdoorCamera->numStru148s; |
2884 if ( !sub_481FC9(v102, v104, v103, v17) ) | 2894 if ( !sub_481FC9(v102, v104, v103, v17) ) |
2885 { | 2895 { |
4476 LightmapBuilder *v53; // [sp+58h] [bp-10h]@3 | 4486 LightmapBuilder *v53; // [sp+58h] [bp-10h]@3 |
4477 unsigned int v54; // [sp+5Ch] [bp-Ch]@3 | 4487 unsigned int v54; // [sp+5Ch] [bp-Ch]@3 |
4478 unsigned int v55; // [sp+5Ch] [bp-Ch]@34 | 4488 unsigned int v55; // [sp+5Ch] [bp-Ch]@34 |
4479 unsigned int v56; // [sp+60h] [bp-8h]@12 | 4489 unsigned int v56; // [sp+60h] [bp-8h]@12 |
4480 int v57; // [sp+60h] [bp-8h]@34 | 4490 int v57; // [sp+60h] [bp-8h]@34 |
4481 HRESULT a2; // [sp+64h] [bp-4h]@4 | 4491 unsigned int a2; // [sp+64h] [bp-4h]@4 |
4482 | 4492 |
4483 v5 = this; | 4493 v5 = this; |
4484 v6 = 0; | 4494 v6 = 0; |
4485 if ( this->uNumD3DSceneBegins && (signed int)uNumVertices >= 3 ) | 4495 if ( this->uNumD3DSceneBegins && (signed int)uNumVertices >= 3 ) |
4486 { | 4496 { |
4487 v7 = pGame->pLightmapBuilder; | 4497 v7 = pGame->pLightmapBuilder; |
4488 v53 = v7; | 4498 v53 = v7; |
4489 v54 = v7->std__vector_000004_size; | 4499 v54 = v7->std__vector_000004_size; |
4490 if ( v7->std__vector_000004_size) | 4500 if ( v7->std__vector_000004_size) |
4491 a2 = -1; | 4501 a2 = 0xFFFFFFFF; |
4492 pGame->_44EE30(a4, (int)&a2); | 4502 pGame->AlterGamma_ODM(a4, &a2); |
4493 if ( byte_4D864C && pGame->uFlags & 1 ) | 4503 if ( byte_4D864C && pGame->uFlags & 1 ) |
4494 { | 4504 { |
4495 v8 = GetActorTintColor(a3->field_58, 0, array_50AC10[0].vWorldViewPosition.x, 0, 0); | 4505 v8 = ::GetActorTintColor(a3->dimming_level, 0, array_50AC10[0].vWorldViewPosition.x, 0, 0); |
4496 v7->_45D74F_MessWithLight(v8, 0); | 4506 v7->_45D74F_MessWithLight(v8, 0); |
4497 } | 4507 } |
4498 else | 4508 else |
4499 { | 4509 { |
4500 if ( !v54 || byte_4D864C && pGame->uFlags & 2 ) | 4510 if ( !v54 || byte_4D864C && pGame->uFlags & 2 ) |
4512 v45 = (char *)&array_50AC10[0].vWorldViewPosition; | 4522 v45 = (char *)&array_50AC10[0].vWorldViewPosition; |
4513 v57 = (int)&d3d_vertex_buffer[0].pos.y; | 4523 v57 = (int)&d3d_vertex_buffer[0].pos.y; |
4514 v55 = uNumVertices; | 4524 v55 = uNumVertices; |
4515 do | 4525 do |
4516 { | 4526 { |
4517 a2 = GetActorTintColor(a3->field_58, 0, *(float *)v45, 0, 0); | 4527 a2 = ::GetActorTintColor(a3->dimming_level, 0, *(float *)v45, 0, 0); |
4518 pGame->_44EE30(a4, (int)&a2); | 4528 pGame->AlterGamma_ODM(a4, &a2); |
4519 v46 = v57; | 4529 v46 = v57; |
4520 v47 = *(float *)v45 * 1000.0 / (double)pOutdoorCamera->shading_dist_mist; | 4530 v47 = *(float *)v45 * 1000.0 / (double)pOutdoorCamera->shading_dist_mist; |
4521 *(int *)(v57 - 4) = *((int *)v45 + 3); | 4531 *(int *)(v57 - 4) = *((int *)v45 + 3); |
4522 *(int *)v57 = *((int *)v45 + 4); | 4532 *(int *)v57 = *((int *)v45 + 4); |
4523 *(int *)(v57 + 12) = a2; | 4533 *(int *)(v57 + 12) = a2; |
4574 *((int *)v9 - 1) = *((int *)v10 + 3); | 4584 *((int *)v9 - 1) = *((int *)v10 + 3); |
4575 v12 = v11 / (double)pOutdoorCamera->shading_dist_mist; | 4585 v12 = v11 / (double)pOutdoorCamera->shading_dist_mist; |
4576 v9->pFacePlane.vNormal.x = *((int *)v10 + 4); | 4586 v9->pFacePlane.vNormal.x = *((int *)v10 + 4); |
4577 *(float *)&v9->pFacePlane.vNormal.y = 1.0 - 1.0 / v12; | 4587 *(float *)&v9->pFacePlane.vNormal.y = 1.0 - 1.0 / v12; |
4578 *(float *)&v9->pFacePlane.vNormal.z = 1.0 / (*(float *)v10 + 0.0000001); | 4588 *(float *)&v9->pFacePlane.vNormal.z = 1.0 / (*(float *)v10 + 0.0000001); |
4579 v13 = GetActorTintColor(a3->field_58, 0, *(float *)v10, 0, 0); | 4589 v13 = GetActorTintColor(a3->dimming_level, 0, *(float *)v10, 0, 0); |
4580 v14 = a4; | 4590 v14 = a4; |
4581 v15 = *(float *)v10; | 4591 v15 = *(float *)v10; |
4582 a4->pFacePlane.dist = v13; | 4592 a4->pFacePlane.dist = v13; |
4583 if ( v5->bUsingSpecular ) | 4593 if ( v5->bUsingSpecular ) |
4584 { | 4594 { |
7303 | 7313 |
7304 | 7314 |
7305 //----- (004A2031) -------------------------------------------------------- | 7315 //----- (004A2031) -------------------------------------------------------- |
7306 unsigned int Render::GetActorTintColor(float a2, int tint, int a4, int a5, RenderBillboard *a6) | 7316 unsigned int Render::GetActorTintColor(float a2, int tint, int a4, int a5, RenderBillboard *a6) |
7307 { | 7317 { |
7318 __debugbreak(); // should not fire outside decal builder | |
7308 return ::GetActorTintColor(tint, a4, a2, a5, a6); | 7319 return ::GetActorTintColor(tint, a4, a2, a5, a6); |
7309 } | 7320 } |
7310 | 7321 |
7311 /*void Render::DrawTerrainPolygon_new(stru148 *a3, IDirect3DTexture2 *pTexture)//new function | 7322 /*void Render::DrawTerrainPolygon_new(stru148 *a3, IDirect3DTexture2 *pTexture)//new function |
7312 { | 7323 { |
7501 /* v9 = pGame->pLightmapBuilder; | 7512 /* v9 = pGame->pLightmapBuilder; |
7502 v65 = v9; | 7513 v65 = v9; |
7503 v10 = v9->std__vector_000004_size;*/ | 7514 v10 = v9->std__vector_000004_size;*/ |
7504 if ( byte_4D864C && pGame->uFlags & 1 ) | 7515 if ( byte_4D864C && pGame->uFlags & 1 ) |
7505 { | 7516 { |
7506 v11 = GetActorTintColor(a4->field_58, 0, array_50AC10[0].vWorldViewPosition.x, 0, 0); | 7517 v11 = ::GetActorTintColor(a4->dimming_level, 0, array_50AC10[0].vWorldViewPosition.x, 0, 0); |
7507 pGame->pLightmapBuilder->_45D74F_MessWithLight(v11, 0); | 7518 pGame->pLightmapBuilder->_45D74F_MessWithLight(v11, 0); |
7508 } | 7519 } |
7509 else | 7520 else |
7510 { | 7521 { |
7511 if (transparent || !pGame->pLightmapBuilder->std__vector_000004_size || | 7522 if (transparent || !pGame->pLightmapBuilder->std__vector_000004_size || |
7544 *(int *)(v51 - 4) = *((int *)v52 + 3); | 7555 *(int *)(v51 - 4) = *((int *)v52 + 3); |
7545 v54 = v53 / (double)pOutdoorCamera->shading_dist_mist; | 7556 v54 = v53 / (double)pOutdoorCamera->shading_dist_mist; |
7546 *(int *)v51 = *((int *)v52 + 4); | 7557 *(int *)v51 = *((int *)v52 + 4); |
7547 *(float *)(v51 + 4) = 1.0 - 1.0 / v54; | 7558 *(float *)(v51 + 4) = 1.0 - 1.0 / v54; |
7548 *(float *)(v51 + 8) = 1.0 / (*(float *)v52 + 0.0000001); | 7559 *(float *)(v51 + 8) = 1.0 / (*(float *)v52 + 0.0000001); |
7549 v55 = GetActorTintColor(a4->field_58, 0, *(float *)v52, 0, 0); | 7560 v55 = ::GetActorTintColor(a4->dimming_level, 0, *(float *)v52, 0, 0); |
7550 v56 = a7; | 7561 v56 = a7; |
7551 v57 = *(float *)v52; | 7562 v57 = *(float *)v52; |
7552 *(int *)(a7 + 12) = v55; | 7563 *(int *)(a7 + 12) = v55; |
7553 if ( this->bUsingSpecular ) | 7564 if ( this->bUsingSpecular ) |
7554 { | 7565 { |
7594 *(int *)(v12 - 4) = *((int *)v13 + 3); | 7605 *(int *)(v12 - 4) = *((int *)v13 + 3); |
7595 v15 = v14 / (double)pOutdoorCamera->shading_dist_mist; | 7606 v15 = v14 / (double)pOutdoorCamera->shading_dist_mist; |
7596 *(int *)v12 = *((int *)v13 + 4); | 7607 *(int *)v12 = *((int *)v13 + 4); |
7597 *(float *)(v12 + 4) = 1.0 - 1.0 / v15; | 7608 *(float *)(v12 + 4) = 1.0 - 1.0 / v15; |
7598 *(float *)(v12 + 8) = 1.0 / (*(float *)v13 + 0.0000001); | 7609 *(float *)(v12 + 8) = 1.0 / (*(float *)v13 + 0.0000001); |
7599 v16 = GetActorTintColor(a4->field_58, 0, *(float *)v13, 0, 0); | 7610 v16 = GetActorTintColor(a4->dimming_level, 0, *(float *)v13, 0, 0); |
7600 v17 = a7; | 7611 v17 = a7; |
7601 v18 = *(float *)v13; | 7612 v18 = *(float *)v13; |
7602 *(int *)(a7 + 12) = v16; | 7613 *(int *)(a7 + 12) = v16; |
7603 if ( this->bUsingSpecular ) | 7614 if ( this->bUsingSpecular ) |
7604 { | 7615 { |
7736 pVertices[i].pos.x = array_50AC10[i].vWorldViewProjX; | 7747 pVertices[i].pos.x = array_50AC10[i].vWorldViewProjX; |
7737 pVertices[i].pos.y = array_50AC10[i].vWorldViewProjY; | 7748 pVertices[i].pos.y = array_50AC10[i].vWorldViewProjY; |
7738 pVertices[i].pos.z = 0.99989998; | 7749 pVertices[i].pos.z = 0.99989998; |
7739 pVertices[i].rhw = array_50AC10[i]._rhw; | 7750 pVertices[i].rhw = array_50AC10[i]._rhw; |
7740 | 7751 |
7741 pVertices[i].diffuse = GetActorTintColor(31, 0, array_50AC10[i].vWorldViewPosition.x, 1, 0); | 7752 pVertices[i].diffuse = ::GetActorTintColor(31, 0, array_50AC10[i].vWorldViewPosition.x, true, false); |
7742 v7 = 0; | 7753 v7 = 0; |
7743 if (this->bUsingSpecular) | 7754 if (this->bUsingSpecular) |
7744 { | 7755 { |
7745 v12 = array_50AC10[i].vWorldViewPosition.x; | 7756 v12 = array_50AC10[i].vWorldViewPosition.x; |
7746 v7 = sub_47C3D7_get_fog_related_stuff(0, 1, v12); | 7757 v7 = sub_47C3D7_get_fog_related_stuff(0, 1, v12); |
7814 { | 7825 { |
7815 v4 = a2; | 7826 v4 = a2; |
7816 if ( a2 >= 3 ) | 7827 if ( a2 >= 3 ) |
7817 { | 7828 { |
7818 ErrD3D(pRenderD3D->pDevice->SetTextureStageState(0, D3DTSS_ADDRESS, D3DTADDRESS_WRAP)); | 7829 ErrD3D(pRenderD3D->pDevice->SetTextureStageState(0, D3DTSS_ADDRESS, D3DTADDRESS_WRAP)); |
7819 v5 = 31 - (a3->field_58 & 0x1F); | 7830 v5 = 31 - (a3->dimming_level & 0x1F); |
7820 if ( v5 < pOutdoor->field_CBC_terrain_triangles_shade_type ) | 7831 if ( v5 < pOutdoor->max_terrain_dimming_level ) |
7821 v5 = pOutdoor->field_CBC_terrain_triangles_shade_type; | 7832 v5 = pOutdoor->max_terrain_dimming_level; |
7822 v6 = 8 * v5 | ((8 * v5 | (v5 << 11)) << 8); | 7833 v6 = 8 * v5 | ((8 * v5 | (v5 << 11)) << 8); |
7823 if ( a2 > 0 ) | 7834 if ( a2 > 0 ) |
7824 { | 7835 { |
7825 v7 = (char *)&d3d_vertex_buffer[0].pos.y; | 7836 v7 = (char *)&d3d_vertex_buffer[0].pos.y; |
7826 v8 = (char *)&array_507D30[0].vWorldViewProjY; | 7837 v8 = (char *)&array_507D30[0].vWorldViewProjY; |
7901 //v9 = v59->std__vector_000004_size; | 7912 //v9 = v59->std__vector_000004_size; |
7902 | 7913 |
7903 auto uCorrectedColor = uColor; | 7914 auto uCorrectedColor = uColor; |
7904 if (pGame->pLightmapBuilder->std__vector_000004_size) | 7915 if (pGame->pLightmapBuilder->std__vector_000004_size) |
7905 uCorrectedColor = 0xFFFFFFFF; | 7916 uCorrectedColor = 0xFFFFFFFF; |
7906 pGame->AlterGamma(pFace, &uCorrectedColor); | 7917 pGame->AlterGamma_BLV(pFace, &uCorrectedColor); |
7907 | 7918 |
7908 if (byte_4D864C && pGame->uFlags & 1) | 7919 if (byte_4D864C && pGame->uFlags & 1) |
7909 { | 7920 { |
7910 __debugbreak(); | 7921 __debugbreak(); |
7911 ErrD3D(pRenderD3D->pDevice->SetRenderState(D3DRENDERSTATE_ZWRITEENABLE, false)); | 7922 ErrD3D(pRenderD3D->pDevice->SetRenderState(D3DRENDERSTATE_ZWRITEENABLE, false)); |
8568 v8 = Billboard_ProbablyAddToListAndSortByZOrder(a2->zbuffer_depth); | 8579 v8 = Billboard_ProbablyAddToListAndSortByZOrder(a2->zbuffer_depth); |
8569 | 8580 |
8570 v30 = (a2->_screenspace_x_scaler_packedfloat & 0xFFFF) / 65530.0 + HIWORD(a2->_screenspace_x_scaler_packedfloat); | 8581 v30 = (a2->_screenspace_x_scaler_packedfloat & 0xFFFF) / 65530.0 + HIWORD(a2->_screenspace_x_scaler_packedfloat); |
8571 v29 = (a2->_screenspace_y_scaler_packedfloat & 0xFFFF) / 65530.0 + HIWORD(a2->_screenspace_y_scaler_packedfloat); | 8582 v29 = (a2->_screenspace_y_scaler_packedfloat & 0xFFFF) / 65530.0 + HIWORD(a2->_screenspace_y_scaler_packedfloat); |
8572 | 8583 |
8573 unsigned int diffuse = GetActorTintColor(paletteSubindex, 0, a2->zbuffer_depth, 0, pBillboard); | 8584 unsigned int diffuse = ::GetActorTintColor(paletteSubindex, 0, a2->zbuffer_depth, 0, pBillboard); |
8574 if (a2->uTintColor & 0x00FFFFFF && bTinting) | 8585 if (a2->uTintColor & 0x00FFFFFF && bTinting) |
8575 { | 8586 { |
8576 diffuse = sub_4A19D8(a2->uTintColor, diffuse); | 8587 diffuse = sub_4A19D8(a2->uTintColor, diffuse); |
8577 if (a2->uTintColor & 0xFF000000) | 8588 if (a2->uTintColor & 0xFF000000) |
8578 diffuse = 0x007F7F7F & ((unsigned int)diffuse >> 1); | 8589 diffuse = 0x007F7F7F & ((unsigned int)diffuse >> 1); |