View Issue Details

IDProjectCategoryView StatusLast Update
0005795DarkRadiantRendererpublic31.10.2021 16:09
Reportergreebo Assigned Togreebo  
PrioritynormalSeveritynormalReproducibilityhave not tried
Status assignedResolutionopen 
Product Version2.13.0 
Summary0005795: Refactor Wireframe Rendering Methods
DescriptionThere are a couple of "low-hanging fruits" in the wireframe rendering code. In a profiler run of a decently sized map, a couple things are noticeable:

- Brush wireframe updates are trying to evaluate view-dependent things: this is no longer necessary since all visible faces are always rendered, independent of the ortho view type. The visibility of the faces is not view-dependent, so this step doesn't need to be run on every frame.
- PatchRenderables are updating the control vertices vector (including colour) on every frame, even though component mode is not even enabled.
- Face vertices are being updated on every frame, without component mode being enabled.
- Matrix4::getIdentity() is taking up 1.6% of the whole time, since it returns the Matrix by value. The EntityNode is rendering two curve sub-structures, with a lot of entities, that's a lot of matrices being copied around for nothing.

And possibly more.
TagsNo tags attached.

Relationships

related to 0005582 assignedgreebo Front End Renderer Advancements 

Activities

There are no notes attached to this issue.

Related Changesets

DarkRadiant: wireframe_rendering f35bc34b

2021-10-31 08:58:34

greebo

Details Diff
0005795: Add benchmark code for development Affected Issues
0005795
mod - libs/debugging/ScopedDebugTimer.h Diff File
mod - radiant/xyview/GlobalXYWnd.cpp Diff File
mod - radiant/xyview/GlobalXYWnd.h Diff File

DarkRadiant: wireframe_rendering 115cdd26

2021-10-31 13:09:06

greebo

Details Diff
0005795: Only run tests in evaluateViewDependent() if the visibility of any face actually changed. This can be the case either by forcing a brush to be visible or by its material filter status. Affected Issues
0005795
mod - libs/scene/Node.h Diff File
mod - radiantcore/brush/BrushNode.cpp Diff File
mod - radiantcore/brush/BrushNode.h Diff File
mod - radiantcore/brush/Face.cpp Diff File

DarkRadiant: wireframe_rendering aba19372

2021-10-31 14:55:39

greebo

Details Diff
0005795: Remove the bounds check in the StaticModelNode::renderWireframe method. This is already handled by the space partition system. Affected Issues
0005795
mod - radiantcore/model/StaticModelNode.cpp Diff File

DarkRadiant: wireframe_rendering 83c21865

2021-10-31 15:17:26

greebo

Details Diff
0005795: PatchNode is rebuilding the selected vertex array only when necessary Affected Issues
0005795
mod - radiantcore/patch/PatchNode.cpp Diff File
mod - radiantcore/patch/PatchNode.h Diff File

Issue History

Date Modified Username Field Change
31.10.2021 08:39 greebo New Issue
31.10.2021 08:39 greebo Relationship added related to 0005582
31.10.2021 08:39 greebo Assigned To => greebo
31.10.2021 08:39 greebo Status new => assigned
31.10.2021 16:09 greebo Changeset attached => DarkRadiant wireframe_rendering f35bc34b
31.10.2021 16:09 greebo Changeset attached => DarkRadiant wireframe_rendering 115cdd26
31.10.2021 16:09 greebo Changeset attached => DarkRadiant wireframe_rendering aba19372
31.10.2021 16:09 greebo Changeset attached => DarkRadiant wireframe_rendering 83c21865