Skip to content

Render stages for 3D primitives #3402

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
May 25, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions Client/core/CCore.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2014,6 +2014,10 @@ void CCore::OnPreHUDRender()

CGraphics::GetSingleton().EnteringMTARenderZone();

// Draw post-fx 3D primitives
CGraphics::GetSingleton().DrawPrimitive3DPostFXQueue();
CGraphics::GetSingleton().DrawLine3DPostFXQueue();

// Maybe capture screen and other stuff
CGraphics::GetSingleton().GetRenderItemManager()->DoPulse();

Expand Down
62 changes: 48 additions & 14 deletions Client/core/Graphics/CGraphics.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -55,12 +55,16 @@ CGraphics::CGraphics(CLocalGUI* pGUI)
m_pRenderItemManager = new CRenderItemManager();
m_pTileBatcher = new CTileBatcher();
m_pLine3DBatcherPreGUI = new CLine3DBatcher(true);
m_pLine3DBatcherPostFX = new CLine3DBatcher(true);
m_pLine3DBatcherPostGUI = new CLine3DBatcher(false);
m_pMaterialLine3DBatcherPreGUI = new CMaterialLine3DBatcher(true);
m_pMaterialLine3DBatcherPostFX = new CMaterialLine3DBatcher(true);
m_pMaterialLine3DBatcherPostGUI = new CMaterialLine3DBatcher(false);
m_pPrimitive3DBatcherPreGUI = new CPrimitive3DBatcher(true);
m_pPrimitive3DBatcherPostFX = new CPrimitive3DBatcher(true);
m_pPrimitive3DBatcherPostGUI = new CPrimitive3DBatcher(false);
m_pMaterialPrimitive3DBatcherPreGUI = new CMaterialPrimitive3DBatcher(true, this);
m_pMaterialPrimitive3DBatcherPostFX = new CMaterialPrimitive3DBatcher(true, this);
m_pMaterialPrimitive3DBatcherPostGUI = new CMaterialPrimitive3DBatcher(false, this);
m_pPrimitiveBatcher = new CPrimitiveBatcher();
m_pPrimitiveMaterialBatcher = new CPrimitiveMaterialBatcher(this);
Expand All @@ -83,14 +87,18 @@ CGraphics::~CGraphics()
SAFE_DELETE(m_pRenderItemManager);
SAFE_DELETE(m_pTileBatcher);
SAFE_DELETE(m_pLine3DBatcherPreGUI);
SAFE_DELETE(m_pLine3DBatcherPostFX);
SAFE_DELETE(m_pLine3DBatcherPostGUI);
SAFE_DELETE(m_pMaterialLine3DBatcherPreGUI);
SAFE_DELETE(m_pMaterialLine3DBatcherPostFX);
SAFE_DELETE(m_pMaterialLine3DBatcherPostGUI);
SAFE_DELETE(m_pPrimitiveBatcher);
SAFE_DELETE(m_pPrimitiveMaterialBatcher);
SAFE_DELETE(m_pPrimitive3DBatcherPreGUI);
SAFE_DELETE(m_pPrimitive3DBatcherPostFX);
SAFE_DELETE(m_pPrimitive3DBatcherPostGUI);
SAFE_DELETE(m_pMaterialPrimitive3DBatcherPreGUI);
SAFE_DELETE(m_pMaterialPrimitive3DBatcherPostFX);
SAFE_DELETE(m_pMaterialPrimitive3DBatcherPostGUI);
SAFE_DELETE(m_pScreenGrabber);
SAFE_DELETE(m_pPixelsManager);
Expand Down Expand Up @@ -207,7 +215,7 @@ void CGraphics::DrawStringOutline(const RECT& rect, unsigned long ulColor, const

void CGraphics::DrawLine3D(const CVector& vecBegin, const CVector& vecEnd, unsigned long ulColor, float fWidth)
{
DrawLine3DQueued(vecBegin, vecEnd, fWidth, ulColor, true);
DrawLine3DQueued(vecBegin, vecEnd, fWidth, ulColor, eRenderStage::POST_GUI);
}

void CGraphics::DrawRectangleInternal(float fX, float fY, float fWidth, float fHeight, unsigned long ulColor, bool bSubPixelPositioning)
Expand Down Expand Up @@ -831,21 +839,23 @@ void CGraphics::DrawLineQueued(float fX1, float fY1, float fX2, float fY2, float
AddQueueItem(Item, bPostGUI);
}

void CGraphics::DrawLine3DQueued(const CVector& vecBegin, const CVector& vecEnd, float fWidth, unsigned long ulColor, bool bPostGUI)
void CGraphics::DrawLine3DQueued(const CVector& vecBegin, const CVector& vecEnd, float fWidth, unsigned long ulColor, eRenderStage stage)
{
if (g_pCore->IsWindowMinimized())
return;

// Add it to the queue
if (bPostGUI && !CCore::GetSingleton().IsMenuVisible())
if (stage == eRenderStage::POST_GUI && !CCore::GetSingleton().IsMenuVisible())
m_pLine3DBatcherPostGUI->AddLine3D(vecBegin, vecEnd, fWidth, ulColor);
else
else if (stage == eRenderStage::PRE_FX)
m_pLine3DBatcherPreGUI->AddLine3D(vecBegin, vecEnd, fWidth, ulColor);
else
m_pLine3DBatcherPostFX->AddLine3D(vecBegin, vecEnd, fWidth, ulColor);
}

void CGraphics::DrawMaterialLine3DQueued(const CVector& vecBegin, const CVector& vecEnd, float fWidth, unsigned long ulColor, CMaterialItem* pMaterial,
float fU, float fV, float fSizeU, float fSizeV, bool bRelativeUV, bool bFlipUV, bool bUseFaceToward,
const CVector& vecFaceToward, bool bPostGUI)
const CVector& vecFaceToward, eRenderStage stage)
{
if (g_pCore->IsWindowMinimized())
return;
Expand All @@ -857,12 +867,15 @@ void CGraphics::DrawMaterialLine3DQueued(const CVector& vecBegin, const CVector&
}

// Add it to the queue
if (bPostGUI && !CCore::GetSingleton().IsMenuVisible())
if (stage == eRenderStage::POST_GUI && !CCore::GetSingleton().IsMenuVisible())
m_pMaterialLine3DBatcherPostGUI->AddLine3D(vecBegin, vecEnd, fWidth, ulColor, pMaterial, fU, fV, fSizeU, fSizeV, bRelativeUV, bFlipUV, bUseFaceToward,
vecFaceToward);
else
else if (stage == eRenderStage::PRE_FX)
m_pMaterialLine3DBatcherPreGUI->AddLine3D(vecBegin, vecEnd, fWidth, ulColor, pMaterial, fU, fV, fSizeU, fSizeV, bRelativeUV, bFlipUV, bUseFaceToward,
vecFaceToward);
else
m_pMaterialLine3DBatcherPostFX->AddLine3D(vecBegin, vecEnd, fWidth, ulColor, pMaterial, fU, fV, fSizeU, fSizeV, bRelativeUV, bFlipUV, bUseFaceToward,
vecFaceToward);
}

