View Issue Details

IDProjectCategoryView StatusLast Update
0005584DarkRadiantRendererpublic20.11.2021 16:31
Reportergreebo Assigned Togreebo  
PrioritynormalSeveritynormalReproducibilityhave not tried
Status assignedResolutionopen 
Product Version2.11.0 
Summary0005584: Move openGL render calls to Backend
DescriptionRight now the actual glWhatever() calls submitting geometry is purely done in the OpenGLRenderable implementations, like Winding, RenderablePatchWireframe, etc. This makes it impossible for the backend render to perform any state grouping, a lot of render pass preparation is done for each renderable, only to submit 4 vertices plus normals to the driver. Instead of submitting geometry themselves using GL_POLYGON, GL_QUAD_STRIP, etc. each object contributing triangles to the scene should do so using a unified surface data type, similar to what the StaticModelSurfaces are using already.

Goal: no openGL driver calls in the scene::Node implementations, all renderables are submitting their geometry using the same data format, possibly one based on an indexed array of ArbitraryMeshVertices.

The non-triangle data which do not affect light interactions like target arrows, speaker boxes or the manipulator lines are probably not suitable for this new surface data type, but ideally these can be refactored to use something analogous.
TagsNo tags attached.

Activities

orbweaver

orbweaver

01.11.2021 20:06

developer   ~0014480

