Mercurial > mm7
diff Engine/Graphics/Render.cpp @ 2531:f6de3e15d4a5
for light in indoor
author | Ritor1 |
---|---|
date | Sun, 23 Nov 2014 15:30:17 +0600 |
parents | b1c516bf1102 |
children | 9ec6b8be16fe |
line wrap: on
line diff
--- a/Engine/Graphics/Render.cpp Mon Oct 13 17:52:23 2014 +0300 +++ b/Engine/Graphics/Render.cpp Sun Nov 23 15:30:17 2014 +0600 @@ -279,28 +279,28 @@ unsigned int Start_X, End_X, Start_Z, End_Z; if ( direction >= 0 && direction < 1.0 )//East(B) - NorthEast(CB) { - Start_X = pODMRenderParams->uMapGridCellX - 2, End_X = 127; - Start_Z = 0, End_Z = 127; + Start_X = pODMRenderParams->uMapGridCellX - 2, End_X = 128; + Start_Z = 0, End_Z = 128; } else if (direction >= 1.0 && direction < 3.0)//NorthEast(CB) - WestNorth(CЗ) { - Start_X = 0, End_X = 127; + Start_X = 0, End_X = 128; Start_Z = 0, End_Z = pODMRenderParams->uMapGridCellZ + 1; } else if (direction >= 3.0 && direction < 5.0)//WestNorth(CЗ) - SouthWest(ЮЗ) { Start_X = 0, End_X = pODMRenderParams->uMapGridCellX + 2; - Start_Z = 0, End_Z = 127; + Start_Z = 0, End_Z = 128; } else if ( direction >= 5.0 && direction < 7.0 )//SouthWest(ЮЗ) - //SouthEast(ЮВ) { - Start_X = 0, End_X = 127; - Start_Z = pODMRenderParams->uMapGridCellZ - 2, End_Z = 127; + Start_X = 0, End_X = 128; + Start_Z = pODMRenderParams->uMapGridCellZ - 2, End_Z = 128; } else//SouthEast(ЮВ) - East(B) { - Start_X = pODMRenderParams->uMapGridCellX - 2, End_X = 127; - Start_Z = 0, End_Z = 127; + Start_X = pODMRenderParams->uMapGridCellX - 2, End_X = 128; + Start_Z = 0, End_Z = 128; } for (unsigned int z = Start_Z; z < End_Z; ++z) { @@ -348,9 +348,33 @@ pTilePolygon->uNumVertices = 4; pTilePolygon->field_59 = 5; + if ( array_73D150[0].vWorldViewPosition.x < 8.0 + && array_73D150[1].vWorldViewPosition.x < 8.0 + && array_73D150[2].vWorldViewPosition.x < 8.0 + && array_73D150[3].vWorldViewPosition.x < 8.0 ) + continue; + if ( (double)pODMRenderParams->shading_dist_mist < array_73D150[0].vWorldViewPosition.x + && (double)pODMRenderParams->shading_dist_mist < array_73D150[1].vWorldViewPosition.x + && (double)pODMRenderParams->shading_dist_mist < array_73D150[2].vWorldViewPosition.x + && (double)pODMRenderParams->shading_dist_mist < array_73D150[3].vWorldViewPosition.x ) + continue; + //---------------------------------------------------------------------------- + + ++pODMRenderParams->uNumPolygons; + ++pODMRenderParams->field_44; + assert(pODMRenderParams->uNumPolygons < 20000); + + pTilePolygon->uBModelID = 0; + pTilePolygon->uBModelFaceID = 0; + pTilePolygon->field_50 = (8 * (0 | (0 << 6))) | 6; + for (unsigned int k = 0; k < pTilePolygon->uNumVertices; ++k) + { + memcpy(&array_50AC10[k], &array_73D150[k], sizeof(struct RenderVertexSoft)); + array_50AC10[k]._rhw = 1.0 / (array_73D150[k].vWorldViewPosition.x + 0.0000001000000011686097); + } //shading (затенение)---------------------------------------------------------------------------- //uint norm_idx = pTerrainNormalIndices[2 * (z * 128 + x) + 1]; - uint norm_idx = pTerrainNormalIndices[2 * (x * 128 + z) + 2]; + uint norm_idx = pTerrainNormalIndices[2 * (x * 128 + z) + 1]; assert(norm_idx < uNumTerrainNormals); Vec3_float_* norm = &pTerrainNormals[norm_idx]; @@ -364,26 +388,14 @@ norm = &pTerrainNormals[norm_idx]; if (for_refactoring) { - MessageBoxA(nullptr, "Ritor1: function StackLights_TerrainFace needed refactoring and result - slows", "", 0); - __debugbreak(); - } - //pGame->pLightmapBuilder->StackLights_TerrainFace(norm, &Light_tile_dist, array_50AC10, 4, 1);//Ritor1: slows + //MessageBoxA(nullptr, "Ritor1: function StackLights_TerrainFace needed refactoring and result - slows", "", 0); + //__debugbreak(); + + pGame->pLightmapBuilder->StackLights_TerrainFace(norm, &Light_tile_dist, array_50AC10, 4, 1);//Ritor1: slows //pDecalBuilder->_49BE8A(pTilePolygon, norm, &Light_tile_dist, array_50AC10, 4, 1); - //unsigned int a5 = 4; -//---------------------------------------------------------------------------- - - ++pODMRenderParams->uNumPolygons; - ++pODMRenderParams->field_44; - assert(pODMRenderParams->uNumPolygons < 20000); - - pTilePolygon->uBModelID = 0; - pTilePolygon->uBModelFaceID = 0; - pTilePolygon->field_50 = (8 * (0 | (0 << 6))) | 6; - for (unsigned int k = 0; k < pTilePolygon->uNumVertices; ++k) - { - memcpy(&array_50AC10[k], &array_73D150[k], sizeof(struct RenderVertexSoft)); - array_50AC10[k]._rhw = 1.0 / (array_73D150[k].vWorldViewPosition.x + 0.0000001000000011686097); - } + } + unsigned int a5 = 4; + //---------Draw distance(Дальность отрисовки)------------------------------- int temp = pODMRenderParams->shading_dist_mist; if ( draw_terrain_dist_mist ) @@ -397,21 +409,21 @@ || (double)pODMRenderParams->shading_dist_mist < array_73D150[2].vWorldViewPosition.x || (double)pODMRenderParams->shading_dist_mist < array_73D150[3].vWorldViewPosition.x; - /* int v33 = 0; - static stru154 static_sub_0048034E_stru_154; - pGame->pLightmapBuilder->std__vector_000004_size = 0; - if ( stru_F8AD28.uNumLightsApplied > 0 || pDecalBuilder->uNumDecals > 0 ) - { - if ( neer_clip ) - v33 = 3; - else - v33 = far_clip != 0 ? 5 : 0; - static_sub_0048034E_stru_154.ClassifyPolygon(norm, Light_tile_dist); - if ( pDecalBuilder->uNumDecals > 0 ) - pDecalBuilder->ApplyDecals(31 - pTilePolygon->dimming_level, 4, &static_sub_0048034E_stru_154, a5, array_50AC10, 0, *(float *)&v33, -1); - } - if ( stru_F8AD28.uNumLightsApplied > 0 ) - pGame->pLightmapBuilder->ApplyLights(&stru_F8AD28, &static_sub_0048034E_stru_154, a5, array_50AC10, 0, v33);*/ + int v33 = 0; + static stru154 static_sub_0048034E_stru_154; + pGame->pLightmapBuilder->std__vector_000004_size = 0; + if ( stru_F8AD28.uNumLightsApplied > 0 || pDecalBuilder->uNumDecals > 0 ) + { + if ( neer_clip ) + v33 = 3; + else + v33 = far_clip != 0 ? 5 : 0; + static_sub_0048034E_stru_154.ClassifyPolygon(norm, Light_tile_dist); + if ( pDecalBuilder->uNumDecals > 0 ) + pDecalBuilder->ApplyDecals(31 - pTilePolygon->dimming_level, 4, &static_sub_0048034E_stru_154, a5, array_50AC10, 0, *(float *)&v33, -1); + if ( stru_F8AD28.uNumLightsApplied > 0 ) + pGame->pLightmapBuilder->ApplyLights(&stru_F8AD28, &static_sub_0048034E_stru_154, a5, array_50AC10, 0, v33); + } if ( !byte_4D864C || ~pGame->uFlags & 0x80 ) { @@ -4664,8 +4676,8 @@ { d3d_vertex_buffer[i].specular = 0; } - __debugbreak(); // warning C4700: uninitialized local variable 'v20' used - d3d_vertex_buffer[i].specular = v20; + //__debugbreak(); // warning C4700: uninitialized local variable 'v20' used + //d3d_vertex_buffer[i].specular = v20; d3d_vertex_buffer[i].texcoord.x = array_50AC10[i].u; d3d_vertex_buffer[i].texcoord.y = array_50AC10[i].v; }