void CGraphics::DrawRectQueued(float fX, float fY, float fWidth, float fHeight, unsigned long ulColor, bool bPostGUI, bool bSubPixelPositioning)
Expand Down Expand Up @@ -939,7 +952,7 @@ void CGraphics::DrawPrimitiveQueued(std::vector<PrimitiveVertice>* pVecVertices,
AddQueueItem(Item, bPostGUI);
}

void CGraphics::DrawPrimitive3DQueued(std::vector<PrimitiveVertice>* pVecVertices, D3DPRIMITIVETYPE eType, bool bPostGUI)
void CGraphics::DrawPrimitive3DQueued(std::vector<PrimitiveVertice>* pVecVertices, D3DPRIMITIVETYPE eType, eRenderStage stage)
{
// Prevent queuing when minimized
if (g_pCore->IsWindowMinimized())
Expand All @@ -949,14 +962,16 @@ void CGraphics::DrawPrimitive3DQueued(std::vector<PrimitiveVertice>* pVecVertice
}

// Add it to the queue
if (bPostGUI && !CCore::GetSingleton().IsMenuVisible())
if (stage == eRenderStage::POST_GUI && !CCore::GetSingleton().IsMenuVisible())
m_pPrimitive3DBatcherPostGUI->AddPrimitive(eType, pVecVertices);
else
else if (stage == eRenderStage::PRE_FX)
m_pPrimitive3DBatcherPreGUI->AddPrimitive(eType, pVecVertices);
else
m_pPrimitive3DBatcherPostFX->AddPrimitive(eType, pVecVertices);
}