This is a great idea. It would also make it easier to switch to using "proper OpenGL" for submitting data, i.e. vertex buffers rather than immediate mode (we actually have a VertexBuffer class but it's never been used).
greebo

greebo

02.11.2021 03:22

administrator   ~0014484

Last edited: 02.11.2021 03:23

I got a rough test going in the renderer branch - completely unsuitable for editing, but I wanted to see if there's any performance benefit in there.

Since rendering the Patch tesselations is taking up the largest portion of the backend render, I tried to move the VBO management to the Shader object itself, so patches are submitting their geometry data to the Shader, which is adding it to one large VBO. The time to render my test scene 100 times went from 7.7s down to 6.0s, so it's worthwile in my opinion. I don't expect to keep that ratio since some time will be lost again due to VBO management and re-arrangement when the patches are modified, but it shows that one single glDrawElements() per OpenGLShaderPass is much faster than having one per Patch mesh and per pass.

I'll try to do the same to brush faces, since they are (in that branch) now the largest contributors to backend rendering time (submitting 4 vertices per winding times 15000). Since the majority of faces are 3, 4, 5 or 6 vertices, I'm thinking it might be worth creating a VBO for each winding size, such that faces can easily update their data without having to re-arrange the whole VBO every time a face is changing - but that might be premature optimisation.

Related Changesets

DarkRadiant: renderer 1d054538

2021-11-01 05:42:21

greebo

Details Diff
0005584: Add camera benchmark method Affected Issues
0005584
mod - radiant/xyview/GlobalXYWnd.cpp Diff File

DarkRadiant: renderer 8dc31253

2021-11-01 07:36:35

greebo

Details Diff
0005584: CamWnd keeps the CamRenderer instance around. The LitRenderables map is now emptied, but the memory is not freed to avoid re-allocating a million entries every frame. Affected Issues
0005584
mod - libs/render/CamRenderer.h Diff File
mod - radiant/camera/CamWnd.cpp Diff File
mod - radiant/camera/CamWnd.h Diff File

DarkRadiant: renderer 1eee48d4

2021-11-01 07:53:29

greebo

Details Diff
0005584: Purge any shaders that have not been used the last frame, to prevent introducing a long-running memory leak.
Re-using the CamRenderer container memory reduces the time needed to render 100 frames from 8.7 to 7.7 seconds.
Affected Issues
0005584
mod - libs/render/CamRenderer.h Diff File

DarkRadiant: renderer a9e77a3b

2021-11-01 08:10:06

greebo

Details Diff
0005584: Use std::unordered_map to have faster lookups, the CamRenderer::addRenderable method is no longer contributing in the profiler. Affected Issues
0005584
mod - libs/render/CamRenderer.h Diff File

DarkRadiant: renderer 4c2e7335

2021-11-01 09:12:21

greebo

Details Diff
0005584: Use a static identity Matrix4 in Doom3GroupNode::renderSolid/renderWireframe Affected Issues
0005584
mod - radiantcore/entity/doom3group/Doom3GroupNode.cpp Diff File

DarkRadiant: renderer 5b29f123

2021-11-01 09:26:41

greebo

Details Diff
0005584: We can use the world AABB to perform the front-end culling of single model nodes, it is already oriented using localAABB and local2World. Affected Issues
0005584
mod - radiantcore/model/StaticModelNode.cpp Diff File

DarkRadiant: renderer f00364ba

2021-11-01 10:02:45

greebo

Details Diff
0005584: Minor refactoring Affected Issues
0005584
mod - libs/render/CamRenderer.h Diff File

DarkRadiant: renderer b2fd9ab2

2021-11-01 15:30:05

greebo

Details Diff
0005584: Add the ability to attach surface geometry to the Shader object itself - this just serves a hacky proof of concept. Affected Issues
0005584
mod - include/irender.h Diff File
mod - radiantcore/patch/PatchNode.cpp Diff File
mod - radiantcore/patch/PatchNode.h Diff File
mod - radiantcore/patch/PatchRenderables.cpp Diff File
mod - radiantcore/patch/PatchRenderables.h Diff File
mod - radiantcore/rendersystem/backend/OpenGLShader.cpp Diff File
mod - radiantcore/rendersystem/backend/OpenGLShader.h Diff File
mod - radiantcore/rendersystem/backend/OpenGLShaderPass.cpp Diff File
mod - radiantcore/rendersystem/backend/OpenGLShaderPass.h Diff File

DarkRadiant: renderer 3c324a5f

2021-11-01 18:23:38

greebo

Details Diff
0005584: Each Shader is now maintaining VBOs to store the surface data Affected Issues
0005584
mod - libs/render/IndexedVertexBuffer.h Diff File
mod - radiantcore/patch/PatchRenderables.cpp Diff File
mod - radiantcore/patch/PatchRenderables.h Diff File
mod - radiantcore/rendersystem/backend/OpenGLShader.cpp Diff File
mod - radiantcore/rendersystem/backend/OpenGLShader.h Diff File
mod - radiantcore/rendersystem/backend/OpenGLShaderPass.cpp Diff File

DarkRadiant: renderer d9ac2aed

2021-11-05 13:09:45

greebo

Details Diff
0005584: Winding rendering experiments Affected Issues
0005584
mod - radiantcore/brush/BrushNode.cpp Diff File
mod - radiantcore/brush/Face.cpp Diff File
mod - radiantcore/brush/Face.h Diff File
add - radiantcore/brush/RenderableWinding.h Diff File
mod - radiantcore/rendersystem/backend/OpenGLShaderPass.cpp Diff File
mod - tools/msvc/DarkRadiantCore.vcxproj Diff File
mod - tools/msvc/DarkRadiantCore.vcxproj.filters Diff File

DarkRadiant: renderer dd9d9b89

2021-11-05 14:34:44

greebo

Details Diff
0005584: Start implementing container classes storing the winding vertices Affected Issues
0005584
add - include/iwindingrenderer.h Diff File
add - libs/render/CompactWindingVertexBuffer.h Diff File
add - libs/render/WindingRenderer.h Diff File
add - test/WindingRendering.cpp Diff File
mod - tools/msvc/Tests/Tests.vcxproj Diff File
mod - tools/msvc/Tests/Tests.vcxproj.filters Diff File
mod - tools/msvc/include.vcxproj Diff File
mod - tools/msvc/include.vcxproj.filters Diff File
mod - tools/msvc/libs.vcxproj Diff File
mod - tools/msvc/libs.vcxproj.filters Diff File

DarkRadiant: renderer 4e39896a

2021-11-06 08:11:49

greebo

Details Diff
0005584: Appending of winding vertices is working now Affected Issues
0005584
mod - libs/render/CompactWindingVertexBuffer.h Diff File
mod - test/WindingRendering.cpp Diff File

DarkRadiant: renderer e907c442

2021-11-06 08:59:52

greebo

Details Diff
0005584: Removal of winding vertices is working now Affected Issues
0005584
mod - libs/render/CompactWindingVertexBuffer.h Diff File
mod - test/WindingRendering.cpp Diff File

DarkRadiant: renderer 98ae4d24

2021-11-06 09:30:25

greebo

Details Diff
0005584: Replacing winding data tests. First WindingRenderer implementation. Affected Issues
0005584
mod - include/iwindingrenderer.h Diff File
mod - libs/render/CompactWindingVertexBuffer.h Diff File
mod - libs/render/WindingRenderer.h Diff File
mod - test/WindingRendering.cpp Diff File

DarkRadiant: renderer 70959f8e

2021-11-06 17:33:22

greebo

Details Diff
0005584: OpenGLShader implements the IWindingRenderer interface Affected Issues
0005584
mod - include/irender.h Diff File
mod - radiantcore/rendersystem/backend/OpenGLShader.cpp Diff File
mod - radiantcore/rendersystem/backend/OpenGLShader.h Diff File

DarkRadiant: renderer b435b0b9

2021-11-07 05:44:02

greebo

Details Diff
0005584: Winding rendering support. Updates in basic scenarios are working, everything else is crashing. Affected Issues
0005584
mod - libs/render/CompactWindingVertexBuffer.h Diff File
mod - libs/render/WindingRenderer.h Diff File
mod - radiantcore/brush/Face.cpp Diff File
mod - radiantcore/brush/RenderableWinding.h Diff File
mod - radiantcore/rendersystem/backend/OpenGLShader.cpp Diff File
mod - radiantcore/rendersystem/backend/OpenGLShader.h Diff File
mod - radiantcore/rendersystem/backend/OpenGLShaderPass.cpp Diff File

DarkRadiant: renderer 752b7ee6

2021-11-07 07:48:59

greebo

Details Diff
0005584: Set front face culling to match the surfaces - they are using an identity matrix right now Affected Issues
0005584
mod - radiantcore/rendersystem/backend/OpenGLShader.cpp Diff File
mod - radiantcore/rendersystem/backend/OpenGLShaderPass.cpp Diff File

DarkRadiant: renderer db2f11e1

2021-11-07 09:19:22

greebo

Details Diff
0005584: Working on removing windings from the vertex buffers - the current code is conceptually wrong Affected Issues
0005584
mod - libs/render/WindingRenderer.h Diff File
mod - radiantcore/brush/Face.cpp Diff File
mod - radiantcore/brush/RenderableWinding.h Diff File

DarkRadiant: renderer 888359b6

2021-11-07 09:54:44

greebo

Details Diff
0005584: Simplify things a bit, get rid of the bit-shifting Affected Issues
0005584
mod - include/iwindingrenderer.h Diff File
mod - libs/render/WindingRenderer.h Diff File

DarkRadiant: renderer 5233d478

2021-11-07 14:43:32

greebo

Details Diff
0005584: scene::Node offers a virtual protected method to get notified on visibility changes, which is what we need to un-link our windings from the vertex buffers.
Add a series of (failing) tests checking the Node visibility setters and getters.
Affected Issues
0005584
mod - libs/scene/Node.cpp Diff File
mod - libs/scene/Node.h Diff File
mod - radiantcore/brush/Face.cpp Diff File
mod - radiantcore/brush/RenderableWinding.h Diff File
mod - test/CMakeLists.txt Diff File
add - test/SceneNode.cpp Diff File
mod - tools/msvc/Tests/Tests.vcxproj Diff File
mod - tools/msvc/Tests/Tests.vcxproj.filters Diff File

DarkRadiant: renderer 4e56b8db

2021-11-07 15:22:08

greebo

Details Diff
0005584: Only nodes in the scene can be considered visible, regardless of the forcedVisibility status flag.
Call onVisibilityChanged when inserting/removing from the scene.
Affected Issues
0005584
mod - libs/scene/Node.cpp Diff File

DarkRadiant: renderer 97f2834f

2021-11-07 15:26:07

greebo

Details Diff
0005584: Adjust Node::setForcedVisibility and Node::setFiltered() implementations to fire visibility change events Affected Issues
0005584
mod - libs/scene/Node.cpp Diff File
mod - libs/scene/Node.h Diff File

DarkRadiant: renderer 17147978

2021-11-07 15:36:42

greebo

Details Diff
0005584: Faces remove their windings from the render buffers when the owning brush goes invisible Affected Issues
0005584
mod - radiantcore/brush/BrushNode.cpp Diff File
mod - radiantcore/brush/BrushNode.h Diff File
mod - radiantcore/brush/Face.cpp Diff File
mod - radiantcore/brush/Face.h Diff File

DarkRadiant: renderer 1b9174fd

2021-11-07 15:51:19

greebo

Details Diff
0005584: Fix one of those embarrassing refactoring logic errors. Affected Issues
0005584
mod - libs/render/WindingRenderer.h Diff File
mod - radiantcore/brush/RenderableWinding.h Diff File

DarkRadiant: renderer 50117a8b

2021-11-07 17:27:13

greebo

Details Diff
0005584: Introduce Renderable::onPreRender method to give every visible node a chance to prepare their geometry Affected Issues
0005584
mod - include/irenderable.h Diff File
mod - libs/render/RenderableCollectionWalker.h Diff File
mod - radiantcore/brush/BrushNode.cpp Diff File
mod - radiantcore/brush/BrushNode.h Diff File

DarkRadiant: renderer c47e4b93

2021-11-10 03:49:33

greebo

Details Diff
0005584: Crude attempt at moving the GL draw calls from Winding to the OpenGLShader. Renderable nodes are allowed to submit RenderableGeometry types (for this render frame only) with a set of highlight flags. One or more corresponding Shader objects will then receive a reference to this RenderableGeometry type. Affected Issues
0005584
mod - include/irender.h Diff File
mod - include/irenderable.h Diff File
mod - libs/render/CamRenderer.h Diff File
mod - radiantcore/brush/BrushNode.cpp Diff File
mod - radiantcore/brush/Winding.cpp Diff File
mod - radiantcore/brush/Winding.h Diff File
mod - radiantcore/rendersystem/OpenGLRenderSystem.cpp Diff File
mod - radiantcore/rendersystem/backend/OpenGLShader.cpp Diff File
mod - radiantcore/rendersystem/backend/OpenGLShader.h Diff File
mod - radiantcore/rendersystem/backend/OpenGLShaderPass.cpp Diff File

DarkRadiant: renderer 5f19f0a3

2021-11-10 05:33:18

greebo

Details Diff
0005584: Brush selection highlighting is working Affected Issues
0005584
mod - include/irenderable.h Diff File
mod - libs/render/CamRenderer.h Diff File
mod - radiantcore/brush/BrushNode.cpp Diff File
mod - radiantcore/rendersystem/backend/OpenGLShader.cpp Diff File

DarkRadiant: renderer 98bde91f

2021-11-10 05:56:17

greebo

Details Diff
0005584: OpenGLShader objects report as "not visible" when there's an invisible material attached. Affected Issues
0005584
mod - radiantcore/rendersystem/backend/OpenGLShader.cpp Diff File
mod - radiantcore/rendersystem/backend/OpenGLShaderPass.cpp Diff File

DarkRadiant: renderer a8bc5373

2021-11-12 07:32:25

greebo

Details Diff
0005584: OpenGLShader now offers an interface to attach indexed vertices directly, returning a handle for later manipulation. Affected Issues
0005584
mod - include/irender.h Diff File
add - include/isurfacerenderer.h Diff File
mod - libs/render/CompactWindingVertexBuffer.h Diff File
mod - radiantcore/patch/Patch.cpp Diff File
mod - radiantcore/patch/PatchNode.cpp Diff File
mod - radiantcore/patch/PatchNode.h Diff File
mod - radiantcore/patch/PatchRenderables.cpp Diff File
mod - radiantcore/patch/PatchRenderables.h Diff File
mod - radiantcore/rendersystem/backend/OpenGLShader.cpp Diff File
mod - radiantcore/rendersystem/backend/OpenGLShader.h Diff File
add - radiantcore/rendersystem/backend/SurfaceRenderer.h Diff File
mod - tools/msvc/DarkRadiantCore.vcxproj Diff File
mod - tools/msvc/DarkRadiantCore.vcxproj.filters Diff File
mod - tools/msvc/include.vcxproj Diff File
mod - tools/msvc/include.vcxproj.filters Diff File

DarkRadiant: renderer 9fd332ad

2021-11-12 13:58:45

greebo

Details Diff
0005584: Hidden Patch nodes disconnect their geometry from the shader Affected Issues
0005584
mod - radiantcore/brush/Face.cpp Diff File
mod - radiantcore/patch/Patch.cpp Diff File
mod - radiantcore/patch/PatchNode.cpp Diff File
mod - radiantcore/patch/PatchNode.h Diff File
mod - radiantcore/patch/PatchRenderables.cpp Diff File
mod - radiantcore/patch/PatchRenderables.h Diff File

DarkRadiant: renderer d6e86304

2021-11-12 14:37:01

greebo

Details Diff
0005584: Selected Patches submit separate geometry to render the quad mesh overlay Affected Issues
0005584
mod - radiantcore/patch/PatchNode.cpp Diff File
mod - radiantcore/patch/PatchNode.h Diff File
mod - radiantcore/patch/PatchRenderables.cpp Diff File
mod - radiantcore/patch/PatchRenderables.h Diff File

DarkRadiant: renderer 4d9bc0d8

2021-11-13 04:04:43

greebo

Details Diff
0005584: The RenderableCollector now receives the renderables only when there's anything to highlight. Affected Issues
0005584
mod - include/irenderable.h Diff File
mod - libs/render/CamRenderer.h Diff File
mod - libs/render/RenderableCollectionWalker.h Diff File
mod - radiant/xyview/XYRenderer.h Diff File
mod - radiantcore/brush/BrushNode.cpp Diff File
mod - radiantcore/patch/PatchNode.cpp Diff File
mod - test/Entity.cpp Diff File

DarkRadiant: renderer cdafb3ba

2021-11-13 05:07:47

greebo

Details Diff
0005584: Disable all code related to RenderableGeometry, this is most likely a dead end. Affected Issues
0005584
mod - include/irender.h Diff File
mod - include/irenderable.h Diff File
mod - libs/render/CamRenderer.h Diff File
mod - radiantcore/brush/BrushNode.cpp Diff File
mod - radiantcore/brush/Winding.cpp Diff File
mod - radiantcore/brush/Winding.h Diff File
mod - radiantcore/patch/PatchNode.cpp Diff File
mod - radiantcore/patch/PatchRenderables.cpp Diff File
mod - radiantcore/patch/PatchRenderables.h Diff File
mod - radiantcore/rendersystem/OpenGLRenderSystem.cpp Diff File
mod - radiantcore/rendersystem/backend/OpenGLShader.cpp Diff File
mod - radiantcore/rendersystem/backend/OpenGLShader.h Diff File
mod - radiantcore/rendersystem/backend/OpenGLShaderPass.cpp Diff File

DarkRadiant: renderer e4bae9c2

2021-11-13 05:38:14

greebo

Details Diff
0005584: For oriented renderables that need to have the parent local2world transform applied before rendering, there's not quick solution here.
Introduce Renderable::isOriented() which should return true to have the nodes rendered in the regular frontend pass.
Brushes and Patches return isOriented == false since their regular visual mesh is attached to the large vertex buffer in the material. They only get rendered if there's something to highlight like selections or merge visualisations.
Affected Issues
0005584
mod - include/irenderable.h Diff File
mod - libs/render/RenderableCollectionWalker.h Diff File
mod - radiantcore/brush/BrushNode.h Diff File
mod - radiantcore/entity/EntityNode.cpp Diff File
mod - radiantcore/entity/EntityNode.h Diff File
mod - radiantcore/model/StaticModelNode.cpp Diff File
mod - radiantcore/model/StaticModelNode.h Diff File
mod - radiantcore/particles/ParticleNode.cpp Diff File
mod - radiantcore/particles/ParticleNode.h Diff File

DarkRadiant: renderer b8deeb58

2021-11-13 13:07:26

greebo

Details Diff
0005584: Prepare for orthoview winding rendering, which needs to be using GL_LINES as primitive type. The CompactWindingVertexBuffer needs to generate its indices in a different way for this purpose. Affected Issues
0005584
mod - libs/render/WindingRenderer.h Diff File
mod - radiantcore/rendersystem/backend/OpenGLShader.cpp Diff File
mod - radiantcore/rendersystem/backend/OpenGLShader.h Diff File

DarkRadiant: renderer 362d05b8

2021-11-13 14:00:18

greebo

Details Diff
0005584: Refactor CompactWindingVertexBuffer to use a template WindingIndexer type to generate the indices. Affected Issues
0005584
mod - libs/render/CompactWindingVertexBuffer.h Diff File
mod - radiantcore/rendersystem/backend/OpenGLShader.h Diff File
mod - test/WindingRendering.cpp Diff File

DarkRadiant: renderer f0eace1a

2021-11-13 14:13:10

greebo

Details Diff
0005584: Implement WindingIndexer_Lines. Affected Issues
0005584
mod - libs/render/CompactWindingVertexBuffer.h Diff File
mod - test/WindingRendering.cpp Diff File

DarkRadiant: renderer 478dbe88

2021-11-14 03:24:15

greebo

Details Diff
0005584: WindingRenderer must be instantiated with the correct indexer type now Affected Issues
0005584
mod - libs/render/CompactWindingVertexBuffer.h Diff File
mod - libs/render/WindingRenderer.h Diff File
mod - radiantcore/rendersystem/backend/OpenGLShader.cpp Diff File

DarkRadiant: renderer b49f9730

2021-11-14 03:37:48

greebo

Details Diff
0005584: Use the same RenderableWinding structure for brushes in wireframe rendering Affected Issues
0005584
mod - radiantcore/brush/BrushNode.cpp Diff File
mod - radiantcore/brush/Face.cpp Diff File
mod - radiantcore/brush/Face.h Diff File

DarkRadiant: renderer d41a1723

2021-11-14 04:41:53

greebo

Details Diff
0005584: Introduce view type flags applied to OpenGLShaders. Shaders are now maintaining geometry between frames, and not all of them should be submitting their geometry to every view type. Affected Issues
0005584
mod - include/irender.h Diff File
mod - libs/wxutil/preview/RenderPreview.cpp Diff File
mod - radiant/camera/CamWnd.cpp Diff File
mod - radiant/xyview/XYRenderer.h Diff File
mod - radiantcore/rendersystem/OpenGLRenderSystem.cpp Diff File
mod - radiantcore/rendersystem/OpenGLRenderSystem.h Diff File
mod - radiantcore/rendersystem/backend/OpenGLShader.cpp Diff File
mod - radiantcore/rendersystem/backend/OpenGLShader.h Diff File
mod - radiantcore/rendersystem/backend/OpenGLShaderPass.cpp Diff File
mod - radiantcore/rendersystem/backend/OpenGLShaderPass.h Diff File

DarkRadiant: renderer 1d628688

2021-11-14 11:19:46

greebo

Details Diff
0005584: Move template specialisations to namespace scope. Affected Issues
0005584
mod - libs/render/WindingRenderer.h Diff File

DarkRadiant: renderer e58ce0e0

2021-11-14 15:26:03

greebo

Details Diff
0005584: Move common node processing logic to a RenderableCollectorBase class, instead of having the RenderableCollectionWalker instrument the collector back and forth again. Affected Issues
0005584
mod - include/imanipulator.h Diff File
mod - include/imousetool.h Diff File
mod - include/irenderable.h Diff File
mod - libs/render/CamRenderer.h Diff File
mod - libs/render/RenderableCollectionWalker.h Diff File
add - libs/render/RenderableCollectorBase.h Diff File
mod - libs/render/RenderablePivot.h Diff File
mod - libs/render/RenderableSpacePartition.h Diff File
mod - libs/render/SceneRenderWalker.h Diff File
mod - libs/scene/BasicRootNode.h Diff File
mod - libs/scene/merge/MergeActionNode.cpp Diff File
mod - libs/scene/merge/MergeActionNode.h Diff File
mod - radiant/ui/aas/RenderableAasFile.cpp Diff File
mod - radiant/ui/aas/RenderableAasFile.h Diff File
mod - radiant/xyview/XYRenderer.h Diff File
mod - radiant/xyview/tools/MeasurementTool.cpp Diff File
mod - radiant/xyview/tools/MeasurementTool.h Diff File
mod - radiantcore/brush/Brush.cpp Diff File
mod - radiantcore/brush/Brush.h Diff File
mod - radiantcore/brush/BrushClipPlane.h Diff File
mod - radiantcore/brush/BrushNode.cpp Diff File
mod - radiantcore/brush/BrushNode.h Diff File
mod - radiantcore/brush/Face.cpp Diff File
mod - radiantcore/brush/Face.h Diff File
mod - radiantcore/brush/FaceInstance.cpp Diff File
mod - radiantcore/brush/FaceInstance.h Diff File
mod - radiantcore/entity/EntityNode.cpp Diff File
mod - radiantcore/entity/EntityNode.h Diff File
mod - radiantcore/entity/VertexInstance.h Diff File
mod - radiantcore/entity/curve/Curve.cpp Diff File
mod - radiantcore/entity/curve/Curve.h Diff File
mod - radiantcore/entity/curve/CurveEditInstance.cpp Diff File
mod - radiantcore/entity/curve/CurveEditInstance.h Diff File
mod - radiantcore/entity/doom3group/Doom3Group.cpp Diff File
mod - radiantcore/entity/doom3group/Doom3Group.h Diff File
mod - radiantcore/entity/doom3group/Doom3GroupNode.cpp Diff File
mod - radiantcore/entity/doom3group/Doom3GroupNode.h Diff File
mod - radiantcore/entity/eclassmodel/EclassModelNode.cpp Diff File
mod - radiantcore/entity/eclassmodel/EclassModelNode.h Diff File
mod - radiantcore/entity/generic/GenericEntityNode.cpp Diff File
mod - radiantcore/entity/generic/GenericEntityNode.h Diff File
mod - radiantcore/entity/light/Light.cpp Diff File
mod - radiantcore/entity/light/Light.h Diff File
mod - radiantcore/entity/light/LightNode.cpp Diff File
mod - radiantcore/entity/light/LightNode.h Diff File
mod - radiantcore/entity/speaker/SpeakerNode.cpp Diff File
mod - radiantcore/entity/speaker/SpeakerNode.h Diff File
mod - radiantcore/entity/target/RenderableTargetLines.h Diff File
mod - radiantcore/entity/target/TargetLineNode.cpp Diff File
mod - radiantcore/entity/target/TargetLineNode.h Diff File
mod - radiantcore/map/PointFile.cpp Diff File
mod - radiantcore/map/PointFile.h Diff File
mod - radiantcore/map/RootNode.h Diff File
mod - radiantcore/model/NullModel.cpp Diff File
mod - radiantcore/model/NullModel.h Diff File
mod - radiantcore/model/NullModelNode.cpp Diff File
mod - radiantcore/model/NullModelNode.h Diff File
mod - radiantcore/model/StaticModel.cpp Diff File
mod - radiantcore/model/StaticModel.h Diff File
mod - radiantcore/model/StaticModelNode.cpp Diff File
mod - radiantcore/model/StaticModelNode.h Diff File
mod - radiantcore/model/md5/MD5ModelNode.cpp Diff File
mod - radiantcore/model/md5/MD5ModelNode.h Diff File
mod - radiantcore/particles/ParticleNode.cpp Diff File
mod - radiantcore/particles/ParticleNode.h Diff File
mod - radiantcore/particles/RenderableParticle.cpp Diff File
mod - radiantcore/particles/RenderableParticle.h Diff File
mod - radiantcore/patch/Patch.cpp Diff File
mod - radiantcore/patch/Patch.h Diff File
mod - radiantcore/patch/PatchNode.cpp Diff File
mod - radiantcore/patch/PatchNode.h Diff File
mod - radiantcore/patch/PatchRenderables.cpp Diff File
mod - radiantcore/patch/PatchRenderables.h Diff File
mod - radiantcore/selection/RadiantSelectionSystem.cpp Diff File
mod - radiantcore/selection/RadiantSelectionSystem.h Diff File
mod - radiantcore/selection/manipulators/ManipulatorBase.h Diff File
mod - radiantcore/selection/manipulators/ModelScaleManipulator.cpp Diff File
mod - radiantcore/selection/manipulators/ModelScaleManipulator.h Diff File
mod - radiantcore/selection/manipulators/RotateManipulator.cpp Diff File
mod - radiantcore/selection/manipulators/RotateManipulator.h Diff File
mod - radiantcore/selection/manipulators/ScaleManipulator.cpp Diff File
mod - radiantcore/selection/manipulators/ScaleManipulator.h Diff File
mod - radiantcore/selection/manipulators/TranslateManipulator.cpp Diff File
mod - radiantcore/selection/manipulators/TranslateManipulator.h Diff File
mod - test/Entity.cpp Diff File
mod - test/SceneNode.cpp Diff File
mod - tools/msvc/libs.vcxproj Diff File
mod - tools/msvc/libs.vcxproj.filters Diff File

DarkRadiant: renderer fc12d62e

2021-11-14 15:40:42

greebo

Details Diff
0005584: Use the scene graph overloads accepting a lambda, this reduces the RenderableCollectionWalker to a single static method. Affected Issues
0005584
mod - libs/render/RenderableCollectionWalker.h Diff File
mod - libs/render/RenderableCollectorBase.h Diff File

DarkRadiant: renderer 6da53669

2021-11-14 17:52:49

greebo

Details Diff
0005584: Since Brushes and Patches maintain their geometry in the shader, they need to know when they should submit their ordinary geometry to the IRenderableCollector. Extend the Renderable interface by a renderHighlights() method which asks the nodes to submit the geometry that should be used for rendering overlays. Affected Issues
0005584
mod - include/irenderable.h Diff File
mod - libs/render/CamRenderer.h Diff File
mod - libs/render/RenderableCollectorBase.h Diff File
mod - libs/render/RenderableSpacePartition.h Diff File
mod - libs/scene/BasicRootNode.h Diff File
mod - libs/scene/merge/MergeActionNode.cpp Diff File
mod - libs/scene/merge/MergeActionNode.h Diff File
mod - radiant/ui/aas/RenderableAasFile.h Diff File
mod - radiantcore/brush/BrushNode.cpp Diff File
mod - radiantcore/brush/BrushNode.h Diff File
mod - radiantcore/entity/EntityNode.cpp Diff File
mod - radiantcore/entity/EntityNode.h Diff File
mod - radiantcore/entity/target/TargetLineNode.cpp Diff File
mod - radiantcore/entity/target/TargetLineNode.h Diff File
mod - radiantcore/map/PointFile.h Diff File
mod - radiantcore/map/RootNode.h Diff File
mod - radiantcore/model/NullModelNode.cpp Diff File
mod - radiantcore/model/NullModelNode.h Diff File
mod - radiantcore/model/StaticModelNode.cpp Diff File
mod - radiantcore/model/StaticModelNode.h Diff File
mod - radiantcore/model/md5/MD5ModelNode.cpp Diff File
mod - radiantcore/model/md5/MD5ModelNode.h Diff File
mod - radiantcore/particles/ParticleNode.cpp Diff File
mod - radiantcore/particles/ParticleNode.h Diff File
mod - radiantcore/particles/RenderableParticle.cpp Diff File
mod - radiantcore/particles/RenderableParticle.h Diff File
mod - radiantcore/patch/PatchNode.cpp Diff File
mod - radiantcore/patch/PatchNode.h Diff File
mod - radiantcore/selection/RadiantSelectionSystem.h Diff File
mod - test/SceneNode.cpp Diff File

DarkRadiant: renderer f2b4d088

2021-11-14 18:06:44

greebo

Details Diff
0005584: Fix selected patch control vertices highlight rendering Affected Issues
0005584
mod - radiantcore/patch/PatchNode.cpp Diff File

DarkRadiant: renderer fe06fe75

2021-11-15 17:40:24

greebo

Details Diff
0005584: Add SurfaceRenderer ability to store two separate surface index types, one buffer for GL_TRIANGLES, one for GL_QUADS. Affected Issues
0005584
mod - include/isurfacerenderer.h Diff File
mod - radiantcore/patch/PatchRenderables.cpp Diff File
mod - radiantcore/rendersystem/backend/OpenGLShader.cpp Diff File
mod - radiantcore/rendersystem/backend/OpenGLShader.h Diff File
mod - radiantcore/rendersystem/backend/SurfaceRenderer.h Diff File

DarkRadiant: renderer 1eb81918

2021-11-15 18:10:14

greebo

Details Diff
0005584: Patch wireframe rendering is working now, using the quad variant of the RenderablePatchTesselation template. Affected Issues
0005584
mod - radiantcore/patch/PatchNode.cpp Diff File
mod - radiantcore/patch/PatchNode.h Diff File
mod - radiantcore/patch/PatchRenderables.cpp Diff File
mod - radiantcore/patch/PatchRenderables.h Diff File

DarkRadiant: renderer 4b4e6b44

2021-11-15 19:46:21

greebo

Details Diff
0005584: Why not letting std::vector use its default growth strategy Affected Issues
0005584
mod - libs/render/CompactWindingVertexBuffer.h Diff File

DarkRadiant: renderer 4fdd914b

2021-11-16 17:15:47

greebo

Details Diff
0005584: SurfaceRenderer container growth Affected Issues
0005584
mod - radiantcore/rendersystem/backend/SurfaceRenderer.h Diff File

DarkRadiant: renderer aec7f050

2021-11-18 12:59:45

greebo

Details Diff
0005584: Wireframe colour is controller by the shader, don't set it in the WindingRenderer. Affected Issues
0005584
mod - libs/render/WindingRenderer.h Diff File

DarkRadiant: renderer 8913d75f

2021-11-18 14:18:14

greebo

Details Diff
0005584: Solid patch renderable is not rendered twice anymore when node is selected Affected Issues
0005584
mod - include/irenderable.h Diff File
mod - libs/render/CamRenderer.h Diff File
mod - radiant/xyview/XYRenderer.h Diff File
mod - radiantcore/brush/BrushNode.cpp Diff File
mod - radiantcore/patch/Patch.cpp Diff File
mod - radiantcore/patch/PatchNode.cpp Diff File
mod - radiantcore/patch/PatchNode.h Diff File
mod - test/Entity.cpp Diff File

DarkRadiant: renderer f1320293

2021-11-18 17:30:17

greebo

Details Diff
0005584: Turns out the IRenderable::viewChanged() method is obsolete Affected Issues
0005584
mod - include/irenderable.h Diff File
mod - libs/render/RenderableCollectorBase.h Diff File
mod - libs/render/SceneRenderWalker.h Diff File
mod - libs/scene/merge/MergeActionNode.cpp Diff File
mod - radiantcore/brush/BrushNode.cpp Diff File
mod - radiantcore/brush/BrushNode.h Diff File

DarkRadiant: renderer 8b4fbb77

2021-11-19 08:17:40

greebo

Details Diff
0005584: Remove RenderablePatchWireframe class, it's no longer needed Affected Issues
0005584
mod - radiantcore/patch/Patch.cpp Diff File
mod - radiantcore/patch/Patch.h Diff File
mod - radiantcore/patch/PatchNode.cpp Diff File
mod - radiantcore/patch/PatchRenderables.cpp Diff File
mod - radiantcore/patch/PatchRenderables.h Diff File

DarkRadiant: renderer 9bd6664e

2021-11-19 11:22:34

greebo

Details Diff
0005584: Add ability to render a single slot/partition of the surface vertex buffer. This allows us to render the patch highlight overlay using the same buffered data in the shader. We can now get rid of the RenderablePatchSolid helper. Affected Issues
0005584
mod - include/isurfacerenderer.h Diff File
mod - radiantcore/patch/Patch.cpp Diff File
mod - radiantcore/patch/Patch.h Diff File
mod - radiantcore/patch/PatchNode.cpp Diff File
mod - radiantcore/patch/PatchNode.h Diff File
mod - radiantcore/patch/PatchRenderables.cpp Diff File
mod - radiantcore/patch/PatchRenderables.h Diff File
mod - radiantcore/rendersystem/backend/OpenGLShader.cpp Diff File
mod - radiantcore/rendersystem/backend/OpenGLShader.h Diff File
mod - radiantcore/rendersystem/backend/SurfaceRenderer.h Diff File

DarkRadiant: renderer 54524a9d

2021-11-19 11:40:32

greebo

Details Diff
0005584: Remove unused RenderableAABB class Affected Issues
0005584
mod - radiant/CMakeLists.txt Diff File
rm - radiant/ui/common/RenderableAABB.cpp Diff File
rm - radiant/ui/common/RenderableAABB.h Diff File
mod - tools/msvc/DarkRadiant.vcxproj Diff File
mod - tools/msvc/DarkRadiant.vcxproj.filters Diff File

DarkRadiant: renderer cb3ecde5

2021-11-19 16:05:26

greebo

Details Diff
0005584: Remove RenderableWireframe for brushes Affected Issues
0005584
mod - radiantcore/brush/Brush.cpp Diff File
mod - radiantcore/brush/Brush.h Diff File
mod - radiantcore/brush/BrushNode.cpp Diff File
mod - radiantcore/brush/BrushNode.h Diff File
mod - radiantcore/brush/RenderableWireFrame.h Diff File
mod - radiantcore/patch/PatchNode.cpp Diff File
mod - radiantcore/rendersystem/backend/SurfaceRenderer.h Diff File

DarkRadiant: renderer 0dc861d8

2021-11-19 16:37:35

greebo

Details Diff
0005584: Fix crash selecting patches Affected Issues
0005584
mod - radiantcore/rendersystem/backend/SurfaceRenderer.h Diff File

DarkRadiant: renderer 003b1982

2021-11-19 17:29:56

greebo

Details Diff
0005584: Fix selected patches being invisible in orthoview Affected Issues
0005584
mod - radiantcore/patch/PatchNode.cpp Diff File

DarkRadiant: renderer 0dfc4ce4

2021-11-19 17:46:08

greebo

Details Diff
0005584: Fix highlight of ctrl-shift-selected faces Affected Issues
0005584
mod - radiantcore/brush/BrushNode.cpp Diff File

DarkRadiant: renderer 0f03f0ce

2021-11-20 05:06:48

greebo

Details Diff
0005584: Add ability to render a single winding in a certain primitive mode. This is used to render the selected overlay in the cam and orthoviews. Affected Issues
0005584
mod - include/iwindingrenderer.h Diff File
mod - libs/render/CompactWindingVertexBuffer.h Diff File
mod - libs/render/WindingRenderer.h Diff File
mod - radiantcore/brush/BrushNode.cpp Diff File
mod - radiantcore/brush/RenderableWinding.h Diff File
mod - radiantcore/rendersystem/backend/OpenGLShader.cpp Diff File
mod - radiantcore/rendersystem/backend/OpenGLShader.h Diff File

DarkRadiant: renderer 8dd63e8a

2021-11-20 05:16:52

greebo

Details Diff
0005584: Move clip plane rendering to renderHighlights, since it needs the brush to be selected to do anything anyway Affected Issues
0005584
mod - radiantcore/brush/BrushNode.cpp Diff File
mod - radiantcore/brush/BrushNode.h Diff File

DarkRadiant: renderer b87979af

2021-11-20 05:32:39

greebo

Details Diff
0005584: Draw selected brush manipulation vertices in renderHighlights() Affected Issues
0005584
mod - radiantcore/brush/BrushNode.cpp Diff File
mod - radiantcore/brush/BrushNode.h Diff File

DarkRadiant: renderer 6ace83f9

2021-11-20 06:12:23

greebo

Details Diff
0005584: Faces that are culled from the current view should still update their renderable geometry, in case brush vertices are moved such that faces turn "invisible" - leaving their last visible geometry behind. Affected Issues
0005584
mod - radiantcore/brush/BrushNode.cpp Diff File

DarkRadiant: renderer 26635306

2021-11-20 07:31:30

greebo

Details Diff
0005584: Replace the functionality in BrushNode::updateWireframeVisibility with updateFaceCentroidPoints(), it's the only remaining purpose. Affected Issues
0005584
mod - libs/render.h Diff File
mod - radiantcore/brush/BrushNode.cpp Diff File
mod - radiantcore/brush/BrushNode.h Diff File

DarkRadiant: renderer 4937a07e

2021-11-20 08:00:41

greebo

Details Diff
0005584: Deactivate some old code Affected Issues
0005584
mod - radiantcore/brush/BrushNode.cpp Diff File
mod - radiantcore/brush/BrushNode.h Diff File

DarkRadiant: renderer 32ade0e3

2021-11-20 10:29:27

greebo

Details Diff
0005584: Some preparations to hold back winding buffer deletions until the last minute, to be able to re-use deleted slots and to optimise removals of a lot of vertices. Affected Issues
0005584
mod - libs/render/WindingRenderer.h Diff File

DarkRadiant: renderer 734310b7

2021-11-20 14:04:44

greebo

Details Diff
0005584: Implement CompactWindingVertexBuffer::removeWindings to provide a removal algorithm that touches every moved element only once. Affected Issues
0005584
mod - libs/render/CompactWindingVertexBuffer.h Diff File
mod - libs/render/WindingRenderer.h Diff File
mod - test/WindingRendering.cpp Diff File

DarkRadiant: renderer 2268adf1

2021-11-20 16:11:05

greebo

Details Diff
0005584: Part two to complement CompactWindingVertexBuffer::removeWindings in WindingRenderer Affected Issues
0005584
mod - libs/render/WindingRenderer.h Diff File

DarkRadiant: renderer e9b256c9

2021-11-20 16:31:36

greebo

Details Diff
0005584: LayerManager::updateNodeVisibility was altering the eLayered flag for every visited node, even if it turns out to be unnecessary. Don't do that, this triggers massive surface-to-material re-linking. Affected Issues
0005584
mod - radiantcore/layers/LayerManager.cpp Diff File

Issue History

Date Modified Username Field Change
10.04.2021 07:05 greebo New Issue
10.04.2021 07:05 greebo Status new => confirmed
10.04.2021 07:06 greebo Assigned To => greebo
10.04.2021 07:06 greebo Status confirmed => assigned
01.11.2021 08:40 greebo Changeset attached => DarkRadiant renderer 1d054538
01.11.2021 08:40 greebo Changeset attached => DarkRadiant renderer 8dc31253
01.11.2021 08:40 greebo Changeset attached => DarkRadiant renderer 1eee48d4
01.11.2021 08:40 greebo Changeset attached => DarkRadiant renderer a9e77a3b
01.11.2021 20:06 orbweaver Note Added: 0014480
02.11.2021 03:08 greebo Changeset attached => DarkRadiant renderer 4c2e7335
02.11.2021 03:08 greebo Changeset attached => DarkRadiant renderer 5b29f123
02.11.2021 03:08 greebo Changeset attached => DarkRadiant renderer f00364ba
02.11.2021 03:10 greebo Changeset attached => DarkRadiant renderer b2fd9ab2
02.11.2021 03:10 greebo Changeset attached => DarkRadiant renderer 3c324a5f
02.11.2021 03:22 greebo Note Added: 0014484
02.11.2021 03:23 greebo Note Edited: 0014484
07.11.2021 17:58 greebo Changeset attached => DarkRadiant renderer d9ac2aed
07.11.2021 17:58 greebo Changeset attached => DarkRadiant renderer dd9d9b89
07.11.2021 17:58 greebo Changeset attached => DarkRadiant renderer 4e39896a
07.11.2021 17:58 greebo Changeset attached => DarkRadiant renderer e907c442
07.11.2021 17:58 greebo Changeset attached => DarkRadiant renderer 98ae4d24
07.11.2021 17:58 greebo Changeset attached => DarkRadiant renderer 70959f8e
07.11.2021 17:58 greebo Changeset attached => DarkRadiant renderer b435b0b9
07.11.2021 17:58 greebo Changeset attached => DarkRadiant renderer 752b7ee6
07.11.2021 17:58 greebo Changeset attached => DarkRadiant renderer db2f11e1
07.11.2021 17:58 greebo Changeset attached => DarkRadiant renderer 888359b6
07.11.2021 17:58 greebo Changeset attached => DarkRadiant renderer 5233d478
07.11.2021 17:58 greebo Changeset attached => DarkRadiant renderer 4e56b8db
07.11.2021 17:58 greebo Changeset attached => DarkRadiant renderer 97f2834f
07.11.2021 17:58 greebo Changeset attached => DarkRadiant renderer 17147978
07.11.2021 17:58 greebo Changeset attached => DarkRadiant renderer 1b9174fd
07.11.2021 17:58 greebo Changeset attached => DarkRadiant renderer 50117a8b
14.11.2021 05:33 greebo Changeset attached => DarkRadiant renderer c47e4b93
14.11.2021 05:34 greebo Changeset attached => DarkRadiant renderer 5f19f0a3
14.11.2021 05:34 greebo Changeset attached => DarkRadiant renderer 98bde91f
14.11.2021 05:34 greebo Changeset attached => DarkRadiant renderer a8bc5373
14.11.2021 05:34 greebo Changeset attached => DarkRadiant renderer 9fd332ad
14.11.2021 05:34 greebo Changeset attached => DarkRadiant renderer d6e86304
14.11.2021 05:34 greebo Changeset attached => DarkRadiant renderer 4d9bc0d8
14.11.2021 05:34 greebo Changeset attached => DarkRadiant renderer cdafb3ba
14.11.2021 05:34 greebo Changeset attached => DarkRadiant renderer e4bae9c2
14.11.2021 05:34 greebo Changeset attached => DarkRadiant renderer b8deeb58
14.11.2021 05:34 greebo Changeset attached => DarkRadiant renderer 362d05b8
14.11.2021 05:34 greebo Changeset attached => DarkRadiant renderer f0eace1a
14.11.2021 05:34 greebo Changeset attached => DarkRadiant renderer 478dbe88
14.11.2021 05:34 greebo Changeset attached => DarkRadiant renderer b49f9730
14.11.2021 05:34 greebo Changeset attached => DarkRadiant renderer d41a1723
14.11.2021 11:19 greebo Changeset attached => DarkRadiant renderer 1d628688
14.11.2021 18:06 greebo Changeset attached => DarkRadiant renderer e58ce0e0
14.11.2021 18:07 greebo Changeset attached => DarkRadiant renderer fc12d62e
14.11.2021 18:07 greebo Changeset attached => DarkRadiant renderer 6da53669
14.11.2021 18:07 greebo Changeset attached => DarkRadiant renderer f2b4d088
15.11.2021 18:36 greebo Changeset attached => DarkRadiant renderer fe06fe75
15.11.2021 18:36 greebo Changeset attached => DarkRadiant renderer 1eb81918
16.11.2021 17:14 greebo Changeset attached => DarkRadiant renderer 4b4e6b44
18.11.2021 13:01 greebo Changeset attached => DarkRadiant renderer 4fdd914b
18.11.2021 13:01 greebo Changeset attached => DarkRadiant renderer aec7f050
19.11.2021 11:22 greebo Changeset attached => DarkRadiant renderer 8913d75f
19.11.2021 11:22 greebo Changeset attached => DarkRadiant renderer f1320293
19.11.2021 11:22 greebo Changeset attached => DarkRadiant renderer 8b4fbb77
19.11.2021 11:22 greebo Changeset attached => DarkRadiant renderer 9bd6664e
19.11.2021 16:37 greebo Changeset attached => DarkRadiant renderer 54524a9d
19.11.2021 16:37 greebo Changeset attached => DarkRadiant renderer cb3ecde5
19.11.2021 16:37 greebo Changeset attached => DarkRadiant renderer 0dc861d8
19.11.2021 17:30 greebo Changeset attached => DarkRadiant renderer 003b1982
19.11.2021 17:46 greebo Changeset attached => DarkRadiant renderer 0dfc4ce4
20.11.2021 06:12 greebo Changeset attached => DarkRadiant renderer 0f03f0ce
20.11.2021 06:12 greebo Changeset attached => DarkRadiant renderer 8dd63e8a
20.11.2021 06:12 greebo Changeset attached => DarkRadiant renderer b87979af
20.11.2021 06:12 greebo Changeset attached => DarkRadiant renderer 6ace83f9
20.11.2021 16:22 greebo Changeset attached => DarkRadiant renderer 26635306
20.11.2021 16:22 greebo Changeset attached => DarkRadiant renderer 4937a07e
20.11.2021 16:22 greebo Changeset attached => DarkRadiant renderer 32ade0e3
20.11.2021 16:22 greebo Changeset attached => DarkRadiant renderer 734310b7
20.11.2021 16:22 greebo Changeset attached => DarkRadiant renderer 2268adf1
20.11.2021 16:31 greebo Changeset attached => DarkRadiant renderer e9b256c9