comparison Render.cpp @ 2002:2e6c63bdcfa9

RenderBillboardD3D initialization Viewport initialization some more constructor functions
author zipi
date Tue, 05 Nov 2013 23:35:21 +0000
parents 079f2abf54e4
children 30c2b575d25c
comparison
equal deleted inserted replaced
2001:79cdb74efa93 2002:2e6c63bdcfa9
126 pSurface1->Release(); 126 pSurface1->Release();
127 pSurface2->Release(); 127 pSurface2->Release();
128 return v0; 128 return v0;
129 } 129 }
130 130
131 void Render::sub_4A19B0()
132 {
133 char *result; // eax@1
134 signed int v1; // ecx@1
135 /*
136 result = (char *)&this->pBillboardRenderListD3D[0].uOpacity;
137 v1 = 1000;
138 do
139 {
140 *(_DWORD *)result = 0;
141 *((_DWORD *)result + 1) = -1;
142 *((_DWORD *)result + 3) = -1;
143 *((_DWORD *)result - 34) = 4;
144 result += 156;
145 --v1;
146 }
147 while ( v1 );
148 */
149 for( int i = 0; i < 1000; i++ )
150 {
151 this->pBillboardRenderListD3D[i].uOpacity = (RenderBillboardD3D::OpacityType)0;
152 this->pBillboardRenderListD3D[i].field_90 = -1;
153 this->pBillboardRenderListD3D[i].sParentBillboardID = -1;
154 this->pBillboardRenderListD3D[i].uNumVertices = 4;
155 }
156
157 return;
158 }
159
131 //----- (00440CB8) -------------------------------------------------------- 160 //----- (00440CB8) --------------------------------------------------------
132 void Render::DrawBillboardList_BLV() 161 void Render::DrawBillboardList_BLV()
133 { 162 {
134 __int16 v2; // ax@3 163 __int16 v2; // ax@3
135 int v5; // eax@11 164 int v5; // eax@11
136 RenderBillboardTransform_local0 soft_billboard; // [sp+4h] [bp-50h]@1 165 RenderBillboardTransform_local0 soft_billboard; // [sp+4h] [bp-50h]@1
137 166
138 soft_billboard.uParentBillboardID = -1; 167 soft_billboard.sParentBillboardID = -1;
139 soft_billboard.pTarget = pBLVRenderParams->pRenderTarget; 168 soft_billboard.pTarget = pBLVRenderParams->pRenderTarget;
140 soft_billboard.pTargetZ = pBLVRenderParams->pTargetZBuffer; 169 soft_billboard.pTargetZ = pBLVRenderParams->pTargetZBuffer;
141 soft_billboard.uTargetPitch = pRenderer->uTargetSurfacePitch; 170 soft_billboard.uTargetPitch = pRenderer->uTargetSurfacePitch;
142 soft_billboard.uViewportX = pBLVRenderParams->uViewportX; 171 soft_billboard.uViewportX = pBLVRenderParams->uViewportX;
143 soft_billboard.uViewportY = pBLVRenderParams->uViewportY; 172 soft_billboard.uViewportY = pBLVRenderParams->uViewportY;
148 for (uint i = 0; i < ::uNumBillboardsToDraw; ++i) 177 for (uint i = 0; i < ::uNumBillboardsToDraw; ++i)
149 { 178 {
150 RenderBillboard* p = &pBillboardRenderList[i]; 179 RenderBillboard* p = &pBillboardRenderList[i];
151 180
152 soft_billboard.uScreenSpaceX = p->uScreenSpaceX; 181 soft_billboard.uScreenSpaceX = p->uScreenSpaceX;
153 soft_billboard.uParentBillboardID = i; 182 soft_billboard.sParentBillboardID = i;
154 soft_billboard.uScreenSpaceY = p->uScreenSpaceY; 183 soft_billboard.uScreenSpaceY = p->uScreenSpaceY;
155 soft_billboard._screenspace_x_scaler_packedfloat = p->_screenspace_x_scaler_packedfloat; 184 soft_billboard._screenspace_x_scaler_packedfloat = p->_screenspace_x_scaler_packedfloat;
156 soft_billboard._screenspace_y_scaler_packedfloat = p->_screenspace_y_scaler_packedfloat; 185 soft_billboard._screenspace_y_scaler_packedfloat = p->_screenspace_y_scaler_packedfloat;
157 soft_billboard.sZValue = p->sZValue; 186 soft_billboard.sZValue = p->sZValue;
158 soft_billboard.uFlags = p->field_1E; 187 soft_billboard.uFlags = p->field_1E;
376 int v15; // [sp+54h] [bp-10h]@13 405 int v15; // [sp+54h] [bp-10h]@13
377 //int v16; // [sp+58h] [bp-Ch]@1 406 //int v16; // [sp+58h] [bp-Ch]@1
378 //int v17; // [sp+5Ch] [bp-8h]@2 407 //int v17; // [sp+5Ch] [bp-8h]@2
379 int v18; // [sp+60h] [bp-4h]@13 408 int v18; // [sp+60h] [bp-4h]@13
380 409
381 billboard.uParentBillboardID = -1; 410 billboard.sParentBillboardID = -1;
382 billboard.pTarget = pRenderer->pTargetSurface; 411 billboard.pTarget = pRenderer->pTargetSurface;
383 billboard.pTargetZ = pRenderer->pActiveZBuffer; 412 billboard.pTargetZ = pRenderer->pActiveZBuffer;
384 billboard.uTargetPitch = pRenderer->uTargetSurfacePitch; 413 billboard.uTargetPitch = pRenderer->uTargetSurfacePitch;
385 billboard.uViewportX = pViewport->uViewportTL_X; 414 billboard.uViewportX = pViewport->uViewportTL_X;
386 billboard.uViewportY = pViewport->uViewportTL_Y; 415 billboard.uViewportY = pViewport->uViewportTL_Y;
392 { 421 {
393 RenderBillboard* pBillboard = &pBillboardRenderList[i]; 422 RenderBillboard* pBillboard = &pBillboardRenderList[i];
394 423
395 billboard.uScreenSpaceX = pBillboard->uScreenSpaceX; 424 billboard.uScreenSpaceX = pBillboard->uScreenSpaceX;
396 billboard.uScreenSpaceY = pBillboard->uScreenSpaceY; 425 billboard.uScreenSpaceY = pBillboard->uScreenSpaceY;
397 billboard.uParentBillboardID = i; 426 billboard.sParentBillboardID = i;
398 billboard._screenspace_x_scaler_packedfloat = pBillboard->_screenspace_x_scaler_packedfloat; 427 billboard._screenspace_x_scaler_packedfloat = pBillboard->_screenspace_x_scaler_packedfloat;
399 billboard.uTintColor = pBillboard->uTintColor; 428 billboard.uTintColor = pBillboard->uTintColor;
400 billboard._screenspace_y_scaler_packedfloat = pBillboard->_screenspace_y_scaler_packedfloat; 429 billboard._screenspace_y_scaler_packedfloat = pBillboard->_screenspace_y_scaler_packedfloat;
401 billboard.sZValue = pBillboard->sZValue; 430 billboard.sZValue = pBillboard->sZValue;
402 billboard.uFlags = pBillboard->field_1E; 431 billboard.uFlags = pBillboard->field_1E;
2093 uNumBillboardsToDraw = 0; 2122 uNumBillboardsToDraw = 0;
2094 bFogEnabled = false; 2123 bFogEnabled = false;
2095 2124
2096 hd_water_tile_id = -1; 2125 hd_water_tile_id = -1;
2097 hd_water_current_frame = 0; 2126 hd_water_current_frame = 0;
2127 sub_4A19B0();
2098 } 2128 }
2099 2129
2100 bool Render::Initialize(bool bWindowed, OSWindow *window, bool bColoredLights, uint32_t uDetailLevel, bool bTinting) 2130 bool Render::Initialize(bool bWindowed, OSWindow *window, bool bColoredLights, uint32_t uDetailLevel, bool bTinting)
2101 { 2131 {
2102 //bUserDirect3D = true;//ReadWindowsRegistryInt("Use D3D", 0); 2132 //bUserDirect3D = true;//ReadWindowsRegistryInt("Use D3D", 0);
4506 } 4536 }
4507 4537
4508 //----- (004A1EA3) -------------------------------------------------------- 4538 //----- (004A1EA3) --------------------------------------------------------
4509 unsigned int Render::GetParentBillboardID(unsigned int uBillboardID) 4539 unsigned int Render::GetParentBillboardID(unsigned int uBillboardID)
4510 { 4540 {
4511 return pRenderer->pBillboardRenderListD3D[uBillboardID].uParentBillboardID; 4541 return pRenderer->pBillboardRenderListD3D[uBillboardID].sParentBillboardID;
4512 } 4542 }
4513 4543
4514 //----- (004A1EB6) -------------------------------------------------------- 4544 //----- (004A1EB6) --------------------------------------------------------
4515 void Render::BeginSceneD3D() 4545 void Render::BeginSceneD3D()
4516 { 4546 {
5595 else 5625 else
5596 pBillboardRenderListD3D[v7].uOpacity = RenderBillboardD3D::Transparent; 5626 pBillboardRenderListD3D[v7].uOpacity = RenderBillboardD3D::Transparent;
5597 //v10 = a3; 5627 //v10 = a3;
5598 pBillboardRenderListD3D[v7].field_90 = pSoftBillboard->field_44; 5628 pBillboardRenderListD3D[v7].field_90 = pSoftBillboard->field_44;
5599 pBillboardRenderListD3D[v7].sZValue = pSoftBillboard->sZValue; 5629 pBillboardRenderListD3D[v7].sZValue = pSoftBillboard->sZValue;
5600 pBillboardRenderListD3D[v7].uParentBillboardID = pSoftBillboard->uParentBillboardID; 5630 pBillboardRenderListD3D[v7].sParentBillboardID = pSoftBillboard->sParentBillboardID;
5601 //v25 = pSoftBillboard->uScreenSpaceX; 5631 //v25 = pSoftBillboard->uScreenSpaceX;
5602 //v24 = pSoftBillboard->uScreenSpaceY; 5632 //v24 = pSoftBillboard->uScreenSpaceY;
5603 a1 = (pSoftBillboard->_screenspace_x_scaler_packedfloat & 0xFFFF) * 0.000015260186 + HIWORD(pSoftBillboard->_screenspace_x_scaler_packedfloat); 5633 a1 = (pSoftBillboard->_screenspace_x_scaler_packedfloat & 0xFFFF) * 0.000015260186 + HIWORD(pSoftBillboard->_screenspace_x_scaler_packedfloat);
5604 v29 = (pSoftBillboard->_screenspace_y_scaler_packedfloat & 0xFFFF) * 0.000015260186 + HIWORD(pSoftBillboard->_screenspace_y_scaler_packedfloat); 5634 v29 = (pSoftBillboard->_screenspace_y_scaler_packedfloat & 0xFFFF) * 0.000015260186 + HIWORD(pSoftBillboard->_screenspace_y_scaler_packedfloat);
5605 v31 = (double)((pSprite->uBufferWidth >> 1) - pSprite->uAreaX); 5635 v31 = (double)((pSprite->uBufferWidth >> 1) - pSprite->uAreaX);
5728 //v7 = v5; 5758 //v7 = v5;
5729 v8 = Billboard_ProbablyAddToListAndSortByZOrder(a2->zbuffer_depth); 5759 v8 = Billboard_ProbablyAddToListAndSortByZOrder(a2->zbuffer_depth);
5730 pBillboardRenderListD3D[v8].uOpacity = RenderBillboardD3D::Opaque_1; 5760 pBillboardRenderListD3D[v8].uOpacity = RenderBillboardD3D::Opaque_1;
5731 pBillboardRenderListD3D[v8].field_90 = a2->field_44; 5761 pBillboardRenderListD3D[v8].field_90 = a2->field_44;
5732 pBillboardRenderListD3D[v8].sZValue = a2->sZValue; 5762 pBillboardRenderListD3D[v8].sZValue = a2->sZValue;
5733 pBillboardRenderListD3D[v8].uParentBillboardID = a2->uParentBillboardID; 5763 pBillboardRenderListD3D[v8].sParentBillboardID = a2->sParentBillboardID;
5734 //v9 = a2->uScreenSpaceX; 5764 //v9 = a2->uScreenSpaceX;
5735 //v10 = a2->uScreenSpaceY; 5765 //v10 = a2->uScreenSpaceY;
5736 v11 = (a2->_screenspace_x_scaler_packedfloat & 0xFFFF) * 0.000015260186 + HIWORD(a2->_screenspace_x_scaler_packedfloat); 5766 v11 = (a2->_screenspace_x_scaler_packedfloat & 0xFFFF) * 0.000015260186 + HIWORD(a2->_screenspace_x_scaler_packedfloat);
5737 //v12 = (double) a2->uScreenSpaceX; 5767 //v12 = (double) a2->uScreenSpaceX;
5738 //v13 = v12; 5768 //v13 = v12;
5901 v7 = v5; 5931 v7 = v5;
5902 v8 = Billboard_ProbablyAddToListAndSortByZOrder(LODWORD(v7)); 5932 v8 = Billboard_ProbablyAddToListAndSortByZOrder(LODWORD(v7));
5903 pBillboardRenderListD3D[v8].uOpacity = RenderBillboardD3D::Opaque_1; 5933 pBillboardRenderListD3D[v8].uOpacity = RenderBillboardD3D::Opaque_1;
5904 pBillboardRenderListD3D[v8].field_90 = a2->field_44; 5934 pBillboardRenderListD3D[v8].field_90 = a2->field_44;
5905 pBillboardRenderListD3D[v8].sZValue = a2->sZValue; 5935 pBillboardRenderListD3D[v8].sZValue = a2->sZValue;
5906 pBillboardRenderListD3D[v8].uParentBillboardID = a2->uParentBillboardID; 5936 pBillboardRenderListD3D[v8].sParentBillboardID = a2->sParentBillboardID;
5907 v9 = a2->uScreenSpaceX; 5937 v9 = a2->uScreenSpaceX;
5908 v10 = a2->uScreenSpaceY; 5938 v10 = a2->uScreenSpaceY;
5909 v11 = (a2->_screenspace_x_scaler_packedfloat & 0xFFFF) * 0.000015260186 + HIWORD(a2->_screenspace_x_scaler_packedfloat); 5939 v11 = (a2->_screenspace_x_scaler_packedfloat & 0xFFFF) * 0.000015260186 + HIWORD(a2->_screenspace_x_scaler_packedfloat);
5910 v12 = (double)v9; 5940 v12 = (double)v9;
5911 v13 = v12; 5941 v13 = v12;
6115 pBillboardRenderListD3D[v8].uNumVertices = 4; 6145 pBillboardRenderListD3D[v8].uNumVertices = 4;
6116 pBillboardRenderListD3D[v8].pTexture = pSprite->pTexture; 6146 pBillboardRenderListD3D[v8].pTexture = pSprite->pTexture;
6117 pBillboardRenderListD3D[v8].z_order = a2->zbuffer_depth; 6147 pBillboardRenderListD3D[v8].z_order = a2->zbuffer_depth;
6118 pBillboardRenderListD3D[v8].field_90 = a2->field_44; 6148 pBillboardRenderListD3D[v8].field_90 = a2->field_44;
6119 pBillboardRenderListD3D[v8].sZValue = a2->sZValue; 6149 pBillboardRenderListD3D[v8].sZValue = a2->sZValue;
6120 pBillboardRenderListD3D[v8].uParentBillboardID = a2->uParentBillboardID; 6150 pBillboardRenderListD3D[v8].sParentBillboardID = a2->sParentBillboardID;
6121 6151
6122 if (a2->uTintColor & 0xFF000000) 6152 if (a2->uTintColor & 0xFF000000)
6123 pBillboardRenderListD3D[v8].uOpacity = RenderBillboardD3D::Opaque_3; 6153 pBillboardRenderListD3D[v8].uOpacity = RenderBillboardD3D::Opaque_3;
6124 else 6154 else
6125 pBillboardRenderListD3D[v8].uOpacity = RenderBillboardD3D::Transparent; 6155 pBillboardRenderListD3D[v8].uOpacity = RenderBillboardD3D::Transparent;
6304 depth = a1->field_104[i * 4].z; 6334 depth = a1->field_104[i * 4].z;
6305 } 6335 }
6306 6336
6307 v5 = Billboard_ProbablyAddToListAndSortByZOrder(depth); 6337 v5 = Billboard_ProbablyAddToListAndSortByZOrder(depth);
6308 pBillboardRenderListD3D[v5].field_90 = 0; 6338 pBillboardRenderListD3D[v5].field_90 = 0;
6309 pBillboardRenderListD3D[v5].uParentBillboardID = -1; 6339 pBillboardRenderListD3D[v5].sParentBillboardID = -1;
6310 pBillboardRenderListD3D[v5].uOpacity = RenderBillboardD3D::Opaque_2; 6340 pBillboardRenderListD3D[v5].uOpacity = RenderBillboardD3D::Opaque_2;
6311 pBillboardRenderListD3D[v5].pTexture = 0; 6341 pBillboardRenderListD3D[v5].pTexture = 0;
6312 pBillboardRenderListD3D[v5].uNumVertices = a1->uNumVertices; 6342 pBillboardRenderListD3D[v5].uNumVertices = a1->uNumVertices;
6313 pBillboardRenderListD3D[v5].z_order = depth; 6343 pBillboardRenderListD3D[v5].z_order = depth;
6314 6344