From 870db99ec94a1e92aeb563858a77c030f8a059a4 Mon Sep 17 00:00:00 2001 From: Dan Hawson Date: Fri, 27 Oct 2023 11:07:44 +0100 Subject: [PATCH] Mesh exploder New 'Exploded' visualisation mode in BufferViewer with new exploder controls hidden when not in 'Exploded' mode. Change 'solidShading' and 'solidShadeMode' to 'visualisation' and 'visualisationMode'. Hide the 'highlightVerts' widget when using 'Exploded' vis for both real-estate and practical implementation reasons. --- docs/getting_started/quick_start.rst | 2 +- docs/imgs/Screenshots/ExploderBadShoes.png | Bin 0 -> 126566 bytes docs/imgs/Screenshots/ExploderGoodShoes.png | Bin 0 -> 88585 bytes docs/python_api/renderdoc/outputs.rst | 2 +- docs/window/mesh_viewer.rst | 11 +- qrenderdoc/Styles/RDStyle/RDStyle.cpp | 42 +++++ qrenderdoc/Windows/BufferViewer.cpp | 93 +++++++--- qrenderdoc/Windows/BufferViewer.h | 5 +- qrenderdoc/Windows/BufferViewer.ui | 135 +++++++++++++- renderdoc/api/replay/control_types.h | 9 +- renderdoc/api/replay/replay_enums.h | 11 +- renderdoc/data/glsl/glsl_globals.h | 7 +- renderdoc/data/glsl/glsl_ubos.h | 9 +- renderdoc/data/glsl/mesh.frag | 6 + renderdoc/data/glsl/mesh.vert | 69 +++++++- renderdoc/data/hlsl/hlsl_cbuffers.h | 14 +- renderdoc/data/hlsl/mesh.hlsl | 71 ++++++++ renderdoc/driver/d3d11/d3d11_rendermesh.cpp | 42 +++-- renderdoc/driver/d3d12/d3d12_rendermesh.cpp | 58 ++++-- renderdoc/driver/gl/gl_rendermesh.cpp | 47 +++-- renderdoc/driver/vulkan/vk_overlay.cpp | 4 +- renderdoc/driver/vulkan/vk_rendermesh.cpp | 184 ++++++++++---------- util/test/rdtest/shared/Mesh_Zoo.py | 10 +- 23 files changed, 634 insertions(+), 197 deletions(-) create mode 100644 docs/imgs/Screenshots/ExploderBadShoes.png create mode 100644 docs/imgs/Screenshots/ExploderGoodShoes.png diff --git a/docs/getting_started/quick_start.rst b/docs/getting_started/quick_start.rst index ecbf9941bd..714ce6a95a 100644 --- a/docs/getting_started/quick_start.rst +++ b/docs/getting_started/quick_start.rst @@ -184,7 +184,7 @@ More details can be found on the :doc:`../window/mesh_viewer` page. Mesh Viewer allows you to inspect the geometry data as it passes through the pipeline. Both raw data in a grid view and 3D inspection is possible. The tabs in the preview window allow you to choose at which part of the pipeline you'd like to visualise the data. -By default the preview shows a wireframe rendering of the mesh, but you can choose solid shading options. This can either be simple shading or use a secondary attribute as color. Right clicking on any column allows you to choose the secondary attribute for rendering. +By default the preview shows a wireframe rendering of the mesh, but you can choose different visualisations. This can either be simple shading, a vertex exploder utility, or using a secondary attribute as color. Right clicking on any column allows you to choose the secondary attribute for rendering. You can also select which attribute is the position, in case either the auto-detection failed or you want to visualise another attribute like texture co-ordinates in 3D space. diff --git a/docs/imgs/Screenshots/ExploderBadShoes.png b/docs/imgs/Screenshots/ExploderBadShoes.png new file mode 100644 index 0000000000000000000000000000000000000000..92b18e1dd0544179e25fb3745977f8ecc649db0d GIT binary patch literal 126566 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 YZCfx_90gzd>*nxkH{H5nBPq~U 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 L`cws@WEu89+-bZN literal 0 HcmV?d00001 diff --git a/docs/imgs/Screenshots/ExploderGoodShoes.png b/docs/imgs/Screenshots/ExploderGoodShoes.png new file mode 100644 index 0000000000000000000000000000000000000000..364375cbc6c171439f24b99d859e9928697341ec GIT binary patch literal 88585 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