void CGraphics::DrawMaterialPrimitive3DQueued(std::vector<PrimitiveMaterialVertice>* pVecVertices, D3DPRIMITIVETYPE eType, CMaterialItem* pMaterial,
bool bPostGUI)
eRenderStage stage)
{
// Prevent queuing when minimized
if (g_pCore->IsWindowMinimized())
Expand All @@ -972,10 +987,13 @@ void CGraphics::DrawMaterialPrimitive3DQueued(std::vector<PrimitiveMaterialVerti
}

// Add it to the queue
if (bPostGUI && !CCore::GetSingleton().IsMenuVisible())
if (stage == eRenderStage::POST_GUI && !CCore::GetSingleton().IsMenuVisible())
m_pMaterialPrimitive3DBatcherPostGUI->AddPrimitive(eType, pMaterial, pVecVertices);
else
else if (stage == eRenderStage::PRE_FX)
m_pMaterialPrimitive3DBatcherPreGUI->AddPrimitive(eType, pMaterial, pVecVertices);
else
m_pMaterialPrimitive3DBatcherPostFX->AddPrimitive(eType, pMaterial, pVecVertices);

}

void CGraphics::DrawMaterialPrimitiveQueued(std::vector<PrimitiveMaterialVertice>* pVecVertices, D3DPRIMITIVETYPE eType, CMaterialItem* pMaterial,
Expand Down Expand Up @@ -1515,14 +1533,18 @@ void CGraphics::OnDeviceCreate(IDirect3DDevice9* pDevice)

m_pTileBatcher->OnDeviceCreate(pDevice, GetViewportWidth(), GetViewportHeight());
m_pLine3DBatcherPreGUI->OnDeviceCreate(pDevice, GetViewportWidth(), GetViewportHeight());
m_pLine3DBatcherPostFX->OnDeviceCreate(pDevice, GetViewportWidth(), GetViewportHeight());
m_pLine3DBatcherPostGUI->OnDeviceCreate(pDevice, GetViewportWidth(), GetViewportHeight());
m_pMaterialLine3DBatcherPreGUI->OnDeviceCreate(pDevice, GetViewportWidth(), GetViewportHeight());
m_pMaterialLine3DBatcherPostFX->OnDeviceCreate(pDevice, GetViewportWidth(), GetViewportHeight());
m_pMaterialLine3DBatcherPostGUI->OnDeviceCreate(pDevice, GetViewportWidth(), GetViewportHeight());
m_pPrimitiveBatcher->OnDeviceCreate(pDevice, GetViewportWidth(), GetViewportHeight());
m_pPrimitiveMaterialBatcher->OnDeviceCreate(pDevice, GetViewportWidth(), GetViewportHeight());
m_pPrimitive3DBatcherPreGUI->OnDeviceCreate(pDevice, GetViewportWidth(), GetViewportHeight());
m_pPrimitive3DBatcherPostFX->OnDeviceCreate(pDevice, GetViewportWidth(), GetViewportHeight());
m_pPrimitive3DBatcherPostGUI->OnDeviceCreate(pDevice, GetViewportWidth(), GetViewportHeight());
m_pMaterialPrimitive3DBatcherPreGUI->OnDeviceCreate(pDevice, GetViewportWidth(), GetViewportHeight());
m_pMaterialPrimitive3DBatcherPostFX->OnDeviceCreate(pDevice, GetViewportWidth(), GetViewportHeight());
m_pMaterialPrimitive3DBatcherPostGUI->OnDeviceCreate(pDevice, GetViewportWidth(), GetViewportHeight());
m_pRenderItemManager->OnDeviceCreate(pDevice, GetViewportWidth(), GetViewportHeight());
m_pScreenGrabber->OnDeviceCreate(pDevice);
Expand Down Expand Up @@ -1612,6 +1634,12 @@ void CGraphics::DrawLine3DPreGUIQueue()
m_pMaterialLine3DBatcherPreGUI->Flush();
}

