comparison Render.cpp @ 2119:014c672b6d87

sky continue
author Ritor1
date Tue, 24 Dec 2013 17:32:33 +0600
parents 68fbaf45ef66
children 3eab5530cc94
comparison
equal deleted inserted replaced
2118:16e2ed54f269 2119:014c672b6d87
9085 int v15; // eax@8 9085 int v15; // eax@8
9086 int v16; // eax@12 9086 int v16; // eax@12
9087 signed __int64 v17; // qtt@13 9087 signed __int64 v17; // qtt@13
9088 signed int v18; // ecx@13 9088 signed int v18; // ecx@13
9089 struct Polygon pSkyPolygon; // [sp+14h] [bp-150h]@1 9089 struct Polygon pSkyPolygon; // [sp+14h] [bp-150h]@1
9090 double v26; // [sp+120h] [bp-44h]@4 9090 //double v26; // [sp+120h] [bp-44h]@4
9091 int v30; // [sp+134h] [bp-30h]@1 9091 int v30; // [sp+134h] [bp-30h]@1
9092 int v32; // [sp+13Ch] [bp-28h]@6 9092 int v32; // [sp+13Ch] [bp-28h]@6
9093 int v33; // [sp+140h] [bp-24h]@2 9093 int v33; // [sp+140h] [bp-24h]@2
9094 signed __int64 v34; // [sp+144h] [bp-20h]@1 9094 signed __int64 v34; // [sp+144h] [bp-20h]@1
9095 int v35; // [sp+148h] [bp-1Ch]@4 9095 int v35; // [sp+148h] [bp-1Ch]@4
9097 int v37; // [sp+154h] [bp-10h]@8 9097 int v37; // [sp+154h] [bp-10h]@8
9098 int v38; // [sp+158h] [bp-Ch]@1 9098 int v38; // [sp+158h] [bp-Ch]@1
9099 int v39; // [sp+15Ch] [bp-8h]@4 9099 int v39; // [sp+15Ch] [bp-8h]@4
9100 int v40; // [sp+160h] [bp-4h]@7 9100 int v40; // [sp+160h] [bp-4h]@7
9101 9101
9102 v30 = (signed __int64)((double)(pODMRenderParams->int_fov_rad * pGame->pIndoorCameraD3D->vPartyPos.z) 9102 v30 = (signed __int64)((double)(pODMRenderParams->int_fov_rad * pGame->pIndoorCameraD3D->vPartyPos.z)//244
9103 / ((double)pODMRenderParams->int_fov_rad + 8192.0) 9103 / ((double)pODMRenderParams->int_fov_rad + 8192.0)
9104 + (double)(pViewport->uScreenCenterY + 7));//include "+ 7" 9104 + (double)(pViewport->uScreenCenterY));
9105 v34 = cos((double)pGame->pIndoorCameraD3D->sRotationX * 0.0030664064) * 0x2000;//(double)pODMRenderParams->shading_dist_mist 9105 v34 = cos((double)pGame->pIndoorCameraD3D->sRotationX * 0.0030664064) * 0x2000;//(double)pODMRenderParams->shading_dist_mist, 8192
9106 v38 = (signed __int64)((double)(pViewport->uScreenCenterY + 7) 9106 v38 = (signed __int64)((double)(pViewport->uScreenCenterY)//247
9107 - (double)pODMRenderParams->int_fov_rad 9107 - (double)pODMRenderParams->int_fov_rad
9108 / (v34 + 0.0000001) 9108 / (v34 + 0.0000001)
9109 * (sin((double)pGame->pIndoorCameraD3D->sRotationX * 0.0030664064) 9109 * (sin((double)pGame->pIndoorCameraD3D->sRotationX * 0.0030664064)
9110 * (double)-0x2000//(double)pODMRenderParams->shading_dist_mist 9110 * (double)-0x2000//(double)pODMRenderParams->shading_dist_mist
9111 - (double)pGame->pIndoorCameraD3D->vPartyPos.z)); 9111 - (double)pGame->pIndoorCameraD3D->vPartyPos.z));
9115 pSkyPolygon.pTexture = (Texture *)(SLOWORD(pOutdoor->sSky_TextureID) != -1 ? (int)&pBitmaps_LOD->pTextures[SLOWORD(pOutdoor->sSky_TextureID)] : 0); 9115 pSkyPolygon.pTexture = (Texture *)(SLOWORD(pOutdoor->sSky_TextureID) != -1 ? (int)&pBitmaps_LOD->pTextures[SLOWORD(pOutdoor->sSky_TextureID)] : 0);
9116 if ( pSkyPolygon.pTexture ) 9116 if ( pSkyPolygon.pTexture )
9117 { 9117 {
9118 pSkyPolygon.dimming_level = 0; 9118 pSkyPolygon.dimming_level = 0;
9119 pSkyPolygon.uNumVertices = 4; 9119 pSkyPolygon.uNumVertices = 4;
9120 //centering(центруем)--наклон камеры ---------------------------------------- 9120 //centering(центруем)-----------------------------------------------------------------
9121 pSkyPolygon.v_18.x = -stru_5C6E00->Sin(pGame->pIndoorCameraD3D->sRotationX + 16); 9121 pSkyPolygon.v_18.x = -stru_5C6E00->Sin(pGame->pIndoorCameraD3D->sRotationX + 16);//-3216
9122 pSkyPolygon.v_18.y = 0; 9122 pSkyPolygon.v_18.y = 0;
9123 pSkyPolygon.v_18.z = -stru_5C6E00->Cos(pGame->pIndoorCameraD3D->sRotationX + 16); 9123 pSkyPolygon.v_18.z = -stru_5C6E00->Cos(pGame->pIndoorCameraD3D->sRotationX + 16);//-65457
9124 9124
9125 //sky wiew position(положение неба на экране)------------------------------------------ 9125 //sky wiew position(положение неба на экране)------------------------------------------
9126 // X 9126 // X
9127 // 0._____________________________.3 9127 // 0._____________________________.3
9128 // |8,8 468,8 | 9128 // |8,8 468,8 |
9131 // Y| | 9131 // Y| |
9132 // | | 9132 // | |
9133 // |8,351 468,351 | 9133 // |8,351 468,351 |
9134 // 1._____________________________.2 9134 // 1._____________________________.2
9135 // 9135 //
9136 array_50AC10[0].vWorldViewProjX = (double)(signed int)pViewport->uViewportTL_X; 9136 array_50AC10[0].vWorldViewProjX = (double)(signed int)pViewport->uViewportTL_X;//8
9137 array_50AC10[0].vWorldViewProjY = (double)(signed int)pViewport->uViewportTL_Y; 9137 array_50AC10[0].vWorldViewProjY = (double)(signed int)pViewport->uViewportTL_Y;//8
9138 9138
9139 array_50AC10[1].vWorldViewProjX = (double)(signed int)pViewport->uViewportTL_X; 9139 array_50AC10[1].vWorldViewProjX = (double)(signed int)pViewport->uViewportTL_X;//8
9140 array_50AC10[1].vWorldViewProjY = (double)v38; 9140 array_50AC10[1].vWorldViewProjY = (double)v38;//247
9141 9141
9142 array_50AC10[2].vWorldViewProjX = (double)(signed int)pViewport->uViewportBR_X; 9142 array_50AC10[2].vWorldViewProjX = (double)(signed int)pViewport->uViewportBR_X;//468
9143 array_50AC10[2].vWorldViewProjY = (double)v38; 9143 array_50AC10[2].vWorldViewProjY = (double)v38;//247
9144 9144
9145 array_50AC10[3].vWorldViewProjX = (double)(signed int)pViewport->uViewportBR_X; 9145 array_50AC10[3].vWorldViewProjX = (double)(signed int)pViewport->uViewportBR_X;//468
9146 array_50AC10[3].vWorldViewProjY = (double)(signed int)pViewport->uViewportTL_Y; 9146 array_50AC10[3].vWorldViewProjY = (double)(signed int)pViewport->uViewportTL_Y;//8
9147 9147
9148 pSkyPolygon.sTextureDeltaU = 224 * pMiscTimer->uTotalGameTimeElapsed; 9148 pSkyPolygon.sTextureDeltaU = 224 * pMiscTimer->uTotalGameTimeElapsed;//7168
9149 pSkyPolygon.sTextureDeltaV = 224 * pMiscTimer->uTotalGameTimeElapsed; 9149 pSkyPolygon.sTextureDeltaV = 224 * pMiscTimer->uTotalGameTimeElapsed;//7168
9150 9150
9151 pSkyPolygon.field_24 = 0x2000000u; 9151 pSkyPolygon.field_24 = 0x2000000u;//maybe attributes
9152 v33 = 65536 / (signed int)(signed __int64)(((double)(pViewport->uViewportBR_X - pViewport->uViewportTL_X) * 0.5) / tan(0.6457717418670654) + 0.5); 9152 v33 = 65536 / (signed int)(signed __int64)(((double)(pViewport->uViewportBR_X - pViewport->uViewportTL_X) / 2) / tan(0.6457717418670654) + 0.5);//214
9153 for ( uint i = 0; i < pSkyPolygon.uNumVertices; ++i ) 9153 for ( uint i = 0; i < pSkyPolygon.uNumVertices; ++i )
9154 { 9154 {
9155 v26 = array_50AC10[i].vWorldViewProjY + 6.7553994e15;
9156 //rotate skydome(вращение купола неба)-------------------------------------- 9155 //rotate skydome(вращение купола неба)--------------------------------------
9157 // В игре принята своя система измерения углов. Полный угол (180). Значению угла 0 соответствует 9156 // В игре принята своя система измерения углов. Полный угол (180). Значению угла 0 соответствует
9158 // направление на север и/или юг (либо на восток и/или запад), значению 65536 еденицам(0х10000) соответствует угол 90. 9157 // направление на север и/или юг (либо на восток и/или запад), значению 65536 еденицам(0х10000) соответствует угол 90.
9159 // две переменные хранят данные по углу обзора. field_14 по западу и востоку. field_20 по югу и северу 9158 // две переменные хранят данные по углу обзора. field_14 по западу и востоку. field_20 по югу и северу
9160 // от -25080 до 25080 9159 // от -25080 до 25080
9161 v39 = (unsigned __int64)(pSkyPolygon.ptr_38->viewing_angle_from_west_east * (signed __int64)(v33 * (v30 - array_50AC10[i].vWorldViewProjY))) >> 16; 9160 v39 = (unsigned __int64)(pSkyPolygon.ptr_38->viewing_angle_from_west_east * (signed __int64)(v33 * (v30 - floor(array_50AC10[i].vWorldViewProjY + 0.5)))) >> 16;//0
9162 v35 = v39 + pSkyPolygon.ptr_38->angle_from_north; 9161 v35 = v39 + pSkyPolygon.ptr_38->angle_from_north;//-45190
9163 9162
9164 v39 = (unsigned __int64)(pSkyPolygon.ptr_38->viewing_angle_from_north_south * (signed __int64)(v33 * (v30 - array_50AC10[i].vWorldViewProjY))) >> 16; 9163 v39 = (unsigned __int64)(pSkyPolygon.ptr_38->viewing_angle_from_north_south * (signed __int64)(v33 * (v30 - floor(array_50AC10[i].vWorldViewProjY + 0.f)))) >> 16;//0
9165 v36 = v39 + pSkyPolygon.ptr_38->angle_from_east; 9164 v36 = v39 + pSkyPolygon.ptr_38->angle_from_east;//47464
9166 9165
9167 v38 = pSkyPolygon.v_18.z; 9166 v38 = pSkyPolygon.v_18.z;//-65457
9168 v9 = (unsigned __int64)(pSkyPolygon.v_18.z * (signed __int64)(v33 * (v30 - array_50AC10[i].vWorldViewProjY))) >> 16; 9167 v9 = (unsigned __int64)(pSkyPolygon.v_18.z * (signed __int64)(v33 * (v30 - floor(array_50AC10[i].vWorldViewProjY + 0.5)))) >> 16;//-50444
9169 v10 = pSkyPolygon.v_18.x + v9; 9168 v10 = pSkyPolygon.v_18.x + v9;//-53660
9170 v39 = pSkyPolygon.v_18.x + v9; 9169 v39 = pSkyPolygon.v_18.x + v9;//-53660
9171 if ( pSkyPolygon.v_18.x + v9 > 0 ) 9170 if ( v10 > 0 )
9172 { 9171 {
9173 v10 = 0; 9172 v10 = 0;
9174 v39 = 0; 9173 v39 = 0;
9175 } 9174 }
9176 v38 = v10; 9175 v38 = v10;//-53660
9177 v13 = v33 * (pViewport->uScreenCenterX - (signed __int64)array_50AC10[i].vWorldViewProjX); 9176 v13 = v33 * (pViewport->uScreenCenterX - (signed __int64)array_50AC10[i].vWorldViewProjX);//49220
9178 v34 = -pSkyPolygon.field_24; 9177 v34 = -pSkyPolygon.field_24;//-33554432
9179 v32 = (signed __int64)array_50AC10[i].vWorldViewProjX; 9178 v32 = (signed __int64)array_50AC10[i].vWorldViewProjX - 1.0;//7
9180 v14 = v33 * (v30 - (signed __int64)array_50AC10[i].vWorldViewProjX); 9179 v14 = v33 * (v30 - v32);//50718
9181 while ( 1 ) 9180 while ( 1 )
9182 { 9181 {
9183 v40 = v14; 9182 v40 = v14;//50718
9184 if ( !v10 ) 9183 if ( !v10 )
9185 goto LABEL_12; 9184 goto LABEL_12;
9186 v37 = abs((int)v34 >> 14); 9185 v37 = abs((int)v34 >> 14);//2048
9187 v15 = abs(v10); 9186 v15 = abs(v10);//53660
9188 if ( v37 <= v15 || v32 <= (signed int)pViewport->uViewportTL_Y ) 9187 if ( v37 <= v15 || v32 <= (signed int)pViewport->uViewportTL_Y )
9189 { 9188 {
9190 if ( v39 <= 0 ) 9189 if ( v39 <= 0 )
9191 break; 9190 break;
9192 } 9191 }
9199 v10 = pSkyPolygon.v_18.x + v16; 9198 v10 = pSkyPolygon.v_18.x + v16;
9200 v39 = pSkyPolygon.v_18.x + v16; 9199 v39 = pSkyPolygon.v_18.x + v16;
9201 v38 = pSkyPolygon.v_18.x + v16; 9200 v38 = pSkyPolygon.v_18.x + v16;
9202 } 9201 }
9203 LODWORD(v17) = LODWORD(v34) << 16; 9202 LODWORD(v17) = LODWORD(v34) << 16;
9204 HIDWORD(v17) = v34 >> 16; 9203 HIDWORD(v17) = v34 >> 16;//-2199023255552
9205 //v40 = v17 / v38; 9204 //v40 = v17 / v38;
9206 v18 = v17 / v38; 9205 v18 = v17 / v38;//39869157
9207 if ( v18 < 0 ) 9206 if ( v18 < 0 )
9208 v18 = pODMRenderParams->shading_dist_mist; 9207 v18 = pODMRenderParams->shading_dist_mist;
9209 v37 = v35 + ((unsigned __int64)(pSkyPolygon.ptr_38->angle_from_west * (signed __int64)v13) >> 16); 9208 v37 = v35 + ((unsigned __int64)(pSkyPolygon.ptr_38->angle_from_west * (signed __int64)v13) >> 16);//-80838
9210 v35 = 224 * pMiscTimer->uTotalGameTimeElapsed 9209 v35 = 224 * pMiscTimer->uTotalGameTimeElapsed//-4328844
9211 + ((signed int)((unsigned __int64)(v37 * (signed __int64)v18) >> 16) >> 3); 9210 + ((signed int)((unsigned __int64)(v37 * (signed __int64)v18) >> 16) >> 3);
9212 array_50AC10[i].u = (double)v35 / ((double)pSkyPolygon.pTexture->uTextureWidth * 65536.0); 9211 array_50AC10[i].u = (double)v35 / ((double)pSkyPolygon.pTexture->uTextureWidth * 65536.0);//-0.12900960
9213 9212
9214 v36 = v36 + ((unsigned __int64)(pSkyPolygon.ptr_38->angle_from_south * (signed __int64)v13) >> 16); 9213 v36 = v36 + ((unsigned __int64)(pSkyPolygon.ptr_38->angle_from_south * (signed __int64)v13) >> 16);//13524
9215 v35 = 224 * pMiscTimer->uTotalGameTimeElapsed 9214 v35 = 224 * pMiscTimer->uTotalGameTimeElapsed//2846856
9216 + ((signed int)((unsigned __int64)(v36 * (signed __int64)v18) >> 16) >> 3); 9215 + ((signed int)((unsigned __int64)(v36 * (signed __int64)v18) >> 16) >> 3);
9217 array_50AC10[i].v = (double)v35 / ((double)pSkyPolygon.pTexture->uTextureHeight * 65536.0); 9216 array_50AC10[i].v = (double)v35 / ((double)pSkyPolygon.pTexture->uTextureHeight * 65536.0);//0.084842920
9218 9217
9219 array_50AC10[i].vWorldViewPosition.x = (double)0x2000;//pODMRenderParams->shading_dist_mist 9218 array_50AC10[i].vWorldViewPosition.x = (double)0x2000;//pODMRenderParams->shading_dist_mist 8192
9220 array_50AC10[i]._rhw = 1.0 / (double)(v18 >> 16); 9219 array_50AC10[i]._rhw = 1.0 / (double)(v18 >> 16);//0.0016447369
9221 } 9220 }
9222 pRenderer->DrawOutdoorSkyPolygon(pSkyPolygon.uNumVertices, &pSkyPolygon, pBitmaps_LOD->pHardwareTextures[(signed __int16)pSkyPolygon.uTileBitmapID]); 9221 pRenderer->DrawOutdoorSkyPolygon(pSkyPolygon.uNumVertices, &pSkyPolygon, pBitmaps_LOD->pHardwareTextures[(signed __int16)pSkyPolygon.uTileBitmapID]);
9223 array_50AC10[0].vWorldViewProjY = (double)v38; 9222 array_50AC10[0].vWorldViewProjY = (double)v38;
9224 array_50AC10[1].vWorldViewProjY = array_50AC10[1].vWorldViewProjY + 30.0; 9223 array_50AC10[1].vWorldViewProjY = array_50AC10[1].vWorldViewProjY + 30.0;
9225 array_50AC10[2].vWorldViewProjY = array_50AC10[2].vWorldViewProjY + 30.0; 9224 array_50AC10[2].vWorldViewProjY = array_50AC10[2].vWorldViewProjY + 30.0;