comparison Render.cpp @ 265:96bc024a5fed

Render overflows
author Nomad
date Mon, 18 Feb 2013 10:04:47 +0200
parents 9b77686e2239
children 2a09e1d6fc8f
comparison
equal deleted inserted replaced
257:96f3a1177b37 265:96bc024a5fed
1832 v8->uNumVertices = 4; 1832 v8->uNumVertices = 4;
1833 v8->field_59 = 5; 1833 v8->field_59 = 5;
1834 v8->field_58 = 0; 1834 v8->field_58 = 0;
1835 ++pOutdoorCamera->numStru148s; 1835 ++pOutdoorCamera->numStru148s;
1836 ++pOutdoorCamera->field_44; 1836 ++pOutdoorCamera->field_44;
1837 assert(pOutdoorCamera->numStru148s < 20000);
1838
1837 v8->uBModelID = 0; 1839 v8->uBModelID = 0;
1838 v8->uBModelFaceID = 0; 1840 v8->uBModelFaceID = 0;
1839 v31 = (8 * (0 | (0 << 6))); 1841 v31 = (8 * (0 | (0 << 6)));
1840 v8->field_50 = v31 | 6; 1842 v8->field_50 = v31 | 6;
1841 for (unsigned int k = 0; k < 4; ++k) 1843 for (unsigned int k = 0; k < v8->uNumVertices; ++k)
1842 { 1844 {
1843 memcpy(&array_50AC10[k], &array_73D150[k], sizeof(struct RenderVertexSoft)); 1845 memcpy(&array_50AC10[k], &array_73D150[k], sizeof(struct RenderVertexSoft));
1844 array_50AC10[k]._rhw = 1.0 / (array_73D150[k].vWorldViewPosition.x + 0.0000001000000011686097); 1846 array_50AC10[k]._rhw = 1.0 / (array_73D150[k].vWorldViewPosition.x + 0.0000001000000011686097);
1845 } 1847 }
1846 1848
1847 bool transparent = false; 1849 bool transparent = false;
1848 if ( v8->flags & 2 && v8->uTileBitmapID == pRenderer->field_1036AC_bitmapid ) 1850 if ( v8->flags & 2 && v8->uTileBitmapID == pRenderer->hd_water_tile_id)
1849 { 1851 {
1850 //v80 = false; 1852 //v80 = false;
1851 v6 = pRenderer->pHDWaterBitmapIDs[pRenderer->field_1036A8_bitmapid]; 1853 v6 = pRenderer->pHDWaterBitmapIDs[pRenderer->hd_water_current_frame];
1852 } 1854 }
1853 else 1855 else
1854 { 1856 {
1855 v6 = v8->uTileBitmapID; 1857 v6 = v8->uTileBitmapID;
1856 transparent = true; 1858 transparent = true;
1860 1862
1861 // for all shore tiles - draw a tile water under them since they're half-empty 1863 // for all shore tiles - draw a tile water under them since they're half-empty
1862 if (!strnicmp(pBitmaps_LOD->pTextures[v8->uTileBitmapID].pName, "wtrdr", 5)) // all shore tile filenames are wtrdrXXX 1864 if (!strnicmp(pBitmaps_LOD->pTextures[v8->uTileBitmapID].pName, "wtrdr", 5)) // all shore tile filenames are wtrdrXXX
1863 { 1865 {
1864 pRenderD3D->pDevice->SetRenderState(D3DRENDERSTATE_ZWRITEENABLE, FALSE); // no Z writing: the shore tile will be draw in the same place, so taking care about z-fighting 1866 pRenderD3D->pDevice->SetRenderState(D3DRENDERSTATE_ZWRITEENABLE, FALSE); // no Z writing: the shore tile will be draw in the same place, so taking care about z-fighting
1865 pRenderer->DrawTerrainPolygon(v8->uNumVertices, v8, pBitmaps_LOD->pHardwareTextures[pRenderer->pHDWaterBitmapIDs[pRenderer->field_1036A8_bitmapid]], false, true); 1867 pRenderer->DrawTerrainPolygon(v8->uNumVertices, v8, pBitmaps_LOD->pHardwareTextures[pRenderer->pHDWaterBitmapIDs[pRenderer->hd_water_current_frame]], false, true);
1866 pRenderD3D->pDevice->SetRenderState(D3DRENDERSTATE_ZWRITEENABLE, TRUE); 1868 pRenderD3D->pDevice->SetRenderState(D3DRENDERSTATE_ZWRITEENABLE, TRUE);
1867 1869
1868 } 1870 }
1869 1871
1870 pRenderer->DrawTerrainPolygon(v8->uNumVertices, v8, pBitmaps_LOD->pHardwareTextures[v6], transparent, true); 1872 pRenderer->DrawTerrainPolygon(v8->uNumVertices, v8, pBitmaps_LOD->pHardwareTextures[v6], transparent, true);
2172 } 2174 }
2173 } 2175 }
2174 //v37 = *(int *)&v16->flags; 2176 //v37 = *(int *)&v16->flags;
2175 if ( ~v16->flags & 1 ) 2177 if ( ~v16->flags & 1 )
2176 { 2178 {
2177 if ( v16->flags & 2 && v16->uTileBitmapID == pRenderer->field_1036AC_bitmapid ) 2179 if ( v16->flags & 2 && v16->uTileBitmapID == pRenderer->hd_water_tile_id )
2178 { 2180 {
2179 v80 = false; 2181 v80 = false;
2180 v39 = pRenderer->pHDWaterBitmapIDs[pRenderer->field_1036A8_bitmapid]; 2182 v39 = pRenderer->pHDWaterBitmapIDs[pRenderer->hd_water_current_frame];
2181 } 2183 }
2182 else 2184 else
2183 { 2185 {
2184 v39 = v16->uTileBitmapID; 2186 v39 = v16->uTileBitmapID;
2185 v80 = true; 2187 v80 = true;
2322 { 2324 {
2323 v40->_4811A3(); 2325 v40->_4811A3();
2324 } 2326 }
2325 else 2327 else
2326 { 2328 {
2327 if ( v57 & 2 && v40->uTileBitmapID == pRenderer->field_1036AC_bitmapid ) 2329 if ( v57 & 2 && v40->uTileBitmapID == pRenderer->hd_water_tile_id )
2328 { 2330 {
2329 v81 = 0; 2331 v81 = 0;
2330 v58 = pRenderer->pHDWaterBitmapIDs[pRenderer->field_1036A8_bitmapid]; 2332 v58 = pRenderer->pHDWaterBitmapIDs[pRenderer->hd_water_current_frame];
2331 } 2333 }
2332 else 2334 else
2333 { 2335 {
2334 v58 = v40->uTileBitmapID; 2336 v58 = v40->uTileBitmapID;
2335 v81 = 1; 2337 v81 = 1;
2437 { 2439 {
2438 LABEL_154: 2440 LABEL_154:
2439 v74 = v71->flags; 2441 v74 = v71->flags;
2440 if ( !(BYTE1(v74) & 1) ) 2442 if ( !(BYTE1(v74) & 1) )
2441 { 2443 {
2442 if ( v74 & 2 && v71->uTileBitmapID == pRenderer->field_1036AC_bitmapid ) 2444 if ( v74 & 2 && v71->uTileBitmapID == pRenderer->hd_water_tile_id )
2443 { 2445 {
2444 v80 = false; 2446 v80 = false;
2445 v75 = pRenderer->pHDWaterBitmapIDs[pRenderer->field_1036A8_bitmapid]; 2447 v75 = pRenderer->pHDWaterBitmapIDs[pRenderer->hd_water_current_frame];
2446 } 2448 }
2447 else 2449 else
2448 { 2450 {
2449 v75 = v71->uTileBitmapID; 2451 v75 = v71->uTileBitmapID;
2450 v80 = true; 2452 v80 = true;
4692 LOBYTE(v1->field_103668) = 0; 4694 LOBYTE(v1->field_103668) = 0;
4693 v1->field_1036B8 = 0; 4695 v1->field_1036B8 = 0;
4694 v1->_gpu_memory_used = 0; 4696 v1->_gpu_memory_used = 0;
4695 uNumBillboardsToDraw = 0; 4697 uNumBillboardsToDraw = 0;
4696 bFogEnabled = false; 4698 bFogEnabled = false;
4699
4700 hd_water_tile_id = -1;
4701 hd_water_current_frame = 0;
4697 } 4702 }
4698 4703
4699 bool Render::Initialize(bool bWindowed, uint uDefaultDevice, 4704 bool Render::Initialize(bool bWindowed, uint uDefaultDevice,
4700 bool bColoredLights, uint uDetailLevel, uint bTinting) 4705 bool bColoredLights, uint uDetailLevel, uint bTinting)
4701 { 4706 {