void CGraphics::DrawLine3DPostFXQueue(void)
{
m_pLine3DBatcherPostFX->Flush();
m_pMaterialLine3DBatcherPostFX->Flush();
}

void CGraphics::DrawPrimitive3DPreGUIQueue(void)
{
m_pPrimitive3DBatcherPreGUI->Flush();
Expand All @@ -1623,6 +1651,12 @@ bool CGraphics::HasLine3DPreGUIQueueItems(void)
return m_pLine3DBatcherPreGUI->HasItems() || m_pMaterialLine3DBatcherPreGUI->HasItems();
}

void CGraphics::DrawPrimitive3DPostFXQueue(void)
{
m_pPrimitive3DBatcherPostFX->Flush();
m_pMaterialPrimitive3DBatcherPostFX->Flush();
}

bool CGraphics::HasPrimitive3DPreGUIQueueItems(void)
{
return m_pMaterialPrimitive3DBatcherPreGUI->HasItems() || m_pPrimitive3DBatcherPreGUI->HasItems();
Expand Down Expand Up @@ -2519,6 +2553,6 @@ void CGraphics::DrawWiredSphere(CVector vecPosition, float fRadius, SColor color
{
const CVector& vecBegin = model.vertexList[i] * fRadius + vecPosition;
const CVector& vecEnd = model.vertexList[i + 1] * fRadius + vecPosition;
DrawLine3DQueued(vecBegin, vecEnd, fLineWidth, color, false);
DrawLine3DQueued(vecBegin, vecEnd, fLineWidth, color, eRenderStage::POST_FX);
}
}
16 changes: 11 additions & 5 deletions Client/core/Graphics/CGraphics.h
Original file line number Diff line number Diff line change
Expand Up @@ -135,11 +135,11 @@ class CGraphics : public CGraphicsInterface, public CSingleton<CGraphics>
// Queued up drawing funcs
void DrawLineQueued(float fX1, float fY1, float fX2, float fY2, float fWidth, unsigned long ulColor, bool bPostGUI);

void DrawLine3DQueued(const CVector& vecBegin, const CVector& vecEnd, float fWidth, unsigned long ulColor, bool bPostGUI);
void DrawLine3DQueued(const CVector& vecBegin, const CVector& vecEnd, float fWidth, unsigned long ulColor, eRenderStage stage = eRenderStage::PRE_FX);

void DrawMaterialLine3DQueued(const CVector& vecBegin, const CVector& vecEnd, float fWidth, unsigned long ulColor, CMaterialItem* pMaterial, float fU = 0,
float fV = 0, float fSizeU = 1, float fSizeV = 1, bool bRelativeUV = true, bool bFlipUV = false, bool bUseFaceToward = false,
const CVector& vecFaceToward = CVector(), bool bPostGUI = false) override;
const CVector& vecFaceToward = CVector(), eRenderStage stage = eRenderStage::PRE_FX) override;

void DrawRectQueued(float fX, float fY, float fWidth, float fHeight, unsigned long ulColor, bool bPostGUI, bool bSubPixelPositioning = false);

Expand All @@ -153,8 +153,8 @@ class CGraphics : public CGraphicsInterface, public CSingleton<CGraphics>
void DrawPrimitiveQueued(std::vector<PrimitiveVertice>* pVecVertices, D3DPRIMITIVETYPE eType, bool bPostGUI = false);
void DrawMaterialPrimitiveQueued(std::vector<PrimitiveMaterialVertice>* vertices, D3DPRIMITIVETYPE type, CMaterialItem* pMaterial, bool bPostGUI);

void DrawPrimitive3DQueued(std::vector<PrimitiveVertice>* pVecVertices, D3DPRIMITIVETYPE eType, bool bPostGUI);
void DrawMaterialPrimitive3DQueued(std::vector<PrimitiveMaterialVertice>* pVecVertices, D3DPRIMITIVETYPE eType, CMaterialItem* pMaterial, bool bPostGUI);
void DrawPrimitive3DQueued(std::vector<PrimitiveVertice>* pVecVertices, D3DPRIMITIVETYPE eType, eRenderStage stage = eRenderStage::PRE_FX);
void DrawMaterialPrimitive3DQueued(std::vector<PrimitiveMaterialVertice>* pVecVertices, D3DPRIMITIVETYPE eType, CMaterialItem* pMaterial, eRenderStage stage = eRenderStage::PRE_FX);