85wb5RDiMGbD9n(_)G)Vb|A$i^9P{ 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 literal 0 HcmV?d00001 diff --git a/docs/python_api/renderdoc/outputs.rst b/docs/python_api/renderdoc/outputs.rst index 07b209c1c2..d10d17ada0 100644 --- a/docs/python_api/renderdoc/outputs.rst +++ b/docs/python_api/renderdoc/outputs.rst @@ -61,7 +61,7 @@ Mesh View .. autoclass:: MeshFormat :members: -.. autoclass:: SolidShade +.. autoclass:: Visualisation :members: .. autoclass:: Camera diff --git a/docs/window/mesh_viewer.rst b/docs/window/mesh_viewer.rst index 35057d7c3e..9ea6bb1449 100644 --- a/docs/window/mesh_viewer.rst +++ b/docs/window/mesh_viewer.rst @@ -47,12 +47,21 @@ Page up and Page down will move vertically 'up' and 'down' relative to the camer Mesh Preview ------------ -In the 3D Mesh preview, you have the option to display the mesh with some solid shading modes, not just as a wireframe mesh. When solid shading you can toggle the wireframe on and off. +In the 3D Mesh preview, you have the option to display the mesh with some colored visualisations, not just as a wireframe mesh. When using one of the visualisations, you can toggle the wireframe on and off. * Solid Color simply displays a solid color for each triangle. * Flat Shaded will perform basic flat lighting calculations based on triangle normals to give a better idea of the topology of the mesh. * Secondary will display the selected secondary mesh element. * Meshlet is only relevant when using mesh shaders, and will colourise each meshlet with a different colour. +* Exploded will display a shaded mesh where vertex colors are a function of the vertex index (SV_VertexID or gl_VertexID). This means adjacent primitives that do not share the exact same vertices can be more easily seen by a hard break in coloring. Additionally, a slider allows displacing vertices along an explosion direction by an amount based on the vertex index, which also helps better visualise shared or disjoint vertices and can also help in visualising other mesh problems (e.g. hidden or duplicate vertices/primitives). + +.. figure:: ../imgs/Screenshots/ExploderBadShoes.png + + Exploded: Visualising a mesh with no vertex sharing. + +.. figure:: ../imgs/Screenshots/ExploderGoodShoes.png + + Exploded: Visualising a mesh with widely shared vertices. To select which element will be displayed as secondary, simply right click on the column you would like to use. This can be done on the input and output separately, and 4-component columns have the option to either show RGB as color, or alpha as grayscale. diff --git a/qrenderdoc/Styles/RDStyle/RDStyle.cpp b/qrenderdoc/Styles/RDStyle/RDStyle.cpp index 15a652721e..5d0b262260 100644 --- a/qrenderdoc/Styles/RDStyle/RDStyle.cpp +++ b/qrenderdoc/Styles/RDStyle/RDStyle.cpp @@ -37,6 +37,9 @@ namespace Constants { +static const int SliderHandleHalfWidth = 4; +static const int SliderGrooveHeight = 4; + static const int ButtonMargin = 6; static const int ButtonBorder = 1; @@ -470,6 +473,32 @@ QRect RDStyle::subControlRect(ComplexControl cc, const QStyleOptionComplex *opt, return opt->rect; } + else if(cc == QStyle::CC_Slider) + { + QRect ret = opt->rect; + ret.adjust(1, 1, -1, -1); + if(sc == QStyle::SC_SliderGroove) + { + int toGrooveHeightHalfReduction = (ret.height() - Constants::SliderGrooveHeight) / 2; + ret.adjust(Constants::SliderHandleHalfWidth, toGrooveHeightHalfReduction, + -Constants::SliderHandleHalfWidth, -toGrooveHeightHalfReduction); + } + else if(sc == QStyle::SC_SliderHandle) + { + const QAbstractSlider *slider = qobject_cast(widget); + int sliderMin = slider->minimum(); + int sliderMax = slider->maximum(); + int sliderPos = slider->sliderPosition(); + qreal posUNorm = (qreal)(sliderPos - sliderMin) / (qreal)(sliderMax - sliderMin); + int grooveLeft = ret.left() + Constants::SliderHandleHalfWidth; + int grooveRight = ret.right() - Constants::SliderHandleHalfWidth; + int grooveWidth = grooveRight - grooveLeft; + int sliderX = (int)(posUNorm * (qreal)grooveWidth) + grooveLeft; + ret.setLeft(sliderX - Constants::SliderHandleHalfWidth); + ret.setRight(sliderX + Constants::SliderHandleHalfWidth); + } + return ret; + } else if(cc == QStyle::CC_ComboBox) { QRect rect = opt->rect; @@ -1118,6 +1147,19 @@ void RDStyle::drawComplexControl(ComplexControl control, const QStyleOptionCompl return; } + else if(control == QStyle::CC_Slider) + { + QRect grooveRect = subControlRect(control, opt, QStyle::SC_SliderGroove, widget); + p->drawLine(QLine(grooveRect.x(), grooveRect.y() + grooveRect.height() / 2, grooveRect.right(), + grooveRect.y() + grooveRect.height() / 2)); + + QRect handleRect = subControlRect(control, opt, QStyle::SC_SliderHandle, widget); + QBrush handleBrush = (m_Scheme == Light) ? opt->palette.brush(QPalette::Dark) + : opt->palette.brush(QPalette::Text); + p->fillRect(handleRect, handleBrush); + + return; + } else if(control == QStyle::CC_ComboBox) { const QStyleOptionComboBox *combo = qstyleoption_cast(opt); diff --git a/qrenderdoc/Windows/BufferViewer.cpp b/qrenderdoc/Windows/BufferViewer.cpp index 01f636b063..59b1a5fc7c 100644 --- a/qrenderdoc/Windows/BufferViewer.cpp +++ b/qrenderdoc/Windows/BufferViewer.cpp @@ -2402,6 +2402,7 @@ BufferViewer::BufferViewer(ICaptureContext &ctx, bool meshview, QWidget *parent) memset(&m_Config, 0, sizeof(m_Config)); m_Config.type = MeshDataStage::VSIn; m_Config.wireframeDraw = true; + m_Config.exploderScale = 1.0f; ui->outputTabs->setCurrentIndex(0); m_CurStage = MeshDataStage::VSIn; @@ -2537,10 +2538,11 @@ BufferViewer::BufferViewer(ICaptureContext &ctx, bool meshview, QWidget *parent) configureDrawRange(); - ui->solidShading->clear(); - ui->solidShading->addItems({tr("None"), tr("Solid Colour"), tr("Flat Shaded"), tr("Secondary")}); - ui->solidShading->adjustSize(); - ui->solidShading->setCurrentIndex(0); + ui->visualisation->clear(); + ui->visualisation->addItems( + {tr("None"), tr("Solid Colour"), tr("Flat Shaded"), tr("Secondary"), tr("Exploded")}); + ui->visualisation->adjustSize(); + ui->visualisation->setCurrentIndex(0); ui->matrixType->addItems({tr("Perspective"), tr("Orthographic")}); @@ -2843,7 +2845,7 @@ void BufferViewer::SetupMeshView() BufferItemModel *model = (BufferItemModel *)m_CurView->model(); model->setPosColumn(-1); - model->setSecondaryColumn(-1, m_Config.solidShadeMode == SolidShade::Secondary, false); + model->setSecondaryColumn(-1, m_Config.visualisationMode == Visualisation::Secondary, false); UI_ConfigureFormats(); on_resetCamera_clicked(); @@ -2863,8 +2865,8 @@ void BufferViewer::SetupMeshView() QObject::connect(m_SelectSecondColumn, &QAction::triggered, [this]() { BufferItemModel *model = (BufferItemModel *)m_CurView->model(); - model->setSecondaryColumn(m_ContextColumn, m_Config.solidShadeMode == SolidShade::Secondary, - false); + model->setSecondaryColumn(m_ContextColumn, + m_Config.visualisationMode == Visualisation::Secondary, false); UI_ConfigureFormats(); UpdateCurrentMeshConfig(); @@ -2873,8 +2875,8 @@ void BufferViewer::SetupMeshView() QObject::connect(m_SelectSecondAlphaColumn, &QAction::triggered, [this]() { BufferItemModel *model = (BufferItemModel *)m_CurView->model(); - model->setSecondaryColumn(m_ContextColumn, m_Config.solidShadeMode == SolidShade::Secondary, - true); + model->setSecondaryColumn(m_ContextColumn, + m_Config.visualisationMode == Visualisation::Secondary, true); UI_ConfigureFormats(); UpdateCurrentMeshConfig(); INVOKE_MEMFN(RT_UpdateAndDisplay); @@ -3674,7 +3676,8 @@ void BufferViewer::OnEventChanged(uint32_t eventId) // similarly for secondary columns if(m_ModelIn->secondaryColumn() == -1 || bufdata->highlightNames[1] != bufdata->inConfig.columnName(m_ModelIn->secondaryColumn())) - m_ModelIn->setSecondaryColumn(-1, m_Config.solidShadeMode == SolidShade::Secondary, false); + m_ModelIn->setSecondaryColumn(-1, m_Config.visualisationMode == Visualisation::Secondary, + false); // and as above for VS Out / GS Out if(m_ModelOut1->posColumn() == -1 || @@ -3682,14 +3685,16 @@ void BufferViewer::OnEventChanged(uint32_t eventId) m_ModelOut1->setPosColumn(-1); if(m_ModelOut1->secondaryColumn() == -1 || bufdata->highlightNames[3] != bufdata->out1Config.columnName(m_ModelOut1->secondaryColumn())) - m_ModelOut1->setSecondaryColumn(-1, m_Config.solidShadeMode == SolidShade::Secondary, false); + m_ModelOut1->setSecondaryColumn(-1, m_Config.visualisationMode == Visualisation::Secondary, + false); if(m_ModelOut2->posColumn() == -1 || bufdata->highlightNames[4] != bufdata->out2Config.columnName(m_ModelOut2->posColumn())) m_ModelOut2->setPosColumn(-1); if(m_ModelOut2->secondaryColumn() == -1 || bufdata->highlightNames[5] != bufdata->out2Config.columnName(m_ModelOut2->secondaryColumn())) - m_ModelOut2->setSecondaryColumn(-1, m_Config.solidShadeMode == SolidShade::Secondary, false); + m_ModelOut2->setSecondaryColumn(-1, m_Config.visualisationMode == Visualisation::Secondary, + false); EnableCameraGuessControls(); @@ -5306,9 +5311,9 @@ void BufferViewer::updateLabelsAndLayout() ui->outputTabs->setTabText(0, tr("Mesh Input")); ui->outputTabs->setTabText(1, tr("Mesh Out")); - if(ui->solidShading->itemText(ui->solidShading->count() - 1) != tr("Meshlet")) - ui->solidShading->addItem(tr("Meshlet")); - ui->solidShading->adjustSize(); + if(ui->visualisation->itemText(ui->visualisation->count() - 1) != tr("Meshlet")) + ui->visualisation->addItem(tr("Meshlet")); + ui->visualisation->adjustSize(); } else { @@ -5334,9 +5339,9 @@ void BufferViewer::updateLabelsAndLayout() ui->outputTabs->setTabText(1, tr("VS Out")); ui->outputTabs->setTabText(2, tr("GS/DS Out")); - if(ui->solidShading->itemText(ui->solidShading->count() - 1) == tr("Meshlet")) - ui->solidShading->removeItem(ui->solidShading->count() - 1); - ui->solidShading->adjustSize(); + if(ui->visualisation->itemText(ui->visualisation->count() - 1) == tr("Meshlet")) + ui->visualisation->removeItem(ui->visualisation->count() - 1); + ui->visualisation->adjustSize(); } } else @@ -5363,9 +5368,9 @@ void BufferViewer::updateLabelsAndLayout() ui->outputTabs->setTabText(1, tr("VS Out")); ui->outputTabs->setTabText(2, tr("GS/DS Out")); - if(ui->solidShading->itemText(ui->solidShading->count() - 1) == tr("Meshlet")) - ui->solidShading->removeItem(ui->solidShading->count() - 1); - ui->solidShading->adjustSize(); + if(ui->visualisation->itemText(ui->visualisation->count() - 1) == tr("Meshlet")) + ui->visualisation->removeItem(ui->visualisation->count() - 1); + ui->visualisation->adjustSize(); } } else @@ -6678,7 +6683,7 @@ void BufferViewer::UpdateHighlightVerts() { m_Config.highlightVert = ~0U; - if(!ui->highlightVerts->isChecked()) + if(ui->highlightVerts->isHidden() || !ui->highlightVerts->isChecked()) return; RDTableView *table = currentTable(); @@ -6777,6 +6782,25 @@ void BufferViewer::on_highlightVerts_toggled(bool checked) INVOKE_MEMFN(RT_UpdateAndDisplay); } +void BufferViewer::on_vtxExploderSlider_valueChanged(int value) +{ + m_Config.vtxExploderSliderSNorm = (float)value / 100.0f; + + INVOKE_MEMFN(RT_UpdateAndDisplay); +} + +void BufferViewer::on_exploderReset_clicked() +{ + ui->vtxExploderSlider->setSliderPosition(0); +} + +void BufferViewer::on_exploderScale_valueChanged(double value) +{ + m_Config.exploderScale = (float)value; + + INVOKE_MEMFN(RT_UpdateAndDisplay); +} + void BufferViewer::on_wireframeRender_toggled(bool checked) { m_Config.wireframeDraw = checked; @@ -6784,7 +6808,7 @@ void BufferViewer::on_wireframeRender_toggled(bool checked) INVOKE_MEMFN(RT_UpdateAndDisplay); } -void BufferViewer::on_solidShading_currentIndexChanged(int index) +void BufferViewer::on_visualisation_currentIndexChanged(int index) { ui->wireframeRender->setEnabled(index > 0); @@ -6794,16 +6818,31 @@ void BufferViewer::on_solidShading_currentIndexChanged(int index) m_Config.wireframeDraw = true; } - m_Config.solidShadeMode = (SolidShade)qMax(0, index); + bool explodeHidden = (index != (int)Visualisation::Explode); + ui->vtxExploderLabel->setHidden(explodeHidden); + ui->vtxExploderSlider->setHidden(explodeHidden); + ui->exploderReset->setHidden(explodeHidden); + ui->exploderScaleLabel->setHidden(explodeHidden); + ui->exploderScale->setHidden(explodeHidden); + // Because the vertex/prim highlights draw from a new, temporary vertex buffer, + // those vertex IDs (which determine the explode displacement) won't necessarily + // match the original mesh's IDs and exploded vertices. Because of this, it seems + // cleanest to just avoid drawing the highlighted vert/prim with the explode + // visualisation (while also getting back a little room on the toolbar used by + // the extra exploder controls). + ui->highlightVerts->setHidden(!explodeHidden); + UpdateHighlightVerts(); + + m_Config.visualisationMode = (Visualisation)qMax(0, index); m_ModelIn->setSecondaryColumn(m_ModelIn->secondaryColumn(), - m_Config.solidShadeMode == SolidShade::Secondary, + m_Config.visualisationMode == Visualisation::Secondary, m_ModelIn->secondaryAlpha()); m_ModelOut1->setSecondaryColumn(m_ModelOut1->secondaryColumn(), - m_Config.solidShadeMode == SolidShade::Secondary, + m_Config.visualisationMode == Visualisation::Secondary, m_ModelOut1->secondaryAlpha()); m_ModelOut2->setSecondaryColumn(m_ModelOut2->secondaryColumn(), - m_Config.solidShadeMode == SolidShade::Secondary, + m_Config.visualisationMode == Visualisation::Secondary, m_ModelOut2->secondaryAlpha()); INVOKE_MEMFN(RT_UpdateAndDisplay); diff --git a/qrenderdoc/Windows/BufferViewer.h b/qrenderdoc/Windows/BufferViewer.h index 35069eb10d..b9c58e2594 100644 --- a/qrenderdoc/Windows/BufferViewer.h +++ b/qrenderdoc/Windows/BufferViewer.h @@ -128,8 +128,11 @@ private slots: void on_showPadding_toggled(bool checked); void on_resourceDetails_clicked(); void on_highlightVerts_toggled(bool checked); + void on_vtxExploderSlider_valueChanged(int value); + void on_exploderReset_clicked(); + void on_exploderScale_valueChanged(double value); void on_wireframeRender_toggled(bool checked); - void on_solidShading_currentIndexChanged(int index); + void on_visualisation_currentIndexChanged(int index); void on_drawRange_currentIndexChanged(int index); void on_controlType_currentIndexChanged(int index); void on_camSpeed_valueChanged(double value); diff --git a/qrenderdoc/Windows/BufferViewer.ui b/qrenderdoc/Windows/BufferViewer.ui index 0e2e3b48d2..cab4612acb 100644 --- a/qrenderdoc/Windows/BufferViewer.ui +++ b/qrenderdoc/Windows/BufferViewer.ui @@ -6,8 +6,8 @@ 0 0 - 788 - 537 + 1300 + 837 @@ -307,14 +307,14 @@ - + - Solid Shading + Visualisation - + @@ -382,6 +382,131 @@ + + + + true + + + + 0 + 0 + + + + Exploder + + + + + + + true + + + + 0 + 0 + + + + + 90 + 30 + + + + true + + + Qt::StrongFocus + + + Qt::NoContextMenu + + + Explode vertices + + + slider name + + + slider description + + + true + + + -100 + + + 100 + + + 0 + + + Qt::Horizontal + + + false + + + false + + + QSlider::NoTicks + + + 20 + + + + + + + + 0 + 0 + + + + Reset/zero exploder slider + + + Reset + + + + + + + Scale + + + + + + + Exploder scaling + + + 1 + + + 0.100000000000000 + + + 99.000000000000000 + + + 0.100000000000000 + + + 1.000000000000000 + + + diff --git a/renderdoc/api/replay/control_types.h b/renderdoc/api/replay/control_types.h index 5a01c89a09..0b665c9332 100644 --- a/renderdoc/api/replay/control_types.h +++ b/renderdoc/api/replay/control_types.h @@ -309,10 +309,15 @@ struct MeshDisplay DOCUMENT("``True`` if the bounding box around the mesh should be rendered."); bool showBBox = false; - DOCUMENT("The :class:`solid shading mode ` to use when rendering the current mesh."); - SolidShade solidShadeMode = SolidShade::NoSolid; + DOCUMENT( + "The :class:`visualisation mode ` to use when rendering the current mesh."); + Visualisation visualisationMode = Visualisation::NoSolid; DOCUMENT("``True`` if the wireframe of the mesh should be rendered as well as solid shading."); bool wireframeDraw = true; + DOCUMENT("Displace/explode vertices to help visualise vertex reuse vs disjointedness."); + float vtxExploderSliderSNorm = 0.0f; + DOCUMENT("Scales the exploded vertex displacement."); + float exploderScale = 1.0f; static const uint32_t NoHighlight = ~0U; }; diff --git a/renderdoc/api/replay/replay_enums.h b/renderdoc/api/replay/replay_enums.h index edc604d49a..7316ff91b0 100644 --- a/renderdoc/api/replay/replay_enums.h +++ b/renderdoc/api/replay/replay_enums.h @@ -2895,7 +2895,7 @@ constexpr inline ResourceUsage RWResUsage(ShaderStage stage) return RWResUsage(uint32_t(stage)); } -DOCUMENT(R"(What kind of solid shading to use when rendering a mesh. +DOCUMENT(R"(What kind of visualisation to use when rendering a mesh. .. data:: NoSolid @@ -2913,22 +2913,27 @@ DOCUMENT(R"(What kind of solid shading to use when rendering a mesh. The mesh should be rendered using the secondary element as color. +.. data:: Explode + + The mesh should be rendered with vertices displaced and coloured by vertex ID. + .. data:: Meshlet The mesh should be rendered colorising each meshlet differently. )"); -enum class SolidShade : uint32_t +enum class Visualisation : uint32_t { NoSolid = 0, Solid, Lit, Secondary, + Explode, Meshlet, Count, }; -DECLARE_REFLECTION_ENUM(SolidShade); +DECLARE_REFLECTION_ENUM(Visualisation); DOCUMENT(R"(The fill mode for polygons. diff --git a/renderdoc/data/glsl/glsl_globals.h b/renderdoc/data/glsl/glsl_globals.h index 7ef8610196..b4a9c0af21 100644 --- a/renderdoc/data/glsl/glsl_globals.h +++ b/renderdoc/data/glsl/glsl_globals.h @@ -172,14 +172,15 @@ vec3 CalcCubeCoord(vec2 uv, int face) #endif -// first few match SolidShade enum +// first few match Visualisation enum #define MESHDISPLAY_SOLID 0x1 #define MESHDISPLAY_FACELIT 0x2 #define MESHDISPLAY_SECONDARY 0x3 -#define MESHDISPLAY_MESHLET 0x4 +#define MESHDISPLAY_EXPLODE 0x4 +#define MESHDISPLAY_MESHLET 0x5 // extra values below -#define MESHDISPLAY_SECONDARY_ALPHA 0x5 +#define MESHDISPLAY_SECONDARY_ALPHA 0x6 #define MAX_NUM_MESHLETS (512 * 1024) diff --git a/renderdoc/data/glsl/glsl_ubos.h b/renderdoc/data/glsl/glsl_ubos.h index ddee1b380d..c8399f2720 100644 --- a/renderdoc/data/glsl/glsl_ubos.h +++ b/renderdoc/data/glsl/glsl_ubos.h @@ -35,12 +35,19 @@ BINDING(0) uniform MeshUBOData mat4 mvp; mat4 invProj; vec4 color; + int displayFormat; uint homogenousInput; vec2 pointSpriteSize; + uint rawoutput; uint flipY; - vec2 padding; + float vtxExploderSNorm; + float exploderScale; + + vec3 exploderCentre; + float padding; + uvec4 meshletColours[12]; } INST_NAME(Mesh); diff --git a/renderdoc/data/glsl/mesh.frag b/renderdoc/data/glsl/mesh.frag index 4afd34702a..12050d353c 100644 --- a/renderdoc/data/glsl/mesh.frag +++ b/renderdoc/data/glsl/mesh.frag @@ -60,6 +60,12 @@ void main(void) color_out = vec4(Mesh.color.xyz * abs(dot(lightDir, NORM_NAME.xyz)), 1); } + else if(type == MESHDISPLAY_EXPLODE) + { + vec3 lightDir = normalize(vec3(0, -0.3f, -1)); + + color_out = vec4(SECONDARY_NAME.xyz * abs(dot(lightDir, NORM_NAME.xyz)), 1); + } else // if(type == MESHDISPLAY_SOLID) { color_out = vec4(Mesh.color.xyz, 1); diff --git a/renderdoc/data/glsl/mesh.vert b/renderdoc/data/glsl/mesh.vert index 5d29c30f19..aec9432cfd 100644 --- a/renderdoc/data/glsl/mesh.vert +++ b/renderdoc/data/glsl/mesh.vert @@ -36,6 +36,70 @@ #define SECONDARY_TYPE vec4 #endif +// This function is mostly duplicated between 'mesh.hlsl' and 'mesh.vert'. +// Without a convenient shared common source, changes to one should be +// reflected in the other. +void vtxExploder(in int vtxID, inout vec3 pos, inout vec3 secondary) +{ + if(Mesh.exploderScale > 0.0f) + { + float nonLinearVtxExplodeScale = 4.0f * Mesh.exploderScale * Mesh.vtxExploderSNorm * + Mesh.vtxExploderSNorm * Mesh.vtxExploderSNorm; + + // A vertex might be coincident with our 'exploderCentre' so that, when normalized, + // can give us INFs/NaNs that, even if multiplied by a zero 'exploderScale', can + // leave us with bad numbers (as seems to be the case with glsl/vulkan, but not hlsl). + // Still, we should make this case safe for when we have a non-zero 'exploderScale' - + vec3 offset = pos - Mesh.exploderCentre; + float offsetDistSquared = dot(offset, offset); + vec3 safeExplodeDir = offset * inversesqrt(max(offsetDistSquared, FLT_EPSILON)); + + float displacement = + nonLinearVtxExplodeScale * ((float((vtxID >> 1) & 0xf) / 15.0f) * 1.5f - 0.5f); + pos += (safeExplodeDir * displacement); + + // For the exploder visualisation, colour verts based on vertex ID, which we + // store in secondary. + // + // Interpolate a colour gradient from 0.0 to 1.0 and back to 0.0 for vertex IDs + // 0 to 16 to 32 respectively - + // 1 - | .`. + // | .` `. + // | .` | `. + // 0.5-| .` `. + // | .` | `. . + // |.` `. .` + // 0.0-+-----------+-----------+--- vtx IDs + // 0 16 32 + + float vtxIDMod32Div16 = float(vtxID % 32) / 16.0f; // 0: 0.0 16: 1.0 31: 1.94 + float descending = floor(vtxIDMod32Div16); // 0..15: 0.0 16..31: 1.0 + float gradientVal = abs(vtxIDMod32Div16 - (2.0f * descending)); // 0.0..1.0 + + // Use a hopefully fairly intuitive temperature gradient scheme to help visualise + // contiguous/nearby sequences of vertices, which should also show up breaks in + // colour where verts aren't shared between adjacent primitives. + const vec3 gradientColours[5] = + vec3[](vec3(0.004f, 0.002f, 0.025f), // 0.0..0.25: Dark blue + vec3(0.305f, 0.001f, 0.337f), // 0.25..0.5: Purple + vec3(0.665f, 0.033f, 0.133f), // 0.5..0.75: Purple orange + vec3(1.000f, 0.468f, 0.000f), // 0.75..1.0: Orange + vec3(1.000f, 1.000f, 1.000f) // 1.0: White + ); + + uint gradientSectionStartIdx = uint(gradientVal * 4.0f); + uint gradientSectionEndIdx = min(gradientSectionStartIdx + 1u, 4u); + vec3 gradSectionStartCol = gradientColours[gradientSectionStartIdx]; + vec3 gradSectionEndCol = gradientColours[gradientSectionEndIdx]; + + float sectionLerp = gradientVal - float(gradientSectionStartIdx) * 0.25f; + vec3 gradCol = mix(gradientColours[gradientSectionStartIdx], + gradientColours[gradientSectionEndIdx], sectionLerp); + + secondary = gradCol; + } +} + IO_LOCATION(0) in POSITION_TYPE vsin_position; IO_LOCATION(1) in SECONDARY_TYPE vsin_secondary; @@ -111,6 +175,9 @@ void main(void) vec2[](vec2(-1.0f, -1.0f), vec2(-1.0f, 1.0f), vec2(1.0f, -1.0f), vec2(1.0f, 1.0f)); vec4 pos = vec4(vsin_position); + vec4 secondary = vec4(vsin_secondary); + vtxExploder(VERTEX_ID, pos.xyz, secondary.xyz); + if(Mesh.homogenousInput == 0u) { pos = vec4(pos.xyz, 1); @@ -124,7 +191,7 @@ void main(void) gl_Position = Mesh.mvp * pos; gl_Position.xy += Mesh.pointSpriteSize.xy * 0.01f * psprite[VERTEX_ID % 4] * gl_Position.w; - vsout_secondary = vec4(vsin_secondary); + vsout_secondary = vec4(secondary); vsout_norm = vec4(0, 0, 1, 1); #ifdef VULKAN diff --git a/renderdoc/data/hlsl/hlsl_cbuffers.h b/renderdoc/data/hlsl/hlsl_cbuffers.h index 0e7d32d03b..90cbda75dd 100644 --- a/renderdoc/data/hlsl/hlsl_cbuffers.h +++ b/renderdoc/data/hlsl/hlsl_cbuffers.h @@ -107,12 +107,15 @@ cbuffer MeshVertexCBuffer REG(b0) float2 SpriteSize; uint homogenousInput; - uint vertMeshDisplayFormat; + float vtxExploderSNorm; + + float3 exploderCentre; + float exploderScale; // Non-zero values imply use of the exploder visualisation. + uint vertMeshDisplayFormat; uint meshletOffset; uint meshletCount; uint padding1; - uint padding2; uint4 meshletColours[12]; }; @@ -250,14 +253,15 @@ cbuffer DebugSampleOperation REG(b0) #define RESTYPE_DEPTH_STENCIL_MS 0x7 #define RESTYPE_TEX2D_MS 0x9 -// first few match SolidShade enum +// first few match Visualisation enum #define MESHDISPLAY_SOLID 0x1 #define MESHDISPLAY_FACELIT 0x2 #define MESHDISPLAY_SECONDARY 0x3 -#define MESHDISPLAY_MESHLET 0x4 +#define MESHDISPLAY_EXPLODE 0x4 +#define MESHDISPLAY_MESHLET 0x5 // extra values below -#define MESHDISPLAY_SECONDARY_ALPHA 0x5 +#define MESHDISPLAY_SECONDARY_ALPHA 0x6 #define MAX_NUM_MESHLETS (512 * 1024) diff --git a/renderdoc/data/hlsl/mesh.hlsl b/renderdoc/data/hlsl/mesh.hlsl index 9da7b5def2..19eba41af7 100644 --- a/renderdoc/data/hlsl/mesh.hlsl +++ b/renderdoc/data/hlsl/mesh.hlsl @@ -37,6 +37,70 @@ struct meshA2V float4 secondary : sec; }; +// This function is mostly duplicated between 'mesh.hlsl' and 'mesh.vert'. +// Without a convenient shared common source, changes to one should be +// reflected in the other. +void vtxExploder(in uint vtxID, inout float3 pos, inout float3 secondary) +{ + if(exploderScale > 0.0f) + { + float nonLinearVtxExplodeScale = + 4.0f * exploderScale * vtxExploderSNorm * vtxExploderSNorm * vtxExploderSNorm; + + // A vertex might be coincident with our 'exploderCentre' so that, when normalized, + // can give us INFs/NaNs that, even if multiplied by a zero 'exploderScale', can + // leave us with bad numbers (as seems to be the case with glsl/vulkan, but not hlsl). + // Still, we should make this case safe for when we have a non-zero 'exploderScale' - + float3 offset = pos - exploderCentre; + float offsetDistSquared = dot(offset, offset); + float3 safeExplodeDir = offset * rsqrt(max(offsetDistSquared, FLT_EPSILON)); + + float displacement = + nonLinearVtxExplodeScale * ((float((vtxID >> 1u) & 0xfu) / 15.0f) * 1.5f - 0.5f); + pos += (safeExplodeDir * displacement); + + // For the exploder visualisation, colour verts based on vertex ID, which we + // store in secondary. + // + // Interpolate a colour gradient from 0.0 to 1.0 and back to 0.0 for vertex IDs + // 0 to 16 to 32 respectively - + // 1 - | .`. + // | .` `. + // | .` | `. + // 0.5-| .` `. + // | .` | `. . + // |.` `. .` + // 0.0-+-----------+-----------+--- vtx IDs + // 0 16 32 + + float vtxIDMod32Div16 = (float)(vtxID % 32u) / 16.0f; // 0: 0.0 16: 1.0 31: 1.94 + float descending = floor(vtxIDMod32Div16); // 0..15: 0.0 16..31: 1.0 + float gradientVal = abs(vtxIDMod32Div16 - (2.0f * descending)); // 0.0..1.0 + + // Use a hopefully fairly intuitive temperature gradient scheme to help visualise + // contiguous/nearby sequences of vertices, which should also show up breaks in + // colour where verts aren't shared between adjacent primitives. + const float3 gradientColours[5] = { + float3(0.004f, 0.002f, 0.025f), // 0.0..0.25: Dark blue + float3(0.305f, 0.001f, 0.337f), // 0.25..0.5: Purple + float3(0.665f, 0.033f, 0.133f), // 0.5..0.75: Purple orange + float3(1.000f, 0.468f, 0.000f), // 0.75..1.0: Orange + float3(1.000f, 1.000f, 1.000f) // 1.0: White + }; + + uint gradientSectionStartIdx = (uint)(gradientVal * 4.0f); + uint gradientSectionEndIdx = min(gradientSectionStartIdx + 1u, 4u); + float3 gradSectionStartCol = gradientColours[gradientSectionStartIdx]; + float3 gradSectionEndCol = gradientColours[gradientSectionEndIdx]; + + float sectionLerp = gradientVal - (float)gradientSectionStartIdx * 0.25f; + float3 gradCol = lerp(gradientColours[gradientSectionStartIdx], + gradientColours[gradientSectionEndIdx], sectionLerp); + + secondary = gradCol; + } +} + StructuredBuffer meshletSizesBuf : register(t0); float4 unpackUnorm4x8(uint value) @@ -118,6 +182,7 @@ meshV2F RENDERDOC_MeshVS(meshA2V IN, uint vid : SV_VertexID) float2(1.0f, 1.0f)}; float4 pos = IN.pos; + vtxExploder(vid, pos.xyz, IN.secondary.xyz); if(homogenousInput == 0u) { @@ -214,6 +279,12 @@ float4 RENDERDOC_MeshPS(meshV2F IN) return float4(MeshColour.xyz * abs(dot(lightDir, IN.norm)), 1); } + else if(type == MESHDISPLAY_EXPLODE) + { + float3 lightDir = normalize(float3(0, -0.3f, -1)); + + return float4(IN.secondary.xyz * abs(dot(lightDir, IN.norm)), 1); + } else // if(type == MESHDISPLAY_SOLID) return float4(MeshColour.xyz, 1); } diff --git a/renderdoc/driver/d3d11/d3d11_rendermesh.cpp b/renderdoc/driver/d3d11/d3d11_rendermesh.cpp index 1e6085f4aa..9e0c63562d 100644 --- a/renderdoc/driver/d3d11/d3d11_rendermesh.cpp +++ b/renderdoc/driver/d3d11/d3d11_rendermesh.cpp @@ -33,6 +33,19 @@ #include "data/hlsl/hlsl_cbuffers.h" +static uint32_t VisModeToMeshDisplayFormat(const MeshDisplay &cfg) +{ + switch(cfg.visualisationMode) + { + default: return (uint32_t)cfg.visualisationMode; + case Visualisation::Secondary: + return cfg.second.showAlpha ? MESHDISPLAY_SECONDARY_ALPHA : MESHDISPLAY_SECONDARY; + case Visualisation::Meshlet: + RDCERR("D3D11 does not support meshlet rendering"); + return MESHDISPLAY_SOLID; + } +} + void D3D11Replay::RenderMesh(uint32_t eventId, const rdcarray &secondaryDraws, const MeshDisplay &cfg) { @@ -58,6 +71,12 @@ void D3D11Replay::RenderMesh(uint32_t eventId, const rdcarray &secon vertexData.ModelViewProj = projMat.Mul(camMat.Mul(axisMapMat)); vertexData.SpriteSize = Vec2f(); vertexData.homogenousInput = cfg.position.unproject; + vertexData.vtxExploderSNorm = cfg.vtxExploderSliderSNorm; + vertexData.exploderCentre = + Vec3f((cfg.minBounds.x + cfg.maxBounds.x) * 0.5f, (cfg.minBounds.y + cfg.maxBounds.y) * 0.5f, + (cfg.minBounds.z + cfg.maxBounds.z) * 0.5f); + vertexData.exploderScale = + (cfg.visualisationMode == Visualisation::Explode) ? cfg.exploderScale : 0.0f; Vec4f col(0.0f, 0.0f, 0.0f, 1.0f); ID3D11Buffer *psCBuf = GetDebugManager()->MakeCBuffer(&col, sizeof(col)); @@ -260,27 +279,21 @@ void D3D11Replay::RenderMesh(uint32_t eventId, const rdcarray &secon m_pImmediateContext->IASetIndexBuffer(NULL, DXGI_FORMAT_UNKNOWN, NULL); // draw solid shaded mode - if(cfg.solidShadeMode != SolidShade::NoSolid && cfg.position.topology < Topology::PatchList_1CPs) + if(cfg.visualisationMode != Visualisation::NoSolid && + cfg.position.topology < Topology::PatchList_1CPs) { m_pImmediateContext->RSSetState(m_General.RasterState); m_pImmediateContext->IASetPrimitiveTopology(topo); - pixelData.MeshDisplayFormat = (int)cfg.solidShadeMode; - if(cfg.solidShadeMode == SolidShade::Meshlet) - { - RDCERR("D3D11 does not support mesh rendering"); - pixelData.MeshDisplayFormat = (int)SolidShade::Solid; - } - - if(cfg.solidShadeMode == SolidShade::Secondary && cfg.second.showAlpha) - pixelData.MeshDisplayFormat = MESHDISPLAY_SECONDARY_ALPHA; + pixelData.MeshDisplayFormat = VisModeToMeshDisplayFormat(cfg); pixelData.MeshColour = Vec3f(0.8f, 0.8f, 0.0f); GetDebugManager()->FillCBuffer(psCBuf, &pixelData, sizeof(pixelData)); m_pImmediateContext->PSSetConstantBuffers(0, 1, &psCBuf); - if(cfg.solidShadeMode == SolidShade::Lit) + if(cfg.visualisationMode == Visualisation::Lit || + cfg.visualisationMode == Visualisation::Explode) { MeshGeometryCBuffer geomData; @@ -298,12 +311,13 @@ void D3D11Replay::RenderMesh(uint32_t eventId, const rdcarray &secon else m_pImmediateContext->Draw(cfg.position.numIndices, 0); - if(cfg.solidShadeMode == SolidShade::Lit) + if(cfg.visualisationMode == Visualisation::Lit || + cfg.visualisationMode == Visualisation::Explode) m_pImmediateContext->GSSetShader(NULL, NULL, 0); } // draw wireframe mode - if(cfg.solidShadeMode == SolidShade::NoSolid || cfg.wireframeDraw || + if(cfg.visualisationMode == Visualisation::NoSolid || cfg.wireframeDraw || cfg.position.topology >= Topology::PatchList_1CPs) { m_pImmediateContext->RSSetState(m_MeshRender.WireframeRasterState); @@ -335,6 +349,8 @@ void D3D11Replay::RenderMesh(uint32_t eventId, const rdcarray &secon // set up state for drawing helpers { vertexData.ModelViewProj = projMat.Mul(camMat.Mul(axisMapMat)); + vertexData.vtxExploderSNorm = 0.0f; + vertexData.exploderScale = 0.0f; GetDebugManager()->FillCBuffer(vsCBuf, &vertexData, sizeof(vertexData)); m_pImmediateContext->RSSetState(m_MeshRender.SolidRasterState); diff --git a/renderdoc/driver/d3d12/d3d12_rendermesh.cpp b/renderdoc/driver/d3d12/d3d12_rendermesh.cpp index fb27983dd8..ee0bd99029 100644 --- a/renderdoc/driver/d3d12/d3d12_rendermesh.cpp +++ b/renderdoc/driver/d3d12/d3d12_rendermesh.cpp @@ -38,6 +38,16 @@ RDOC_EXTERN_CONFIG(bool, D3D12_Debug_SingleSubmitFlushing); +static uint32_t VisModeToMeshDisplayFormat(const MeshDisplay &cfg) +{ + switch(cfg.visualisationMode) + { + default: return (uint32_t)cfg.visualisationMode; + case Visualisation::Secondary: + return cfg.second.showAlpha ? MESHDISPLAY_SECONDARY_ALPHA : MESHDISPLAY_SECONDARY; + } +} + MeshDisplayPipelines D3D12DebugManager::CacheMeshDisplayPipelines(const MeshFormat &primary, const MeshFormat &secondary) { @@ -93,7 +103,7 @@ MeshDisplayPipelines D3D12DebugManager::CacheMeshDisplayPipelines(const MeshForm MeshDisplayPipelines &cache = m_CachedMeshPipelines[key]; - if(cache.pipes[(uint32_t)SolidShade::NoSolid] != NULL) + if(cache.pipes[(uint32_t)Visualisation::NoSolid] != NULL) return cache; cache.rootsig = m_MeshRootSig; @@ -276,6 +286,12 @@ void D3D12Replay::RenderMesh(uint32_t eventId, const rdcarray &secon vertexData.ModelViewProj = projMat.Mul(camMat.Mul(axisMapMat)); vertexData.SpriteSize = Vec2f(); vertexData.homogenousInput = cfg.position.unproject; + vertexData.vtxExploderSNorm = cfg.vtxExploderSliderSNorm; + vertexData.exploderCentre = + Vec3f((cfg.minBounds.x + cfg.maxBounds.x) * 0.5f, (cfg.minBounds.y + cfg.maxBounds.y) * 0.5f, + (cfg.minBounds.z + cfg.maxBounds.z) * 0.5f); + vertexData.exploderScale = + (cfg.visualisationMode == Visualisation::Explode) ? cfg.exploderScale : 0.0f; vertexData.vertMeshDisplayFormat = MESHDISPLAY_SOLID; MeshPixelCBuffer pixelData; @@ -425,13 +441,13 @@ void D3D12Replay::RenderMesh(uint32_t eventId, const rdcarray &secon list->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_POINTLIST); } - SolidShade solidShadeMode = cfg.solidShadeMode; - // can't support secondary shading without a buffer - no pipeline will have been created - if(solidShadeMode == SolidShade::Secondary && cfg.second.vertexResourceId == ResourceId()) - solidShadeMode = SolidShade::NoSolid; + const Visualisation finalVisualisation = (cfg.visualisationMode == Visualisation::Secondary && + cfg.second.vertexResourceId == ResourceId()) + ? Visualisation::NoSolid + : cfg.visualisationMode; - if(solidShadeMode == SolidShade::Secondary) + if(finalVisualisation == Visualisation::Secondary) { D3D12MarkerRegion::Set(list, "Secondary"); @@ -454,28 +470,32 @@ void D3D12Replay::RenderMesh(uint32_t eventId, const rdcarray &secon } // solid render - if(solidShadeMode != SolidShade::NoSolid && cfg.position.topology < Topology::PatchList) + if(finalVisualisation != Visualisation::NoSolid && cfg.position.topology < Topology::PatchList) { D3D12MarkerRegion region(list, "Solid render"); ID3D12PipelineState *pipe = NULL; - switch(solidShadeMode) + switch(finalVisualisation) { default: - case SolidShade::Solid: pipe = cache.pipes[MeshDisplayPipelines::ePipe_SolidDepth]; break; - case SolidShade::Lit: + case Visualisation::Solid: pipe = cache.pipes[MeshDisplayPipelines::ePipe_SolidDepth]; break; + case Visualisation::Lit: + case Visualisation::Explode: pipe = cache.pipes[MeshDisplayPipelines::ePipe_Lit]; // point list topologies don't have lighting obvious, just render them as solid if(!pipe) pipe = cache.pipes[MeshDisplayPipelines::ePipe_SolidDepth]; break; - case SolidShade::Secondary: pipe = cache.pipes[MeshDisplayPipelines::ePipe_Secondary]; break; - case SolidShade::Meshlet: pipe = cache.pipes[MeshDisplayPipelines::ePipe_SolidDepth]; break; + case Visualisation::Secondary: + pipe = cache.pipes[MeshDisplayPipelines::ePipe_Secondary]; + break; + case Visualisation::Meshlet: + pipe = cache.pipes[MeshDisplayPipelines::ePipe_SolidDepth]; + break; } - pixelData.MeshDisplayFormat = (int)cfg.solidShadeMode; - if(cfg.solidShadeMode == SolidShade::Secondary && cfg.second.showAlpha) - pixelData.MeshDisplayFormat = MESHDISPLAY_SECONDARY_ALPHA; + pixelData.MeshDisplayFormat = VisModeToMeshDisplayFormat(cfg); + pixelData.MeshColour = Vec3f(0.8f, 0.8f, 0.0f); list->SetPipelineState(pipe); @@ -483,7 +503,7 @@ void D3D12Replay::RenderMesh(uint32_t eventId, const rdcarray &secon size_t numMeshlets = RDCMIN(cfg.position.meshletSizes.size(), (size_t)MAX_NUM_MESHLETS); - if(cfg.solidShadeMode == SolidShade::Meshlet) + if(finalVisualisation == Visualisation::Meshlet) { vertexData.meshletCount = (uint32_t)numMeshlets; vertexData.meshletOffset = (uint32_t)cfg.position.meshletOffset; @@ -496,7 +516,7 @@ void D3D12Replay::RenderMesh(uint32_t eventId, const rdcarray &secon list->SetGraphicsRootConstantBufferView(0, vsCBSolid); - if(solidShadeMode == SolidShade::Lit) + if(finalVisualisation == Visualisation::Lit || finalVisualisation == Visualisation::Explode) { MeshGeometryCBuffer geomData; geomData.InvProj = projMat.Inverse(); @@ -540,7 +560,7 @@ void D3D12Replay::RenderMesh(uint32_t eventId, const rdcarray &secon } // wireframe render - if(solidShadeMode == SolidShade::NoSolid || cfg.wireframeDraw || + if(finalVisualisation == Visualisation::NoSolid || cfg.wireframeDraw || cfg.position.topology >= Topology::PatchList) { D3D12MarkerRegion region(list, "Wireframe render"); @@ -603,6 +623,8 @@ void D3D12Replay::RenderMesh(uint32_t eventId, const rdcarray &secon pixelData.MeshDisplayFormat = MESHDISPLAY_SOLID; vertexData.homogenousInput = 0U; + vertexData.vtxExploderSNorm = 0.0f; + vertexData.exploderScale = 0.0f; vsCB = GetDebugManager()->UploadConstants(&vertexData, sizeof(vertexData)); diff --git a/renderdoc/driver/gl/gl_rendermesh.cpp b/renderdoc/driver/gl/gl_rendermesh.cpp index ed4efcb024..a017fdfc61 100644 --- a/renderdoc/driver/gl/gl_rendermesh.cpp +++ b/renderdoc/driver/gl/gl_rendermesh.cpp @@ -33,6 +33,16 @@ #define OPENGL 1 #include "data/glsl/glsl_ubos_cpp.h" +static int VisModeToMeshDisplayFormat(const MeshDisplay &cfg) +{ + switch(cfg.visualisationMode) + { + default: return (int)cfg.visualisationMode; + case Visualisation::Secondary: + return cfg.second.showAlpha ? MESHDISPLAY_SECONDARY_ALPHA : MESHDISPLAY_SECONDARY; + } +} + void GLReplay::RenderMesh(uint32_t eventId, const rdcarray &secondaryDraws, const MeshDisplay &cfg) { @@ -113,6 +123,12 @@ void GLReplay::RenderMesh(uint32_t eventId, const rdcarray &secondar uboParams.mvp = ModelViewProj; uboParams.homogenousInput = cfg.position.unproject; uboParams.pointSpriteSize = Vec2f(0.0f, 0.0f); + uboParams.vtxExploderSNorm = cfg.vtxExploderSliderSNorm; + uboParams.exploderScale = + (cfg.visualisationMode == Visualisation::Explode) ? cfg.exploderScale : 0.0f; + uboParams.exploderCentre = + Vec3f((cfg.minBounds.x + cfg.maxBounds.x) * 0.5f, (cfg.minBounds.y + cfg.maxBounds.y) * 0.5f, + (cfg.minBounds.z + cfg.maxBounds.z) * 0.5f); if(!secondaryDraws.empty()) { @@ -333,13 +349,15 @@ void GLReplay::RenderMesh(uint32_t eventId, const rdcarray &secondar drv.glEnable(eGL_DEPTH_TEST); // solid render - if(cfg.solidShadeMode != SolidShade::NoSolid && topo != eGL_PATCHES) + if(cfg.visualisationMode != Visualisation::NoSolid && topo != eGL_PATCHES) { drv.glDepthFunc(eGL_LESS); GLuint solidProg = prog; - if(cfg.solidShadeMode == SolidShade::Lit && DebugData.meshgsProg[0]) + if((cfg.visualisationMode == Visualisation::Lit || + cfg.visualisationMode == Visualisation::Explode) && + DebugData.meshgsProg[0]) { // pick program with GS for per-face lighting solidProg = DebugData.meshgsProg[progidx]; @@ -363,18 +381,11 @@ void GLReplay::RenderMesh(uint32_t eventId, const rdcarray &secondar return; } - soliddata->mvp = ModelViewProj; - soliddata->pointSpriteSize = Vec2f(0.0f, 0.0f); - soliddata->homogenousInput = cfg.position.unproject; - - soliddata->color = Vec4f(0.8f, 0.8f, 0.0f, 1.0f); + uboParams.color = Vec4f(0.8f, 0.8f, 0.0f, 1.0f); + uboParams.displayFormat = VisModeToMeshDisplayFormat(cfg); + *soliddata = uboParams; - uint32_t OutputDisplayFormat = (uint32_t)cfg.solidShadeMode; - if(cfg.solidShadeMode == SolidShade::Secondary && cfg.second.showAlpha) - OutputDisplayFormat = MESHDISPLAY_SECONDARY_ALPHA; - soliddata->displayFormat = OutputDisplayFormat; - - if(cfg.solidShadeMode == SolidShade::Lit) + if(cfg.visualisationMode == Visualisation::Lit || cfg.visualisationMode == Visualisation::Explode) soliddata->invProj = projMat.Inverse(); drv.glUnmapBuffer(eGL_UNIFORM_BUFFER); @@ -417,14 +428,14 @@ void GLReplay::RenderMesh(uint32_t eventId, const rdcarray &secondar drv.glDepthFunc(eGL_ALWAYS); + uboParams.displayFormat = MESHDISPLAY_SOLID; + // wireframe render - if(cfg.solidShadeMode == SolidShade::NoSolid || cfg.wireframeDraw || topo == eGL_PATCHES) + if(cfg.visualisationMode == Visualisation::NoSolid || cfg.wireframeDraw || topo == eGL_PATCHES) { uboParams.color = Vec4f(cfg.position.meshColor.x, cfg.position.meshColor.y, cfg.position.meshColor.z, cfg.position.meshColor.w); - uboParams.displayFormat = MESHDISPLAY_SOLID; - if(!IsGLES) drv.glPolygonMode(eGL_FRONT_AND_BACK, eGL_LINE); @@ -469,6 +480,10 @@ void GLReplay::RenderMesh(uint32_t eventId, const rdcarray &secondar // helpers always use basic float-input program drv.glUseProgram(DebugData.meshProg[0]); + uboParams.vtxExploderSNorm = 0.0f; + uboParams.exploderScale = 0.0f; + uboParams.exploderCentre = Vec3f(); + if(cfg.showBBox) { Vec4f a = Vec4f(cfg.minBounds.x, cfg.minBounds.y, cfg.minBounds.z, cfg.minBounds.w); diff --git a/renderdoc/driver/vulkan/vk_overlay.cpp b/renderdoc/driver/vulkan/vk_overlay.cpp index 0eddfe3872..278c2f2756 100644 --- a/renderdoc/driver/vulkan/vk_overlay.cpp +++ b/renderdoc/driver/vulkan/vk_overlay.cpp @@ -2732,7 +2732,9 @@ ResourceId VulkanReplay::RenderOverlay(ResourceId texid, FloatVector clearCol, D data->displayFormat = 0; data->rawoutput = 1; data->flipY = 0; - data->padding = Vec2f(); + data->vtxExploderSNorm = 0.0f; + data->exploderScale = 0.0f; + data->exploderCentre = Vec3f(); m_MeshRender.UBO.Unmap(); uint32_t viewOffs = 0; diff --git a/renderdoc/driver/vulkan/vk_rendermesh.cpp b/renderdoc/driver/vulkan/vk_rendermesh.cpp index 7df16e4013..1c18077ad0 100644 --- a/renderdoc/driver/vulkan/vk_rendermesh.cpp +++ b/renderdoc/driver/vulkan/vk_rendermesh.cpp @@ -37,6 +37,16 @@ RDOC_EXTERN_CONFIG(bool, Vulkan_Debug_SingleSubmitFlushing); +static int VisModeToMeshDisplayFormat(Visualisation vis, bool showAlpha) +{ + switch(vis) + { + default: return (int)vis; + case Visualisation::Secondary: + return showAlpha ? MESHDISPLAY_SECONDARY_ALPHA : MESHDISPLAY_SECONDARY; + } +} + VKMeshDisplayPipelines VulkanDebugManager::CacheMeshDisplayPipelines(VkPipelineLayout pipeLayout, const MeshFormat &primary, const MeshFormat &secondary) @@ -138,7 +148,7 @@ VKMeshDisplayPipelines VulkanDebugManager::CacheMeshDisplayPipelines(VkPipelineL VKMeshDisplayPipelines &cache = m_CachedMeshPipelines[key]; - if(cache.pipes[(uint32_t)SolidShade::NoSolid] != VK_NULL_HANDLE) + if(cache.pipes[(uint32_t)Visualisation::NoSolid] != VK_NULL_HANDLE) return cache; const VkDevDispatchTable *vt = ObjDisp(m_Device); @@ -526,6 +536,25 @@ void VulkanReplay::RenderMesh(uint32_t eventId, const rdcarray &seco ModelViewProj = projMat.Mul(camMat.Mul(guessProjInv)); } + // can't support secondary shading without a buffer - no pipeline will have been created + const Visualisation finalVisualisation = (cfg.visualisationMode == Visualisation::Secondary && + cfg.second.vertexResourceId == ResourceId()) + ? Visualisation::NoSolid + : cfg.visualisationMode; + + MeshUBOData meshUniforms = {}; + meshUniforms.mvp = ModelViewProj; + meshUniforms.displayFormat = MESHDISPLAY_SOLID; + meshUniforms.homogenousInput = cfg.position.unproject; + meshUniforms.pointSpriteSize = Vec2f(0.0f, 0.0f); + meshUniforms.rawoutput = 0; + meshUniforms.vtxExploderSNorm = cfg.vtxExploderSliderSNorm; + meshUniforms.exploderScale = + (finalVisualisation == Visualisation::Explode) ? cfg.exploderScale : 0.0f; + meshUniforms.exploderCentre = + Vec3f((cfg.minBounds.x + cfg.maxBounds.x) * 0.5f, (cfg.minBounds.y + cfg.maxBounds.y) * 0.5f, + (cfg.minBounds.z + cfg.maxBounds.z) * 0.5f); + uint32_t dynOffs[2] = {}; if(!secondaryDraws.empty()) @@ -543,13 +572,10 @@ void VulkanReplay::RenderMesh(uint32_t eventId, const rdcarray &seco if(!data) return; - data->mvp = ModelViewProj; - data->color = Vec4f(fmt.meshColor.x, fmt.meshColor.y, fmt.meshColor.z, fmt.meshColor.w); - data->homogenousInput = cfg.position.unproject; - data->pointSpriteSize = Vec2f(0.0f, 0.0f); - data->displayFormat = MESHDISPLAY_SOLID; - data->rawoutput = 0; - data->flipY = (cfg.position.flipY == fmt.flipY) ? 0 : 1; + meshUniforms.color = + Vec4f(fmt.meshColor.x, fmt.meshColor.y, fmt.meshColor.z, fmt.meshColor.w); + meshUniforms.flipY = (cfg.position.flipY == fmt.flipY) ? 0 : 1; + *data = meshUniforms; m_MeshRender.UBO.Unmap(); @@ -663,13 +689,7 @@ void VulkanReplay::RenderMesh(uint32_t eventId, const rdcarray &seco vt->CmdBindVertexBuffers(Unwrap(cmd), 0, 1, UnwrapPtr(vb), &offs); } - SolidShade solidShadeMode = cfg.solidShadeMode; - - // can't support secondary shading without a buffer - no pipeline will have been created - if(solidShadeMode == SolidShade::Secondary && cfg.second.vertexResourceId == ResourceId()) - solidShadeMode = SolidShade::NoSolid; - - if(solidShadeMode == SolidShade::Secondary) + if(finalVisualisation == Visualisation::Secondary) { VkBuffer vb = m_pDriver->GetResourceManager()->GetCurrentHandle(cfg.second.vertexResourceId); @@ -687,53 +707,49 @@ void VulkanReplay::RenderMesh(uint32_t eventId, const rdcarray &seco } // solid render - if(solidShadeMode != SolidShade::NoSolid && cfg.position.topology < Topology::PatchList) + if(finalVisualisation != Visualisation::NoSolid && cfg.position.topology < Topology::PatchList) { VkPipeline pipe = VK_NULL_HANDLE; - switch(solidShadeMode) + switch(finalVisualisation) { default: - case SolidShade::Solid: pipe = cache.pipes[VKMeshDisplayPipelines::ePipe_SolidDepth]; break; - case SolidShade::Lit: + case Visualisation::Solid: + pipe = cache.pipes[VKMeshDisplayPipelines::ePipe_SolidDepth]; + break; + case Visualisation::Lit: + case Visualisation::Explode: pipe = cache.pipes[VKMeshDisplayPipelines::ePipe_Lit]; // point list topologies don't have lighting obvious, just render them as solid + // Also, can't support lit rendering without the pipeline - maybe geometry shader wasn't supported. if(pipe == VK_NULL_HANDLE) pipe = cache.pipes[VKMeshDisplayPipelines::ePipe_SolidDepth]; break; - case SolidShade::Secondary: + case Visualisation::Secondary: pipe = cache.pipes[VKMeshDisplayPipelines::ePipe_Secondary]; break; - case SolidShade::Meshlet: pipe = cache.pipes[VKMeshDisplayPipelines::ePipe_SolidDepth]; break; + case Visualisation::Meshlet: + pipe = cache.pipes[VKMeshDisplayPipelines::ePipe_SolidDepth]; + break; } - // can't support lit rendering without the pipeline - maybe geometry shader wasn't supported. - if(solidShadeMode == SolidShade::Lit && pipe == VK_NULL_HANDLE) - pipe = cache.pipes[VKMeshDisplayPipelines::ePipe_SolidDepth]; - MeshUBOData *data = (MeshUBOData *)m_MeshRender.UBO.Map(&dynOffs[0]); if(!data) return; - if(solidShadeMode == SolidShade::Lit) - data->invProj = projMat.Inverse(); + if(finalVisualisation == Visualisation::Lit || finalVisualisation == Visualisation::Explode) + meshUniforms.invProj = projMat.Inverse(); - data->mvp = ModelViewProj; - data->color = Vec4f(0.8f, 0.8f, 0.0f, 1.0f); - data->homogenousInput = cfg.position.unproject; - data->pointSpriteSize = Vec2f(0.0f, 0.0f); - data->displayFormat = (uint32_t)solidShadeMode; - data->rawoutput = 0; + meshUniforms.color = Vec4f(0.8f, 0.8f, 0.0f, 1.0f); + meshUniforms.displayFormat = VisModeToMeshDisplayFormat(finalVisualisation, cfg.second.showAlpha); + meshUniforms.flipY = 0; - if(solidShadeMode == SolidShade::Secondary && cfg.second.showAlpha) - data->displayFormat = MESHDISPLAY_SECONDARY_ALPHA; - - if(solidShadeMode == SolidShade::Meshlet) + if(finalVisualisation == Visualisation::Meshlet) { size_t numMeshlets = RDCMIN(cfg.position.meshletSizes.size(), (size_t)MAX_NUM_MESHLETS); uint32_t *meshletCounts = (uint32_t *)m_MeshRender.MeshletSSBO.Map( &dynOffs[1], AlignUp4(numMeshlets + 4) * sizeof(uint32_t)); - if(!data) + if(!meshletCounts) return; if(cfg.position.meshletSizes.size() > MAX_NUM_MESHLETS) @@ -751,13 +767,15 @@ void VulkanReplay::RenderMesh(uint32_t eventId, const rdcarray &seco meshletCounts[i] = prefixCount; } - memcpy(&data->meshletColours[0].x, uniqueColors, sizeof(uniqueColors)); - RDCCOMPILE_ASSERT(sizeof(data->meshletColours) == sizeof(uniqueColors), + memcpy(&meshUniforms.meshletColours[0].x, uniqueColors, sizeof(uniqueColors)); + RDCCOMPILE_ASSERT(sizeof(meshUniforms.meshletColours) == sizeof(uniqueColors), "Unique colors array is wrongly sized"); m_MeshRender.MeshletSSBO.Unmap(); } + *data = meshUniforms; + m_MeshRender.UBO.Unmap(); vt->CmdBindDescriptorSets(Unwrap(cmd), VK_PIPELINE_BIND_POINT_GRAPHICS, @@ -789,8 +807,10 @@ void VulkanReplay::RenderMesh(uint32_t eventId, const rdcarray &seco } } + meshUniforms.displayFormat = MESHDISPLAY_SOLID; + // wireframe render - if(solidShadeMode == SolidShade::NoSolid || cfg.wireframeDraw || + if(finalVisualisation == Visualisation::NoSolid || cfg.wireframeDraw || cfg.position.topology >= Topology::PatchList) { Vec4f wireCol = @@ -800,12 +820,8 @@ void VulkanReplay::RenderMesh(uint32_t eventId, const rdcarray &seco if(!data) return; - data->mvp = ModelViewProj; - data->color = wireCol; - data->displayFormat = (uint32_t)SolidShade::Solid; - data->homogenousInput = cfg.position.unproject; - data->pointSpriteSize = Vec2f(0.0f, 0.0f); - data->rawoutput = 0; + meshUniforms.color = wireCol; + *data = meshUniforms; m_MeshRender.UBO.Unmap(); @@ -851,6 +867,11 @@ void VulkanReplay::RenderMesh(uint32_t eventId, const rdcarray &seco helper.vertexByteStride = sizeof(Vec4f); + meshUniforms.homogenousInput = 0; + meshUniforms.vtxExploderSNorm = 0.0f; + meshUniforms.exploderScale = 0.0f; + meshUniforms.exploderCentre = Vec3f(); + // cache pipelines for use in drawing wireframe helpers cache = GetDebugManager()->CacheMeshDisplayPipelines(m_MeshRender.PipeLayout, helper, helper); @@ -893,12 +914,8 @@ void VulkanReplay::RenderMesh(uint32_t eventId, const rdcarray &seco if(!data) return; - data->mvp = ModelViewProj; - data->color = Vec4f(0.2f, 0.2f, 1.0f, 1.0f); - data->displayFormat = (uint32_t)SolidShade::Solid; - data->homogenousInput = 0; - data->pointSpriteSize = Vec2f(0.0f, 0.0f); - data->rawoutput = 0; + meshUniforms.color = Vec4f(0.2f, 0.2f, 1.0f, 1.0f); + *data = meshUniforms; m_MeshRender.UBO.Unmap(); @@ -922,12 +939,8 @@ void VulkanReplay::RenderMesh(uint32_t eventId, const rdcarray &seco if(!data) return; - data->mvp = ModelViewProj; - data->color = Vec4f(1.0f, 0.0f, 0.0f, 1.0f); - data->displayFormat = (uint32_t)SolidShade::Solid; - data->homogenousInput = 0; - data->pointSpriteSize = Vec2f(0.0f, 0.0f); - data->rawoutput = 0; + meshUniforms.color = Vec4f(1.0f, 0.0f, 0.0f, 1.0f); + *data = meshUniforms; m_MeshRender.UBO.Unmap(); @@ -945,12 +958,8 @@ void VulkanReplay::RenderMesh(uint32_t eventId, const rdcarray &seco if(!data) return; - data->mvp = ModelViewProj; - data->color = Vec4f(0.0f, 1.0f, 0.0f, 1.0f); - data->displayFormat = (uint32_t)SolidShade::Solid; - data->homogenousInput = 0; - data->pointSpriteSize = Vec2f(0.0f, 0.0f); - data->rawoutput = 0; + meshUniforms.color = Vec4f(0.0f, 1.0f, 0.0f, 1.0f); + *data = meshUniforms; m_MeshRender.UBO.Unmap(); @@ -963,12 +972,8 @@ void VulkanReplay::RenderMesh(uint32_t eventId, const rdcarray &seco if(!data) return; - data->mvp = ModelViewProj; - data->color = Vec4f(0.0f, 0.0f, 1.0f, 1.0f); - data->displayFormat = (uint32_t)SolidShade::Solid; - data->homogenousInput = 0; - data->pointSpriteSize = Vec2f(0.0f, 0.0f); - data->rawoutput = 0; + meshUniforms.color = Vec4f(0.0f, 0.0f, 1.0f, 1.0f); + *data = meshUniforms; m_MeshRender.UBO.Unmap(); @@ -988,12 +993,8 @@ void VulkanReplay::RenderMesh(uint32_t eventId, const rdcarray &seco if(!data) return; - data->mvp = ModelViewProj; - data->color = Vec4f(1.0f, 1.0f, 1.0f, 1.0f); - data->displayFormat = (uint32_t)SolidShade::Solid; - data->homogenousInput = 0; - data->pointSpriteSize = Vec2f(0.0f, 0.0f); - data->rawoutput = 0; + meshUniforms.color = Vec4f(1.0f, 1.0f, 1.0f, 1.0f); + *data = meshUniforms; m_MeshRender.UBO.Unmap(); @@ -1088,17 +1089,14 @@ void VulkanReplay::RenderMesh(uint32_t eventId, const rdcarray &seco else ModelViewProj = projMat.Mul(camMat.Mul(axisMapMat)); - MeshUBOData uniforms = {}; - uniforms.mvp = ModelViewProj; - uniforms.color = Vec4f(1.0f, 1.0f, 1.0f, 1.0f); - uniforms.displayFormat = (uint32_t)SolidShade::Solid; - uniforms.homogenousInput = cfg.position.unproject; - uniforms.pointSpriteSize = Vec2f(0.0f, 0.0f); + meshUniforms.mvp = ModelViewProj; + meshUniforms.color = Vec4f(1.0f, 1.0f, 1.0f, 1.0f); + meshUniforms.homogenousInput = cfg.position.unproject; MeshUBOData *ubodata = (MeshUBOData *)m_MeshRender.UBO.Map(&dynOffs[0]); if(!ubodata) return; - *ubodata = uniforms; + *ubodata = meshUniforms; m_MeshRender.UBO.Unmap(); vt->CmdBindDescriptorSets(Unwrap(cmd), VK_PIPELINE_BIND_POINT_GRAPHICS, @@ -1112,12 +1110,12 @@ void VulkanReplay::RenderMesh(uint32_t eventId, const rdcarray &seco // render primitives // Draw active primitive (red) - uniforms.color = Vec4f(1.0f, 0.0f, 0.0f, 1.0f); + meshUniforms.color = Vec4f(1.0f, 0.0f, 0.0f, 1.0f); // poke the color (this would be a good candidate for a push constant) ubodata = (MeshUBOData *)m_MeshRender.UBO.Map(&dynOffs[0]); if(!ubodata) return; - *ubodata = uniforms; + *ubodata = meshUniforms; m_MeshRender.UBO.Unmap(); vt->CmdBindDescriptorSets(Unwrap(cmd), VK_PIPELINE_BIND_POINT_GRAPHICS, Unwrap(m_MeshRender.PipeLayout), 0, 1, @@ -1140,12 +1138,12 @@ void VulkanReplay::RenderMesh(uint32_t eventId, const rdcarray &seco } // Draw adjacent primitives (green) - uniforms.color = Vec4f(0.0f, 1.0f, 0.0f, 1.0f); + meshUniforms.color = Vec4f(0.0f, 1.0f, 0.0f, 1.0f); // poke the color (this would be a good candidate for a push constant) ubodata = (MeshUBOData *)m_MeshRender.UBO.Map(&dynOffs[0]); if(!ubodata) return; - *ubodata = uniforms; + *ubodata = meshUniforms; m_MeshRender.UBO.Unmap(); vt->CmdBindDescriptorSets(Unwrap(cmd), VK_PIPELINE_BIND_POINT_GRAPHICS, Unwrap(m_MeshRender.PipeLayout), 0, 1, @@ -1173,15 +1171,15 @@ void VulkanReplay::RenderMesh(uint32_t eventId, const rdcarray &seco float scale = 800.0f / float(m_DebugHeight); float asp = float(m_DebugWidth) / float(m_DebugHeight); - uniforms.pointSpriteSize = Vec2f(scale / asp, scale); + meshUniforms.pointSpriteSize = Vec2f(scale / asp, scale); // Draw active vertex (blue) - uniforms.color = Vec4f(0.0f, 0.0f, 1.0f, 1.0f); + meshUniforms.color = Vec4f(0.0f, 0.0f, 1.0f, 1.0f); // poke the color (this would be a good candidate for a push constant) ubodata = (MeshUBOData *)m_MeshRender.UBO.Map(&dynOffs[0]); if(!ubodata) return; - *ubodata = uniforms; + *ubodata = meshUniforms; m_MeshRender.UBO.Unmap(); vt->CmdBindDescriptorSets(Unwrap(cmd), VK_PIPELINE_BIND_POINT_GRAPHICS, Unwrap(m_MeshRender.PipeLayout), 0, 1, @@ -1221,12 +1219,12 @@ void VulkanReplay::RenderMesh(uint32_t eventId, const rdcarray &seco } // Draw inactive vertices (green) - uniforms.color = Vec4f(0.0f, 1.0f, 0.0f, 1.0f); + meshUniforms.color = Vec4f(0.0f, 1.0f, 0.0f, 1.0f); // poke the color (this would be a good candidate for a push constant) ubodata = (MeshUBOData *)m_MeshRender.UBO.Map(&dynOffs[0]); if(!ubodata) return; - *ubodata = uniforms; + *ubodata = meshUniforms; m_MeshRender.UBO.Unmap(); vt->CmdBindDescriptorSets(Unwrap(cmd), VK_PIPELINE_BIND_POINT_GRAPHICS, Unwrap(m_MeshRender.PipeLayout), 0, 1, diff --git a/util/test/rdtest/shared/Mesh_Zoo.py b/util/test/rdtest/shared/Mesh_Zoo.py index 7f194602c2..1fbfb3a43f 100644 --- a/util/test/rdtest/shared/Mesh_Zoo.py +++ b/util/test/rdtest/shared/Mesh_Zoo.py @@ -118,7 +118,7 @@ def check_capture(self, capture_filename: str, controller: rd.ReplayController): rdtest.log.success("Base rendering is as expected") - self.cfg.solidShadeMode = rd.SolidShade.Secondary + self.cfg.visualisationMode = rd.Visualisation.Secondary self.cfg.wireframeDraw = False # allow for blending with white for the frustum @@ -244,7 +244,7 @@ def check_capture(self, capture_filename: str, controller: rd.ReplayController): rdtest.log.success("Rendering of float2 color secondary in instance 1 is as expected") - self.cfg.solidShadeMode = rd.SolidShade.NoSolid + self.cfg.visualisationMode = rd.Visualisation.NoSolid self.cfg.showAllInstances = True self.cache_output() @@ -370,10 +370,10 @@ def check_capture(self, capture_filename: str, controller: rd.ReplayController): rdtest.log.success("Point picking is as expected") self.cfg.highlightVert = rd.MeshDisplay.NoHighlight - self.cfg.solidShadeMode = rd.SolidShade.Solid + self.cfg.visualisationMode = rd.Visualisation.Solid self.cache_output() - self.cfg.solidShadeMode = rd.SolidShade.Lit + self.cfg.visualisationMode = rd.Visualisation.Lit self.cache_output() rdtest.log.success("Point solid and lit rendering works as expected") @@ -381,7 +381,7 @@ def check_capture(self, capture_filename: str, controller: rd.ReplayController): self.controller.SetFrameEvent(self.find_action("Lines").next.eventId, False) self.cache_output() - self.cfg.solidShadeMode = rd.SolidShade.Lit + self.cfg.visualisationMode = rd.Visualisation.Lit self.cache_output() rdtest.log.success("Lines solid and lit rendering works as expected")