Skip to content

Commit f950660

Browse files
unify(dx8wrapper): Merge Set_Projection_Transform_With_Z_Bias implementation
1 parent b82e369 commit f950660

1 file changed

Lines changed: 20 additions & 0 deletions

File tree

Generals/Code/Libraries/Source/WWVegas/WW3D2/dx8wrapper.h

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -317,6 +317,8 @@ class DX8Wrapper
317317

318318
// Set_ and Get_Transform() functions take the matrix in Westwood convention format.
319319

320+
static void Set_Projection_Transform_With_Z_Bias(const Matrix4x4& matrix,float znear, float zfar); // pointer to 16 matrices
321+
320322
static void Set_Transform(D3DTRANSFORMSTATETYPE transform,const Matrix4x4& m);
321323
static void Set_Transform(D3DTRANSFORMSTATETYPE transform,const Matrix3D& m);
322324
static void Get_Transform(D3DTRANSFORMSTATETYPE transform, Matrix4x4& m);
@@ -1191,6 +1193,24 @@ WWINLINE void DX8Wrapper::Set_Shader(const ShaderClass& shader)
11911193
SNAPSHOT_SAY(("DX8Wrapper::Set_Shader(%s)",shader.Get_Description(str).str()));
11921194
}
11931195

1196+
WWINLINE void DX8Wrapper::Set_Projection_Transform_With_Z_Bias(const Matrix4x4& matrix, float znear, float zfar)
1197+
{
1198+
ZFar=zfar;
1199+
ZNear=znear;
1200+
ProjectionMatrix=To_D3DMATRIX(matrix);
1201+
1202+
if (!Get_Current_Caps()->Support_ZBias() && ZNear!=ZFar) {
1203+
D3DMATRIX tmp=ProjectionMatrix;
1204+
float tmp_zbias=ZBias;
1205+
tmp_zbias*=(1.0f/16.0f);
1206+
tmp_zbias*=1.0f / (ZFar - ZNear);
1207+
tmp.m[2][2]-=tmp_zbias*tmp.m[3][2];
1208+
DX8CALL(SetTransform(D3DTS_PROJECTION,&tmp));
1209+
}
1210+
else {
1211+
DX8CALL(SetTransform(D3DTS_PROJECTION,&ProjectionMatrix));
1212+
}
1213+
}
11941214

11951215
WWINLINE void DX8Wrapper::Set_Transform(D3DTRANSFORMSTATETYPE transform,const Matrix4x4& m)
11961216
{

0 commit comments

Comments
 (0)