void DrawCircleQueued(float fX, float fY, float fRadius, float fStartAngle, float fStopAngle, unsigned long ulColor, unsigned long ulColorCenter,
short siSegments, float fRatio, bool bPostGUI);
Expand Down Expand Up @@ -188,7 +188,9 @@ class CGraphics : public CGraphicsInterface, public CSingleton<CGraphics>
void DrawPreGUIQueue(void);
void DrawPostGUIQueue(void);
void DrawLine3DPreGUIQueue(void);
void DrawLine3DPostFXQueue(void);
bool HasLine3DPreGUIQueueItems(void);
void DrawPrimitive3DPostFXQueue(void);
void DrawPrimitive3DPreGUIQueue(void);
bool HasPrimitive3DPreGUIQueueItems(void);

Expand Down Expand Up @@ -226,14 +228,18 @@ class CGraphics : public CGraphicsInterface, public CSingleton<CGraphics>
CPixelsManagerInterface* m_pPixelsManager = nullptr;
CTileBatcher* m_pTileBatcher = nullptr;
CLine3DBatcher* m_pLine3DBatcherPreGUI = nullptr;
CLine3DBatcher* m_pLine3DBatcherPostFX = nullptr;
CLine3DBatcher* m_pLine3DBatcherPostGUI = nullptr;
CMaterialLine3DBatcher* m_pMaterialLine3DBatcherPreGUI = nullptr;
CMaterialLine3DBatcher* m_pMaterialLine3DBatcherPostFX = nullptr;
CMaterialLine3DBatcher* m_pMaterialLine3DBatcherPostGUI = nullptr;
CPrimitiveBatcher* m_pPrimitiveBatcher = nullptr;
CPrimitiveMaterialBatcher* m_pPrimitiveMaterialBatcher = nullptr;
CPrimitive3DBatcher* m_pPrimitive3DBatcherPreGUI = nullptr;
CPrimitive3DBatcher* m_pPrimitive3DBatcherPostGUI = nullptr;
CPrimitive3DBatcher* m_pPrimitive3DBatcherPostFX = nullptr;
CPrimitive3DBatcher* m_pPrimitive3DBatcherPostGUI = nullptr;
CMaterialPrimitive3DBatcher* m_pMaterialPrimitive3DBatcherPreGUI = nullptr;
CMaterialPrimitive3DBatcher* m_pMaterialPrimitive3DBatcherPostFX = nullptr;
CMaterialPrimitive3DBatcher* m_pMaterialPrimitive3DBatcherPostGUI = nullptr;
CAspectRatioConverter* m_pAspectRatioConverter = nullptr;

Expand Down
4 changes: 2 additions & 2 deletions Client/mods/deathmatch/logic/CClientColCircle.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ void CClientColCircle::DebugRender(const CVector& vecPosition, float fDrawRadius
{
CVector vecBegin = vertexList[i] * vecMult + vecAdd;
CVector vecEnd = vertexList[(i + 1) % uiNumPoints] * vecMult + vecAdd;
pGraphics->DrawLine3DQueued(vecBegin, vecEnd, fLineWidth, color, false);
pGraphics->DrawLine3DQueued(vecBegin, vecEnd, fLineWidth, color, eRenderStage::POST_FX);
}
}
}
Expand All @@ -94,7 +94,7 @@ void CClientColCircle::DebugRender(const CVector& vecPosition, float fDrawRadius
{
CVector vecBegin = vertexList[i] * vecMultB + vecAdd;
CVector vecEnd = vertexList[i] * vecMultT + vecAdd;
pGraphics->DrawLine3DQueued(vecBegin, vecEnd, fLineWidth, color, false);
pGraphics->DrawLine3DQueued(vecBegin, vecEnd, fLineWidth, color, eRenderStage::POST_FX);
}
}
}
6 changes: 3 additions & 3 deletions Client/mods/deathmatch/logic/CClientColCuboid.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ void CClientColCuboid::DebugRender(const CVector& vecPosition, float fDrawRadius
{
const CVector& vecBegin = cornerPoints[i] * vecMult + vecAdd;
const CVector& vecEnd = cornerPoints[(i + 1) % 4] * vecMult + vecAdd;
pGraphics->DrawLine3DQueued(vecBegin, vecEnd, fLineWidth, color, false);
pGraphics->DrawLine3DQueued(vecBegin, vecEnd, fLineWidth, color, eRenderStage::POST_FX);
}
}
}
Expand All @@ -89,7 +89,7 @@ void CClientColCuboid::DebugRender(const CVector& vecPosition, float fDrawRadius
{
const CVector& vecBegin = cornerPoints[i] * vecMult + vecAdd;
const CVector& vecEnd = cornerPoints[(i + 1) % 4] * vecMult + vecAdd;
pGraphics->DrawLine3DQueued(vecBegin, vecEnd, fLineWidth, color, false);
pGraphics->DrawLine3DQueued(vecBegin, vecEnd, fLineWidth, color, eRenderStage::POST_FX);
}
}
}
Expand All @@ -108,7 +108,7 @@ void CClientColCuboid::DebugRender(const CVector& vecPosition, float fDrawRadius
{
const CVector& vecBegin = cornerPoints[i] * vecMult + vecAdd;
const CVector& vecEnd = cornerPoints[(i + 1) % 4] * vecMult + vecAdd;
pGraphics->DrawLine3DQueued(vecBegin, vecEnd, fLineWidth, color, false);
pGraphics->DrawLine3DQueued(vecBegin, vecEnd, fLineWidth, color, eRenderStage::POST_FX);
}
}
}
Expand Down
8 changes: 4 additions & 4 deletions Client/mods/deathmatch/logic/CClientColPolygon.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,7 @@ void CClientColPolygon::DebugRender(const CVector& vecPosition, float fDrawRadiu

CVector vecBegin(vecPointBegin.fX, vecPointBegin.fY, fZ);
CVector vecEnd(vecPointEnd.fX, vecPointEnd.fY, fZ);
pGraphics->DrawLine3DQueued(vecBegin, vecEnd, fLineWidth, color, false);
pGraphics->DrawLine3DQueued(vecBegin, vecEnd, fLineWidth, color, eRenderStage::POST_FX);
}
}
}
Expand All @@ -219,7 +219,7 @@ void CClientColPolygon::DebugRender(const CVector& vecPosition, float fDrawRadiu

CVector vecBegin(vecPoint.fX, vecPoint.fY, std::max(vecPosition.fZ - fDrawRadius, m_fFloor));
CVector vecEnd(vecPoint.fX, vecPoint.fY, std::min(vecPosition.fZ + fDrawRadius, m_fCeil));
pGraphics->DrawLine3DQueued(vecBegin, vecEnd, fLineWidth, color, false);
pGraphics->DrawLine3DQueued(vecBegin, vecEnd, fLineWidth, color, eRenderStage::POST_FX);
}
}

Expand All @@ -231,10 +231,10 @@ void CClientColPolygon::DebugRender(const CVector& vecPosition, float fDrawRadiu

CVector vecFloorBegin(vecPointBegin.fX, vecPointBegin.fY, m_fFloor);
CVector vecFloorEnd(vecPointEnd.fX, vecPointEnd.fY, m_fFloor);
pGraphics->DrawLine3DQueued(vecFloorBegin, vecFloorEnd, fLineWidth, color, false);
pGraphics->DrawLine3DQueued(vecFloorBegin, vecFloorEnd, fLineWidth, color, eRenderStage::POST_FX);

CVector vecCeilBegin(vecPointBegin.fX, vecPointBegin.fY, m_fCeil);
CVector vecCeilEnd(vecPointEnd.fX, vecPointEnd.fY, m_fCeil);
pGraphics->DrawLine3DQueued(vecCeilBegin, vecCeilEnd, fLineWidth, color, false);
pGraphics->DrawLine3DQueued(vecCeilBegin, vecCeilEnd, fLineWidth, color, eRenderStage::POST_FX);
}
}
Loading
Loading